クラスタラベルの抽出
前の演習では、高さ 6 の時点で穀物サンプルの中間的なクラスタリングが 3 クラスタであることを確認しました。ここでは、fcluster() 関数を使ってこの中間クラスタリングのラベルを抽出し、クロス集計でそのラベルと穀物の品種を比較します。
階層クラスタリングはすでに実行済みで、mergings は linkage() 関数の結果です。リスト varieties には各穀物サンプルの品種が入っています。
この演習はコースの一部です
Pythonで学ぶ教師なし学習
演習の手順
- 次をインポートします:
pandasをpdとして。scipy.cluster.hierarchyからfcluster。
mergingsに対してfcluster()関数を用いてフラットな階層クラスタリングを実行します。最大高さとして6を指定し、キーワード引数criterion='distance'を設定します。- 列名が
'labels'と'varieties'の 2 列を持つ DataFramedfを作成し、列の値にはそれぞれlabelsとvarietiesを使います。これはすでに用意されています。 - 各クラスタラベルと各穀物品種が一致する回数を数えるため、
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)