आप बस feature_importances_
उच्चतम महत्व स्कोर के साथ सुविधाओं का चयन करने के लिए विशेषता का उपयोग कर सकते हैं । इसलिए उदाहरण के लिए आप महत्व के अनुसार K सर्वोत्तम विशेषताओं का चयन करने के लिए निम्नलिखित फ़ंक्शन का उपयोग कर सकते हैं।
def selectKImportance(model, X, k=5):
return X[:,model.feature_importances_.argsort()[::-1][:k]]
या यदि आप एक पाइपलाइन का उपयोग कर रहे हैं तो निम्न वर्ग
class ImportanceSelect(BaseEstimator, TransformerMixin):
def __init__(self, model, n=1):
self.model = model
self.n = n
def fit(self, *args, **kwargs):
self.model.fit(*args, **kwargs)
return self
def transform(self, X):
return X[:,self.model.feature_importances_.argsort()[::-1][:self.n]]
उदाहरण के लिए:
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import RandomForestClassifier
>>> iris = load_iris()
>>> X = iris.data
>>> y = iris.target
>>>
>>> model = RandomForestClassifier()
>>> model.fit(X,y)
RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
max_depth=None, max_features='auto', max_leaf_nodes=None,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, n_estimators=10, n_jobs=1,
oob_score=False, random_state=None, verbose=0,
warm_start=False)
>>>
>>> newX = selectKImportance(model,X,2)
>>> newX.shape
(150, 2)
>>> X.shape
(150, 4)
और स्पष्ट रूप से यदि आप "टॉप के फीचर्स" की तुलना में कुछ अन्य मानदंडों के आधार पर चयन करना चाहते थे, तो आप केवल तदनुसार कार्यों को समायोजित कर सकते हैं।