【问题标题】:How can I use categorical and continuous variables as input to scikit logistic regression algorithm如何使用分类和连续变量作为 scikit 逻辑回归算法的输入
【发布时间】:2019-10-05 13:26:10
【问题描述】:

我正在尝试对一个小型数据集执行逻辑回归,其中每个实例都用一个分类(男性,女性)变量和一个连续变量(频率在 [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)

当我这样做时,回归函数是否理解 Gender 是一个分类变量而 Frequency 是一个连续变量?

编辑: 当然,我需要将字符串转换为浮点值。 (例如 "Male" -> 0 , "Female" -> 1)我要问的是“除此之外我还需要做些什么吗?我问这个是因为我看到了类似的东西 here 但线程还没有结束因此我无法确定答案的有效性。

【问题讨论】:

  • 你有没有想过这个问题?我也在想同样的事情,希望你能有一些见解。

标签: python machine-learning scikit-learn logistic-regression


【解决方案1】:

您应该在使用逻辑回归时尝试使用 onehotencoding。您现在正在做的是标签编码,它与决策树或随机森林等机器学习模型完美配合,但可能会导致逻辑回归问题,因为模型可能认为“女性”即“1”比“0”更重要。

在 sklearn 中查找一种热编码或在 pandas 中查找虚拟变量。这两个函数都会为男性和女性创建一个单独的列。每当该行的性别为男性时,男性列中的值将变为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

【讨论】:

    猜你喜欢
    • 2020-03-30
    • 2020-01-08
    • 2018-05-19
    • 1970-01-01
    • 2020-04-16
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多