u++の備忘録

言語処理100本ノック 2020「67. k-meansクラスタリング」

問題文

nlp100.github.io

問題の概要

最初に questions-words.txt から国名を取得します。続いて、国名に関する単語ベクトルを抽出し,k-meansクラスタリングクラスタ数k=5として実行します。

import numpy as np
import pandas as pd
from gensim.models import KeyedVectors
from sklearn.cluster import KMeans

df = pd.read_csv('ch07/questions-words.txt', sep=' ')
df = df.reset_index()
df.columns = ['v1', 'v2', 'v3', 'v4']
df.dropna(inplace=True)
df = df.iloc[:5030]
country = list(set(df["v4"].values))

model = KeyedVectors.load_word2vec_format('ch07/GoogleNews-vectors-negative300.bin', binary=True)

countryVec = []
for c in country:
    countryVec.append(model[c])

X = np.array(countryVec)
km = KMeans(n_clusters=5, random_state=0)
y_km = km.fit_predict(X)
print(y_km)