2013-05-10 5 views
4

Я решаю проблему классификации с использованием случайных лесов. Для этого я решил использовать библиотеку Python scikit-learn. Но я новичок как в алгоритме Random Forest, так и в этом инструменте. Мои данные содержат множество переменных факторов. Я искал это для Google и выяснил, что неправильно приводить числовые значения к переменным факторам, как в линейной регрессии, поскольку он будет рассматривать его как непрерывную переменную и давать неверный результат. Но я не мог найти ничего о том, как справляться с фактор-переменными в scikit-learn. Скажите, пожалуйста, какие варианты использовать или указать мне на какой-нибудь документ, где я могу его получить.Каков способ представления переменных факторов в scikit-learn при использовании Random Forests?

+0

Вы говорите, что «неверно давать числовые значения фактору-переменным, как в линейной регрессии, так как он будет рассматривать его как непрерывную переменную». Вы абсолютно не должны делать этого для линейной регрессии. Случайный лес может реально справиться с этим довольно хорошо, но линейная регрессия определенно будет учитывать ваши факторы как непрерывные переменные и дать очень, очень неправильный результат. Методы OneHotEncoder и get_dummies ниже являются обязательными для линейной/логистической регрессии, но могут быть необязательными для Random Forest. –

ответ

2

Вы должны использовать sklearn's OneHotEncoder. Он создает новую переменную для каждого отдельного значения в вашей категорной целочисленной функции.

Так, например, если у вас есть переменная var со значениями [10, 25, 30], это создаст три новых переменных (то есть матрица с 3 колонками), по существу, с переменными var_10, var_25 и var_30 со значениями [1, 0, 0], [0, 1, 0] и [0, 0, 1] соответственно.

+0

Спасибо за ответ. Но это не решает мою проблему, поскольку у меня нет целочисленных функций. Функции, о которых я говорю, принимают много разных строк (слов) или иногда массив строк. Btw Я пытаюсь классифицировать текстовые данные, используя случайные леса. Данные, о которых идет речь, - это обзор, сделанный разными пользователями о продукте. –

+0

См. Документацию о [извлечении текста] (http://scikit-learn.org/stable/modules/feature_extraction.html#text-feature-extraction). –

+1

В качестве альтернативы используйте библиотеку Pandas (http://pandas.pydata.org/), которая имеет функцию get_dummies, которая может преобразовывать произвольно типизированные столбцы в фактор-переменные. –

11

Если вы используете рамку данных pandas, вы можете легко использовать функцию get_dummies для этого. Вот пример:

import pandas as pd 

my_data = [['a','b'],['b','a'],['c','b'],['d','a'],['a','c']] 
df = pd.DataFrame(my_data, columns = ['var1','var2']) 
dummy_ranks = pd.get_dummies(df['var1'], prefix = 'var1_') 
print dummy_ranks 

    var1__a var1__b var1__c var1__d 
0  1  0  0  0 
1  0  1  0  0 
2  0  0  1  0 
3  0  0  0  1 
4  1  0  0  0 

[5 rows x 4 columns] 

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

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