Cliquez ici jusqu'à hier
Vous deviendrez ingénieur dans 100 jours-70-Programmation-À propos du scraping
Vous deviendrez ingénieur dans 100 jours - Jour 63 - Programmation - À propos de la probabilité 1
Vous deviendrez ingénieur dans 100 jours - Jour 59 - Programmation - À propos des algorithmes
Vous deviendrez ingénieur dans 100 jours --- Jour 53 --Git --À propos de Git
Vous deviendrez ingénieur dans 100 jours - Jour 42 --Cloud --À propos des services cloud
Vous deviendrez ingénieur dans 100 jours-24 jours-Python-Bases du langage Python 1
Vous deviendrez ingénieur dans 100 jours --Jour 18 --Javascript --Les bases de JavaScript 1
Vous deviendrez ingénieur dans 100 jours - Jour 14 --CSS --CSS Basics 1
Vous deviendrez ingénieur dans 100 jours - Jour 6 --HTML - Bases du HTML 1
Cette fois, c'est la suite de l'histoire de l'apprentissage automatique.
Je vais vous expliquer ce que vous pouvez faire avec l'apprentissage automatique pour la première fois, mais ce que vous pouvez faire avec l'apprentissage automatique Il y en a essentiellement trois.
· Revenir · Classification ・ Regroupement
En gros, cela devient «prédiction», mais la partie de ce qu'il faut «prédire» change.
・ Retour: prédire les valeurs numériques ・ Classification: Catégories de prédiction ・ Clustering: faites-vous sentir bien
Le clustering devient un apprentissage non supervisé "Je ne connais pas la réponse, mais divisez-la en quelque chose de gentil" Vous pouvez le faire.
Les données utilisées cette fois sont les données de «chiffres» (nombres) attachés à «scikit-learn».
Tout d'abord, lisons les données numériques.
Vous pouvez charger les données avec load_digits
.
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)
Lorsque vous le sortez sous forme d'image, il ressemble au nombre «0».
Ceci est une image de taille 8x8.
Maintenant, affichons la source de ces données.
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.]])
Les données elles-mêmes sont une liste de nombres. Les nombres représentent 16 niveaux d'échelle de gris, 0 étant noir et 15 étant blanc.
Divisons ces données numériques en bons sentiments. Chargez-le dans une trame de données.
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 |
Vous pouvez voir que les données ressemblent à celles-ci converties en valeur numérique de chaque pixel.
Le clustering peut être globalement divisé en deux méthodes.
** Classification hiérarchique **
Comment regrouper dans l'ordre à partir de la combinaison la plus similaire avec une méthode de clustering comme une table de tournoi
Le processus peut être représenté comme une hiérarchie, et finalement un dendrogramme
(diagramme arborescent) est créé.
Il existe de nombreuses méthodes telles que la méthode de la paroisse, la méthode de la moyenne de groupe, la méthode de la distance la plus courte, etc.
** Clustering non hiérarchique ** C'est l'une des méthodes pour créer un cluster en collectant des éléments avec des propriétés similaires à partir d'un groupe d'éléments mixtes de propriétés différentes. Il existe des K-means comme méthode.
Ici, effectuons un clustering non hiérarchique en utilisant K-means
.
Tout d'abord, appelez la bibliothèque.
«K-means» spécifie uniquement le nombre de (K) à diviser pour le moment. Clustering en spécifiant une trame de données.
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'])
Avec cela, le résultat de la prédiction est également sorti. Le résultat de la prédiction est stocké dans pred_df
.
Voyons comment il a été divisé.
calc = {i:{} for i in range(K)}
for pred , target in zip(pred_label , digits.target):
#print('Prévoir: {0} ,Mesure réelle: {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}}
Le regroupement de K-means classe des choses similaires en K morceaux en examinant la nature des valeurs numériques. Celui donné ici est le «numéro de cluster». Le numéro de cluster «0» semble avoir le plus grand nombre de «6» lorsqu'il s'agit de la valeur réelle.
Regardons les mesures et les prévisions réelles.
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]
Examinons la valeur d'index du numéro de cluster «0» pour voir quels sont les nombres dans ces données.
plt.gray()
plt.matshow(digits.images[6])
plt.matshow(digits.images[16])
plt.matshow(digits.images[26])
plt.show()
Celui avec le numéro de cluster «0» ressemble à «6». Je pense que c'était divisé en bons sentiments.
À l'origine, je ne connais pas la réponse, mais je l'utilise à des fins telles que vouloir classer les utilisateurs en sept. C'est une division qui classe les utilisateurs similaires en fonction des caractéristiques des données.
Aujourd'hui, j'ai expliqué le mécanisme du clustering. Il existe de nombreuses autres méthodes de clustering.
Tout d'abord, supprimons la méthode pour la première fois en disant ce qu'est le clustering.
17 jours avant de devenir ingénieur
HP d'Otsu py: http://www.otupy.net/
Youtube: https://www.youtube.com/channel/UCaT7xpeq8n1G_HcJKKSOXMw
Twitter: https://twitter.com/otupython
Recommended Posts