[PYTHON] Anfänger Kmeans

Versuchen wir es jetzt einfach mit Kmeans.

Bibliothek

Das habe ich importiert

from random import randint

from sklearn.cluster import KMeans
from sklearn.decomposition import PCA
import numpy as np

import matplotlib.pyplot as plt

Ich wollte eine Zufallszahl, um den Datensatz zu generieren, also Randint Ich verwende PCA, um die Daten zu zeichnen, weil ich wollte, dass die 3D-Features 2D sind.

Vorbereitung der Daten

Dieses Mal werden als Datensatz RGB-Werte mit Zufallszahlen generiert.

def create_data(num):
    data = np.empty((0,3), int)
    for i in range(num):
        red = randint(0,256)
        blue = randint(0,256)
        green = randint(0,256)

        data = np.append(data, np.array([[red,blue,green]]), axis=0)

    return data

data = create_data(100)

Wir verwenden eine Funktion, die mit create_data () einen Datensatz beliebiger Größe erstellt. Dieser Code kann 100 3D-Features als Datensatz erstellen.

Clustering

Klassifizieren Sie die generierten Daten mit dem Kmeans-Modell.

# kmeans clustering
CLUSTERS = 3
N_JOBS = 2

model = KMeans(n_clusters=CLUSTERS, n_jobs=N_JOBS).fit(data)

print(model.labels_)

Dieses Mal wird das Clustering mit 3 Clustern durchgeführt. N_JOBS gibt die Anzahl der verwendeten CPU-Kerne an. Die Clusternummer der einzelnen Daten ist in model.labels_ aufgeführt.

Ergebnisausgabe

Da wir dieses Mal als 2D-Bild ausgeben möchten, werden wir die 3D-Features durch Hauptkomponentenanalyse auf 2D reduzieren. in der Lage sein.

Dimensionsreduzierung

#Machen Sie 3D-Features 2D
pca = PCA(n_components=2)
pca.fit(data)
pca_data = pca.fit_transform(data)

Sie können angeben, wie viele Dimensionen mit n_components reduziert werden sollen. Die reduzierten Daten werden in "pca_data" gespeichert.

Tatsächliche Handlung

color = ["red", "blue", "green"]

#Darstellung der Clustering-Ergebnisse
plt.figure()
for i in range(pca_data.shape[0]):
    plt.scatter(pca_data[i,0], pca_data[i,1], c=color[int(model.labels_[i])])

#Rohdatenplot
plt.figure()
for j in range(pca_data.shape[0]):
    color = tuple((round(data[j][0]/256, 3), round(data[j][1]/256, 3), round(data[j][2]/256, 3)))

    plt.scatter(pca_data[j,0], pca_data[j,1], c=color)

plt.show()

Zunächst werden die Clustering-Ergebnisse aufgezeichnet. Da die erste Dimension der Daten nach der Dimensionsreduktion x und die Daten der zweiten Dimension y sind und model.label_ die Klassen 0 bis 2 hat, entspricht die Listenfarbe der Klassennummer. In der zweiten plt.figure () werden die Rohdaten in derselben Farbe dargestellt. Das Problem ist jedoch, dass im plt-Diagramm der RGB-Wert 0 bis 1 sein muss, sodass der ursprüngliche RGB-Wert durch 256 geteilt wird. Danach wird es auf die dritte Dezimalstelle gerundet.

Das Ergebnis der tatsächlichen Handlung ist Rohdaten Figure_2.png

Clustering-Ergebnis Figure_1.png

Dieses Mal konnten wir relativ ordentlich Cluster bilden.

Zusammenfassung

Dieses Mal habe ich versucht, Kmeans zum besseren Verständnis mit Farben zu versehen. Da es sich um einfache Daten handelte, konnten wir sie ordentlich gruppieren.

Source Code https://github.com/sasayabaku/Machine-Learning/blob/master/Kmeans/color_kmeans.ipynb

Recommended Posts

Anfänger Kmeans
Ausgabe Anfänger
Verstehe k-means ++
Anfänger ABC154 (Python)
AtCoder Anfängerwettbewerb 177
Anfänger ABC156 (Python)
Verstehen Sie die k-means-Methode
k-bedeutet und Kernel k-bedeutet
Python-Anfänger-Memo (9.2-10)
AtCoder Anfängerwettbewerb 179
Python-Anfänger-Memo (9.1)
Python-Anfängernotizen
[Anfänger] Python-Array
AtCoder Anfängerwettbewerb 172
AtCoder Anfängerwettbewerb 180
Virtuelle Anfängerumgebung
Anfänger ABC155 (Python)
AtCoder Anfängerwettbewerb 173
[Anfänger] Python-Funktionen
Anfänger ABC157 (Python)
PyQ ~ Python Anfänger ~
Atcoder Anfänger Wettbewerb 153
kmeans ++ mit scikit-learn
Python-Anfänger-Memo (2)
Python-Anfänger Zundokokiyoshi
zipline Anfänger Tutorial
Clustering und Hauptkomponentenanalyse nach der K-Means-Methode (Anfänger)