검증 세트
Coddy Machine Learning 여정의 지도 학습 섹션에 포함된 레슨. 58개 중 35번째.
k와 트리 깊이를 선택할 때, 가장 높은 테스트 점수를 기록한 k 또는 깊이를 선택했습니다. 하지만 그 점수는 실제보다 좋게 보일 수 있습니다. 점수가 높게 나왔기 때문에 그것을 선택한 것이니까요.
따라서 선택을 위해 세 번째 세트인 검증 세트를 남겨 두세요:
두 번 분할하면 됩니다. 나머지 80%의 0.25는 20%입니다:
X_rest, X_test, y_rest, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
X_train, X_val, y_train, y_val = train_test_split(X_rest, y_rest, test_size=0.25, random_state=0)
print(len(X_train), len(X_val), len(X_test))500개의 행에 대해 다음을 출력합니다:
300 100 100검증 세트로 선택하세요. 테스트 세트는 맨 마지막에 한 번만 사용하세요.
챌린지
중급포도밭에서는 Ridge를 사용해 각 줄의 포도 수확량을 예측합니다. 시작 코드는 테스트 점수를 기준으로 alpha를 선택하고 같은 점수를 보고합니다. 이를 수정하세요.
X_rest와y_rest를 학습 행과 검증 행으로 나누세요(test_size=0.25,random_state=0).- 검증 R 제곱 점수를 기준으로 alpha를 선택하고, 그 점수와 함께 출력하세요.
- 선택한 alpha로 학습 행을 학습하고 테스트 R 제곱 점수를 출력하세요.
다른 포도밭의 경우:
Chosen alpha: 1 (validation R squared 0.787)
Test R squared: 0.726정직한 점수는 시작 코드의 점수보다 낮은 경우가 많습니다. 그 점수가 진짜 점수입니다.
직접 해보기
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import Ridge
# 첫 번째 행 집합에 스케일링된 Ridge(alpha)를 학습시키고, 두 번째 행 집합에서의 R 제곱값을 반환합니다
def ridge_r2(alpha, X_fit, y_fit, X_check, y_check):
scaler = StandardScaler()
model = Ridge(alpha=alpha)
model.fit(scaler.fit_transform(X_fit), y_fit)
return model.score(scaler.transform(X_check), y_check)
# 포도밭 데이터 90행: 각 행에는 측정값 10개와 kg 단위의 포도 수확량이 있습니다
rows = pd.read_csv("vineyard.csv")
features = ["sun_hours", "rain_mm", "soil_ph", "slope_deg", "vine_age",
"row_length_m", "buds_per_vine", "frost_days", "wind_kmh", "clay_pct"]
X = rows[features]
y = rows["yield_kg"]
alphas = [0.1, 1, 10, 100]
X_rest, X_test, y_rest, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# 테스트 점수로 alpha를 선택한 뒤 같은 점수를 보고합니다: 이를 수정하세요
best_alpha = 0
best_r2 = -1
for alpha in alphas:
r2 = ridge_r2(alpha, X_rest, y_rest, X_test, y_test)
if r2 > best_r2:
best_alpha = alpha
best_r2 = r2
print(f"Chosen alpha: {best_alpha}")
print(f"Test R squared: {best_r2:.3f}")
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
지도 학습의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러