scikit-learn + [Clustering](http://ja.wikipedia.org/wiki/%E3%83%87%E3%83% BC% E3% 82% BF% E3% 83% BB% E3% 82% AF% E3% 83% A9% E3% 82% B9% E3% 82% BF% E3% 83% AA% E3% 83% B3% In Bezug auf E3% 82% B0) habe ich es am Anfang dieses Blogs ein wenig berührt, aber ich kann den Mangel an Erklärung nicht leugnen. Ich denke jedoch, dass es eine Meinung gibt, dass Scikit-Lernen überhaupt nicht für den gewünschten Zweck verwendet werden kann. Daher werde ich das grundlegende Clustering durch Scikit-Learn noch einmal erklären.
Als grundlegende Geschichte endet die Geschichte jedoch mit Lesen Sie das Originaldokument, aber japanischen Informationen Ich denke, dass es Hilfe geben kann.
Ein häufiger Fall ist, wenn Sie anhand der Landessprache, der Mathematik und der Englischnoten Ihrer Schüler in mehrere Gruppen einteilen möchten. Zu diesem Zeitpunkt können Sie sie in der Reihenfolge von der Spitze der Gesamtpunktzahl jedes Fachs trennen, aber einige Schüler sind möglicherweise gut in Japanisch, aber nicht gut in Mathematik, und einige Schüler sind gut in Mathematik, aber nicht gut in Japanisch. Es wäre bedauerlich, wenn diese Schüler einfach von der Spitze der Gesamtpunktzahl gruppiert würden. Hier kommt die Clusteranalyse ins Spiel. Durch Gruppieren von Schülern mit ähnlichen Einstufungstendenzen können Sie eine geeignetere Gruppierung als nur die Bestnoten erstellen.
Schreiben Sie den Code für K-means Clustering und probieren Sie es aus. Machen wir das. Eine ausführliche Erläuterung der Spezifikationen der K-Mittel-Clusterbildung finden Sie in diesem Artikel. schauen Sie bitte. Lassen Sie uns diesmal die Schüler in drei Gruppen einteilen.
import numpy as np
from sklearn.cluster import KMeans
#Geben Sie die Noten für Landessprache, Mathematik und Englisch der Schüler als Array an
features = np.array([
[ 80, 85, 100 ],
[ 96, 100, 100 ],
[ 54, 83, 98 ],
[ 80, 98, 98 ],
[ 90, 92, 91 ],
[ 84, 78, 82 ],
[ 79, 100, 96 ],
[ 88, 92, 92 ],
[ 98, 73, 72 ],
[ 75, 84, 85 ],
[ 92, 100, 96 ],
[ 96, 92, 90 ],
[ 99, 76, 91 ],
[ 75, 82, 88 ],
[ 90, 94, 94 ],
[ 54, 84, 87 ],
[ 92, 89, 62 ],
[ 88, 94, 97 ],
[ 42, 99, 80 ],
[ 70, 98, 70 ],
[ 94, 78, 83 ],
[ 52, 73, 87 ],
[ 94, 88, 72 ],
[ 70, 73, 80 ],
[ 95, 84, 90 ],
[ 95, 88, 84 ],
[ 75, 97, 89 ],
[ 49, 81, 86 ],
[ 83, 72, 80 ],
[ 75, 73, 88 ],
[ 79, 82, 76 ],
[ 100, 77, 89 ],
[ 88, 63, 79 ],
[ 100, 50, 86 ],
[ 55, 96, 84 ],
[ 92, 74, 77 ],
[ 97, 50, 73 ],
])
# K-bedeutet Clustering
#In diesem Beispiel ist es in drei Gruppen unterteilt(Der Keim der Zufallszahl von Mercenne Twister sei 10.)
kmeans_model = KMeans(n_clusters=3, random_state=10).fit(features)
#Holen Sie sich das Etikett, das klassifiziert wurde
labels = kmeans_model.labels_
#Etikette(Mannschaft), Noten und Gesamtpunktzahl von 3 Probanden
for label, feature in zip(labels, features):
print(label, feature, feature.sum())
#=>
# 2 [ 80 85 100] 265
# 2 [ 96 100 100] 296
# 0 [54 83 98] 235
# 2 [80 98 98] 276
# 2 [90 92 91] 273
# 1 [84 78 82] 244
# 2 [ 79 100 96] 275
# 2 [88 92 92] 272
# 1 [98 73 72] 243
# 2 [75 84 85] 244
# 2 [ 92 100 96] 288
# 2 [96 92 90] 278
# 1 [99 76 91] 266
# 2 [75 82 88] 245
# 2 [90 94 94] 278
# 0 [54 84 87] 225
# 1 [92 89 62] 243
# 2 [88 94 97] 279
# 0 [42 99 80] 221
# 0 [70 98 70] 238
# 1 [94 78 83] 255
# 0 [52 73 87] 212
# 1 [94 88 72] 254
# 1 [70 73 80] 223
# 2 [95 84 90] 269
# 2 [95 88 84] 267
# 2 [75 97 89] 261
# 0 [49 81 86] 216
# 1 [83 72 80] 235
# 1 [75 73 88] 236
# 1 [79 82 76] 237
# 1 [100 77 89] 266
# 1 [88 63 79] 230
# 1 [100 50 86] 236
# 0 [55 96 84] 235
# 1 [92 74 77] 243
# 1 [97 50 73] 220
Übrigens scheinen sie sicher in drei Gruppen eingeteilt worden zu sein. Lassen Sie uns den Inhalt hinterfragen. Erstens sind die Schüler mit einem Label von 2 eine relativ gute Gruppe mit hohen Punktzahlen. Wenn man sich die Schüler mit der Bezeichnung 1 ansieht, gibt es einige Schüler, die nur gut Japanisch können, und diejenigen, die andere als Japanisch nicht so gut können, obwohl sie in der Mitte sind. Anscheinend scheint es sich um eine Gruppe von Studenten zu handeln, die den freien Künsten nahe stehen. Schüler mit der Endnote 0 werden als Schüler mit insgesamt etwas schlechteren Noten oder mit guten Mathematikkenntnissen eingestuft.
Auf diese Weise konnten wir uns nicht von der Spitze der Gesamtpunktzahl in drei Gruppen aufteilen, sondern entsprechend der Tendenz jedes Schülers in Gruppen aufteilen.
Selbst in einem realen Problem kann eine Clusteranalyse durchgeführt werden, wenn die Natur gut ausgewählt und der numerische Vektor auf diese Weise gezeichnet wird.
Mit scikit-learn kann K-means Clustering selbst in nur einer Zeile durchgeführt werden, sodass Sie die Leistungsfähigkeit der Bibliothek für maschinelles Lernen spüren können.
Recommended Posts