如何使用 Python 和 Scikit 进行线性回归学习使用一种热编码?

pr3*_*338 5 python linear-regression scikit-learn

我正在尝试将线性回归与 python 和 scikitlearn 结合使用来回答“根据用户人口统计信息可以预测用户会话长度吗?”的问题。

我使用线性回归是因为用户会话长度以毫秒为单位,这是连续的。我对所有分类变量进行了热编码,包括性别、国家和年龄范围。

我不确定如何考虑我的一种热编码,或者我什至需要这样做。

输入数据:

在此处输入图片说明

我试着在这里阅读:http : //scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html

我理解输入是我的主要内容是是否计算拟合截距、标准化、复制 x(所有布尔值),然后是 n 个作业。

我不确定在决定这些输入时要考虑哪些因素。我还担心我对变量的一种热编码是否会产生影响。

sil*_*eto 4

你可以这样做:

from sklearn.preprocessing import OneHotEncoder
from sklearn.linear_model import LinearRegression

# X is a numpy array with your features
# y is the label array
enc = OneHotEncoder(sparse=False)
X_transform = enc.fit_transform(X)

# apply your linear regression as you want
model = LinearRegression()
model.fit(X_transform, y)

print("Mean squared error: %.2f" % np.mean((model.predict(X_transform) - y) ** 2))
Run Code Online (Sandbox Code Playgroud)

请注意,这个示例我正在使用相同的数据集进行训练和测试!这可能会导致模型过度拟合。您应该避免拆分数据或进行交叉验证。

  • 您应该在“LinearRegression”中设置“fit_intercept=False”以避免[虚拟变量陷阱](http://www.algosome.com/articles/dummy-variable-trap-regression.html) (3认同)