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

帮助中心 广告联系

華僑時報 | 華僑網

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

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

来源:网络整理 作者:华侨时报 发布时间:2018-01-03
摘要:本文中,作者讨论了 8 种在 Python 环境下进行简单线性回归计算的算法,不过没有讨论其性能的好坏,而是对比了其相

参与:晏奇、刘晓坤

本文中,作者讨论了 8种在 Python环境下进行简单线性回归计算的算法,不过没有讨论其性能的好坏,而是对比了其相对计算复杂度的度量。

GitHub地址:https://github.com/tirthajyoti/PythonMachineLearning/blob/master/Linear_Regression_Methods.ipynb

对于大多数数据科学家而言,线性回归方法是他们进行统计学建模和预测分析任务的起点。但我们不可夸大线性模型(快速且准确地)拟合大型数据集的重要性。如本文所示,在线性回归模型中,「线性」一词指的是回归系数,而不是特征的 degree。

特征(或称独立变量)可以是任何的 degree,甚至是超越函数(transcendental function),比如指数函数、对数函数、正弦函数。因此,很多自然现象可以通过这些变换和线性模型来近似模拟,即使当输出与特征的函数关系是高度非线性的也没问题。

另一方面,由于 Python正在快速发展为数据科学家的首选编程语言,所以能够意识到存在很多方法用线性模型拟合大型数据集,就显得尤为重要。同样重要的一点是,数据科学家需要从模型得到的结果中来评估与每个特征相关的重要性。

然而,在 Python中是否只有一种方法来执行线性回归分析呢?如果有多种方法,那我们应该如何选择最有效的那个呢?

由于在机器学习中,Scikit-learn是一个十分流行的 Python库,因此,人们经常会从这个库调用线性模型来拟合数据。除此之外,我们还可以使用该库的 pipeline与 FeatureUnion功能(如:数据归一化、模型回归系数正则化、将线性模型传递给下游模型),但是一般来看,如果一个数据分析师仅需要一个又快又简单的方法来确定回归系数(或是一些相关的统计学基本结果),那么这并不是最快或最简洁的方法。

虽然还存在其他更快更简洁的方法,但是它们都不能提供同样的信息量与模型灵活性。

请继续阅读。

有关各种线性回归方法的代码可以参阅笔者的 GitHub。其中大部分都基于 SciPy包

SciPy基于 Numpy建立,集合了数学算法与方便易用的函数。通过为用户提供高级命令,以及用于操作和可视化数据的类,SciPy显著增强了 Python的交互式会话。

以下对各种方法进行简要讨论。

方法 1:Scipy.polyfit或 numpy.polyfit

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

这是一个非常一般的最小二乘多项式拟合函数,它适用于任何 degree的数据集与多项式函数(具体由用户来指定),其返回值是一个(最小化方差)回归系数的数组。

对于简单的线性回归而言,你可以把 degree设为 1。如果你想拟合一个 degree更高的模型,你也可以通过从线性特征数据中建立多项式特征来完成。

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

方法 2:stats.linregress

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

这是 Scipy中的统计模块中的一个高度专门化的线性回归函数。其灵活性相当受限,因为它只对计算两组测量值的最小二乘回归进行优化。因此,你不能用它拟合一般的线性模型,或者是用它来进行多变量回归分析。但是,由于该函数的目的是为了执行专门的任务,所以当我们遇到简单的线性回归分析时,这是最快速的方法之一。除了已拟合的系数和截距项(intercept term)外,它还会返回基本的统计学值如 R²系数与标准差。

详细描述参考:

方法 3:optimize.curve_fit

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

责任编辑:华侨时报