[PYTHON] In 100 Tagen sind Sie Ingenieur. ――Tag 83 ――Programmieren ――Über maschinelles Lernen 8

Klicken Sie hier bis gestern

Sie werden in 100 Tagen Ingenieur - Tag 76 - Programmierung - Über maschinelles Lernen

Sie werden Ingenieur in 100 Tagen - Tag 70 - Programmieren - Über Scraping

Sie werden in 100 Tagen Ingenieur - Tag 66 - Programmierung - Über die Verarbeitung natürlicher Sprache

Sie werden in 100 Tagen Ingenieur - Tag 63 - Programmierung - Über Wahrscheinlichkeit 1

Sie werden in 100 Tagen Ingenieur - Tag 59 - Programmierung - Über Algorithmen

Sie werden in 100 Tagen Ingenieur --- Tag 53 - Git - Über Git

Sie werden in 100 Tagen Ingenieur - Tag 42 - Cloud - Über Cloud-Dienste

Sie werden in 100 Tagen Ingenieur - Tag 36 - Datenbank - Über die Datenbank

Sie werden Ingenieur in 100 Tagen 24-Python-Grundlagen der Python-Sprache 1

Sie werden in 100 Tagen Ingenieur - Tag 18 - JavaScript - Grundlagen von JavaScript 1

Sie werden in 100 Tagen Ingenieur - 14. Tag - CSS - CSS-Grundlagen 1

Sie werden in 100 Tagen Ingenieur - Tag 6 - HTML - HTML-Grundlagen 1

Diese Zeit ist eine Fortsetzung der Geschichte über maschinelles Lernen.

Informationen zum Clustering

Ich werde erklären, was Sie zum ersten Mal mit maschinellem Lernen tun können, aber was Sie mit maschinellem Lernen tun können Grundsätzlich gibt es drei.

· Rückkehr ・ Klassifizierung ・ Clustering

Grob gesagt wird es zu "Vorhersage", aber der Teil dessen, was "vorherzusagen" ist, ändert sich.

・ Return: Numerische Werte vorhersagen ・ Klassifizierung: Kategorien vorhersagen ・ Clustering: Fühlen Sie sich gut an

Clustering wird zu unbeaufsichtigtem Lernen "Ich kenne die Antwort nicht, aber teile sie in etwas Nettes auf" Du kannst das tun.

Die Daten, die diesmal verwendet werden, sind die Daten von "Ziffern" (Zahlen), die an "scikit-learn" angehängt sind.

Daten lesen

Lesen wir zunächst die numerischen Daten. Sie können die Daten mit "load_digits" laden.

from sklearn.datasets import load_digits
import matplotlib.pyplot as plt
%matplotlib inline

digits = load_digits()
print(digits.data.shape)

plt.gray() 
plt.matshow(digits.images[0]) 
plt.show()

(1797, 64)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/379626/4f339942-8b99-e1cf-e447-e0e2a1cafb92.png)

Wenn Sie es als Bild ausgeben, sieht es aus wie die Zahl "0".

Dies ist ein Bild im Format 8x8.

Lassen Sie uns nun die Quelle dieser Daten anzeigen.

digits.images[0]

array([[ 0., 0., 5., 13., 9., 1., 0., 0.], [ 0., 0., 13., 15., 10., 15., 5., 0.], [ 0., 3., 15., 2., 0., 11., 8., 0.], [ 0., 4., 12., 0., 0., 8., 8., 0.], [ 0., 5., 8., 0., 0., 9., 8., 0.], [ 0., 4., 11., 0., 1., 12., 7., 0.], [ 0., 2., 14., 5., 10., 12., 0., 0.], [ 0., 0., 6., 13., 10., 0., 0., 0.]])

Die Daten selbst sind eine Liste von Zahlen. Die Zahlen stehen für 16 Graustufen, wobei 0 schwarz und 15 weiß ist.

Teilen wir diese numerischen Daten in gute Gefühle auf. Laden wir es in einen Datenrahmen.

digits_df_tgt = pd.DataFrame(digits.target, columns=['target'])
digits_df_tgt.head()

digits_df = pd.DataFrame(digits.data)
digits_df.head()
0 1 2 3 4 5 6 7 8 9 ... 54 55 56 57 58 59 60 61 62 63
0 0 0 5 13 9 1 0 0 0 0 ... 0 0 0 0 6 13 10 0 0 0
1 0 0 0 12 13 5 0 0 0 0 ... 0 0 0 0 0 11 16 10 0 0
2 0 0 0 4 15 12 0 0 0 0 ... 5 0 0 0 0 3 11 16 9 0
3 0 0 7 15 13 1 0 0 0 8 ... 9 0 0 0 7 13 13 9 0 0
4 0 0 0 1 11 0 0 0 0 0 ... 0 0 0 0 0 2 16 4 0 0

Sie können sehen, dass die Daten von diesen Zahlen in die Zahlen für jedes Pixel konvertiert werden.

Führen Sie das Clustering durch

Clustering kann grob in zwei Methoden unterteilt werden.

** Hierarchisches Clustering ** Clustering in der Reihenfolge der ähnlichsten Kombination mit einer Clustering-Methode wie einem Turniertisch Der Prozess kann wie eine Hierarchie dargestellt werden, und schließlich wird ein Dendrogramm (Baumdiagramm) erstellt. Es gibt viele Methoden wie die Stationsmethode, die Gruppenmittelwertmethode, die Methode der kürzesten Entfernung usw.

** Nicht hierarchisches Clustering ** Es ist eine der Methoden, einen Cluster zu erstellen, indem Dinge mit ähnlichen Eigenschaften aus einer Gruppe gemischter Dinge mit unterschiedlichen Eigenschaften gesammelt werden. Es gibt K-Mittel als Methode.

Lassen Sie uns hier ein nicht hierarchisches Clustering mit "K-means" durchführen.

Rufen Sie zuerst die Bibliothek an.

K-means gibt nur an, wie viele (K) vorerst geteilt werden sollen. Clustering durch Angabe eines Datenrahmens.

from sklearn.cluster import KMeans

K=10
kmeans = KMeans(n_clusters=K).fit(digits_df) 
pred_label = kmeans.predict(digits_df)
pred_df = pd.DataFrame(pred_label,columns=['pred'])

Damit ist auch das Vorhersageergebnis herausgekommen. Das Vorhersageergebnis wird in pred_df gespeichert.

Mal sehen, das Ergebnis

Mal sehen, wie es geteilt wurde.

calc = {i:{} for i in range(K)}
for pred , target in zip(pred_label , digits.target):
    #print('Prognose: {0} ,Tatsächliche Messung: {1}'.format(pred,target))
    if target in calc[pred]:
        calc[pred][target]+=1
    else:
        calc[pred][target] =1
        

{0: {6: 177, 1: 2, 8: 2, 5: 1}, 1: {3: 154, 9: 6, 2: 13, 1: 1, 8: 2}, 2: {1: 55, 4: 7, 7: 2, 2: 2, 9: 20, 8: 5, 6: 1}, 3: {7: 170, 2: 3, 3: 7, 9: 7, 4: 7, 8: 2}, 4: {1: 99, 2: 8, 8: 100, 9: 1, 6: 2, 4: 4, 7: 2, 3: 7}, 5: {5: 43, 8: 53, 9: 139, 3: 13, 2: 2}, 6: {5: 136, 9: 7, 7: 5, 8: 7, 1: 1, 3: 2}, 7: {0: 177, 6: 1, 2: 1}, 8: {2: 148, 1: 24, 8: 3}, 9: {4: 163, 5: 2, 0: 1}}

K-Mittel-Clustering klassifiziert ähnliche Dinge in K-Teile, indem die Art der numerischen Werte betrachtet wird. Die hier angegebene ist die "Clusternummer". Die Clusternummer "0" scheint die meisten "6" zu haben, wenn es sich um den tatsächlichen Wert handelt.

Schauen wir uns die tatsächlichen Messungen und Prognosen an.

digits_df2 = pd.concat([pred_df,digits_df],axis=1)
digits_df2['pred'].value_counts()

index = list(digits_df[digits_df2['pred']==0].index)
print(index)

[6, 16, 26, 34, 58, 65, 66, 67, 82, 88, 104, 106, 136, 146, 156, 164, 188, 195, 196, 197, 212, 223, 232, 234, 262, 272, 282, 290, 314, 321, 322, 323, 338, 344, 351, 360, 362, 392, 402, 412, 420, 444, 451, 452, 453, 468, 474, 481, 490, 522, 532, 542, 550, 563, 569, 574, 581, 582, 583, 586, 598, 604, 611, 620, 622, 652, 662, 672, 680, 704, 711, 712, 713, 728, 734, 741, 750, 752, 782, 784, 802, 810, 834, 841, 842, 843, 858, 864, 871, 880, 882, 911, 921, 931, 939, 960, 967, 968, 969, 984, 989, 996, 1005, 1007, 1035, 1045, 1055, 1063, 1085, 1092, 1093, 1094, 1109, 1115, 1122, 1131, 1133, 1163, 1173, 1183, 1191, 1215, 1222, 1223, 1224, 1239, 1245, 1252, 1261, 1263, 1293, 1303, 1313, 1321, 1345, 1352, 1353, 1354, 1361, 1369, 1375, 1382, 1391, 1393, 1421, 1431, 1441, 1449, 1473, 1480, 1481, 1482, 1497, 1503, 1510, 1519, 1521, 1561, 1569, 1577, 1601, 1608, 1609, 1610, 1623, 1629, 1636, 1645, 1647, 1673, 1683, 1693, 1701, 1725, 1732, 1733, 1734, 1749, 1755, 1762, 1771, 1773]

Schauen wir uns den Indexwert der Clusternummer "0" an, um zu sehen, wie die Zahlen in diesen Daten lauten.

plt.gray() 
plt.matshow(digits.images[6]) 
plt.matshow(digits.images[16]) 
plt.matshow(digits.images[26]) 
plt.show()

image.png image.png image.png

Der mit der Clusternummer "0" sieht aus wie "6". Ich denke, es war in gute Gefühle geteilt.

Ursprünglich kenne ich die Antwort nicht, aber ich verwende sie beispielsweise, um Benutzer in sieben zu klassifizieren. Es ist eine Abteilung, die ähnliche Benutzer anhand der Merkmale der Daten klassifiziert.

Zusammenfassung

Heute habe ich den Mechanismus des Clustering erklärt. Es gibt viele andere Methoden zum Clustering.

Lassen Sie uns zunächst die Methode zum ersten Mal unterdrücken, indem wir sagen, was Clustering ist.

17 Tage, bis Sie Ingenieur werden

Informationen zum Autor

HP von Otsu py: http://www.otupy.net/

Youtube: https://www.youtube.com/channel/UCaT7xpeq8n1G_HcJKKSOXMw

Twitter: https://twitter.com/otupython

Recommended Posts

In 100 Tagen sind Sie Ingenieur. ――Tag 81 ――Programmieren ――Über maschinelles Lernen 6
In 100 Tagen sind Sie Ingenieur. ――Tag 82 ――Programmieren ――Über maschinelles Lernen 7
In 100 Tagen sind Sie Ingenieur. ――Tag 79 ――Programmieren ――Über maschinelles Lernen 4
In 100 Tagen sind Sie Ingenieur. ――Tag 76 ――Programmieren ――Über maschinelles Lernen
In 100 Tagen sind Sie Ingenieur. ――Tag 80 ――Programmieren ――Über maschinelles Lernen 5
In 100 Tagen sind Sie Ingenieur. ――Tag 78 ――Programmieren ――Über maschinelles Lernen 3
Sie werden in 100 Tagen Ingenieur. ――Tag 84 ――Programmieren ――Über maschinelles Lernen 9
In 100 Tagen sind Sie Ingenieur. ――Tag 83 ――Programmieren ――Über maschinelles Lernen 8
In 100 Tagen sind Sie Ingenieur. ――Tag 77 ――Programmieren ――Über maschinelles Lernen 2
In 100 Tagen sind Sie Ingenieur. ――Tag 85 ――Programmieren ――Über maschinelles Lernen 10
In 100 Tagen sind Sie Ingenieur. ――Tag 71 ――Programmieren ――Über das Schaben 2
In 100 Tagen sind Sie Ingenieur. ――Tag 61 ――Programmieren ――Über Erkundung
In 100 Tagen sind Sie Ingenieur. ――Tag 74 ――Programmieren ――Über das Schaben 5
In 100 Tagen sind Sie Ingenieur. ――Tag 73 ――Programmieren ――Über das Schaben 4
In 100 Tagen sind Sie Ingenieur. ――Tag 75 ――Programmieren ――Über das Schaben 6
In 100 Tagen sind Sie Ingenieur. ――Tag 68 ――Programmieren ――Über TF-IDF
In 100 Tagen sind Sie Ingenieur. ――Tag 70 ――Programmieren ――Über das Schaben
Sie werden in 100 Tagen Ingenieur - Tag 63 - Programmierung - Wahrscheinlichkeit 1
Sie werden in 100 Tagen Ingenieur. ――Tag 65 ――Programmieren ――Über Wahrscheinlichkeit 3
Sie werden in 100 Tagen Ingenieur. ――Tag 64 ――Programmieren ――Über Wahrscheinlichkeit 2
Sie werden in 100 Tagen Ingenieur - Tag 86 - Datenbank - Über Hadoop
In 100 Tagen sind Sie Ingenieur. ――Tag 60 ――Programmieren ――Über Datenstruktur und Sortieralgorithmus
Sie werden in 100 Tagen Ingenieur - 27. Tag - Python - Python-Übung 1
Sie werden in 100 Tagen Ingenieur - Tag 34 - Python - Python-Übung 3
Sie werden in 100 Tagen Ingenieur - 31. Tag - Python - Python-Übung 2
Sie werden in 100 Tagen Ingenieur. ――Tag 67 ――Programmieren ――Über morphologische Analyse
Sie werden in 100 Tagen Ingenieur. ――Tag 66 ――Programmieren ――Über die Verarbeitung natürlicher Sprache
Sie werden in 100 Tagen Ingenieur. ――Tag 24 ―― Python ―― Grundlagen der Python-Sprache 1
Sie werden in 100 Tagen Ingenieur. ――Tag 30 ―― Python ―― Grundlagen der Python-Sprache 6
Sie werden in 100 Tagen Ingenieur. ――Tag 25 ―― Python ―― Grundlagen der Python-Sprache 2
Sie werden in 100 Tagen Ingenieur - 29. Tag - Python - Grundlagen der Python-Sprache 5
Sie werden in 100 Tagen Ingenieur - Tag 33 - Python - Grundlagen der Python-Sprache 8
Sie werden in 100 Tagen Ingenieur - 26. Tag - Python - Grundlagen der Python-Sprache 3
Sie werden in 100 Tagen Ingenieur - Tag 35 - Python - Was Sie mit Python tun können
Sie werden in 100 Tagen Ingenieur - Tag 32 - Python - Grundlagen der Python-Sprache 7
Sie werden in 100 Tagen Ingenieur - 28. Tag - Python - Grundlagen der Python-Sprache 4
Werden Sie bald KI-Ingenieur! Lernen Sie in wenigen Tagen umfassend Python / KI / Maschinelles Lernen / Deep Learning / Statistische Analyse!
Sie müssen vorsichtig mit den Befehlen sein, die Sie jeden Tag in der Produktionsumgebung verwenden.
Erstellen Sie mit Python eine interaktive Umgebung für maschinelles Lernen
Programmieren des Lernprotokolls 2. Tag
Bis ein Ingenieur, der einmal über maschinelles Lernen frustriert war, es schafft, maschinelles Lernen bei der Arbeit einzusetzen
[Maschinelles Lernen] Fassen wir die zufällige Gesamtstruktur auf leicht verständliche Weise zusammen
Maschinelles Lernen in Delemas (Praxis)
Eine Einführung in das maschinelle Lernen
Über maschinelles Lernen gemischte Matrix
Python Machine Learning Programming> Schlüsselwörter
Wird in EDA für maschinelles Lernen verwendet
Lernen Sie maschinelles Lernen jederzeit und überall in der bedarfsgesteuerten Jupyter Notebook-Umgebung