Menu
CoddyTech

그리드 탐색

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

수동으로 조정하려면 중첩된 반복문이 필요합니다. GridSearchCV는 모든 설정 조합을 교차 검증하고 가장 좋은 조합을 유지합니다. 전차 운행 300건의 지연 여부 또는 정시 도착 여부를 살펴봅니다.

평균 정확도를 나타내는 3×3 격자: 세로 방향은 트리 깊이 2, 4, 6이고, 가로 방향은 리프당 최소 행 수 1, 5, 20입니다. 가장 좋은 셀은 깊이 4, 리프 5로, 점수는 0.876이며 테두리로 표시되어 있습니다.

딕셔너리는 각 설정에 시도할 값을 매핑합니다. min_samples_leaf는 리프에 포함될 수 있는 최소 행 수입니다:

from sklearn.model_selection import GridSearchCV

grid = {"max_depth": [2, 4, 6], "min_samples_leaf": [1, 5, 20]}
search = GridSearchCV(DecisionTreeClassifier(random_state=0), grid, cv=5)
search.fit(X_train, y_train)
print(search.best_params_)
print(f"{search.best_score_:.3f}")
print(f"{search.score(X_test, y_test):.3f}")

다음이 출력됩니다:

{'max_depth': 4, 'min_samples_leaf': 5}
0.876
0.813

검색은 모든 학습 행으로 우승 모델을 다시 학습하므로, search.score로 한 번 테스트합니다. 그리드의 크기를 작게 유지하세요. 각 셀마다 5번의 학습이 필요합니다.

challenge icon

챌린지

중급

위성 팀은 k-NN을 사용해 픽셀을 구름 또는 맑은 하늘로 분류합니다. 프로그램은 시도할 가장 큰 k를 읽고, 시작 코드는 데이터를 분할합니다.

  1. weights가 "uniform" 또는 "distance"인(가까운 이웃일수록 더 큰 비중을 차지함) 경우에 대해 1부터 해당 숫자까지 모든 홀수 k를 대상으로 cv=5로 그리드 검색을 수행합니다.
  2. 최적 설정, 교차 검증 정확도와 테스트 정확도를 소수점 3자리까지 출력합니다.

다른 픽셀과 7의 경우:

Best k: 7, weights: distance
Cross-validated accuracy: 0.885
Test accuracy: 0.800

직접 해보기

from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.neighbors import KNeighborsClassifier

max_k = int(input())

# 아래 줄은 변경하지 마세요: 위성 픽셀 360개, 각 픽셀의 빛 측정값 4개; 레이블 1은 구름을 의미합니다
X, y = make_classification(n_samples=360, n_features=4, n_informative=3, n_redundant=0,
                           flip_y=0.08, class_sep=0.7, random_state=1)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)

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

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

지도 학습의 모든 레슨

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