[ Python ] scikit-learn feature selection Tool
2019. 12. 21. 21:51ㆍ분석 Python/Scikit Learn (싸이킷런)
도움이 되셨다면, 광고 한번만 눌러주세요. 블로그 관리에 큰 힘이 됩니다.
https://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.SelectFromModel.html
우연히 다른 걸 찾아보다가 알게 되었다.
원래는 threshold를 자동으로 찾아주는 것이 있나 싶어서 찾다가 더 오히려 알고 싶었던 것이 나왔다.
보통 만약에 scikit-learn 패키지 자체를 이용해서 하려면 transform을 사용해서 축약된 feature를 가져오면 되고,
만약 다른 것에 활용하고 싶어서 하는 것이라면 get_support로 index 값을 가져오면 된다!
from sklearn.feature_selection import SelectFromModel
from sklearn.ensemble import RandomForestClassifier , GradientBoostingClassifier
from sklearn.ensemble import RandomTreesEmbedding
from sklearn.linear_model import LogisticRegression
import pandas as pd
############################################################
data = pd.read_csv("./../Data/DontOverfit/train.csv")
test_data = pd.read_csv("./../Data/DontOverfit/test.csv")
__id__ = data.pop("id")
target_y = data.pop("target")
############################################################
X = data.values
y = target_y.values.reshape(-1,1)
자 그러면 여기서 RandomForest, GradientBoosting, LogisticRegression 으로 선택되는 변수가 뭔지 찾아보자.
RFselector = SelectFromModel(estimator=RandomForestClassifier()).fit(X, y)
GBMselector = SelectFromModel(estimator=GradientBoostingClassifier()).fit(X, y)
LRselector = SelectFromModel(estimator=LogisticRegression()).fit(X, y)
columns = data.columns
자 이제 선택된 변수들의 개수를 비교해보자.
각각 선택된 변수들이 이렇게 다르게 나온다.
그러면 이 변수들의 교집합인 몇개나 나올까?
3개의 모델에서 변수 선택의 교집합은 총 18개가 나온다!
- 결론 -
다른 알고리즘이나 툴에서도 변수 중요도를 통해 선택할 수 있으나, 좀 더 쉽게 할 수 있는 것 같아 공유한다!
즐거운 분석하시기를
728x90
'분석 Python > Scikit Learn (싸이킷런)' 카테고리의 다른 글
[ Python ] Scikit-Learn Pipeline + RandomizedSearchCV + shap,eli5 (0) | 2019.12.28 |
---|---|
[ Python ] scikit-learn RandomTreesEmbedding (0) | 2019.12.21 |
[ Python ] class weight 쉽게 구하는 법 (0) | 2019.11.24 |
[ Python ] Cross Validation 병렬로 돌리고 BoxPlot 시각화 (0) | 2019.11.07 |
[ Python ] scikitplot 다양한 metric plot 제공 (0) | 2019.10.19 |