가장 좋은 두 가지 특성
Coddy Machine Learning 여정의 머신러닝을 위한 통계 섹션에 포함된 레슨. 64개 중 59번째.
이 장에서 약속한 그림입니다. 가장 강력한 두 평균 특징을 하나의 산점도에 표시하고, 클래스마다 색을 하나씩 사용했습니다.
양성 샘플은 왼쪽 아래에 몰려 있고, 악성 샘플은 위쪽과 오른쪽으로 퍼져 있습니다. 두 샘플이 만나는 곳에서 이 쌍을 사용하는 모델은 실수를 하게 됩니다.
한 번 더 확인해 보세요. 두 항목은 거의 복사본인가요?
first = strength.index[0]
second = strength.index[1]
print(np.round(df[first].corr(df[second]), 2))이것은 0.85를 출력합니다. 서로 관련은 있지만 복사본은 아닙니다. 0.99에서는 두 번째 특성이 첫 번째 특성을 반복하게 되어 새로운 내용이 거의 추가되지 않습니다.
챌린지
중급error 특성은 한 샘플의 세포에서 측정값이 얼마나 달라졌는지를 나타냅니다. 가장 강한 두 특성으로 클래스를 구분할 수 있을까요? 시작 코드는 이 특성들의 순위를 매겨 first와 second에 저장합니다. label(ax)은 차트에 이름을 붙입니다.
r between them:과 두 특성의 r을 소수점 이하 2자리까지 출력하세요.- 클래스마다 산점도를 하나씩 그리세요. 가로축에는
first를 놓고, 클래스 이름으로 레이블을 지정하세요. label(ax)을 호출하고, 범례를 추가한 다음 표시하세요.
가장 강한 worst 쌍(r 0.82)의 경우는 다음과 같습니다.
이제 차트를 보고 판단해 보세요. 점구름이 분리되어 있나요? 그리고 r을 보면, 점들이 겹치나요?
직접 해보기
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_breast_cancer
cancer = load_breast_cancer(as_frame=True)
df = cancer.frame
y = cancer.target
# 10개의 오차 특성: 한 샘플의 세포들 사이에서 각 측정값이 얼마나 달랐는지
X = cancer.data[cancer.feature_names[10:20]]
# 강도순으로 정렬: first와 second가 가장 강한 두 특성
strength = np.abs(X.corrwith(y)).sort_values(ascending=False)
first = strength.index[0]
second = strength.index[1]
# 차트의 제목을 설정하고 두 축에 해당 특성의 이름을 붙입니다
def label(ax):
ax.set_title("Error Features")
ax.set_xlabel(first)
ax.set_ylabel(second)
# 아래에 코드를 작성하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
머신러닝을 위한 통계의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러