파이썬 프로그래밍 : 클러스터링 결과를 3D 산점도에 그려 보았습니다.
소개
과거 기사 ( 위키피디아의 데이터를 사용하여 word2vec을 해보자 {4. 모델 응용편} )에서는 word2vec 모델의 다차원 벡터를 사용하여 단어의 비 계층 적 클러스터링을했습니다.
이번에는 비계층형 클러스터링의 결과를 보여주는 방법을 바꾸어 3D 산점도를 그립니다.
궁극적으로 다음과 같은 물건을 만듭니다.
본고에서 소개하는 것
Plotly Python Graphing Library | Python | Plotly
본고에서 소개하지 않는 것
샘플 코드
비계층형 클러스터링을 실행할 때까지는 과거 기사 를 참고되었고.
클러스터링 결과에서 시각화하는 Code에 중점을 둡니다.
코드 소개
우선은 PCA에서 차원 압축을 하는 부분입니다.
차원 수 지정을 변경하고 실행하면 됩니다.
analyzeWiki_Word2Vec1from sklearn.decomposition import PCA
import pandas as pd
import matplotlib.pyplot as plt
#PCAで3次元に圧縮
pca = PCA(n_components=3)
pca.fit(df.iloc[:, :-2])
feature = pca.transform(df.iloc[:, :-2])
#日本語フォントの指定
plt.rcParams["font.family"] = 'Yu Gothic'
#散布図プロット
color = {0:"green", 1:"red", 2:"yellow", 3:"blue"}
colors = [color[x] for x in cluster_labels]
plt.figure(figsize=(20, 20))
for x, y, name in zip(feature[:, 0], feature[:, 1], df.iloc[:, -2]):
plt.text(x, y, name)
plt.scatter(feature[:, 0], feature[:, 1], color=colors)
plt.savefig("../result/word_clustering_scatter2.png")
plt.show()
당연하지만 2D 산점도라면 결과는 같습니다.
다음으로 3D 산점도를위한 데이터 가공입니다.
analyzeWiki_Word2Vec2feature_df = pd.DataFrame(feature)
#feature_df.head()
feature_df["word"] = words
feature_df["cluster"] = cluster_labels
#feature_df
그리고 이 논문의 주제, 3D 산점도를 그립니다.
analyzeWiki_Word2Vec3import plotly
import plotly.express as px
plotly.offline.init_notebook_mode(connected=False)
fig = px.scatter_3d(feature_df, x=0, y=1, z=2, text="word", color='cluster', symbol='cluster', opacity=0.7)
fig.update_layout(margin=dict(l=0, r=0, b=0, t=0))
plotly.offline.plot(fig, filename='../result/word_clustering_scatter2.html', auto_open=True)
그러면 시작 부분에 표시된 화면이 표시됩니다.
Plotly를 이용한 이유가 여기에서 발휘됩니다.
Plotly로 그린 3D 산포도는, 화면상에서 확대·축소는 물론, 회전도 할 수 버립니다!
조속히 회전을 해 보면 matplotlib로 그린 2D 산포도와 비슷한 단면이 나타났습니다.
좀 더 회전해 보고, “도쿄”와 “일본”, 그리고 3 도시(”가나가와”, “치바”, “사이타마”)와의 위치 관계를 찾아봅니다.
첫째, 국가("일본", "미국", "독일")는 대체로 같은 평면에 존재했다.
이미지에서는 알기 어려울지도 모르지만, 도쿄도 3 도시도, 나라의 평면과는 다른 장소에 위치하고 있습니다.
그리고 다른 각도에서.
세 도시는 대체로 같은 평면에 존재했다. 하지만 같은 평면상으로 "도쿄"는 존재하지 않았습니다.
"도쿄"는 국가의 평면과 도시의 평면 모두 다른 장소에 위치하고 있습니다.
Plotly, 매우 강력하네요.
3D 산포도를 다루었습니다만, 그 이외의 이용에도 대응한, 범용적인 그래프화 툴입니다! ! !
그건 그렇고
word2vec 모델에서도 단어의 유사도는 어떻게 되어 있는가 하면 다음과 같았습니다.
다차원 벡터 공간상에서도, “도쿄”는 3 도시에 비해, “일본” 쪽이 유사도가 높아지고 있었습니다.
analyzeWiki_Word2Vec4$ model.wv.similarity('東京', '日本')
0.329558
$ model.wv.similarity('東京', '神奈川')
0.2497174
$ model.wv.similarity('東京', '千葉')
0.25432715
$ model.wv.similarity('東京', '埼玉')
0.21400008
요약
word2vec 모델(다차원 벡터)의 클러스터링 결과를 시각화하는 방법, 3차원 공간상에 산포도를 그리는 방법을 소개.
Reference
이 문제에 관하여(파이썬 프로그래밍 : 클러스터링 결과를 3D 산점도에 그려 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Blaster36/items/ccebe52d0cc0824e72aa
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
from sklearn.decomposition import PCA
import pandas as pd
import matplotlib.pyplot as plt
#PCAで3次元に圧縮
pca = PCA(n_components=3)
pca.fit(df.iloc[:, :-2])
feature = pca.transform(df.iloc[:, :-2])
#日本語フォントの指定
plt.rcParams["font.family"] = 'Yu Gothic'
#散布図プロット
color = {0:"green", 1:"red", 2:"yellow", 3:"blue"}
colors = [color[x] for x in cluster_labels]
plt.figure(figsize=(20, 20))
for x, y, name in zip(feature[:, 0], feature[:, 1], df.iloc[:, -2]):
plt.text(x, y, name)
plt.scatter(feature[:, 0], feature[:, 1], color=colors)
plt.savefig("../result/word_clustering_scatter2.png")
plt.show()
feature_df = pd.DataFrame(feature)
#feature_df.head()
feature_df["word"] = words
feature_df["cluster"] = cluster_labels
#feature_df
import plotly
import plotly.express as px
plotly.offline.init_notebook_mode(connected=False)
fig = px.scatter_3d(feature_df, x=0, y=1, z=2, text="word", color='cluster', symbol='cluster', opacity=0.7)
fig.update_layout(margin=dict(l=0, r=0, b=0, t=0))
plotly.offline.plot(fig, filename='../result/word_clustering_scatter2.html', auto_open=True)
$ model.wv.similarity('東京', '日本')
0.329558
$ model.wv.similarity('東京', '神奈川')
0.2497174
$ model.wv.similarity('東京', '千葉')
0.25432715
$ model.wv.similarity('東京', '埼玉')
0.21400008
word2vec 모델(다차원 벡터)의 클러스터링 결과를 시각화하는 방법, 3차원 공간상에 산포도를 그리는 방법을 소개.
Reference
이 문제에 관하여(파이썬 프로그래밍 : 클러스터링 결과를 3D 산점도에 그려 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Blaster36/items/ccebe52d0cc0824e72aa텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)