Menu
CoddyTech

クラスごとに探索する

CoddyのMachine Learningジャーニー「データとプロット」セクションの一部。レッスン 54/60。

種を見分ける手がかりとなる測定値はどれでしょうか?花びらの長さに沿って、種ごとに1列ずつ、すべての花を並べてみましょう:

花びらの長さに沿って種ごとに1列ずつ並べたアヤメの花:setosaは約1.5 cm、versicolorは約4.3 cm、virginicaは約5.6 cm付近に集中し、各クラスの平均値は黒いバーで示されています

ラベルでgroupbyを使うと、これらの平均値を計算できます。

df = iris.frame
means = df.groupby("target")["petal length (cm)"].mean()
print(means)

これは次のように出力されます:

target
0    1.462
1    4.260
2    5.552
Name: petal length (cm), dtype: float64

クラス同士が大きく離れているため、花弁の長さはクラスを分離します。モデルはこれを重視するでしょう。

比率は差の大きさを示します。means[2] / means[1]は約1.3です。1から離れているほど、その特徴によってこれら2つのクラスをよりよく区別できます。

challenge icon

チャレンジ

中級

どの細胞の測定値から悪性サンプルを見分けられるでしょうか? load_breast_cancerでは、クラス0が悪性で、クラス1が良性です。スターターコードは、いくつかの特徴名をfeaturesに読み込みます。

  1. 各特徴について、悪性の平均値を良性の平均値で割り、roundを使って小数点以下2桁に丸めて出力します。
  2. ループの後、比率が最大の特徴名を出力します。

特徴がworst radiusとworst textureの場合:

worst radius: malignant is 1.58 times benign
worst texture: malignant is 1.25 times benign
Best separator: worst radius

自分で試してみよう

from sklearn.datasets import load_breast_cancer

cancer = load_breast_cancer(as_frame=True)

# 比較する特徴量
n = int(input())
features = []
for i in range(n):
    features.append(input())

# 以下にコードを書いてください
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

データとプロットのすべてのレッスン

自分で練習してみよう: Pythonオンラインコンパイラ