Il s'agit de l'enregistrement du 97ème «clustering k-means» de Language processing 100 knocks 2015. Classez le pays en 5 groupes en utilisant le vecteur de mot du nom de pays obtenu lors du coup précédent. K-Means utilisé à ce moment-là est appris dans "Coursera d'introduction à l'apprentissage automatique (8e semaine d'apprentissage non supervisé (K-Means et PCA))" Cependant, c'est une méthode de clustering.
Lien | Remarques |
---|---|
097.k-signifie regroupement.ipynb | Lien GitHub du programme de réponse |
100 coups de traitement du langage amateur:97 | Je vous suis toujours redevable de 100 coups de traitement linguistique |
type | version | Contenu |
---|---|---|
OS | Ubuntu18.04.01 LTS | Il fonctionne virtuellement |
pyenv | 1.2.15 | J'utilise pyenv car j'utilise parfois plusieurs environnements Python |
Python | 3.6.9 | python3 sur pyenv.6.J'utilise 9 3.7 ou 3.Il n'y a aucune raison profonde de ne pas utiliser la série 8 Les packages sont gérés à l'aide de venv |
Dans l'environnement ci-dessus, j'utilise les packages Python supplémentaires suivants. Installez simplement avec pip ordinaire.
type | version |
---|---|
pandas | 0.25.3 |
scikit-learn | 0.21.3 |
Au chapitre 10, nous continuerons à travailler sur l'apprentissage des vecteurs de mots du chapitre précédent.
Exécutez le clustering k-means pour> 96 vecteurs de mots avec le nombre de clusters $ k = 5 $.
En ce qui concerne K-Means, "J'ai essayé de visualiser la méthode K-means avec D3.js" C'est facile à comprendre. Vous pouvez sauter les parties statistiques et mathématiques et les comprendre sensuellement. Pour ceux qui ne sont pas satisfaits, le Coursera d'introduction à l'apprentissage automatique de Coursera est recommandé, et le contenu est l'article "Cours d'introduction en ligne à l'apprentissage automatique Coursera Tora no Maki (Liberal Arts Society)" Recommandé pour les personnes) ".
import pandas as pd
from sklearn.cluster import KMeans
country_vec = pd.read_pickle('./096.country_vector.zip')
print(country_vec.info())
# K-Signifie clustering
country_vec['class'] = KMeans(n_clusters=5).fit_predict(country_vec)
for i in range(5):
print('{} Cluster:{}'.format(i, country_vec[country_vec['class'] == i].index))
Lisez le dernier fichier de coup.
country_vec = pd.read_pickle('./096.country_vector.zip')
print(country_vec.info())
Les attributs suivants sont générés sous forme de DataFrame.
<class 'pandas.core.frame.DataFrame'>
Index: 238 entries, American_Samoa to Zimbabwe
Columns: 300 entries, 0 to 299
dtypes: float64(300)
memory usage: 559.7+ KB
None
Avec Scikit-learn, vous pouvez faire des K-Means avec juste cela. Il est pratique de pouvoir passer un DataFrame.
#KMeans clustering
predicts = KMeans(n_clusters=5).fit_predict(country_vec)
Jetons un coup d'œil aux résultats du clustering.
for i in range(5):
print('{} Cluster:{}'.format(i, country_vec[country_vec['class'] == i].index))
Le cluster 0 est anormalement élevé à 153, mais est-ce autre chose? Le cluster 1 est comme une soi-disant nation marine comme la Nouvelle-Zélande, l'Angleterre et le Japon, mais il comprend également l'Inde et la Chine. Le cluster 2 comprend de nombreux pays européens, mais c'est un mélange du Brésil et de l'Argentine. C'est un résultat subtil qui ne peut être jugé s'il réussit ou non.
0 Cluster:Index(['American_Samoa', 'Antigua_and_Barbuda', 'Bosnia_and_Herzegovina',
'Burkina_Faso', 'Cabo_Verde', 'Cayman_Islands',
'Central_African_Republic', 'Christmas_Island', 'Keeling_Islands',
'Cocos_Islands',
...
'Tonga', 'Tunisia', 'Turkmenistan', 'Tuvalu', 'Uruguay', 'Uzbekistan',
'Vanuatu', 'Yemen', 'Zambia', 'Zimbabwe'],
dtype='object', length=153)
1 Cluster:Index(['New_Zealand', 'United_Kingdom', 'United_States', 'Australia', 'Canada',
'China', 'India', 'Ireland', 'Israel', 'Japan', 'Pakistan'],
dtype='object')
2 Cluster:Index(['Argentina', 'Austria', 'Belgium', 'Brazil', 'Bulgaria', 'Denmark',
'Egypt', 'Finland', 'France', 'Germany', 'Greece', 'Hungary', 'Italy',
'Netherlands', 'Norway', 'Poland', 'Portugal', 'Romania', 'Spain',
'Sweden', 'Switzerland'],
dtype='object')
3 Cluster:Index(['Guinea', 'Jersey', 'Mexico'], dtype='object')
4 Cluster:Index(['Czech_Republic', 'Hong_Kong', 'People's_Republic_of_China',
'Puerto_Rico', 'South_Africa', 'Sri_Lanka', 'Great_Britain',
'Northern_Ireland', 'Afghanistan', 'Albania', 'Algeria', 'Angola',
'Armenia', 'Azerbaijan', 'Bangladesh', 'Cambodia', 'Chile', 'Colombia',
'Croatia', 'Cuba', 'Cyprus', 'Ethiopia', 'Fiji', 'Georgia', 'Ghana',
'Iceland', 'Indonesia', 'Iraq', 'Kenya', 'Latvia', 'Lebanon', 'Libya',
'Lithuania', 'Malaysia', 'Malta', 'Mongolia', 'Morocco', 'Nepal',
'Nigeria', 'Panama', 'Peru', 'Philippines', 'Serbia', 'Singapore',
'Slovakia', 'Sudan', 'Thailand', 'Turkey', 'Uganda', 'Ukraine'],
dtype='object')
Recommended Posts