2014-11-15 2 views
5

Я пытаюсь выполнить выбор функции, оценивая выходы коэффициента регрессии и выбираю функции с наивысшими коэффициентами величины. Проблема в том, что я не знаю, как получить соответствующие функции, так как возвращаются только коэффициенты из атрибута coef._. В документации указано:Scikit-Learn Линейная регрессия, как получить соответствующие функции коэффициента?

Оценочные коэффициенты для задачи линейной регрессии. Если во время подгонки (y 2D) передано несколько целей , это 2D-массив формы (n_targets, n_features), а если передана только одна цель, это 1-й массив длины n_features.

Я перехожу в свой регрессионный.fit (A, B), где A - это 2-мерный массив с значением tfidf для каждой функции в документе. Пример формата:

  "feature1" "feature2" 
"Doc1" .44   .22 
"Doc2" .11   .6 
"Doc3" .22   .2 

В мои целевые значения для данных, которые только номера 1-100, связанные с каждым документом:

Использование regression.coef_, я получаю список коэффициентов, но не их соответствующие функции! Как я могу получить функции? Я предполагаю, что мне нужно модифицировать структуру моих целей B, но я не знаю, как это сделать.

ответ

3

Предполагаете, что вы работаете над заданием выбора функции. Ну, используя regression.coef_, получают соответствующие коэффициенты для признаков, то есть regression.coef_[0] соответствует «feature1», а regression.coef_[1] соответствует «feature2». Это должно быть то, что вы хотите.

Ну, я, в свою очередь, рекомендую древовидную модель из sklearn, которая также может использоваться для выбора функции. Чтобы быть конкретным, ознакомьтесь с here.

+0

Это верно, если функция regression.coef_ возвращает значения коэффициентов в том же порядке. Благодарю. – jeffrey

+0

ExtraTreesClassifier на самом деле очень интересен, но кажется, что нет способа получить фактические функции, которые он выбрал после того, как модель подойдет? – jeffrey

+0

@jeffrey Да, но я всегда выбираю функцию 'clf.feature_importances_' для получения рейтинга важности функций. Ну интуитивно это так же, как коэффициенты линейной модели, не так ли? – Jake0x32

1

То, что я нашел для работы было:

X = ваши независимые переменные

coefficients = pd.concat([pd.DataFrame(X.columns),pd.DataFrame(np.transpose(logistic.coef_))], axis = 1) 

Предположение вы заявили: что порядок regression.coef_ такой же, как в наборе ПОЕЗДА справедливо в мой опыт. (работает с базовыми данными, а также проверяет с корреляциями между X и y)

+0

Я думаю, вы можете просто сделать pd.DataFrame (zip (X.columns, logistic.coef_)) –

2
coefficients = pd.DataFrame({"Feature":X.columns,"Coefficients":np.transpose(logistic.coef_)}) 
+0

Это не работает для меня. * Исключение: данные должны быть одномерными * – ytu

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