자료를 공개한 저자 오렐리앙 제롱과 강의자료를 지원한 한빛아카데미에게 진심어린 감사를 전합니다.
fit()
메서드를 전처리 처리가 된 훈련 데이터셋에 적용LinearRegression
클래스 활용LinearRegression
모델은 무어-펜로즈 역행렬을 이용하여 파라미터 직접 계산 (4장 참조)from sklearn.linear_model import LinearRegression
lin_reg = LinearRegression()
lin_reg.fit(housing_prepared, housing_labels)
lin_reg.predict(housing_prepared)
DecisionTreeRegressor
클래스 활용from sklearn.tree import DecisionTreeRegressor
tree_reg = DecisionTreeRegressor(random_state=42)
tree_reg.fit(housing_prepared, housing_labels)
housing_predictions = tree_reg.predict(housing_prepared)
훈련 세트를 폴드(fold)라 불리는 k-개의 부분 집합으로 무작위로 분할
총 k 번 지정된 모델을 훈련
최종적으로 k 번의 평가 결과가 담긴 배열 생성
from sklearn.model_selection import cross_val_score
scores = cross_val_score(tree_reg, housing_prepared, housing_labels,
scoring="neg_mean_squared_error", cv=10)
tree_rmse_scores = np.sqrt(-scores)
scoring="neg_mean_squared_error"
-scores
) 사용lin_scores = cross_val_score(lin_reg, housing_prepared, housing_labels,
scoring="neg_mean_squared_error", cv=10)
lin_rmse_scores = np.sqrt(-lin_scores)
RandomForestRegressor
클래스 활용from sklearn.ensemble import RandomForestRegressor
forest_reg = RandomForestRegressor(n_estimators=100, random_state=42)
forest_reg.fit(housing_prepared, housing_labels)
housing_predictions = forest_reg.predict(housing_prepared)
GridSearchCV
활용from sklearn.model_selection import GridSearchCV
param_grid = [
{'n_estimators': [3, 10, 30], 'max_features': [2, 4, 6, 8]},
{'bootstrap': [False], 'n_estimators': [3, 10], 'max_features': [2, 3, 4]},
]
forest_reg = RandomForestRegressor(random_state=42)
grid_search = GridSearchCV(forest_reg, param_grid, cv=5,
scoring='neg_mean_squared_error',
return_train_score=True)
grid_search.fit(housing_prepared, housing_labels)
cv=5
)이므로, 총 (18x5 = 90)번 훈련함.max_features
: 8n_estimators
: 30RandomizedSearchCV
추정기가 랜덤 탐색을 지원from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import randint
param_distribs = {
'n_estimators': randint(low=1, high=200),
'max_features': randint(low=1, high=8),
}
forest_reg = RandomForestRegressor(random_state=42)
rnd_search = RandomizedSearchCV(forest_reg, param_distributions=param_distribs,
n_iter=10, cv=5, scoring='neg_mean_squared_error', random_state=42)
rnd_search.fit(housing_prepared, housing_labels)
n_iter=10
: 랜덤 탐색이 총 10회 진행n_estimators
와 max_features
값을 지정된 구간에서 무작위 선택cv=5
: 5-겹 교차검증. 따라서 랜덤 포레스트 학습이 (10x5=50)번 이루어짐.max_features
: 7n_estimators
: 180final_model = grid_search.best_estimator_
transform()
메서드를 직접 활용fit()
메서드는 전혀 사용하지 않음