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 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.
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.
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)
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.
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, 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()
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.
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
HP von Otsu py: http://www.otupy.net/
Youtube: https://www.youtube.com/channel/UCaT7xpeq8n1G_HcJKKSOXMw
Twitter: https://twitter.com/otupython