株式の階層構造
第1章では、株価の動きに基づいて企業を k-means クラスタリングで分類しました。今回は、企業に対して階層的クラスタリングを行います。行が企業に対応する NumPy 配列 movements(価格の動き)と、企業名のリスト companies が与えられています。SciPy の階層的クラスタリングは sklearn のパイプラインには組み込めないため、Normalizer ではなく sklearn.preprocessing の normalize() 関数を使用します。
scipy.cluster.hierarchy からはすでに linkage と dendrogram がインポートされており、PyPlot も plt としてインポート済みです。
この演習はコースの一部です
Pythonで学ぶ教師なし学習
演習の手順
sklearn.preprocessingからnormalizeをインポートします。movementsに対してnormalize()関数を用いて、各銘柄の価格の動きを再スケーリングします。normalized_movementsに'complete'リンケージでlinkage()関数を適用し、階層的クラスタリングを計算します。結果をmergingsに代入します。- 企業名のリスト
companiesをlabelsとして用い、階層的クラスタリングのデンドログラムを描画します。さらに、前の演習と同様にleaf_rotation=90とleaf_font_size=6のキーワード引数を指定します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Import normalize
____
# Normalize the movements: normalized_movements
normalized_movements = ____
# Calculate the linkage: mergings
mergings = ____
# Plot the dendrogram
____
plt.show()