9.기본 지도학습 알고리즘들 (K-fold & 그리드서치)
글 한눈에 보기
문제 설정
https://scikit-learn.org/stable/modules/generated/sklearn.datasets.fetch_california_housing.html 데이터 피쳐 설명
원본 구조
1990년 캘리포니아 주택 데이터
데이터 맥락
https://scikit-learn.org/stable/modules/generated/sklearn.datasets.fetch_california_housing.html 데이터 피쳐 설명
주요 장
1990년 캘리포니아 주택 데이터
구현 흐름
California Housing 불러오기 -> GridSearchCV 모델 학습 -> 회귀 성능 평가
자료
ipynb / md · 코드 7 · 실행 6
주요 스택
sklearn, numpy
from sklearn.datasets import fetch_california_housing
from sklearn.linear_model import Ridge
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import mean_squared_error, make_scorer
import numpy as np
1990년 캘리포니아 주택 데이터
https://scikit-learn.org/stable/modules/generated/sklearn.datasets.fetch_california_housing.html
| 항목 | 내용 |
|---|---|
| 데이터 크기 | 총 20,640개의 샘플 |
| 입력 특성 (X) | 8개의 수치형 변수 |
| 타겟 (y) | 1인당 평균 주택 가격 (단위: 100,000 달러) |
| 사용 목적 | 회귀 문제 (주택 가격 예측 등) |
| 출처 | UCI Machine Learning Repository (California Housing Dataset, 1996 Census 기반) |
데이터 피쳐 설명
| 열 이름 | 설명 |
|---|---|
MedInc |
블록 내 중간 소득 (단위: 10,000달러) |
HouseAge |
주택 연식의 중앙값 |
AveRooms |
가구당 평균 방 개수 |
AveBedrms |
가구당 평균 침실 개수 |
Population |
블록 내 인구 수 |
AveOccup |
가구당 평균 인원 수 |
Latitude |
위도 |
Longitude |
경도 |
# 데이터 로드
X, y = fetch_california_housing(return_X_y=True)
# RMSE 함수 정의
def rmse(y_true, y_pred):
return np.sqrt(mean_squared_error(y_true, y_pred))
rmse_scorer = make_scorer(rmse, greater_is_better=False)
# 파라미터 그리드 정의
param_grid = {'alpha' : [0.01, 0.1, 1, 10, 100]}
# 그리드 서치 설정 및 학습
grid = GridSearchCV(Ridge(), param_grid, scoring=rmse_scorer, cv=5) # cv=5: cross validation
grid.fit(X,y)
# 결과 출력
print("최적의 alpha: ", grid.best_params_['alpha']) # best_params_: 모델의 최적 파라미터 값 반환
print("RMSE: ", grid.best_score_) # best_score_: 최적 모델의 점수
=> RMSE가 0.75라는건,
모델의 예측값이 실제값과 평균적으로 약 7만 5천달러 정도 차이가 난다! (Why? 기본 단위가 100,000달러)