特徴量とラベルの関係
CoddyのMachine Learningジャーニー「機械学習のための統計」セクションの一部。レッスン 58/64。
ラベルとともに変化する特徴量はどれでしょうか?各特徴量とラベル(悪性は0、良性は1)の相関を求め、相関の強い順に並べてみましょう。
X.corrwith(y)はすべての特徴量の r を一度に求めます:
X = cancer.data[cancer.feature_names[:10]]
r = X.corrwith(cancer.target)
strength = np.abs(r).sort_values(ascending=False)
for name in strength.index[:3]:
print(name, np.round(r[name], 2))これは次のように出力されます:
mean concave points -0.78
mean perimeter -0.74
mean radius -0.73r が負の値の場合、特徴量はクラス 0 の方が大きいことを意味します。つまり、悪性細胞の方が凹点が多くなります。np.abs は符号にかかわらず、強さで順位付けします。
0に近い特徴量は、フラクタル次元と同様に、クラス間でほとんど差がありません。除外候補です。
チャレンジ
中級モデルはどの組織の特徴量を最初に試すべきでしょうか?入力はグループ(error または worst)と k です。スターターコードでは、そのグループの特徴量が X に格納されています。
yとの r の強さで特徴量を順位付けします。- 上位
k個を、符号付きの r とともに小数点以下2桁で出力します。 - 符号を確認します。最も強い特徴量について、クラスごとの平均値を出力します。
mean グループで k = 2 の場合:
Top 2 mean features:
mean concave points: -0.78
mean perimeter: -0.74
mean concave points by class: malignant 0.09, benign 0.03自分で試してみよう
import numpy as np
from sklearn.datasets import load_breast_cancer
group = input()
k = int(input())
cancer = load_breast_cancer(as_frame=True)
df = cancer.frame
y = cancer.target
# グループの10個の特徴量: mean、error、worstのいずれか
start = {"mean": 0, "error": 10, "worst": 20}[group]
X = cancer.data[cancer.feature_names[start:start + 10]]
# 以下にコードを書いてください
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
機械学習のための統計のすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ