모델 선택하기
Coddy Machine Learning 여정의 지도 학습 섹션에 포함된 레슨. 58개 중 52번째.
펭귄을 분류할 수 있는 모델 계열은 여러 가지입니다. 어떤 모델이 가장 적합할까요? 각 모델에 같은 데이터 분할과 같은 폴드를 제공한 다음, 다음 와인 모델처럼 비교해 보세요:
평균이 가장 높은 것이 이깁니다. 표준편차가 작다는 것은 운 좋은 한 번의 분할에서가 아니라 모든 폴드에서 이겼다는 뜻입니다.
pipe = make_pipeline(prep, model)
scores = cross_val_score(pipe, X_train, y_train, cv=5)각 폴드는 자체 학습 부분에서 레인을 다시 적합하므로 모든 점수가 정직하게 유지됩니다. 테스트 펭귄은 계속 잠겨 있습니다.
챌린지
중급네 후보가 그 일자리를 원합니다. 시작 코드는 데이터 처리 단계, names 및 models 목록을 제공하고, 폴드 수를 읽습니다.
- 각 후보에 대해 훈련 행에서
prep와 해당 모델로 구성된 파이프라인을 교차 검증하세요. - 평균과 표준편차를 소수점 이하 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())
# 아래에 코드를 작성하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
지도 학습의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러