代码之家  ›  专栏  ›  技术社区  ›  Kalpit

比较线性回归的计算和分析结果

  •  -1
  • Kalpit  · 技术社区  · 8 年前

    考虑简单的单特征线性回归。x=特征,w=权重 线性回归模型的最佳拟合值为w, w=(xTx)^(-1)xTy 现在我正在比较我从scikit学习回归器和计算w方法得到的结果,它们之间有显著差异。

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    data = pd.read_csv('Salary_Data.csv')
    x = data.iloc[:,[0]].values
    y = data.iloc[:,[1]].values
    #space
    x_t = np.transpose(x)
    first_inv = np.matmul(x_t, x)
    second = np.matmul(x_t, y)
    first = np.linalg.inv(first_inv)
    theta = np.matmul(first, second)
    y_prad = theta*x
    #space
    from sklearn.linear_model import LinearRegression
    regressor = LinearRegression()
    regressor.fit(x, y)
    y_prad2 = regressor.predict(x)
    #space
    plt.scatter(x, y)
    plt.plot(x, y_prad , 'red')
    plt.plot(x, y_prad2, 'green')
    

    refer the graph for the difference

    我哪里错了?(无论概念或代码如何)

    1 回复  |  直到 7 年前
        1
  •  1
  •   willk    8 年前

    你忘记了截距项。使用向x矩阵添加一列1 np.insert(x, 0, 1, axis=1) 然后重新运行计算。x的形状应该是(30,2),其中第一列都是1,表示常数乘以截距。θ的最终形状应该是(2,1),其中第一项是截距,第二项是斜率。

    这对线性回归的矩阵表示有很好的参考价值。 Matrix Formulation of Linear Regression

    推荐文章