자료를 공개한 저자 오렐리앙 제롱과 강의자료를 지원한 한빛아카데미에게 진심어린 감사를 전합니다.
housing = strat_train_set.drop("median_house_value", axis=1)
housing_labels = strat_train_set["median_house_value"].copy()
fit() 메서드 활용: 특정 파라미터 값을 저장한 속성이 업데이트된 객체 자신 반환transform() 메서드 활용fit() 메서드와 transform() 메서드를 연속해서 호출하는 fit_transform() 메서드 활용 가능predict() 메서드 활용fit()과 predict() 메서드가 포함되어 있어야 함predict() 메서드가 추정한 값의 성능을 측정하는 score() 메서드도 포함total_bedrooms 특성에 207개 구역에 대한 값이 null로 채워져 있음, 즉, 일부 구역에 대한 정보가 누락됨.
| 옵션 | 코드 |
|---|---|
| 옵션 1 | housing.dropna(subset=["total_bedrooms"]) |
| 옵션 2 | housing.drop("total_bedrooms", axis=1) |
| 옵션 3 | median = housing["total_bedrooms"].median() |
housing["total_bedrooms"].fillna(median, inplace=True) |
<옵션 3 활용>

from sklearn.impute import SimpleImputer
imputer = SimpleImputer(strategy="median")
housing_num = housing.drop("ocean_proximity", axis=1)
imputer.fit(housing_num)
| 범주 | 숫자 |
|---|---|
| <1H OCEAN | 0 |
| INLAND | 1 |
| ISLAND | 2 |
| NEAR BAY | 3 |
| NEAR OCEAN | 4 |
sparse 키워드 인자True. False로 지정할 경우 일반 행렬로 처리.
fit(), transform() 메서드를 구현하면 됨.__init__() 메서드: 생성되는 모델의 하이퍼파라미터 지정 용도 fit() 메서드: 계산해야 하는 파라미터가 없음. 바로 self 리턴transform() 메서드: 넘파이 어레이를 입력받아 속성을 추가한 어레이를 반환class CombinedAttributesAdder(BaseEstimator, TransformerMixin):
def __init__(self, add_bedrooms_per_room = True):
...
def fit(self, X, y=None):
return self
def transform(self, X):
...
BaseEstimator 상속: 하이퍼파라미터 튜닝 자동화에 필요한 get_params(), set_params() 메서드 제공 TransformerMixin 상속: fit_transform() 자동 생성StandardScaler 변환기 활용 가능 (책에서 사용)fit() 메서드: 훈련 세트에 대해서만 적용. 테스트 세트는 활용하지 않음.transform() 메서드: 테스트 세트 포함 모든 데이터에 적용 Pipeline 클래스를 이용하여 파이프라인 변환기 객체 생성 가능num_pipeline = Pipeline([
('imputer', SimpleImputer(strategy="median")),
('attribs_adder', CombinedAttributesAdder()),
('std_scaler', StandardScaler()),
])
fit_transform() 메서드 지원num_pipeline는 변환기. 이유는 std_scaler가 변환기이기 때문임.num_pipeline.fit() 호출: fit_transform() 메소드 연속 호출.
즉, 변환기가 실행될 때마다 변환도 동시에 진행.fit() 메서드 호출ColumnTransformer 클래스를 이용하여 특성별로 지정된 전처리를 처리할 수 있도록 지정 가능fit() 메서드에 pandas의 데이터프레임을 직접 인자로 사용 가능num_pipeline 변환기list(housing_num)OneHotEncoder 변환기["ocean_proximity"]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)