始める無料で始める

高い相関をもつ特徴量の除外

数値の ANSUR データセットで、高い相関をもつ特徴量を自動的に除去します。相関行列を計算し、相関係数が 0.95 より大きい、または -0.95 より小さい列を除外します。

相関行列では各相関係数が 2 回(A と B の相関は B と A の相関と同じ)登場するため、相関の片方だけを見て、一方の特徴量のみを削除するようにします。そのためにマスクのテクニックを使いましょう。

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

Pythonで学ぶ次元削減

コースを見る

演習の手順

  • ansur_df の相関行列を計算し、その絶対値を取りましょう。
  • 右上の三角部分が True になるブールマスクを作成し、相関行列に適用します。
  • 相関係数のしきい値を 0.95 に設定します。
  • DataFrame から、to_drop に含まれるすべての列を削除します。

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

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

# Calculate the correlation matrix and take the absolute value
corr_df = ansur_df.____().____()

# Create a True/False mask and apply it
mask = np.____(np.____(corr_df, dtype=____))
tri_df = corr_df.____(mask)

# List column names of highly correlated features (r > 0.95)
to_drop = [c for c in tri_df.columns if any(tri_df[c] >  ____)]

# Drop the features in the to_drop list
reduced_df = ansur_df.____(____, axis=1)

print(f"The reduced_df DataFrame has {reduced_df.shape[1]} columns.")
コードを編集して実行