华侨网,有态度的华人新闻网站!

帮助中心 广告联系

華僑時報 | 華僑網

热门关键词:  央行  发顺丰  蓝狐  詩詞  习近平
热门TAG标签:

CICC科普栏目|Python环境下的8种简单线性回归算法(2)

来源:网络整理 作者:华侨时报 发布时间:2018-01-03
摘要:这个方法与 Polyfit方法类似,但是从根本来讲更为普遍。通过进行最小二乘极小化,这个来自 scipy.optimize模块的强大函数可以通过最小二乘方法将用户定义

这个方法与 Polyfit方法类似,但是从根本来讲更为普遍。通过进行最小二乘极小化,这个来自 scipy.optimize模块的强大函数可以通过最小二乘方法将用户定义的任何函数拟合到数据集上。

对于简单的线性回归任务,我们可以写一个线性函数:mx+c,我们将它称为估计器。它也适用于多变量回归。它会返回一个由函数参数组成的数列,这些参数是使最小二乘值最小化的参数,以及相关协方差矩阵的参数。

详细描述参考:https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.curve_fit.html

方法 4:numpy.linalg.lstsq

CICC科普栏目|Python环境下的8种简单线性回归算法

这是用矩阵因式分解来计算线性方程组的最小二乘解的根本方法。它来自 numpy包中的线性代数模块。通过求解一个 x向量(它将|| b—a x ||²的欧几里得 2-范数最小化),它可以解方程 ax=b。

该方程可能会欠定、确定或超定(即,a中线性独立的行少于、等于或大于其线性独立的列数)。如果 a是既是一个方阵也是一个满秩矩阵,那么向量 x(如果没有舍入误差)正是方程的解。

借助这个方法,你既可以进行简单变量回归又可以进行多变量回归。你可以返回计算的系数与残差。一个小窍门是,在调用这个函数之前,你必须要在 x数据上附加一列 1,才能计算截距项。结果显示,这是处理线性回归问题最快速的方法之一。

详细描述参考:https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.linalg.lstsq.html#numpy.linalg.lstsq

方法 5: Statsmodels.OLS

statsmodel是一个很不错的 Python包,它为人们提供了各种类与函数,用于进行很多不同统计模型的估计、统计试验,以及统计数据研究。每个估计器会有一个收集了大量统计数据结果的列表。其中会对结果用已有的统计包进行对比试验,以保证准确性。

对于线性回归,人们可以从这个包调用 OLS或者是 Ordinary least squares函数来得出估计过程的最终统计数据。

需要记住的一个小窍门是,你必须要手动为数据 x添加一个常数,以用于计算截距。否则,只会默认输出回归系数。下方表格汇总了 OLS模型全部的结果。它和任何函数统计语言(如 R和 Julia)一样丰富。

CICC科普栏目|Python环境下的8种简单线性回归算法

详细描述参考:

方法 6、7:使用矩阵求逆方法的解析解

对于一个良态(well-conditioned)线性回归问题(至少是对于数据点、特征),回归系数的计算存在一个封闭型的矩阵解(它保证了最小二乘的最小化)。它由下面方程给出:

在这里,我们有两个选择:

方法 6:使用简单矩阵求逆乘法。

方法 7:首先计算数据 x的广义 Moore-Penrose伪逆矩阵,然后将结果与 y进行点积。由于这里第二个步骤涉及到奇异值分解(SVD),所以它在处理非良态数据集的时候虽然速度慢,但是结果不错。(参考:开发者必读:计算机科学中的线性代数)

详细描述参考:https://en.wikipedia.org/wiki/Linear_least_squares_%28mathematics%29

方法 8: sklearn.linear_model.LinearRegression

这个方法经常被大部分机器学习工程师与数据科学家使用。然而,对于真实世界的问题,它的使用范围可能没那么广,我们可以用交叉验证与正则化算法比如 Lasso回归和 Ridge回归来代替它。但是要知道,那些高级函数的本质核心还是从属于这个模型。

详细描述参考:

以上方法的速度与时间复杂度测量

责任编辑:华侨时报