首页 > 解决方案 > 如何计算python中简单线性回归拟合的截距和斜率?

问题描述

我有以下代码类数据: def init (self, x, y): """ (Data, list, list) -> NoneType

    Create a new data object with two attributes: x and y.
    """
    self.x = x
    self.y = y

def num_obs(self):
    """ (Data) -> int

    Return the number of observations in the data set.

    >>> data = Data([1, 2], [3, 4])
    >>> data.num_obs()
    2
    """

    return len(self.x)

def __str__(self):
    """ (Data) -> str
    Return a string representation of this Data in this format:
    x               y
    18.000          120.000
    20.000          110.000
    22.000          120.000
    25.000          135.000
    26.000          140.000
    29.000          115.000
    30.000          150.000
    33.000          165.000
    33.000          160.000
    35.000          180.000
    """

    return 'x               y\n' + '\n'.join('{0:.3f}         {1:.3f}'.format(a, b) for a, b in zip(self.x, self.y))

def compute_sample_means(self):
    """ (Data) -> number, number

    Return sample mean of x and sample mean of y.
    """
    a = sum(self.x)/len(self.x)
    b = sum(self.y)/len(self.y)
    return a,b

def compute_least_squares_fit(self):
    """ (Data) -> number, number

 Return the intercept and slope of the simple linear regression fit
    of the data.
    """
    pass


def compute_SST(self):
    """ (Data) -> number

    Return the sum of squares total (SST).
    """

    avg_y = np.mean(self.y)
    squared_errors = (self.y - avg_y) ** 2
    return np.sum(squared_errors)

我被困在返回 compute_least_squares_fit 部分。如何计算数据的简单线性回归拟合的截距和斜率。有我可以使用的内置功能吗?

标签: pythonpython-3.x

解决方案


SciPy模块有scipy.optimize.least_squares,我一直将其用于简单的线性回归模型。

根据文档,它解决了具有变量界限的非线性最小二乘问题。它返回找到的解决方案,我想它会导致您正在寻找的东西。

让我知道这是否有帮助!


推荐阅读