Я пытаюсь выполнить рекурсивное исключение функции с помощью scikit-learn
и случайного классификатора леса, с OOB ROC как метод подсчета каждого подмножества, созданного во время рекурсивного процесса.Рекурсивное устранение функции в случайном лесу с использованием scikit-learn
Однако, когда я пытаюсь использовать метод RFECV
, я получаю сообщение об ошибке говорящее AttributeError: 'RandomForestClassifier' object has no attribute 'coef_'
Случайные леса не имеют коэффициенты сами по себе, но они имеют рейтинг от Джини балла. Итак, мне интересно, как решить эту проблему.
Обратите внимание, что я хочу использовать метод, который будет явно указывать мне, какие функции из моего pandas
DataFrame были выбраны в оптимальной группировке, поскольку я использую рекурсивную функцию, чтобы попытаться свести к минимуму количество данных, которые я буду вводить в окончательный классификатор.
Вот пример кода:
from sklearn import datasets
import pandas as pd
from pandas import Series
from sklearn.ensemble import RandomForestClassifier
from sklearn.feature_selection import RFECV
iris = datasets.load_iris()
x=pd.DataFrame(iris.data, columns=['var1','var2','var3', 'var4'])
y=pd.Series(iris.target, name='target')
rf = RandomForestClassifier(n_estimators=500, min_samples_leaf=5, n_jobs=-1)
rfecv = RFECV(estimator=rf, step=1, cv=10, scoring='ROC', verbose=2)
selector=rfecv.fit(x, y)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/bbalin/anaconda/lib/python2.7/site-packages/sklearn/feature_selection/rfe.py", line 336, in fit
ranking_ = rfe.fit(X_train, y_train).ranking_
File "/Users/bbalin/anaconda/lib/python2.7/site-packages/sklearn/feature_selection/rfe.py", line 148, in fit
if estimator.coef_.ndim > 1:
AttributeError: 'RandomForestClassifier' object has no attribute 'coef_'
Альтернативный подход заключается в использовании атрибута 'feature_importances_' после вызова' pred' или 'pred_proba', это возвращает массив процентов в том порядке, в котором они были переданы. См. [Онлайн-пример] (http://scikit-learn.org/stable/auto_examples/ensemble/plot_gradient_boosting_regression.html) – EdChum
Видел это; Я хочу знать, есть ли что-то, что позволяет мне в 10 раз проверить и определить оптимальное подмножество функций. – Bryan
Мне пришлось сделать что-то подобное, но я сделал это вручную, сортируя функции, а затем обрезая по 1,3 или 5 штук за раз. Я не использовал ваш подход, я должен сказать, поэтому я не знаю, можно ли это сделать. – EdChum