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% Concernant E3% 82% B0), j'ai touché un peu au début de ce blog, mais je ne peux nier le manque d'explication. Cependant, je pense qu'il existe une opinion selon laquelle scikit-learn ne peut pas être utilisé dans le but souhaité en premier lieu. Par conséquent, je vais expliquer à nouveau le clustering de base par scikit-learn.
Cependant, comme histoire de base, l'histoire se termine par Lire le document original, mais des informations en japonais Je pense qu'il peut y avoir de l'aide.
Un cas courant est celui où vous souhaitez vous diviser en plusieurs groupes en fonction de la langue nationale, des mathématiques et des notes d'anglais de vos élèves. À ce stade, vous pouvez les diviser dans l'ordre à partir du haut du score total de chaque matière, mais certains étudiants peuvent être bons en japonais mais pas bons en mathématiques, et certains étudiants sont bons en mathématiques mais pas bons en japonais. Il serait malheureux que ces étudiants soient simplement regroupés à partir du haut du score total. C'est là qu'intervient l'analyse de clustering. En regroupant des étudiants ayant des tendances similaires, vous serez en mesure de créer un regroupement plus approprié que les notes les plus élevées.
Écrivez le code de clustering K-means et essayez-le. Faisons le. Veuillez consulter cet article pour une explication détaillée des spécifications du clustering K-means. regarde s'il te plait. Cette fois, divisons les élèves en trois groupes.
import numpy as np
from sklearn.cluster import KMeans
#Donnez les scores des élèves en langue nationale, en mathématiques et en anglais sous forme de tableau
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-signifie regroupement
#Dans cet exemple, il est divisé en trois groupes(Que la graine du nombre aléatoire de Mercenne Twister soit 10.)
kmeans_model = KMeans(n_clusters=3, random_state=10).fit(features)
#Obtenez l'étiquette classée
labels = kmeans_model.labels_
#étiquette(Équipe), Notes et score total de 3 matières
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
À propos, il semble qu'ils aient été divisés en trois groupes. Examinons le contenu. Tout d'abord, les étudiants avec une étiquette de 2 sont un groupe relativement excellent avec des scores élevés. Ensuite, en regardant les étudiants avec une étiquette de 1, il y a des étudiants qui ne sont bons qu'en japonais et ceux qui ne sont pas aussi bons que le japonais, bien qu'ils soient au milieu. Apparemment, cela semble être un groupe d'étudiants proches des arts libéraux. Les élèves avec une note finale de 0 sont classés comme ceux dont les notes sont légèrement inférieures dans l'ensemble ou qui sont bons en mathématiques.
De cette façon, au lieu de diviser en trois groupes à partir du haut du score total, nous avons pu nous diviser en groupes selon la tendance de chaque élève.
Même dans un problème réel, l'analyse de clustering peut être effectuée si la nature est bien sélectionnée et le vecteur numérique est dessiné de cette manière.
Avec scikit-learn, le clustering K-means lui-même peut être effectué en une seule ligne, afin que vous puissiez ressentir la puissance puissante de la bibliothèque d'apprentissage automatique.
Recommended Posts