Menu
CoddyTech

클래스별 탐색

Coddy Machine Learning 여정의 데이터와 시각화 섹션에 포함된 레슨. 60개 중 54번째.

어떤 측정값으로 종을 구분할 수 있을까요? 꽃잎 길이에 따라 모든 꽃을 한 줄에 놓고, 종마다 한 줄씩 배치해 보세요:

꽃잎 길이에 따라 배치한 붓꽃: 종마다 한 줄씩이며, 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에서 멀수록 해당 특성이 두 클래스를 더 잘 구분해 줍니다.

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 컴파일러