クラスタラベルを抽出する
前の演習では、高さ6における穀物サンプルの途中段階のクラスタリングが3つのクラスタになることを確認しました。今度はfcluster()関数を使って、この途中段階のクラスタリングのクラスタラベルを抽出し、クロス集計を使って穀物の品種と比較してみましょう。
階層的クラスタリングはすでに実行済みで、mergingsはlinkage()関数の結果です。リストvarietiesには、各穀物サンプルの品種が格納されています。
この演習はコースの一部です
Pythonで学ぶ教師なし学習
演習の手順
- 以下をインポートしてください。
- 別名
pdでpandas scipy.cluster.hierarchyからfcluster-mergingsに対してfcluster()関数を使い、フラット階層的クラスタリングを実行してください。最大の高さを6に指定し、キーワード引数criterion='distance'を指定します。'labels'と'varieties'をそれぞれの列の値として使い、labelsとvarietiesいう2つの列を持つDataFramedfを作成します。こちらはすでに用意されています。df['labels']とdf['varieties']の間でクロス集計ctを作成し、各穀物の品種が各クラスタラベルと一致している数を確認してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Perform the necessary imports
import ____ as ____
from ____ import ____
# Use fcluster to extract 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)