Open danbi5228 opened 2 years ago
SVR (오차 허용 범위인 마진 내에 최대한 많은 관측치가 포함되도록)
from sklearn.base import BaseEstimator, TransformerMixin
def indices_of_top_k(arr, k): return np.sort(np.argpartition(np.array(arr), -k)[-k:])
class TopFeatureSelector(BaseEstimator, TransformerMixin): def init(self, feature_importances, k): self.feature_importances = feature_importances self.k = k def fit(self, X, y=None): self.featureindices = indices_of_top_k(self.feature_importances, self.k) return self def transform(self, X): return X[:, self.featureindices]
### 연습문제 4번
- 전체 데이터 준비 과정과 예측을 하나의 파이프라인으로
```python
prepare_select_and_predict_pipeline = Pipeline([
('preparation', full_pipeline),
('feature_selection', TopFeatureSelector(feature_importances, k)),
('svm_reg', SVR(**rnd_search.best_params_))
])
prepare_select_and_predict_pipeline.fit(housing, housing_labels)
imputer
객체)fit()
메서드에 의해 수행됨. 하나의 매개변수로 하나의 데이터셋만 전달함 (단, 지도학습 알고리즘에서는 매개변수가 두 개. 두 번째 데이터셋은 레이블을 담고 있음)imputer
객체의 strategy
매개변수. imputer = SimpeImputer(strategy="median")
transform()
메서드가 수행. 데이터셋을 매개변수로 전달받으며, 변환된 데이터셋을 반환함. fit()
과 transform()
을 연달아 호출하는 것과 동일한 fit_transform()
메서드도 가지고 있음predict()
메서드가 새로운 데이터셋을 받아 이에 상응하는 예측값을 반환함score()
메서드를 가짐imputer.strategy
), 학습된 모델 파라미터도 public 인스턴스 변수로 제공됨 (예: imputer.statistics_
)Pipeline
추정기)fit()
, transform()
, fit_transform()
메서드를 구현한 파이썬 클래스를 만들면 됨
TransformerMixin
을 상속하면 fit_transform()
메서드가 자동으로 생성됨
Mixin
이 있으면 객체의 기능을 확장하려는 목적으로 만들어진 클래스를 나타냄BaseEstimator
를 상속하면 하이퍼파라미터 튜닝에 필요한 두 메서드 get_params()
, set_params()
를 얻게 됨BaseEstimator
, TransformerMixin
을 상속하는 새로운 클래스 CombinedAttributesAdder
정의
add_bedrooms_per_room
을 가짐. (기본값 지정)MinMaxScaler
변환기. feature_range
매개변수로 범위 변경 가능StandardScaler
fit()
메서드를 적용해야 함. 이후 훈련 세트와 테스트 세트에 대해 transform()
메서드를 적용.num_pipeline
생성
Pipeline
은 연속된 단계를 나타내는 이름/추정기 상의 목록을 입력으로 받음fit()
메서드를 호출하면 모든 변환기의 fit_transform()
메서드가 순서대로 호출되면서 각 단계의 출력을 다음 단계의 입력으로 전달함. 마지막 단계에서는 fit()
메서드만 호출됨StandardScaler
인 경우 파이프라인이 transform()
메서드를 갖고 있음)num_pipeline
, OneHotEncoder()
로 처리하는 파이프라인 생성
ColumnTransformer
클래스 생성시 (이름, 변환기, 변환기가 적용될 열 이름)의 리스트를 파라미터로 전달ColumnTransformer
는 최종 행렬의 밀집 정도를 추정하여 임곗값보다 낮으면 희소 행렬을 반환함ColumnTransformer
와 동일한 기능을 가진 사용자 정의 변환기 만들기FeatureUnion
클래스 사용GridSearchCV
: 가능한 모든 하이퍼파라미터 조합에 대해 교차 검증을 사용해 평가함param_grid
에 시도해볼 파라미터 조합을 설정해줌best_params_
로 최적의 조합 확인best_estimator_
로 최적의 추정기 얻을 수 있음cv_results_
로 평가 점수 확인GridSearchCV
가 refit=True
로 초기화되었다면, 교차 검증으로 최적의 추정기를 찾은 다음 전체 훈련 세트로 다시 훈련 시킴. (데이터가 많을수록 성능이 향상되기 때문에 좋은 방법)RandomizedSearchCV
를 사용하는 것이 좋음
GridSearchCV
와 거의 같은 방식으로 사용HalvingGridSearchCV
와 HalvingRandomSearchCV
가 추가됨RandomForestRegressor
의 feature importance 확인하여 덜 중요한 특성들을 제외할 수 있음full_pipeline
을 사용해 데이터 변환하여 최종 모델 평가하기 (테스트 세트에서 훈련하면 안되므로 fit_transform()
이 아니라 transform()
을 호출해야!)scipy.stats.t.interval()
를 사용해 일반화 오차의 95% 신뢰구간을 계산할 수 있음predict()
메서드를 호출해 가격 예측하도록 하기
3/16 pm9:003/17 pm10:00