
- 파이프라인
- 결정트리
- 결정트리의 특성중요도
from category_encoders import OneHotEncoder
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline
#파이프라인(로지스틱_회귀)
pipe = make_pipeline(
OneHotEncoder(),
SimpleImputer(),
StandardScaler(),
LogisticRegression(n_jobs=-1)
)
#파이프라인 학습
pipe.fit(X_train, y_train)
print('검증세트 정확도', pipe.score(X_val, y_val))
#named_steps(파이프라인 스텝에 접근가능)
import matplotlib.pyplot as plt
#named_steps(로지스틱회귀)
model_lr = pipe.named_steps['logisticregression']
#named_steps(원핫인코딩)
enc = pipe.named_steps['onehotencoder']
#인코딩 후 컬럼추출
encoded_columns = enc.transform(X_val).columns
#계수와 특성
coefficients = pd.Series(model_lr.coef_[0], encoded_columns)
#시각화
plt.figure(figsize=(10,30))
coefficients.sort_values().plot.barh();


from sklearn.tree import DecisionTreeClassifier
#파이프라인(결정트리)
pipe = make_pipeline(
OneHotEncoder(use_cat_names=True),
SimpleImputer(), #결측치 -> 평균
DecisionTreeClassifier(random_state=1, criterion='entropy')
)
#모델학습
pipe.fit(x_train, y_train)
#과적합 해결 하이퍼파라미터
from sklearn.tree import DecisionTreeClassifier
#결정트리
DecisionTreeClassifier(
max_depth = default(= None),
min_samples_leaf = default(=1),
min_samples_split= default(=2),
random_state=1, criterion='entropy'
)
오늘 나는 당황함을 경혐했다. 어찌 설명을 듣고 들어도 잘이해가 안될까? 솔직히 지금도 약간 이해가 안가는 것도 있다. 특히 불순도 관련해서이다. 불순도가 낮게 만드는 특성을 사용한다. 하지만 특성중요도는 다르다. '특성중요도가 높으면 불순도를 낮게 만들어주는 특성인가?' 한 번 더 생각해보고 자야겠다.
잘못하더라도 계속하면 따라가진다. 하지만 생각을 계속해야한다. 생각없이 따라가면 다시 그 길을 가지 못한다. 하지만 생각을 하면서 따라간다면 다음에 다시 갈 때도 전자보다는 훨씬 효율적으로 따라갈 것이라고 자신한다.
항상 열심히 하자! 화이팅!