株式の階層構造
第1章では、k-meansクラスタリングを使って企業を株価の値動きに応じてクラスタリングしました。今回は、企業に対して階層的クラスタリングを実行しましょう。
企業ごとの株価の値動きを表すNumPyの配列movements(行に各企業が入る)と、企業名のリストcompaniesがあります。SciPyの階層的クラスタリングは sklearnのパイプラインに組み込めないため、Normalizerの代わりにsklearn.preprocessingのnormalize()関数を使う必要があります。
linkageとdendrogramはすでにscipy.cluster.hierarchyからインポート済みで、PyPlotもpltとしてインポート済みです。
この演習はコースの一部です
Pythonで学ぶ教師なし学習
演習の手順
sklearn.preprocessingからnormalizeをインポートしてください。movementsにnormalize()関数を適用し、各銘柄の株価の値動きを再スケーリングしてください。normalized_movementsにlinkage()関数を適用し、'complete'連結法を使って階層的クラスタリングを計算してください。結果を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()