多项式回归

理论上可以以上的方法拟合任何曲线,但前提条件是要事先对模型的形式进行判断,即知道非线性模型的参数设置。在一般情况下, 通过绘制散点图的形式可以做到这一点。但是在更一般的情况下,如有多个自变量的情况下,无法绘制散点图,同时也很难对模型形式进行预估,这个时候可以使用本小节所介绍的方法。根据数学的相关理论,任何曲线均可以使用多项式进行逼近,这种逼近的分析过程即多项式回归。

多项式回归类似于可线性化的非线性模型,可通过变量代换的方式使用普通最小二乘对参数进行估计。

设有因变量y和自变量x,它们之间的关系为n次多项式的关系,则有如下模型:

则多项式模型就转化为如下的多元线性模型:

这样就可以按照多元线性回归模型进行分析了。对于多元的多项式模型:

同样做变量代换,令

则有

转化之后的模型同样可以按照多元线性回归模型进行分析。

多项式回归当阶数过高时,待估参数过多,在样本量不大的情况下会比较困难,这是多项式回归的一大缺陷。因此,一般的多项式回归模型很少应用到三阶以上。

一、Python代码实现多项式回归

1.模拟多项式回归的数据集

import numpy as np

import matplotlib.pyplot as plt

x = np.random.uniform(-3,3,size=100)

X = x.reshape(-1,1)

# 一元二次方程

y = 0.5*x**2 + x + 2+np.random.normal(0,1,size=100)

plt.scatter(x,y)

2.使用线性回归拟合

很明显,用一根直线来拟合一根有弧度的曲线,效果是不好的

from sklearn.linear_model import LinearRegression

lin_reg = LinearRegression()

lin_reg.fit(X,y)

y_predict = lin_reg.predict(X)

plt.scatter(x,y)

plt.plot(X,y_predict,color='r')

3.添加一个特征

X2 = np.hstack([X,X**2])

lin_reg2 = LinearRegression()

lin_reg2.fit(X2, y)

y_predict2 = lin_reg2.predict(X2)

plt.scatter(x, y)

# 由于x是乱的,所以应该进行排序

plt.plot(np.sort(x), y_predict2[np.argsort(x)], color='r')

plt.show()

多项式回归线的绘制:

从上图可以看出,当添加了一个特征(原来特征的平方)之后,再从x的维度来看,就形成了一条曲线,显然这个曲线对原来数据集的拟合程度是更好的。

多线性回归在=算法上并没有新的地方,完全是使用线性回归的思路,关键在于为原来的样本,添加新的特征。而我们得到新的特征的方式是原有特征的多项式的组合。

采用这样的方式,我们就可以解决一些非线性的问题。

python多项式回归_Python 多项式回归 - 树懒学堂相关推荐

  1. python多项式回归_Python | 多项式回归的实现

    多项式回归是一种线性回归形式,其中自变量x和因变量y之间的关系被建模为n次多项式.多项式回归拟合x的值与y的相应条件均值之间的非线性关系,表示为E(y | x) 为什么多项式回归:研究人员假设的某些关 ...

  2. python趋势回归_Python 回归分析 - 树懒学堂

    回归分析 在现实生活中变量之间的关系往往不仅限相关关系这种相互影响,多个变量可能都会对所研究的因变量产生影响.而现实生活中人们大多都会对所关注的问题分析其原因,试图找出产生结果的根源所在,如春秋时期的 ...

  3. python决策评价模型_Python 构建并评价分类模型_Python Classify - 树懒学堂

    构建并评价分类模型 分类是指构造一个分类模型,输入样本的特征值,输出对应的类别,将每个样本映射到预先定义好的类别.分类模型建立在已有类标记的数据集上,属于有监督学习.在实际应用场景中,分类算法被用于行 ...

  4. 用python程序编写二元多项式_Python多项式回归的实现方法

    多项式回归是一种线性回归形式,其中自变量x和因变量y之间的关系被建模为n次多项式.多项式回归拟合x的值与y的相应条件均值之间的非线性关系,表示为E(y | x) 为什么多项式回归: 研究人员假设的某些 ...

  5. python多项式回归_如何在Python中实现多项式回归模型

    python多项式回归 Let's start with an example. We want to predict the Price of a home based on the Area an ...

  6. Python机器学习:多项式回归与模型泛化003过拟合与欠拟合

    过拟合欠拟合 #过拟合和欠拟合 import numpy as np import matplotlib.pyplot as plt x = np.random.uniform(-3,3,size=1 ...

  7. python画代码-Python教程_Python画Mandelbrot集 代码

    Python教程_Python画Mandelbrot集 代码 作者:Comet 来源: 课课家 www.kokojia.com点击数:278发布时间:2015-06-19 11:17:19 曼德勃罗集 ...

  8. python 在线编辑_科技学堂Python在线编程工具发布,欢迎各位老师一起来测评!...

    原标题:科技学堂Python在线编程工具发布,欢迎各位老师一起来测评! 作为一家面向科技工作者和爱好者的在线教育的平台,科技学堂一直致力于为大家提供更多.更丰富的科技教育资源. 2019年,我们上线了 ...

  9. c语言实现爬虫功能,用C/C 扩展Python语言_python 调用c语言 python实现简单爬虫功能_python实现简单爬虫...

    用C/C 扩展Python语言 Python是一门功能强大的脚本语言,它的强大不仅表现在功能上,还表现在其扩展性上.她提供大量的API以方便程序员利用C/C++对Python进行扩展.因为执行速度慢几 ...

最新文章

  1. 15.1 集合的迭代器
  2. 买什么数据结构与算法,这里有:动态图解十大经典排序算法(含JAVA代码实现)
  3. 模块怎么用_IC设计方法:模块划分与overdesign
  4. PHP生产一个验证码图片,PHP使用GD库生成验证码图片,实现图片验证
  5. xdebug断点调试原理
  6. bzoj 1082: [SCOI2005]栅栏(二分+DFS)
  7. 最近升级了win10系统,以前一直用的RDPWrap-1.6版本无法使用,解决方案
  8. Google 数学之美系列整理
  9. 联想电脑如何进入BIOS的方法汇总
  10. 第10章 vim程序编辑器
  11. 读《混世小农民》有感
  12. 统计学简介之九——两个总体参数的区间估计
  13. 如何自建微信外卖平台_如何建立微信点餐平台 微信小程序外卖怎么做
  14. [openwrt] [WIFI] 修改默认的SSID和密码
  15. AWVS工具太顶了,漏洞扫描工具AWVS介绍及安装教程
  16. 桌面不显示IE浏览器图标
  17. 李现助阵定格夜色之美,荣耀最强自拍手机亲民开售
  18. 快速采集详情API接口
  19. 多标签文本分类研究进展概述
  20. C语言缺陷与陷阱(笔记)

热门文章

  1. Nat Micro | 沈建忠团队发现新型可转移的替加环素高水平耐药机制
  2. python使用matplotlib可视化3D线框图、线框图可以将数据投影到指定的三维表面上,并输出可视化程度较高的三维效果图
  3. R语言使用fs包的dir_create函数在指定路径下创建新的文件夹、使用file_create函数在指定文件夹下创建文件
  4. R语言ggplot2可视化在时间序列上标注出重点区域实战(突出特定的时间范围):highlight specific time ranges
  5. pandas对dataframe的数据行(rows)进行随机抽样:使用sample函数进行数据行(rows)随机抽样
  6. Seaborn可视化图像调整图像大小(figure size)方法实战(Adjust the Figure Size)
  7. JetBrains DataGrip工具配置数据库过程详解
  8. Python可视化(matplotlib)在图像中添加文本和标记(Text and Annotation)
  9. PNAS:利用long-read生成个人转录组
  10. Linux指定网卡优先级,如何在Ubuntu中设置网络连接的优先级?