始める無料で始める

株式の階層構造

第1章では、株価の動きに基づいて企業を k-means クラスタリングで分類しました。今回は、企業に対して階層的クラスタリングを行います。行が企業に対応する NumPy 配列 movements(価格の動き)と、企業名のリスト companies が与えられています。SciPy の階層的クラスタリングは sklearn のパイプラインには組み込めないため、Normalizer ではなく sklearn.preprocessingnormalize() 関数を使用します。

scipy.cluster.hierarchy からはすでに linkagedendrogram がインポートされており、PyPlot も plt としてインポート済みです。

この演習はコースの一部です

Pythonで学ぶ教師なし学習

コースを見る

演習の手順

  • sklearn.preprocessing から normalize をインポートします。
  • movements に対して normalize() 関数を用いて、各銘柄の価格の動きを再スケーリングします。
  • normalized_movements'complete' リンケージで linkage() 関数を適用し、階層的クラスタリングを計算します。結果を mergings に代入します。
  • 企業名のリスト companieslabels として用い、階層的クラスタリングのデンドログラムを描画します。さらに、前の演習と同様に leaf_rotation=90leaf_font_size=6 のキーワード引数を指定します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Import normalize
____

# Normalize the movements: normalized_movements
normalized_movements = ____

# Calculate the linkage: mergings
mergings = ____

# Plot the dendrogram
____
plt.show()
コードを編集して実行