【发布时间】:2019-11-16 13:52:19
【问题描述】:
在 Jupyter 笔记本中使用 Python 3。我正在尝试创建一个回归模型(方程?)来预测 Eng as % of Followers 变量。我会得到Media Type、Hour Created 和Day of Week。这些都应该被视为分类变量。
这是我过去的一些数据。
Media Type Eng as % of Followers Hour Created Day of Week
0 Video 0.0136 23 Tuesday
1 Video 0.0163 22 Wednesday
2 Video 0.0163 22 Tuesday
3 Video 0.0196 22 Friday
4 Video 0.0179 20 Thursday
5 Photo 0.0087 14 Wednesday
我已经使用pd.get_dummies 创建了dummy variables,但我不确定我是否正确 - 问题出在Hour Created 变量上。它们是数字,但我希望它们被视为类别。例如,第 22 小时可能会提高性能,但这并不意味着第 21 小时或第 23 小时。
我也很好奇我是否可以在 Day of Week 和 Hour Created 之间的交互中使用我的模型因素(也许 22 小时在大多数情况下是一个推动因素,但 22-周五会导致下降)就像我看到的那样完成了 patsy... 但那可能是我变得贪婪了。
这是我创建虚拟变量的方法,这使我能够解决将Hour Created 作为定量变量而不是定性变量的问题。此外,我现在使用的 Vars 数据框并没有我想要预测的东西。这可能是对的吗?
Vars = Training[['Hour Created','Day of Week','Media Type']]
Result = Training['Eng as % of Followers']
Vars = pd.get_dummies(data=Vars, drop_first=True)
如果有人可以帮助解决 Hour Created 问题,那将是一个很好的开始......然后,不知道从那里去哪里。我见过人们在这种情况下使用 ols 功能。或者来自 sklearn 的 linear_model。我正在为如何解释两者的结果而苦苦挣扎,尤其是在如何将这 3 个自变量的数据框插入该模型中。如果有人可以提出建议,我会尝试执行。
编辑: 包括我尝试创建此模型的几种方法。这是第一个,我假设它错误地使用了我的 Hour 数据。由于我传递给它的数据框甚至没有 Eng as % of Followers 作为列标题,我什至不确定它试图预测什么......
Vars_train, Vars_test, Result_train, Result_test = train_test_split(Vars, Result, test_size = .20, random_state = 40)
regr = linear_model.LinearRegression()
regr.fit(Vars_train, Result_train)
predicted = regr.predict(Vars_test)
当我尝试如下使用 ols 方法时,我得到一个无效的语法错误。我尝试了不同的变化无济于事。
fit1 = ols('Eng as % of Followers ~ C(Day of Week) + C(Hour Created) + C(Media Type)', data=Training).fit()
【问题讨论】:
-
您使用的是 Python 2 还是 Python 3?另请粘贴您收到的完整错误消息。
-
Python 3. 已编辑。
-
请完整复制并粘贴错误信息。
标签: python regression categorical-data dummy-variable