Il s'agit de l'enregistrement de la 99e "Visualisation par t-SNE" de Traitement du langage 100 knock 2015. Utilisez t-SNE (intégration de voisin stochastique distribué en t) pour réduire à deux dimensions et visualiser le vecteur de mot comme indiqué dans la figure ci-dessous. Les humains peuvent le voir en 2 ou 3 dimensions.
Lien | Remarques |
---|---|
099.t-Visualisation par SNE.ipynb | Lien GitHub du programme de réponse |
100 coups de traitement du langage amateur:99 | Je vous suis toujours redevable de 100 coups de traitement linguistique |
Les connaissances de base de matplotlib que je voulais connaître tôt, ou l'histoire de l'artiste qui sait ajuster l'apparence | J'ai appris un peu les bases de Matplotlib |
color example code: colormaps_reference.py | Carte des couleurs Matplotlib |
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 |
scikit-learn | 0.21.3 |
Au chapitre 10, nous continuerons à travailler sur l'apprentissage des vecteurs de mots du chapitre précédent.
Visualisez l'espace vectoriel avec t-SNE pour> 96 vecteurs de mots.
t-SNE (incorporation de voisin stochastique distribué en t) réduit la dimension à 2 ou 3. En termes de réduction de dimension, c'est la même chose que PCA (analyse en composantes principales). Cependant, il est également possible de traiter des données avec une structure non linéaire que PCA ne peut pas. Je l'ai écrit abondamment, mais je ne comprends pas les formules mathématiques et c'est une vente de l'article "Cool dimension compression & visualization by t-SNE".
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.manifold import TSNE
from sklearn.cluster import KMeans
country_vec = pd.read_pickle('./096.country_vector.zip')
print(country_vec.info())
# t-SNE
t_sne = TSNE().fit_transform(country_vec)
print('t_sne shape:', t_sne.shape)
#KMeans clustering
clustered = KMeans(n_clusters=5).fit_predict(country_vec)
fig, ax = plt.subplots(figsize=(22, 22))
# Set Color map
cmap = plt.get_cmap('Dark2')
for i in range(t_sne.shape[0]):
cval = cmap(clustered[i] / 4)
ax.scatter(t_sne[i][0], t_sne[i][1], marker='.', color=cval)
ax.annotate(country_vec.index[i], xy=(t_sne[i][0], t_sne[i][1]), color=cval)
plt.show()
Près de 80% du total est une copie de Article "Amateur Language Processing 100 Knock: 99".
Voici le code principal pour cette fois. TSNE de scikt-learn a quelques paramètres, mais je l'ai exécuté avec les valeurs par défaut. Certains blogs ont mentionné que TSNE de scikt-learn n'est pas très bon, mais pour le moment, ne vous inquiétez pas. J'irai.
t_sne = TSNE().fit_transform(country_vec)
En outre, le regroupement non hiérarchique est effectué avec K-Mean comme couleur à afficher dans le diagramme de dispersion.
clustered = KMeans(n_clusters=5).fit_predict(country_vec)
Enfin, utilisez matplotlib
pour afficher le diagramme de dispersion. La couleur d'affichage est définie en utilisant plt.get_cmap
, et il y a des informations sur sa couleur dans code exemple de couleur: colormaps_reference.py. ..
Le point est affiché avec «scatter» et le libellé (nom du pays) est affiché avec «annotate».
matplotlib
. / 08dc0b8c5704c94eafb9) J'ai compris.fig, ax = plt.subplots(figsize=(22, 22))
# Set Color map
cmap = plt.get_cmap('Dark2')
for i in range(t_sne.shape[0]):
cval = cmap(clustered[i] / 4)
ax.scatter(t_sne[i][0], t_sne[i][1], marker='.', color=cval)
ax.annotate(country_vec.index[i], xy=(t_sne[i][0], t_sne[i][1]), color=cval)
plt.show()
En regardant la région autour du Japon, cela ressemble à ceci. Il est plus facile à comprendre que le regroupement hiérarchique qui a été effectué lors du coup précédent.
Recommended Posts