穀粒クラスタリングの評価
前の演習では、慣性(inertia)のプロットから、この穀粒データに対してはクラスタ数を3にするのが良さそうだと分かりました。実際、この穀粒サンプルは「Kama」「Rosa」「Canadian」という3種類の品種が混ざっています。本演習では、穀粒サンプルを3つのクラスタに分け、クロス集計を使ってクラスタと品種を比較します。
穀粒サンプルを格納した配列 samples と、各サンプルの品種を示すリスト varieties が用意されています。Pandas(pd)と KMeans はすでにインポート済みです。
この演習はコースの一部です
Pythonで学ぶ教師なし学習
演習の手順
- クラスタ数が
3のKMeansモデルmodelを作成します。 modelの.fit_predict()メソッドを使ってsamplesに当てはめ、クラスタラベルを得ます。.fit_predict()は、.fit()の後に.predict()を呼ぶのと同じです。- 2列
'labels'と'varieties'を持つ DataFramedfを作成し、列の値としてそれぞれlabelsとvarietiesを使います。これはすでに用意されています。 pd.crosstab()をdf['labels']とdf['varieties']に対して使い、各クラスタラベルと各穀粒品種の一致回数を数えます。結果をctに代入します。- 提出してクロス集計を確認しましょう!
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Create a KMeans model with 3 clusters: model
model = ____
# Use fit_predict to fit model and obtain cluster labels: labels
labels = ____
# Create a DataFrame with labels and varieties as columns: df
df = pd.DataFrame({'labels': labels, 'varieties': varieties})
# Create crosstab: ct
ct = ____
# Display ct
print(ct)