Menu
CoddyTech

K-겹 교차 검증

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

이 장에서는 점수를 신뢰할 수 있게 만드는 방법을 배웁니다. 이 장을 마칠 때쯤이면 다음과 같은 차트를 활용해 모델을 조정하게 됩니다:

k가 1부터 41까지일 때 5개 폴드의 평균 정확도를 나타내는 막대. 막대는 k = 1에서 0.85부터 상승해 k = 15에서 강조된 최고값 0.91에 도달한 다음 하락합니다

하나의 테스트 분할은 운이 좋을 수 있습니다. K-겹 교차 검증은 행을 폴드로 나눕니다. 여기서는 5개로 나누고, 각 폴드를 차례로 테스트하면서 나머지 폴드로 학습합니다:

5개 셀로 이루어진 행 5개. 각 분할에서 셀 하나가 테스트 폴드가 되며, 매번 다른 셀입니다. 나머지 4개는 학습에 사용됩니다. 옆에 표시된 Iris 트리 점수: 0.967, 0.967, 0.900, 0.967, 1.000

한 번 호출하면 다섯 번 모두 실행됩니다. 여기서는 붓꽃 데이터에 트리를 사용합니다:

from sklearn.model_selection import cross_val_score

tree = DecisionTreeClassifier(random_state=0)
scores = cross_val_score(tree, X, y, cv=5)
print(np.round(scores, 3))
print(f"{scores.mean():.3f} {scores.std():.3f}")

다음이 출력됩니다:

[0.967 0.967 0.9   0.967 1.   ]
0.960 0.033

평균을 점수로, 표준 편차를 점수가 얼마나 흔들리는지를 나타내는 값으로 보고하세요.

challenge icon

챌린지

중급

콤부차 양조장은 5개의 실험실 측정값을 바탕으로 상한 배치를 예측합니다. 모델은 얼마나 안정적일까요? 프로그램은 폴드 수를 입력받고, 초기 코드에서 데이터와 모델을 생성합니다.

  1. 해당 폴드 수로 모델을 교차 검증하세요.
  2. 각 폴드의 정확도를 출력한 다음, 평균과 표준 편차를 모두 소수점 셋째 자리까지 출력하세요.
  3. 가장 성능이 낮은 폴드의 번호를 1부터 세어 출력하세요.

다른 배치와 4의 경우:

Fold 1: 0.917
Fold 2: 0.933
Fold 3: 0.883
Fold 4: 0.917
Mean 0.912, std 0.018
Weakest fold: 3

직접 해보기

import numpy as np
from sklearn.datasets import make_classification
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression

n_folds = int(input())

# 아래 줄은 변경하지 마세요: 콤부차 배치 240개, 각 배치의 실험실 측정값 5개; 레이블 1은 상했음을 의미합니다
X, y = make_classification(n_samples=240, n_features=5, n_informative=3, n_redundant=0,
                           flip_y=0.08, class_sep=0.9, random_state=2)
model = LogisticRegression(max_iter=1000)

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

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

지도 학습의 모든 레슨

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