线性回归

Apple@Jing Apple@Jing     2022-09-14     762

关键词:

回归拟合是最基础的数据分析方法,而线性回归又是最基础的回归拟合。对于分布非常集中的数据,可以直接采用最小二乘法进行回归拟合。甚至,我们可以直接把数据放到excel表格中,使用excel直接进行拟合。然而,当数据中含有噪声的时候,必须采用新的算法过滤噪声点。

在此,介绍一种RANSAC(Random sample consensus)算法。

上图为采用sklearn的RANSAC算法进行线性拟合的结果图。如图所示,图中绿色点被RANSAC算法识别为inliers,而黄色点被RANSAC算法识别为outliers。

 1 import numpy as np
 2 from matplotlib import pyplot as plt
 3 
 4 from sklearn import linear_model, datasets
 5 
 6 
 7 n_samples = 1000
 8 n_outliers = 50
 9 
10 
11 X, y, coef = datasets.make_regression(n_samples=n_samples, n_features=1,
12                                       n_informative=1, noise=10,
13                                       coef=True, random_state=0)
14 
15 # Add outlier data
16 np.random.seed(0)
17 X[:n_outliers] = 3 + 0.5 * np.random.normal(size=(n_outliers, 1))
18 y[:n_outliers] = -3 + 10 * np.random.normal(size=n_outliers)
19 
20 # Fit line using all data
21 model = linear_model.LinearRegression()
22 model.fit(X, y)
23 
24 # Robustly fit linear model with RANSAC algorithm
25 model_ransac = linear_model.RANSACRegressor(linear_model.LinearRegression())
26 model_ransac.fit(X, y)
27 inlier_mask = model_ransac.inlier_mask_
28 outlier_mask = np.logical_not(inlier_mask)
29 
30 # Predict data of estimated models
31 line_X = np.arange(-5, 5)
32 line_y = model.predict(line_X[:, np.newaxis])
33 line_y_ransac = model_ransac.predict(line_X[:, np.newaxis])
34 
35 # Compare estimated coefficients
36 print("Estimated coefficients (true, normal, RANSAC):")
37 print(coef, model.coef_, model_ransac.estimator_.coef_)
38 
39 lw = 2
40 plt.scatter(X[inlier_mask], y[inlier_mask], color='yellowgreen', marker='.',
41             label='Inliers')
42 plt.scatter(X[outlier_mask], y[outlier_mask], color='gold', marker='.',
43             label='Outliers')
44 plt.plot(line_X, line_y, color='navy', linestyle='-', linewidth=lw,
45          label='Linear regressor')
46 plt.plot(line_X, line_y_ransac, color='cornflowerblue', linestyle='-',
47          linewidth=lw, label='RANSAC regressor')
48 plt.legend(loc='lower right')
49 plt.show()

 上述代码从sklearn中复制而来,具体路径如下

http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.RANSACRegressor.html

补充说明:针对RANSAC算法,我在使用过程中发现执行一次算法没有找到正确的直线。后面我在该算法外面加了一个for循环,这样多执行几次之后,就可以找到真正的inliers集合,拟合出的曲线效果非常好。当然,由于多次执行RANSAC算法,这就导致很多inliers被判定为outliers。但是,考虑我最终的目的是获取这条直线,只要保证最终的inliers集合确实正确即可。


线性回归——简单线性回归

给定数据集,其中。线性回归试图学得一个线性模型以尽可能准确线性回归试图学得一个线性模型以尽可能准确地预测实值输出标记。(注:上面的以及均表示向量;的取值表示在向量上的第d个属性) 先考虑最简单的情形... 查看详情

比较贝叶斯线性回归与线性回归

】比较贝叶斯线性回归与线性回归【英文标题】:comparebayesianlinearregressionVSlinearregression[closed]【发布时间】:2012-10-2801:39:54【问题描述】:最近学习了贝叶斯线性回归模型,但让我感到困惑的是,在什么情况下我们应该使用线性... 查看详情

线性回归

...据),产生拟合方程,从而对(未知数据)进行预测  线性回归:一元线性回归;多元线性;广义线性  非线性回归分析  困难:选定变量(多元),避免多重共线性,观察拟合方程,避免过度拟合,检验模型是否合理 ... 查看详情

349线性回归直接计算与指数线性回归

查看详情

逻辑回归和线性回归区别

1)线性回归要求变量服从正态分布,logistic回归对变量分布没有要求。 2)线性回归要求因变量是连续性数值变量,而logistic回归要求因变量是分类型变量。 3)线性回归要求自变量和因变量呈线性关系,而logistic回归不要... 查看详情

线性回归

一.线性回归算法原理推导1.误差项分析2.似然函数求解3.目标函数推导4.线性回归求解 查看详情

r语言回归分析(regression)常见算法:简单线性回归多项式回归多元线性回归多水平回归多输出回归逻辑回归泊松回归cox比例风险回归时间序列分析非线性回归非参数回归稳健回归等

R语言回归分析(regression)常见算法:简单线性回归、多项式回归、多元线性回归、多水平回归、多输出回归、逻辑回归、泊松回归、cox比例风险回归、时间序列分析、非线性回归、非参数回归、稳健回归等目录开发者涨薪指南4... 查看详情

一元线性回归

1、概念一元线性回归是最简单的一种模型,但应用广泛,比如简单地预测商品价格、成本评估等,都可以用一元线性模型,本节主要讲解scikit-learn一元线性回归的使用以及作图说明。y=f(x)叫做一元函数,回归的意思就是根据已... 查看详情

线性回归——最小二乘法

相信学过数理统计的都学过线性回归(linearregression),本篇文章详细将讲解单变量线性回归并写出使用最小二乘法(leastsquaresmethod)来求线性回归损失函数最优解的完整过程,首先推导出最小二乘法,后用最小二乘法对一个简... 查看详情

线性回归-误差,似然函数

一、线性回归在统计学中,线性回归(LinearRegression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合。回归分析... 查看详情

回归:正则化/线性回归/逻辑回归

    查看详情

机器学习线性回归简介

目录1线性回归应用场景2什么是线性回归2.1定义与公式2.2线性回归模型介绍3小结1线性回归应用场景房价预测销售额度预测贷款额度预测举例:2什么是线性回归2.1定义与公式线性回归(Linearregression)是利用回归方程(函数)对一个... 查看详情

python数据科学-回归分析☞线性回归(代码片段)

基本线性回归、多次线性回归、多元线性回归:fromsklearn.preprocessingimportPolynomialFeaturesfromsklearn.linear_modelimportLinearRegression'''高次线性回归'''poly_reg=PolynomialFeatures(degree 查看详情

线性回归——lasso回归和岭回归(ridgeregression)

目录线性回归——最小二乘Lasso回归和岭回归为什么lasso更容易使部分权重变为0而ridge不行?References线性回归很简单,用线性函数拟合数据,用meansquareerror(mse)计算损失(cost),然后用梯度下降法找到一组使mse最小的权重。lasso... 查看详情

线性回归(linearregression)

1.前言线性回归形式简单、易于建模,但却蕴涵着机器学习中一些重要的基本思想。许多功能更为强大的非线性模型(nonlinearmodel)可在线性模型的基础上通过引入层级结构或高维映射而得。此外,由于线性回归的解( heta)直观表达... 查看详情

史诗级干货长文线性回归算法(代码片段)

线性回归算法前言1.线性回归简介1.1线性回归应用场景1.2什么是线性回归1.2.1定义与公式1.2.2线性回归的特征与目标的关系分析2.线性回归API初步使用2.1线性回归API2.2举例2.2.1步骤分析2.2.2代码过程3.数学:求导3.1常见函数的导数3.2导... 查看详情

二元logistic回归是非线性回归吗

参考技术A不是,是线性回归。现在都是把逻辑回归作为复合函数使用的逻辑回归的原始形式是非线性的,决定这个复合函数是否是线性的,要看形式。比如假设阈值为0.5,这里的,实际是一个决策面,这个决策面的两侧分别是... 查看详情

从线性回归绘制逻辑回归

】从线性回归绘制逻辑回归【英文标题】:PlottingLogisticRegressionfromLinearRegression【发布时间】:2021-11-2320:29:25【问题描述】:我有一个有效的线性回归算法,可以用它来绘制图形,但我不知道如何使用sigmoid变换绘制逻辑回归。这... 查看详情