train.select_dtypes(exclude=['object'])
# or
train.select_dtypes(include=['object'])
dtype이 맞는 컬럼만 골라낸다.
p.s 아래와 같이 구현할수도 있다.
cols = [col for col in train if train[col].dtypes =='object' ]
X_full = pd.read_csv('../input/train.csv', index_col='Id')
csv파일을 Pandas.DataFrame으로 읽어들인다.
X = X_full[features].copy()
기존 데이터프레임을 새로 만들어 반환한다.
[print( {col : train[col].unique()}, end='\n\n') for col in cat_cols]
컬럼의 유니크 요소 반환
결과
{'MSZoning': array(['RL', 'RM', 'C (all)', 'FV', 'RH'], dtype=object)}
{'Street': array(['Pave', 'Grvl'], dtype=object)}
{'Alley': array([nan, 'Grvl', 'Pave'], dtype=object)}
{'LotShape': array(['Reg', 'IR1', 'IR2', 'IR3'], dtype=object)}
{'LandContour': array(['Lvl', 'Bnk', 'Low', 'HLS'], dtype=object)}
{'Utilities': array(['AllPub', 'NoSeWa'], dtype=object)}
{'LotConfig': array(['Inside', 'FR2', 'Corner', 'CulDSac', 'FR3'], dtype=object)}
{'LandSlope': array(['Gtl', 'Mod', 'Sev'], dtype=object)}
model = RandomForestRegressor(n_estimators=100, criterion='mae', random_state=0)
RandomForest 회귀 모델을 생성한다. 자주 사용하는 파라미터는 아래와 같다.
랜덤포레스트 모델은 여러 머신러닝 모델을 ensemble(결합)하여 만드는 모델이다. 각 모델의 결합을 통해 오버피팅을 방지하는 효과를 가지고있으며, 데이터를 sampling해서 만든 Decision tree 평가 결과치의 평균을 통해 계산한다.
X_train, X_valid, y_train, y_valid = train_test_split(X, y, train_size=0.8, test_size=0.2, random_state=0)
X,Y 값에 대한 train/test셋을 일정 비율로 나눈다. train: 모델 학습에 사용, test: 모델 검증에 사용
mean_absolute_error(y_v, preds)
y_validation dataframe에 대한 pred의 mae를 리턴한다.
결측치를 대체하기 위한 transformer 객체를 생성한다.
my_imputer = SimpleImputer()
imputed_X_train = pd.DataFrame(my_imputer.fit_transform(X_train))
imputed_X_valid = pd.DataFrame(my_imputer.transform(X_valid))
cat_transformer = Pipeline(steps=[
('impute', SimpleImputer() ),
('ohe', OneHotEncoder())
])
preprocessor = ColumnTransformer(transformers=[
('num', SimpleImputer(strategy='constant'), numerical_cols)
('cat', cat_transformer, catagorial_cols)
])