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()

Sklearn.KMeans() : Holen Sie sich Klasse centroid labels und Verweis auf ein dataset

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()

Sklearn.KMeans() : Holen Sie sich Klasse centroid labels und Verweis auf ein dataset

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

Schreibe einen Kommentar