Il s'agit de l'enregistrement de la 98e «classification par la méthode Ward» de 100 language processing knock 2015. Contrairement au clustering non hiérarchique précédent, le clustering hiérarchique est effectué. Le résultat est sous la forme ci-dessous dans laquelle les clusters sont hiérarchisés (grands car il y a 238 pays ...).
Lien | Remarques |
---|---|
098.Clustering par méthode Ward.ipynb | Lien GitHub du programme de réponse |
100 coups de traitement du langage amateur:98 | Je vous suis toujours redevable de 100 coups de traitement linguistique |
A propos de la création d'un dendrogramme avec Python et les éléments de liaison | Méthode Ward et méthode d'implémentation du dendrogramme en Python |
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 |
---|---|
matplotlib | 3.1.1 |
pandas | 0.25.3 |
scipy | 1.4.1 |
Au chapitre 10, nous continuerons à travailler sur l'apprentissage des vecteurs de mots du chapitre précédent.
Effectuez un regroupement hiérarchique par la méthode Ward sur> 96 vecteurs de mots De plus, visualisez le résultat du regroupement sous forme de dendrogramme.
Cette fois, il s'agit d'un clustering hiérarchique. Les détails étaient très faciles à comprendre dans Link. Le nombre de clusters peut être fixé arbitrairement en divisant par la hiérarchie supérieure.
import matplotlib.pyplot as plt
import pandas as pd
from scipy.cluster.hierarchy import dendrogram, linkage
country_vec = pd.read_pickle('./096.country_vector.zip')
print(country_vec.info())
clustered = linkage(country_vec, method='ward')
plt.figure(figsize=(20, 50), dpi=100, facecolor='c')
_ = dendrogram(clustered, labels=list(country_vec.index), leaf_font_size=8, orientation='right')
plt.show()
En général, je me réfère à l'article "A propos de la création d'un dendrogramme avec Python et les éléments de liaison".
Cluster utilisant la fonction linkage
. En définissant le paramètre «method» sur «ward», le clustering est effectué par la méthode Ward.
clustered = linkage(country_vec, method='ward')
Après cela, le résultat s'affiche. Le dendrogramme affiché (diagramme en arbre) est placé en haut. J'ai volontairement défini la couleur d'arrière-plan sur c
(cyan) car le blanc par défaut n'était pas visible lorsque l'étiquette a été transformée en fichier image.
plt.figure(figsize=(20, 50), dpi=100, facecolor='c')
_ = dendrogram(clustered, labels=list(country_vec.index), leaf_font_size=8, orientation='right')
plt.show()
Je ne regarderai qu'en haut. Contrairement aux K-Means, il est bon de connaître le degré de similitude entre les pays individuels. Si vous pensez que les nations marines sont alignées, le Japon et la Chine sont proches l'un de l'autre. Je me demande pourquoi. L'Irak, l'Afghanistan et Israël sont proches en termes de distance physique, mais ont-ils le même sens?
Recommended Posts