자료를 공개한 저자 오렐리앙 제롱과 강의자료를 지원한 한빛아카데미에게 진심어린 감사를 전합니다.
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)