Я попытался сделать рекурсивный выбор функций в scikit learn со следующим кодом.Выбор функции
from sklearn import datasets, svm
from sklearn.feature_selection import SelectKBest, f_classif
from sklearn.feature_selection import RFE
import numpy as np
input_file_iris = "/home/anuradha/Project/NSL_KDD_master/Modified/iris.csv"
dataset = np.loadtxt(input_file_iris, delimiter=",")
X = dataset[:,0:4]
y = dataset[:,4]
estimator= svm.OneClassSVM(nu=0.1, kernel="rbf", gamma=0.1)
selector = RFE(estimator,3, step=1)
selector = selector.fit(X,y)
Но это дает следующее сообщение об ошибке
Traceback (most recent call last):
File "/home/anuradha/PycharmProjects/LearnPython/Scikit-learn/univariate.py", line 30, in <module>
File "/usr/local/lib/python2.7/dist-packages/sklearn/feature_selection/rfe.py", line 131, in fit
return self._fit(X, y)
File "/usr/local/lib/python2.7/dist-packages/sklearn/feature_selection/rfe.py", line 182, in _fit
raise RuntimeError('The classifier does not expose '
RuntimeError: The classifier does not expose "coef_" or
"feature_importances_" attributes
Пожалуйста, кто-нибудь может помочь мне решить эту проблему или направить меня к другому решению
Да, спасибо, я понял. Но мне нужно знать одно: почему мы не можем использовать svm.OneClassSVM в качестве оценки? – Anuradha
REF используется для устранения незначительных особенностей и для этого вам необходимо использовать ** контролируемую оценку обучения **. Он начинается со всех функций, подходит для оценки к данным, а затем присваивает веса функциям, основанным на их важности. Затем он устраняет наименее важную функцию и делает это до тех пор, пока количество оставшихся элементов в наборе данных не будет равно n_features. Напротив, OneClassSVM является ** неконтролируемой ** техникой для выявления выбросов в наблюдениях. Другими словами, он используется для устранения выбросов в ** наблюдениях **, а не для устранения незначительных ** признаков **. – MhFarahani
Спасибо, я понял. – Anuradha