美文网首页
Python 线性回归分析

Python 线性回归分析

作者: 天地会大中华区块链ceo | 来源:发表于2019-11-25 14:12 被阅读0次

    import numpy as np 

    import matplotlib as mpl

    import matplotlib.pyplot as plt

    X = 2 * np.random.rand(100, 1)  # 生成100行,1列的矩阵,范围在(0,1)之间

    y = 4 + 3 * X + np.random.randn(100, 1)  # 生成的是(0, 1)之间的一个标准正态分布

    X_b = np.c_[np.ones((100, 1)), X]  # 生成首列为1,第二列为X分布的10*2的矩阵

    theta_best = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y)

    """

    对X_b的矩阵进行內积计算

    1,np.linalg.inv(X_b.T.dot(X_b))  这一步代表对X_b矩阵的內积后的2*2矩阵进行求逆矩阵的运算

    X_b.T.dot(X_b) A点积的结果是100个相加的结果之和  结果是斜对称矩阵

    2,np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T) 此步代表求出的逆矩阵后在和转置矩阵进行点积,2*2 2*100 = 2*100

    结果是第一行是 a11 * (X_b.T)j1 + a12*(X_b.T)j2

    结果的第二行是 a21 * (X_b.T)j1 + a22*(X_b.T)j2

    ,3,y是100*1的矩阵

    np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y) 此步骤代表与y的转置矩阵进行点积,得到 2*1的矩阵

    y 的每一个数字与2的结果进行运算 与y相关

    最终求得结果是一个2*1的矩阵

    Q:中间的这些变换的意义是什么?

    """

    X_new = np.array([[0], [2]])

    X_new_b = np.c_[np.ones((2, 1)), X_new]

    y_predict = X_new_b.dot(theta_best)

    """

    y_predict X_new_b 2*2的矩阵,theta_best是一个2*1的矩阵

    y_predict 与X_new_b(2*2)的矩阵与(2*1)的矩阵相乘得到的一个2*1的矩阵

    """

    y_predict

    plt.plot(X_new, y_predict, "r--")

    plt.plot(X, y ,"b.")

    """

    这能说明X_new,y_predict的图像与X,y的图像有什么区别吗?

    """

    plt.axis([0, 2, 0, 15])

    plt.show()

    相关文章

      网友评论

          本文标题:Python 线性回归分析

          本文链接:https://www.haomeiwen.com/subject/tvadwctx.html