- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在 Jupyter
笔记本中使用 Python 3。我正在尝试创建一个回归模型(方程式?)来预测 Eng as % of Followers
变量。我将获得 媒体类型
、创建时间
和星期几
。这些都应该被视为分类变量。
这是我过去的一些数据。
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
之间的交互中加入我的模型因素(也许 Hour 22 在大多数日子里都是一个提升,但是 22-Friday 会导致下降)就像我看到的 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)
如果有人可以帮助解决创建时间的问题,那将是一个很好的开始......然后,不确定从那里去哪里。我见过人们在这种情况下使用 ols 函数。或者来自 sklearn 的 linear_model。我正在为如何解释其中任何一个的结果而苦苦挣扎,尤其是为如何将这 3 个独立变量的数据框插入该模型而苦苦挣扎。如果有人可以提出建议,我会尝试执行。
编辑:包括我尝试创建此模型的几种方法。这是第一个,我认为它错误地使用了我的小时数据。由于我传递给它的数据框甚至没有 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()
最佳答案
确保您正确执行虚拟编码的一种方法是将列转换为 str
类型。在您的情况下,您希望将 Hour Created
视为分类,尽管它本质上是数字,因此最好在进行虚拟编码之前将它们转换为字符串。
为了捕获Day of Week
和Hour Created
之间的交互,进行特征工程并通过乘以Day of Week
和 Hour Created
并将其作为输入提供给您的模型。
为了理解/解释您的模型,您可以查看不同特征的权重/系数,从而了解每个特征如何对您的目标变量产生正面或负面影响。
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
df
Media Type Eng_as_%_of_Followers Hour_Created Day_of_Week
0 0 Video 0.0136 23 Tuesday
1 1 Video 0.0163 22 Wednesday
2 2 Video 0.0163 22 Tuesday
3 3 Video 0.0196 22 Friday
4 4 Video 0.0179 20 Thursday
5 5 Photo 0.0087 14 Wednesday
df["Hour_Created"] = df["Hour_Created"].astype(str)
df["Interaction"] = df["Hour_Created"] + "_" +df["Day_of_Week"]
X = df.drop("Eng_as_%_of_Followers", axis=1)
Y = df["Eng_as_%_of_Followers"]
X_encoded = pd.get_dummies(X)
X_train, X_test, y_train, y_test = train_test_split(
X_encoded, Y, test_size=0.33, random_state=42)
reg = LinearRegression().fit(X_train, y_train)
coef_dict = dict(zip(X_encoded.columns, reg.coef_))
coef_dict
{'Day_of_Week_Friday': 0.0012837455830388678,
'Day_of_Week_Thursday': 0.0007424028268551229,
'Day_of_Week_Tuesday': -0.0008084805653710235,
'Day_of_Week_Wednesday': -0.0012176678445229678,
'Hour_Created_14': -0.0012176678445229678,
'Hour_Created_20': 0.0007424028268551229,
'Hour_Created_22': 0.0004752650176678456,
'Hour_Created_23': 0.0,
'Interaction_14_Wednesday': -0.0012176678445229678,
'Interaction_20_Thursday': 0.0007424028268551229,
'Interaction_22_Friday': 0.0012837455830388678,
'Interaction_22_Tuesday': -0.0008084805653710235,
'Interaction_22_Wednesday': 0.0,
'Interaction_23_Tuesday': 0.0,
'Media': -0.0008844522968197866,
'Type_Photo': -0.0012176678445229708,
'Type_Video': 0.0012176678445229685}
当然,这里的结果可能不是很有趣,因为我只处理了 6 个数据点。
回答你的问题
您可以使用 reg.intercept_
y_intercept
是的,您可以为 x 插入新值并使用 reg.predict(x)
获取目标变量,其中 x 是您的新输入。
由 OLS
和 sklearn
完成的回归是一个和 same 。 OLS 只不过是解决我们在回归中遇到的优化问题的一种方法。
关于python - 使用星期几、一天中的小时数和媒体类型创建回归模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56911359/
我在网上搜索但没有找到任何合适的文章解释如何使用 javascript 使用 WCF 服务,尤其是 WebScriptEndpoint。 任何人都可以对此给出任何指导吗? 谢谢 最佳答案 这是一篇关于
我正在编写一个将运行 Linux 命令的 C 程序,例如: cat/etc/passwd | grep 列表 |剪切-c 1-5 我没有任何结果 *这里 parent 等待第一个 child (chi
所以我正在尝试处理文件上传,然后将该文件作为二进制文件存储到数据库中。在我存储它之后,我尝试在给定的 URL 上提供文件。我似乎找不到适合这里的方法。我需要使用数据库,因为我使用 Google 应用引
我正在尝试制作一个宏,将下面的公式添加到单元格中,然后将其拖到整个列中并在 H 列中复制相同的公式 我想在 F 和 H 列中输入公式的数据 Range("F1").formula = "=IF(ISE
问题类似于this one ,但我想使用 OperatorPrecedenceParser 解析带有函数应用程序的表达式在 FParsec . 这是我的 AST: type Expression =
我想通过使用 sequelize 和 node.js 将这个查询更改为代码取决于在哪里 select COUNT(gender) as genderCount from customers where
我正在使用GNU bash,版本5.0.3(1)-发行版(x86_64-pc-linux-gnu),我想知道为什么简单的赋值语句会出现语法错误: #/bin/bash var1=/tmp
这里,为什么我的代码在 IE 中不起作用。我的代码适用于所有浏览器。没有问题。但是当我在 IE 上运行我的项目时,它发现错误。 而且我的 jquery 类和 insertadjacentHTMl 也不
我正在尝试更改标签的innerHTML。我无权访问该表单,因此无法编辑 HTML。标签具有的唯一标识符是“for”属性。 这是输入和标签的结构:
我有一个页面,我可以在其中返回用户帖子,可以使用一些 jquery 代码对这些帖子进行即时评论,在发布新评论后,我在帖子下插入新评论以及删除 按钮。问题是 Delete 按钮在新插入的元素上不起作用,
我有一个大约有 20 列的“管道分隔”文件。我只想使用 sha1sum 散列第一列,它是一个数字,如帐号,并按原样返回其余列。 使用 awk 或 sed 执行此操作的最佳方法是什么? Accounti
我需要将以下内容插入到我的表中...我的用户表有五列 id、用户名、密码、名称、条目。 (我还没有提交任何东西到条目中,我稍后会使用 php 来做)但由于某种原因我不断收到这个错误:#1054 - U
所以我试图有一个输入字段,我可以在其中输入任何字符,但然后将输入的值小写,删除任何非字母数字字符,留下“。”而不是空格。 例如,如果我输入: 地球的 70% 是水,-!*#$^^ & 30% 土地 输
我正在尝试做一些我认为非常简单的事情,但出于某种原因我没有得到想要的结果?我是 javascript 的新手,但对 java 有经验,所以我相信我没有使用某种正确的规则。 这是一个获取输入值、检查选择
我想使用 angularjs 从 mysql 数据库加载数据。 这就是应用程序的工作原理;用户登录,他们的用户名存储在 cookie 中。该用户名显示在主页上 我想获取这个值并通过 angularjs
我正在使用 autoLayout,我想在 UITableViewCell 上放置一个 UIlabel,它应该始终位于单元格的右侧和右侧的中心。 这就是我想要实现的目标 所以在这里你可以看到我正在谈论的
我需要与 MySql 等效的 elasticsearch 查询。我的 sql 查询: SELECT DISTINCT t.product_id AS id FROM tbl_sup_price t
我正在实现代码以使用 JSON。 func setup() { if let flickrURL = NSURL(string: "https://api.flickr.com/
我尝试使用for循环声明变量,然后测试cols和rols是否相同。如果是,它将运行递归函数。但是,我在 javascript 中执行 do 时遇到问题。有人可以帮忙吗? 现在,在比较 col.1 和
我举了一个我正在处理的问题的简短示例。 HTML代码: 1 2 3 CSS 代码: .BB a:hover{ color: #000; } .BB > li:after {
我是一名优秀的程序员,十分优秀!