Menu
CoddyTech

모델 선택하기

Coddy Machine Learning 여정의 지도 학습 섹션에 포함된 레슨. 58개 중 52번째.

펭귄을 분류할 수 있는 모델 계열은 여러 가지입니다. 어떤 모델이 가장 적합할까요? 각 모델에 같은 데이터 분할과 같은 폴드를 제공한 다음, 다음 와인 모델처럼 비교해 보세요:

와인 데이터에서 후보 모델별 5개 폴드의 정확도를 점으로 표시하고 각 평균에 검은 막대를 표시: 로지스틱 모델이 가장 높고 편차가 작아 0.970, k-NN은 0.940, 트리는 가장 낮은 0.896이며 한 폴드는 0.78까지 하락

평균이 가장 높은 것이 이깁니다. 표준편차가 작다는 것은 운 좋은 한 번의 분할에서가 아니라 모든 폴드에서 이겼다는 뜻입니다.

pipe = make_pipeline(prep, model)
scores = cross_val_score(pipe, X_train, y_train, cv=5)

각 폴드는 자체 학습 부분에서 레인을 다시 적합하므로 모든 점수가 정직하게 유지됩니다. 테스트 펭귄은 계속 잠겨 있습니다.

challenge icon

챌린지

중급

네 후보가 그 일자리를 원합니다. 시작 코드는 데이터 처리 단계, names 및 models 목록을 제공하고, 폴드 수를 읽습니다.

  1. 각 후보에 대해 훈련 행에서 prep와 해당 모델로 구성된 파이프라인을 교차 검증하세요.
  2. 평균과 표준편차를 소수점 이하 3자리까지 출력하세요.
  3. 평균이 가장 높은 우승자를 출력하세요.

다른 펭귄 서식지와 5개 폴드의 경우:

k-NN: mean 0.951, std 0.031
Logistic regression: mean 0.964, std 0.012
Random forest: mean 0.958, std 0.027
Decision tree: mean 0.902, std 0.048
Winner: Logistic regression

직접 해보기

import pandas as pd
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import make_pipeline
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.tree import DecisionTreeClassifier

# Meet the Penguins에서 가져온 펭귄 무리와 그 특성 및 레이블
penguins = pd.read_csv("penguins.csv")
numbers = ["bill_length_mm", "bill_depth_mm", "flipper_length_mm", "body_mass_g"]
text = ["island", "sex"]
X = penguins[numbers + text]
y = penguins["species"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, stratify=y, random_state=0)

# Prepare the Data에서 가져온 두 처리 경로
number_steps = make_pipeline(SimpleImputer(strategy="median"), StandardScaler())
text_steps = make_pipeline(SimpleImputer(strategy="constant", fill_value="unknown"), OneHotEncoder())
prep = ColumnTransformer([("numbers", number_steps, numbers), ("words", text_steps, text)])

# 후보 모델들
names = ["k-NN", "Logistic regression", "Random forest", "Decision tree"]
models = [KNeighborsClassifier(), LogisticRegression(max_iter=1000),
          RandomForestClassifier(n_estimators=100, random_state=0), DecisionTreeClassifier(random_state=0)]
folds = int(input())

# 아래에 코드를 작성하세요
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

지도 학습의 모든 레슨

직접 연습해 보세요: 온라인 Python 컴파일러