Sklearn.KMeans() : Holen Sie sich Klasse centroid labels und Verweis auf ein dataset
Sci-Kit lernen Kmeans und PCA dimensionsreduktion
Ich habe einen Datensatz, 2M Zeilen und 7 Spalten, wobei verschiedene Messungen von zu Hause den Stromverbrauch mit einem Datum für jede Messung.
- Datum,
- Global_active_power,
- Global_reactive_power,
- Spannung,
- Global_intensity,
- Sub_metering_1,
- Sub_metering_2,
- Sub_metering_3
Ich mein dataset in ein pandas dataframe, der Auswahl aller Spalten, aber die Datum-Spalte, und führen Sie dann Kreuzvalidierung geteilt.
import pandas as pd
from sklearn.cross_validation import train_test_split
data = pd.read_csv('household_power_consumption.txt', delimiter=';')
power_consumption = data.iloc[0:, 2:9].dropna()
pc_toarray = power_consumption.values
hpc_fit, hpc_fit1 = train_test_split(pc_toarray, train_size=.01)
power_consumption.head()
Ich benutze K-means-Klassifikation, gefolgt von PCA dimensionsreduktion angezeigt.
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
import numpy as np
from sklearn.decomposition import PCA
hpc = PCA(n_components=2).fit_transform(hpc_fit)
k_means = KMeans()
k_means.fit(hpc)
x_min, x_max = hpc[:, 0].min() - 5, hpc[:, 0].max() - 1
y_min, y_max = hpc[:, 1].min(), hpc[:, 1].max() + 5
xx, yy = np.meshgrid(np.arange(x_min, x_max, .02), np.arange(y_min, y_max, .02))
Z = k_means.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.figure(1)
plt.clf()
plt.imshow(Z, interpolation='nearest',
extent=(xx.min(), xx.max(), yy.min(), yy.max()),
cmap=plt.cm.Paired,
aspect='auto', origin='lower')
plt.plot(hpc[:, 0], hpc[:, 1], 'k.', markersize=4)
centroids = k_means.cluster_centers_
inert = k_means.inertia_
plt.scatter(centroids[:, 0], centroids[:, 1],
marker='x', s=169, linewidths=3,
color='w', zorder=8)
plt.xlim(x_min, x_max)
plt.ylim(y_min, y_max)
plt.xticks(())
plt.yticks(())
plt.show()
Nun würde ich gerne herausfinden, welche Zeilen fiel unter einer gegebenen Klasse, dann die Daten fielen unter eine bestimmte Klasse.
- Gibt es eine Möglichkeit, beziehen sich die Punkte auf dem Graphen zu einem index-in meinem
dataset, nach PCA? - Einige Methode, die ich nicht kenne?
- Oder ist mein Ansatz grundlegend falsch?
- Irgendwelche Empfehlungen?
Ich bin ziemlich neu in diesem Gebiet und versuche mich durch zu Lesen viel code, dies ist eine Zusammenstellung von mehreren Beispielen, die ich gesehen habe, dokumentiert .
Mein Ziel ist es, zu klassifizieren Sie die Daten, und dann bekommen Sie die Termine, die fallen unter eine Klasse.
Danke
InformationsquelleAutor flow | 2014-12-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
KMeans().Vorhersagen(X) ..docs hier
Vorherzusagen, die nächsten cluster-jede Probe in X gehört.
In der Vektor-Quantisierung Literatur, cluster_centers_ aufgerufen wird der code-Buch und jeder Wert, der zurückgegeben wird, indem Sie voraussagen, ist der index des nächsten code in das code-Buch.
Ich das problem mit dem code, den Sie übermittelt, ist die Verwendung von
gibt zwei arrays in zufälliger Zeilen an, die in Ihrem Daten-set, effektiv ruiniert Ihr dataset, um die es schwierig machen, korrelieren die Etiketten zurückgegeben, die von KMeans-Klassifizierung, um sequentielle Daten in Ihrem Datensatz.
Hier ein Beispiel:
InformationsquelleAutor flow