Я пытаюсь получить весовые значения важности каждой функции из моего фрейма. Я использую этот код из scikit документации:Получение важности функций с помощью RandomClassifier Scikit
names=['Class label', 'Alcohol',
'Malic acid', 'Ash',
'Alcalinity of ash', 'Magnesium',
'Total phenols', 'Flavanoids',
'Nonflavanoid phenols',
'Proanthocyanins',
'Color intensity', 'Hue',
'OD280/OD315 of diluted wines',
'Proline']
df_wine = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data', header=None,names=names)
from sklearn.ensemble import RandomForestClassifier
forest = RandomForestClassifier(n_estimators=10000,
random_state=0,
n_jobs=-1)
forest.fit(X_train, y_train)
feat_labels = df_wine.columns[1:]
importances = forest.feature_importances_
indices = np.argsort(importances)[::-1]
for f in range(X_train.shape[1]):
print("%2d) %-*s %f" % (f + 1, 30,feat_labels[f], importances[indices[f]]))
но, несмотря я понимаю np.argsort метода, я до сих пор не понимаю, это цикл. Почему мы используем «индексы» для индексирования массива «importances»? И почему мы не можем просто использовать такой код:
for f in range(X_train.shape[1]):
print("%2d) %-*s %f" % (f + 1, 30,feat_labels[f], importances[f]))
выход в случае использования "важностей [индексы [F]]" (первые 5 строк):
1) Alcohol 0.182483
2) Malic acid 0.158610
3) Ash 0.150948
4) Alcalinity of ash 0.131987
5) Magnesium 0.106589
Выходные в случае " важностей [F] "(первые 5 строк):
1) Alcohol 0.106589
2) Malic acid 0.025400
3) Ash 0.013916
4) Alcalinity of ash 0.032033
5) Magnesium 0.022078
Пожалуйста, добавьте ссылку на пример, на который вы ссылаетесь. –
http://scikit-learn.org/stable/auto_examples/ensemble/plot_forest_importances.html – mokebe