๐ 0503 ์ค์ต
โ
์ ์ฒ๋ฆฌ
- ์ซ์ํํ๋ก ๋ ๋ฌธ์์ด โ ์ซ์ํ์ผ๋ก ๋ณ๊ฒฝ
pd.to_numeric(๋ณ๊ฒฝํ Series)
- ์์ฑ
errors
: ๊ฒฐ์ธก์น๊ฐ ์๋ค๋ฉด ์ ๊ฑฐํ๋ฉด์ ์ซ์ํ ๋ฐ์ดํฐ๋ก ๋ณํ
๐ ํ์ต, ์์ธก ๋ฐ์ดํฐ์
๋๋๊ธฐ
- Binary Encoding
- One-Hot-Encoding ํ ํ์X
- ์ด์ฐจํผ ์๋ก ์์ ํ ๋ฐ๋์
- ์ฝ๋: ์์น๋ฐ์ดํฐ ์์ฒด๋ ๋ถ๋ฆฌํ๋ฉด ๋ ์ข์ง ์์์๊น? ๋ผ๋ ๊ฐ์ฌ๋์ ์๊ฐ์ด ์์
train_test_split
- arrays : ๋ถํ ์ํฌ ๋ฐ์ดํฐ
- test_size: ํ
์คํธ ์
์ ๋น์จ, default = 0.25
- train_size: ํ์ต ๋ฐ์ดํฐ ์
์ ๋น์จ, defalut = 1-test_size
- random_state : ๊ณ ์ ํ seed๊ฐ
- shuffle: ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ๋๋๊ธฐ ์ ์ ์์๋ฅผ ์์๊ฒ์ธ์ง, default = True
- stratify: ์ง์ ํ ๋ฐ์ดํฐ์ ๋น์จ์ ์ ์งํ๋ค (์ธตํํ์ง)
๐ฅ One-hot-Encoding
-
๋ณ์ ๊ณจ๋ผ๋ด๊ธฐ
- ์ธ์ฝ๋ฉ์ด ํ์ํ Object ๋ฐ์ดํฐ๋ง ๊ฐ์ ธ์ค๊ธฐ
.select_dtype(include = 'object')
- ๊ธฐ์กด์ ์ฌ์ฉํ๋ ๋ฐ์ด๋๋ฆฌ ๋ณ์ ์ ์ธ
-
์ ์ ์ ๋ฌด ํ์ธ
descirbe()
- ์ ์ธํด์ค ๋ฐ์ด๋๋ฆฌ ๊ฐ์ด ์๋์ง, ์์น๋ฐ์ดํฐ๋ ์๋์ง ํ์ธ
-
Scikit-learn์ One-Hot-Encoding
-
๋จธ์ ๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ์ x (์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ด๋ )
-
feature ์์ง๋์ด๋ง ๊ธฐ๋ฒ ์ค ํ๋์ - ์ธ์ฝ๋ฉ
-
๋ฐ์ด๋๋ฆฌ ๊ฐ, ์ฌ๋ฌ ๋ฒ์ฃผ ๊ฐ
-
pd.dummies
๋ฅผ ์ฌ์ฉํ๋ฉด ์์น๋ฐ์ดํฐ๋ ๊ทธ๋๋ก ๋๊ณ , ๋ฌธ์ํํ ๋ฐ์ดํฐ๋ง ์ธ์ฝ๋ฉํด์ ์์์ ๋ฐ์ดํฐ ํ๋ ์์ผ๋ก ๋ณํํด์ค
-
์ฝ๋
-
OneHotEncoder(handle_unknown = 'ignore')
๐ ๋ง์ฝ train์๋ ์๋ ๋ฐ์ดํฐ๊ฐ test์ ์๊ธด๋ค๋ฉด
handle_unknown
- ์ ์ ์๋ ์นดํ
๊ณ ๋ฆฌ๊ฐ ๋ฐ๊ฒฌ๋๋ฉด 0์ผ๋ก ์ฒ๋ฆฌ
-
train set โ ohe.fit_transform(X_train[col_ohe])
-
test set โ ohe.transform(X_test[col_ohe])
๐ค Q. fit
์ train์๋ง ํด์ฃผ๋ ์ด์ ?
- test์๋
fit()
์ ํด์ฃผ๋ฉด ๊ธฐ์ค์ด ๋ฐ๋์ด์
- ๋ฐ์ดํฐ ๋์ค์ด ์๊ธด๋ค.
โ
ํํ ๋ณํ
- ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ์ฝ๋ฉํ๋ฉด np.arrayํํ๋ก ๋ณํ
- X_train_ohe์ X_train_num์ ๋ณํฉํด์ฃผ๊ธฐ ์ํด X_train_ohe๋ฅผ dataframe ํํ๋ก ๋ง๋ค์ด์ฃผ๊ณ ์๋ค.
- ์์น๋ฐ์ดํฐ๋ง ๋ฝ์์ ์ํซ์ธ์ฝ๋ฉ์ ํ๋ฉด๋จ
- X_train_ohe.toarray()๋ก array ํํ๋ก ๋ง๋ค์ด์ฃผ๊ณ , pd.DataFrame()์ผ๋ก ๊ฐ์ธ dataframe์ ๋ง๋ค์ด์ค๋ค.
- ์ด ๊ฐ์ ๊ธฐ์กด pd,DataFrame๊ณผ ๋ณํฉํ๋ ๊ณผ์ ์ด ํ์ํ๋ค
- ๊ธฐ์กด train ๋ฐ์ดํฐ์์ objectํ์
์ ๋ฐ์ดํฐ๋ ์ ์ธํ๊ณ
๐ train ๋ฐ์ดํฐ๋ฅผ ํ์ต ๊ฐ๋ฅํ ํํ๋ก ์์น๋ฐ์ดํฐ์ ์ธ์ฝ๋ฉํ ๋ฐ์ดํฐ๋ฅผ ๋ณํฉํ๊ธฐ
- X_test ohe๋ฅผ ๋ฐ์ดํฐ ํ๋ ์์ผ๋ก ๋ง๋ค๊ธฐ
- X_test ์ index(CustomerID) ๋๊ฐ์ด ๋ง๋ค๊ธฐ
- X_test์์ ์ซ์ํ๊ณผ ๋
ผ๋ฆฌํ ๋ฐ์ดํฐ๋ง ๊ฐ์ ธ์ค๊ธฐ (Ohe ์ ์ฉํ์ง ์์ ๋ฐ์ดํฐ๋ค)
- Ohe์ ์ ์ฉ ์ ํ ๋ฐ์ดํฐ์ ์ ์ฉํ ๋ฐ์ดํฐ Concat์ผ๋ก ๋ณํฉํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ๊ธฐ
๐ ExtraTreesClassifier
-
์ฐธ๊ณ ์๋ฃ
sklearn.ensemble.ExtraTreesClassifier
๋์ฑ ๋๋คํ ํฌ๋ ์คํธ-์ต์คํธ๋ฆผ ๋๋ค ํธ๋ฆฌ(ExtraTreesClassifier)
-
์์คํธ๋ผ ํธ๋ฆฌ๋ชจ๋ธ?
- ๋ถ๋ฅ(classification)๋ฅผ ์ํ ์์๋ธ ํ์ต(ensemble learning) ์๊ณ ๋ฆฌ์ฆ ์ค ํ๋๋ก, ๋ฌด์์(random) ๊ฒฐ์ ํธ๋ฆฌ(randomized decision trees)๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์
๋๋ค.
- ๋ถ์คํธ๋ฉ ์ํ๊ณผ ๋๋คํ ํ๋ณด ํน์ฑ๋ค์ ์ฌ์ฉํด ์ฌ๋ฌ๊ฐ์ ๊ฒฐ์ ํธ๋ฆฌdecision tree๋ฅผ ์์๋ธ ํฉ๋๋ค. ๊ทธ๋์ ํ๋ จ ๋ฐ์ดํฐ์ ๊ณผ๋์ ํฉ์ ๋ง์์ฃผ๊ณ ๋ชจ๋ธ์ ์ผ๋ฐํ ์ฑ๋ฅ์ด ํญ์ ๋จ์ผ ํธ๋ฆฌ๋ณด๋ค ๋์ต๋๋ค. ๋๋ค ํฌ๋ ์คํธ ๋ชจ๋ธ์ ๋ณ์ข
์ผ๋ก ์ต์คํธ๋ฆผ ๋๋ค ํธ๋ฆฌextremely randomized trees ํน์ ์์คํธ๋ผ ํธ๋ฆฌExtraTrees๋ผ ๋ถ๋ฅด๋ ๋ชจ๋ธ์ด ์์ต๋๋ค.ย ์์คํธ๋ผ ํธ๋ฆฌ๋ ํฌ๋ ์คํธ ํธ๋ฆฌ์ ๊ฐ ํ๋ณด ํน์ฑ์ ๋ฌด์์๋ก ๋ถํ ํ๋ ์์ผ๋ก ๋ฌด์์์ฑ์ ์ฆ๊ฐ
ย ์ํต๋๋ค. Scikit-Learn์ ์์๋ธ ํจํค์ง ์์ ์์คํธ๋ผ ํธ๋ฆฌ ๋ชจ๋ธ์ ์ ๊ณตํฉ๋๋ค.
- ๋์ฑ ๋๋คํ ํฌ๋ ์คํธ๋ก ๊ทน๋๋ก ๋ฌด์์๋ ์์๋ธ ๋ฌ๋ ๋ชจ๋ธ
- Extra Trees - ์์ ๋ถํ
- Random Forest - ์ต์ ๋ถํ
- ๋ฐ์ดํฐ ์ํ ์์ ํน์ฑ ์ค์ ๊น์ง ๋๋ค์ผ๋ก ์ง์
-
ํ๋ผ๋ฏธํฐ
- n_estimators : int, default=100
- ์ฒ์ ์๋ ๋๋ฌด์ ์์
๋๋ค.
- criterion : criterion{โginiโ, โentropyโ, โlog_lossโ}, default=โginiโ
- ๋ถํ ์ ํ์ง์ ์ธก์ ํ๋ ํผ์ฒ์
๋๋ค.
- max_depth : int, default=None
- ํธ๋ฆฌ์ ์ต๋ ๊น์ด์
๋๋ค.
- min_samples_split : int or float, default=2
- ๋ด๋ถ ๋
ธ๋๋ฅผ ๋ถํ ํ๋ ๋ฐ ํ์ํ ์ต์ ์ํ ์
- max_features : {โsqrtโ, โlog2โ, None}, int or float, default=โsqrtโ
- ์ต์์ ๋ถํ ์ ์ฐพ์ ๋ ๊ณ ๋ คํด์ผ ํ ํผ์ฒ์ ์