Как я могу использовать категориальные и непрерывные переменные в качестве входных данных для алгоритма логистической регрессии Scikit - PullRequest
0 голосов
/ 18 мая 2019

Я пытаюсь выполнить логистическую регрессию для небольшого набора данных, где каждый экземпляр представлен одной категориальной (мужской, женский) переменной и одной непрерывной переменной (частота между [0,1]) и зависимой переменной (метка)либо 0, либо 1. Следовательно, задача - это задача двоичной классификации.Ниже я привожу 5-6 примеров:

import pandas as pd 
df = pd.read_table('dataset.csv',sep=',')
df.head()


Gender  Frequency  Label
0    Male       0.10      0
1  Female       0.23      1
2  Female       0.35      1
3  Female       0.21      0
4    Male       0.15      1

Мой вопрос: при выполнении логистической регрессии с логистической регрессией Scikit, должен ли я по-разному кодировать свои постоянные и категориальные переменные?Нужна ли какая-либо из этих переменных специальная кодировка?Или следующий правильный способ сделать это?

from sklearn.cross_validation import train_test_split
X = df[['Gender','Frequency']] # Features
y = df.Label # Target variable
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.25,random_state=0)

from sklearn.linear_model import LogisticRegression
logreg = LogisticRegression()
# fit the model with data
logreg.fit(X_train,y_train)

#
y_pred=logreg.predict(X_test)

Когда я это делаю, понимает ли функция регрессии, что Пол является категориальной переменной, а Частота - непрерывной переменной?

РЕДАКТИРОВАТЬ : Конечно, мне нужно конвертировать строки в значения с плавающей точкой.(Например, «Мужской» -> 0, «Женский» -> 1) Я спрашиваю: «Нужно ли мне что-то, кроме этого? Я спрашиваю об этом, потому что я увидел нечто подобное здесь , но потокне был заключен, поэтому я не мог быть уверен в правильности ответов.

1 Ответ

0 голосов
/ 19 мая 2019

Вы должны попробовать одно кодирование, так как вы используете логистическую регрессию. То, что вы сейчас делаете, - это кодирование меток, которое отлично работает с такими моделями ml, как дерево решений или случайный лес, но может вызвать проблемы в логистической регрессии, поскольку модель может подумать, что «женский», то есть «1», важнее, чем «0».

Найдите одну горячую кодировку в sklearn или фиктивные переменные в пандах. Обе эти функции создадут отдельный столбец для мужчин и женщин. Когда в строке будет указан пол мужской, значение в столбце мужского пола станет 1, а значение в столбце женского станет 0 и таким же для обратного.

Male  Female  Frequency  Label
0    1   0    0.10      0
1    0   1    0.23      1
2    0   1    0.35      1
3    0   1    0.21      0
4    1   0    0.15      1
...