言語処理100本ノック 2020「67. k-meansクラスタリング」
問題文
問題の概要
最初に 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)