Math 多元线性回归的纯python代码

Math 多元线性回归的纯python代码,math,numpy,python-3.x,scipy,linear-regression,Math,Numpy,Python 3.x,Scipy,Linear Regression,由于a(可能在我使用的numpy发行版中),我不能使用numpy.linalg.lstsq。我发现的每个统计库都不是在Python3(在Windows上)下安装的 是否有人有执行多元线性回归的纯python 3代码(我只需要Beta) 如果不是纯python,我仍然可以尝试它,如果代码碰巧没有使用与我的机器上崩溃的numpy.linalg.lstsq相同的C函数 谢谢 这是Ernesto p.Adorio使用这个matlib.py的版本。你需要他的帮助 使用以下代码查找线性回归的系数

由于a(可能在我使用的numpy发行版中),我不能使用
numpy.linalg.lstsq
。我发现的每个统计库都不是在Python3(在Windows上)下安装的

是否有人有执行多元线性回归的纯python 3代码(我只需要Beta)

如果不是纯python,我仍然可以尝试它,如果代码碰巧没有使用与我的机器上崩溃的
numpy.linalg.lstsq
相同的C函数


谢谢

这是Ernesto p.Adorio使用这个matlib.py的版本。你需要他的帮助

使用以下代码查找线性回归的系数

from matlib import transpose, mattmat, vec2colmat, mat2vec, matdim, matprint 
from qr import  qr

def readdat():
    f = open('dat','r')
    x, y = [], []
    f.next()
    for line in  f:
        val = line.split()
        y.append(float(val[1]))
        x.append([float(p) for p in val[2:]])
    return x, y


def bsub(r, z):
    """ solves "R b = z", where r is triangular"""
    m, n = matdim(r)
    p, q = matdim(z)
    b = [[0] * n]
    pp, qq = matdim(b)
    for j in range(n-1, -1, -1):
        zz = z[0][j] - sum(r[j][k]*b[0][k] for k in range(j+1, n))
        b[0][j] = zz / r[j][j]
    return b

def linreg(y, x):

    # prepend x with 1
    for xx in x:
        xx.insert(0, 1.0)    

    # QR decomposition
    q, r = qr(x)

    # z = Q^T y
    z = mattmat(q, vec2colmat(y))

    # back substitute to find b in R b = z
    b = bsub(r, transpose(z))
    b = b[0]

    return b


def tester():
    # read test data
    x, y = readdat()

    # calculate coeff
    b = linreg(y, x)

    for i,coef in enumerate(b):
        print 'coef b%d: %f' % (i, coef)

if __name__ == "__main__":
    tester()
从此处获取测试数据:,如下所示

Case Y X1 X2 X3 X4 X5 X6 1 43 51 30 39 61 92 45 2 63 64 51 54 63 73 47 3 71 70 68 69 76 86 48 4 61 63 45 47 54 84 35 5 81 78 56 66 71 83 47 6 43 55 49 44 54 49 34 7 58 67 42 56 66 68 35 8 71 75 50 55 70 66 41 9 72 82 72 67 71 83 31 10 67 61 45 47 62 80 41 11 64 53 53 58 58 67 34 12 67 60 47 39 59 74 41 13 69 62 57 42 55 63 25 14 68 83 83 45 59 77 35 15 77 77 54 72 79 77 46 16 81 90 50 72 60 54 36 17 74 85 64 69 79 79 63 18 65 60 65 75 55 80 60 19 65 70 46 57 75 85 46 20 50 58 68 54 64 78 52 外壳Y X1 X2 X3 X4 X5 X6 1 43 51 30 39 61 92 45 2 63 64 51 54 63 73 47 3 71 70 68 69 76 86 48 4 61 63 45 47 54 84 35 5 81 78 56 66 71 83 47 6 43 55 49 44 54 49 34 7 58 67 42 56 66 68 35 8 71 75 50 55 70 66 41 9 72 82 72 67 71 83 31 10 67 61 45 47 62 80 41 11 64 53 53 58 58 67 34 12 67 60 47 39 59 74 41 13 69 62 57 42 55 63 25 14 68 83 83 45 59 77 35 15 77 77 54 72 79 77 46 16 81 90 50 72 60 54 36 17 74 85 64 69 79 79 63 18 65 60 65 75 55 80 60 19 65 70 46 57 75 85 46 20 50 58 68 54 64 78 52 使用示例输出(注意:这不是我的输出,示例的!!)

多重R平方0.656 剩余不锈钢738.900 标准偏差估计值7.539 系数StdError t统计量p值 常数13.182 16.746 0.787 0.445 X1 0.583 0.232 2.513 0.026 X2-0.0440.167-0.263 0.797 X3 0.329 0.219 1.501 0.157 X4-0.057 0.317-0.180 0.860 X5 0.112 0.196 0.570 0.578 X6-0.197 0.247-0.798 0.439 上面的代码打印了这个。需要更多的翻页教科书来做stdev等,但得到了我预期的系数

python linreg.py coef b0: 13.182283 coef b1: 0.583462 coef b2: -0.043824 coef b3: 0.328782 coef b4: -0.057067 coef b5: 0.111868 coef b6: -0.197083 python linreg.py 系数b0:13.182283 系数b1:0.583462 系数b2:-0.043824 系数b3:0.328782 系数b4:-0.057067 系数b5:0.111868 系数b6:-0.197083
做了一些网络搜索,这家伙的密码是:。这个代码似乎有效吗?若有,你们可以按照这样的教科书做回归,这应该很容易。谢谢它的工作!我刚刚用2to3工具转换成了Python 3。很高兴听到它能工作。不过,这要归功于编写这些纯python实现的家伙(Ernesto)。对我来说,即使是写那个微不足道的三角形背部替代也不像是昙花一现。这不是一个多元线性回归的案例,不是多元线性回归吗?示例中的y是标量,而不是向量。你的消息来源还说:“多元回归”@yosukesabai libs已经死了,你有其他链接吗? python linreg.py coef b0: 13.182283 coef b1: 0.583462 coef b2: -0.043824 coef b3: 0.328782 coef b4: -0.057067 coef b5: 0.111868 coef b6: -0.197083