我试图在一个小数据集上进行逻辑回归,其中每个实例用一个分类变量(男性、女性)和一个连续变量(频率在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我的问题是:在执行逻辑回归时,我是否应该对我的连续变量和分类变量进行不同的编码?这些变量中的任何一个都需要特殊的编码吗?或者下面的方法是正确的?
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)我要问的是,“我需要做的不是这个吗?我问这个是因为我看到了类似的here,但是线程还没有结束,所以我不能确定答案的有效性。”
发布于 2019-05-19 03:20:19
在使用logistic回归时,您应该尝试一次编码。您现在正在做的是标签编码,它与ml模型(如决策树或随机森林)完美地工作,但在逻辑回归中可能会引起问题,因为模型可能认为“女性”,即"1“比"0”更重要。
在熊猫中查找滑雪或虚拟变量中的一个热编码。这两种功能都将为男性和女性创建一个单独的专栏。当行中有性别男性时,男性列中的值将变为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 1https://stackoverflow.com/questions/56199522
复制相似问题