2016-08-11 2 views
2

Я попытался сделать рекурсивный выбор функций в 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 

Пожалуйста, кто-нибудь может помочь мне решить эту проблему или направить меня к другому решению

ответ

2

Изменение ядра для линейной и ваш код будет работать ,

Кроме того, svm.OneClassSVM используется для обнаружения без надзора. Вы уверены, что хотите использовать его в качестве оценки? Или, возможно, вы хотите использовать svm.SVC(). Посмотрите следующую ссылку для документации.

http://scikit-learn.org/stable/modules/generated/sklearn.svm.OneClassSVM.html

Наконец, ирис набор данных уже имеется в sklearn. Вы импортировали sklearn.datasets. Поэтому вы можете просто загрузить диафрагму как:

iris = datasets.load_iris() 
X = iris.data 
y = iris.target 
+0

Да, спасибо, я понял. Но мне нужно знать одно: почему мы не можем использовать svm.OneClassSVM в качестве оценки? – Anuradha

+0

REF используется для устранения незначительных особенностей и для этого вам необходимо использовать ** контролируемую оценку обучения **. Он начинается со всех функций, подходит для оценки к данным, а затем присваивает веса функциям, основанным на их важности. Затем он устраняет наименее важную функцию и делает это до тех пор, пока количество оставшихся элементов в наборе данных не будет равно n_features. Напротив, OneClassSVM является ** неконтролируемой ** техникой для выявления выбросов в наблюдениях. Другими словами, он используется для устранения выбросов в ** наблюдениях **, а не для устранения незначительных ** признаков **. – MhFarahani

+0

Спасибо, я понял. – Anuradha

 Смежные вопросы

  • Нет связанных вопросов^_^