그리드 탐색
Coddy Machine Learning 여정의 지도 학습 섹션에 포함된 레슨. 58개 중 39번째.
수동으로 조정하려면 중첩된 반복문이 필요합니다. GridSearchCV는 모든 설정 조합을 교차 검증하고 가장 좋은 조합을 유지합니다. 전차 운행 300건의 지연 여부 또는 정시 도착 여부를 살펴봅니다.
딕셔너리는 각 설정에 시도할 값을 매핑합니다. 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번의 학습이 필요합니다.
챌린지
중급위성 팀은 k-NN을 사용해 픽셀을 구름 또는 맑은 하늘로 분류합니다. 프로그램은 시도할 가장 큰 k를 읽고, 시작 코드는 데이터를 분할합니다.
weights가"uniform"또는"distance"인(가까운 이웃일수록 더 큰 비중을 차지함) 경우에 대해 1부터 해당 숫자까지 모든 홀수 k를 대상으로cv=5로 그리드 검색을 수행합니다.- 최적 설정, 교차 검증 정확도와 테스트 정확도를 소수점 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)
# 아래에 코드를 작성하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
지도 학습의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러