【问题标题】:How can I implement multivariate linear regression?如何实现多元线性回归?
【发布时间】: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


【解决方案1】:

我认为你需要的是 numpy concatenate 函数:

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, 2))

x_all = np.concatenate((x,x2),axis = 1)

for j in xrange(100):
    mx = np.dot(x_all, w.T)
    w += (x_all.T.dot((y - mx))).T

print(mx)

这可行,但我不确定更新权重的方式是否正确。

可以在这里找到一些从头开始的线性回归示例:

https://machinelearningmastery.com/implement-simple-linear-regression-scratch-python/

https://mubaris.com/2017-09-28/linear-regression-from-scratch

【讨论】:

  • 我得到了 NAN 结果,但至少没有错误。谢谢你的努力,你真的很棒
  • 如果你像我在代码中所做的那样将循环减少到 100,你会得到值!
猜你喜欢
  • 2020-08-03
  • 2020-03-16
  • 2010-11-23
  • 2017-01-21
  • 2013-07-17
  • 2014-05-20
  • 1970-01-01
  • 1970-01-01
  • 2016-10-15
相关资源
最近更新 更多