【发布时间】:2018-05-01 15:08:26
【问题描述】:
我在下面建立了一个简单的线性回归器...
import numpy as np
x = np.array([[0.0], [0.33], [0.66], [1.0]])
y = np.array([[1.0, 2.0, 3.0, 4.0]]).T
w = np.random.random((1, 1))
for j in xrange(100000):
a2 = np.dot(x, w) + 1
w += x.T.dot((y - a2))
print(a2)
现在这是我尝试开发它以包含多变量数据...
import numpy as np
x = np.array([[0.0], [0.33], [0.66], [1.0]])
x2 = np.array([[0.0], [0.33], [0.66], [1.0]])
y = np.array([[1.0, 2.0, 3.0, 4.0]]).T
w = np.random.random((1, 1))
for j in xrange(100000):
mx = np.dot(x, w) + np.dot(x2, w)
w += (np.sum(x, x2)).T.dot((y - a2))
print(mx)
似乎不允许我将 x 和 x2 数组加在一起。该模型还预先产生了无限值。请给我一些指点?只需 numpy 和 python,请不要学习 scikit,因为学习机器学习的真正方法是从头开始。随意更改 x 和 y 数组中的数据。使用 matplotlib 绘制数据和回归线的奖励积分!如果结果不好,那当然没关系,因为它毕竟是线性回归。再次感谢
【问题讨论】:
-
欢迎来到 StackOverflow。请阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布 MCVE 代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中并重现您描述的问题。 “它没有真正起作用”不是问题规范。
-
嗯,我想这取决于你的意思是“从头开始”,但仅使用 numpy 封闭形式的普通最小二乘类似于
betas = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y)参见 here。 -
@juanpa.arrivillaga 是您刚刚给我的权重更新规则或 mx 的代码吗?
-
什么是“mx”?它适用于 beta,即它是系数的 OLS 估计值。更新规则?你是想实现梯度下降还是什么?您需要更具体地说明您要在这里做什么......
-
@juanpa.arrivillaga 好的,我把它放到项目里了,好像有效,权重的更新规则是什么?
标签: python numpy machine-learning linear-regression multivariate-testing