
1.起こったこと
機械学習の技術書「Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎」のP168のページ下部のコードを実行したらエラーが起こりました。
エラーの内容は
1 | AttributeError: 'KMeans' object has no attribute 'labels_' |
エラー発生時のコードは以下の通り。
fig, axes = plt.subplots(1, 2, figsize=(10, 5 ))
kmeans = KMeans(n_clusters=2)
assignments = kmeans.labels_
mglearn.discrete_scatter(X[:, 0], X[:,1], assignments, ax=axes[0])
kmeans = KMeans(n_clusters=5)
kmeans.fit(X)
assignments = kmeans.labels_
mglearn.discrete_scatter(X[:, 0], X[:,1], assignments, ax=axes[1])
2.試したこと
kmeansがlabels_を持っていないのはおかしいなと思いつつ、スペルが間違っていないか確認しましたが間違っていなかったので諦めてググりました。
3.解決方法
こちらの記事に解決方法がありました。
どうやらしっかしfitさせないといけないみたいです。

fig, axes = plt.subplots(1, 2, figsize=(10, 5 ))
kmeans = KMeans(n_clusters=2)
kmeans.fit(X)
assignments = kmeans.labels_
mglearn.discrete_scatter(X[:, 0], X[:,1], assignments, ax=axes[0])
kmeans = KMeans(n_clusters=5)
kmeans.fit(X)
assignments = kmeans.labels_
mglearn.discrete_scatter(X[:, 0], X[:,1], assignments, ax=axes[1])
fitさせたしっかり機能しました。
