Dies ist die Aufzeichnung des 97. "k-means Clustering" von Language Processing 100 Knocks 2015. Klassifizieren Sie das Land in 5 Cluster unter Verwendung des Wortvektors des Ländernamens, der im vorherigen Klopfen erhalten wurde. Zu diesem Zeitpunkt verwendete K-Mittel werden in "Einführungskurs zum maschinellen Lernen in Coursera (8. Woche - unbeaufsichtigtes Lernen (K-Mittel und PCA))" erlernt. Es handelt sich jedoch um eine Clustering-Methode.
Verknüpfung | Bemerkungen |
---|---|
097.k-bedeutet Clustering.ipynb | Antwortprogramm GitHub Link |
100 Klicks Amateur-Sprachverarbeitung:97 | Ich bin Ihnen immer mit 100 Sprachverarbeitungsklopfen zu Dank verpflichtet |
Art | Ausführung | Inhalt |
---|---|---|
OS | Ubuntu18.04.01 LTS | Es läuft virtuell |
pyenv | 1.2.15 | Ich benutze pyenv, weil ich manchmal mehrere Python-Umgebungen benutze |
Python | 3.6.9 | python3 auf pyenv.6.Ich benutze 9 3.7 oder 3.Es gibt keinen tiefen Grund, keine 8er-Serie zu verwenden Pakete werden mit venv verwaltet |
In der obigen Umgebung verwende ich die folgenden zusätzlichen Python-Pakete. Einfach mit normalem Pip installieren.
Art | Ausführung |
---|---|
pandas | 0.25.3 |
scikit-learn | 0.21.3 |
In Kapitel 10 werden wir weiter daran arbeiten, Wortvektoren aus dem vorherigen Kapitel zu lernen.
Führen Sie k-means Clustering für> 96 Wortvektoren mit der Anzahl der Cluster $ k = 5 $ aus.
In Bezug auf K-Means "Ich habe versucht, die K-Means-Methode mit D3.js zu visualisieren" Es ist leicht zu verstehen. Sie können die statistischen und mathematischen Teile überspringen und sinnlich verstehen. Für diejenigen, die nicht zufrieden sind, wird der kostenlose Coursera Machine Learning-Einführungskurs empfohlen. Der Inhalt ist der Artikel "Coursera Machine Learning-Einführungskurs Online Tora no Maki (Liberal Arts Society)". Empfohlen für Personen) ".
import pandas as pd
from sklearn.cluster import KMeans
country_vec = pd.read_pickle('./096.country_vector.zip')
print(country_vec.info())
# K-Bedeutet 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))
Lesen Sie die letzte Klopfdatei.
country_vec = pd.read_pickle('./096.country_vector.zip')
print(country_vec.info())
Die folgenden Attribute werden als DataFrame ausgegeben.
<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
Mit Scikit-learn können Sie damit K-Means machen. Es ist praktisch, einen DataFrame übergeben zu können.
#KMeans Clustering
predicts = KMeans(n_clusters=5).fit_predict(country_vec)
Werfen wir einen kurzen Blick auf die Clustering-Ergebnisse.
for i in range(5):
print('{} Cluster:{}'.format(i, country_vec[country_vec['class'] == i].index))
Cluster 0 ist mit 153 ungewöhnlich hoch, aber ist es etwas anderes? Cluster 1 ist wie eine sogenannte Marine-Nation wie Neuseeland, England und Japan, umfasst aber auch Indien und China. Cluster 2 hat viele europäische Länder, ist aber eine Mischung aus Brasilien und Argentinien. Es ist ein subtiles Ergebnis, das nicht beurteilt werden kann, ob es erfolgreich ist oder nicht.
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')