2015-04-08 4 views
4

У меня есть набор данных, содержащий 8 параметров (4 непрерывных 4 категориальных), и я пытаюсь устранить функции в соответствии с классом RFEC в Scikit.Рекурсивная функция Устранение категориальных данных в sklearn?

Это формула я использую:

svc = SVC(kernel="linear") 
rfecv = RFECV(estimator=svc, step=1, cv=StratifiedKFold(y, 2), 
      scoring='accuracy') 
rfecv.fit(X, y) 

Поскольку у меня есть категорические данные также, я изменил его фиктивной переменной с помощью dmatrics (Пэтси).

Я хочу попробовать различные модели классификации по данным после выбора функции, чтобы улучшить модель вместе с SVC.

Я запустил RFE после преобразования данных, и я думаю, что делаю неправильно.
Выполняем ли мы RFECV перед преобразованием категориальных данных или после?

Я не могу найти четкое указание в любом документе.

ответ

1

Это зависит от того, хотите ли вы выбрать заданные значения его категориальной переменной или всей переменной. В настоящее время вы выбираете одиночные настройки (аналогичные уровни) категориальной переменной. Чтобы выбрать все переменные, вам, вероятно, нужно будет немного взломать, указав собственную оценку на основе SVC. Вы можете сделать make_pipeline(OneHotEncoder(categorical_features), SVC()), но тогда вам нужно установить coef_ конвейера на то, что отражает форму ввода.

+0

Спасибо, Андреас. На самом деле я не пробовал метод OneHotEncoder и использовал Dmatrices для преобразования категориальных данных. Я запускал RFEC после преобразования категориальных данных, и он работал нормально (дал мне Оптимальное число), но когда я пытаюсь запустить, прежде чем преобразовывать категориальные данные, я получаю сообщение об ошибке «Cant convert String to Float». Так запутался, можно ли запустить функцию Recursive выбор по категориальным данным перед его преобразованием. Еще раз спасибо – Hitesh

+0

Можно утверждать, что это слишком строгая проверка ввода в RFE. Однако, поскольку в настоящее время мы действительно не поддерживаем выбор функций на конвейерах, я не уверен, что есть хорошая причина для его изменения. –

+0

Еще раз спасибо Sowill, правильно ли предположить, что RFEC может и должен запускаться после преобразования категориальных данных только по конвейеру или по другому методу? Сейчас имеет смысл – Hitesh