Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用pythonnumpy实现线性回归_Python_Numpy_Linear Regression - Fatal编程技术网

用pythonnumpy实现线性回归

用pythonnumpy实现线性回归,python,numpy,linear-regression,Python,Numpy,Linear Regression,我试图建立一个简单的线性回归函数,但仍然遇到一个问题 numpy.linalg.linalg.linalg误差:奇异矩阵误差 现有功能(带有调试打印): 控制台的测试数据输出为: In makeLLS: Shape trainInput1: (773, 10) Shape trainTargetData: (773, 1) Shape term1: (10, 10) Shape term2: (10, 1) 然后在linalg.solve行上显示错误。这是一个教

我试图建立一个简单的线性回归函数,但仍然遇到一个问题

numpy.linalg.linalg.linalg误差:奇异矩阵误差

现有功能(带有调试打印):

控制台的测试数据输出为:

In makeLLS:
    Shape trainInput1: (773, 10)
    Shape trainTargetData: (773, 1)
    Shape term1: (10, 10)
    Shape term2: (10, 1)
然后在linalg.solve行上显示错误。这是一个教科书上的线性回归函数,我似乎不明白它为什么会失败


什么是奇异矩阵误差?

奇异矩阵是行列式为零的矩阵。这表明矩阵中的行不是线性独立的。例如,若其中一行和其他行不是线性独立的,那个么它可以由其他行的线性组合来构造。我将使用numpy的linalg.solve示例来演示。以下是文档的示例:

>>> import numpy as np
>>> a = np.array([[3,1], [1,2]])
>>> b = np.array([9,8])
>>> x = np.linalg.solve(a, b)
>>> x
array([ 2.,  3.])
现在,我将更改
a
,使其成为单数形式

>>> a = np.array([[2,4], [1,2]])
>>> x = np.linalg.solve(a, b)
...
LinAlgError: Singular matrix

这是一个非常明显的例子,因为第一行刚好是第二行的两倍,但希望您能理解这一点。

如另一个答案
linalg中所述。solve
需要一个满秩矩阵。这是因为它试图解决一个矩阵方程,而不是线性回归,这应该适用于所有职级


线性回归有几种方法。我建议的最简单的方法是标准最小二乘法。只需使用
numpy.linalg.lstsq
即可。包含示例的文档是。

您也可以使用
np.polyfit(x,y,1)
>>> a = np.array([[2,4], [1,2]])
>>> x = np.linalg.solve(a, b)
...
LinAlgError: Singular matrix