[핸즈온 머신러닝]
2장
- 머신러닝 알고리즘을 위한 데이터 준비를 함수를 만들어서 자동화해야하는 이유 :
- 어떤 데이터셋에 대해서도 데이터 변환을 손쉽게 반복할 수 있다.(예: 다음번에 새로운 데이터셋을 사용할 때)
- 향후 프로젝트에 사용할 수 있는 변환 라이브러리를 점진적으로 구축하게 된다.
- 실제 시스템에서 알고리즘에 새 데이터를 주입하기 전에 변환시키는 데 이 함수를 사용할 수 있다.
- 여러가지 데이터 변환을 쉽게 시도해볼 수 있고 어떤 조합이 가장 좋은지 확인하는데 편리하다.
- 결측치 처리 방법 :
- 해당 구역 제거
- 전체 특성을 삭제
- 어떤 값으로 채움 (0, 평균, 중간값 등)
- OrdianalEncoder : 머신러닝 알고리즘이 가까이 있는 두 값이 떨어져 있는 두 값보다 더 비슷하다고 생각함. 이런 경우 이진 특성 OneHotEncoder가 나은 방법.
- 특성 스테일링 : 숫자 특성들의 스케일이 많이 다르면 잘 작동하지 않는다.
- ColumTransformer : 범주형 열과 수치형 열 같이 다룰수 있음
from sklearn.compose import ColumnTransformer
num_attribs = list(housing_num)
cat_attribs = ["ocean_proximity"]
full_pipeline = ColumnTransformer([
("num", num_pipeline, num_attribs),
("cat", OneHotEncoder(), cat_attribs),
])
housing_prepared = full_pipeline.fit_transform(housing)
- 여러 종류의 머신러닝 알고리즘으로 하이퍼파라미터 조정에 너무 많은 시간을 들이지 않으면서 다양한 모델을 시도해봐야 한다. 가능성 있는 2~5개 정도의 모델을 선정하는 것이 목적이다. GridSearchCV를 통해서 최적의 하이퍼파라미터 조합을 찾는다.