美文网首页GIS之时空数据分析
Python 线性回归-普通最小二乘回归法

Python 线性回归-普通最小二乘回归法

作者: 王叽叽的小心情 | 来源:发表于2019-12-16 20:02 被阅读0次

Python 中可以进行线性回归的包有很多个,包括numpy, sklearn, scipy 和stats,下面对这几个包中进行普通最小二乘回归做简单对比。

  1. 使用numpy:
# 简单回归,只获取斜率和截距
import numpy as np
a, b = np.polyfit(x, y, 1)  # a, b为斜率和截距,1为一次项,即线性回归。

# 如果想要获取更多的统计信息,设置polyfit参数full=True,即
a, b, residuals, rank, singular_values, rcond = np.polyfit(x, y, full=True)
此外还可以通过设置参数cov获取协方差矩阵。

参考文档:https://numpy.org/devdocs/reference/generated/numpy.polyfit.html?highlight=polyfit#numpy.polyfit

  1. 使用机器学习包sklearn:
from sklearn.linear_model import LinearRegression

def linear_model(x, y):
    lm_model = LinearRegression()
    lm_model.fit( x[:,np.newaxis], y)
    y_predicted = lm_model.predict(np.reshape(x, (-1,1)))
    r2 = lm_model.score(np.reshape(x, (-1,1)), y)
    a = lm_model.coef_
    b = lm_model.intercept_
    return a, b, r2

# 假设输入是pandas的DataFrame
a, b, r2 = linear_model(df['x'], df['y'])

参考文档:https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html#sklearn.linear_model.LinearRegression

  1. 使用statsmodels可以输出较多的统计量
import statsmodels.api as sm

# print the ols summary
x = sm.add_constant(x)
results = sm.OLS(y, x).fit()
print(results.summary())

参考文档:https://www.statsmodels.org/devel/regression.html

  1. 使用scipy中的optimize模块可以对任何形式的函数进行拟合
from scipy.optimize import curve_fit

# 比如简单的二次函数
def func(x, a, b, c):
        return a * (x * x) + b * x + c
# 参数和协方差矩阵
popt, pcov = curve_fit(func, x, y)
# 计算各个参数的标准差  standard deviation errors on the parameters
perr = np.sqrt(np.diag(pcov)) 

或者是使用其中的stats模块

from scipy import stats
import numpy as np
x = np.random.random(10)
y = np.random.random(10)
slope, intercept, r_value, p_value, std_err = stats.linregress(x,y)

参考文档:https://docs.scipy.org/doc/scipy-1.3.3/reference/generated/scipy.optimize.curve_fit.html#scipy.optimize.curve_fit

接下来再去看看几种不同的回归方法。

相关文章

  • Python 线性回归-普通最小二乘回归法

    Python 中可以进行线性回归的包有很多个,包括numpy, sklearn, scipy 和stats,下面对...

  • 机器学习算法速览表

    1. 回归 普通最小二乘回归(OLSR) 线性回归 Logistic回归 逐步回归 多变量自适应回归样条曲线(MA...

  • 机器学习算法一览

    回归 普通最小二乘回归 线性回归 对数几率回归 逐步回归 多元自适应回归样条法 局部散点平滑估计 Jackknif...

  • 线性回归模型

    1. 线性回归 线性回归又名普通二成最小法(ordinary least squares, OLS),是回归问题最...

  • 矩阵: QR分解 && 最小二乘问题求解

    最小二乘问题分为线性最小二乘问题和非线性最小二乘问题;非线性最小二乘问题求解方法有高斯牛顿法,Levenberg-...

  • 线性回归

    线性回归是机器学习算法的入门,通过该算法,管中窥豹,研究该算法的精髓之处。 线性回归 线性回归的损失函数为最小二乘...

  • 最小二乘法及矩阵求导

    矩阵的迹定义如下 最小二乘法 最小二乘的概率解释 最小即可。这就解释了线性回归为什么要选用最小二乘作为衡量指标了。...

  • 2.2 局部加权线性回归

    一. 局部加权线性回归 局部加权线性回归是普通线性回归的一个改进,普通的线性回归努力寻找一个使得全局代价函数最小的...

  • sklearn-User Guide 监督学习-- 广义线性模型

    下面的式子就是一个线性回归,其目标值是输入变量的线性组合,预测值可以表示为: 1.1.2 普通的最小二乘法 线性回...

  • 2. 线性回归与逻辑回归

    1. 什么是线性回归? 线性回归是利用线性回归方程的最小二乘函数对一个或多个自变量和因变量之间的关系进行建模的方法...

网友评论

    本文标题:Python 线性回归-普通最小二乘回归法

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