本篇博客谈一谈多项式回归,通过代码理解一下为什么要使用多项式回归。

1 多项式回归

在sklearn中封装了线性回归,用来解决预测与特征符合线性关系这种情况,但现实生活中有很多情况是不符合线性关系有可能是符合二次方这样的关系等,那我们要怎么解决呢?下面用代码来体验下

①我们先自己制做一下数据

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline#x从-3 - 3均匀取值
x = np.random.uniform(-3, 3 ,size=100)
X = x.reshape(-1, 1)
#y是二次方程
y = 0.5 * x**2 + x +2 + np.random.normal(0, 1, size = 100)plt.scatter(x, y )

输出:

从图片中科院看出y符合二次方程

②试一下用线性关系来拟合

from sklearn.linear_model import LinearRegression
#实例化线性模型
lr = LinearRegression()
lr.fit(X, y)
y_predict = lr.predict(X)plt.scatter(x, y )
plt.plot(x, y_predict)

输出:

从图中很明显得出y本身是二次关系,而我们用线性关系去拟合,可想而知拟合效果非常不好,那我要怎么解决呢?

我们用的特征X是一元,而y是二元二次方程,我们可以为总特征添加二次这个特征然后去拟合,试一下吧。添加二次特征可以使用sklearn中的PolynomialFeatures

③ 使用sklearn中的PolynomialFeatures拟合y

from sklearn.preprocessing import PolynomialFeaturespoly = PolynomialFeatures(degree=2)
#degree=2 生成2次特征,可以调整poly.fit(X)
X2 = poly.transform(X)print('X2的大小',X2.shape)
X2[0:5, :]

输出:
X2的大小 (100, 3)
array([[ 1. , 0.50357262, 0.25358539],
[ 1. , 0.63851188, 0.40769742],
[ 1. , 0.47278938, 0.2235298 ],
[ 1. , 2.9326759 , 8.60058795],
[ 1. , 0.68268876, 0.46606394]])

我们已经为X添加了二次的特征,来拟合下y

#继续使用线性模型
lr.fit(X2, y)
y_predict2 = lr.predict(X2)plt.scatter(x, y)
plt.plot(np.sort(x), y_predict2[np.argsort(x)] )

输出:

对比原来的图,可以发现这次我们的直接很好的拟合了y这个分布。

2 总结

对于我们拿到的特征只有低次关系,而预测值为高次关系,我们可以使用PolynomialFeatures生成高次的特征去更好拟合预测值

多项式回归(PolynomialFeatures)相关推荐

  1. 机器学习入门(七):多项式回归, PolynomialFeatures详解

    机器学习入门专栏其他几个章节: 机器学习入门(一)线性回归 机器学习入门(二)KNN 机器学习入门(三)朴素贝叶斯 机器学习入门(四)决策树 机器学习入门(五)集成学习 机器学习入门(六)支持向量机 ...

  2. 【skLearn 回归模型】多项式回归 PolynomialFeatures

    文章目录 一.多项式对数据的处理 ① 一维数据集简单案例 ---- (维度针对特征数而言) ② 多维数据集案例 ---- (维度针对特征数而言) ♦ 二维测试 ♦ 三维测试 ③ 多项式回归处理非线性问 ...

  3. 十二、案例:加利福尼亚房屋价值数据集(多元线性回归) Lasso 岭回归 分箱处理非线性问题 多项式回归

    案例:加利福尼亚房屋价值数据集(线性回归)& Lasso & 岭回归 & 分箱处理非线性问题 点击标题即可获取文章源代码和笔记 1. 导入需要的模块和库 from sklear ...

  4. 机器学习-Sklearn-13(回归类大家族-下——非线性问题:多项式回归(多项式变换后形成新特征矩阵))

    机器学习-Sklearn-13(回归类大家族-下--非线性问题:多项式回归(多项式变换后形成新特征矩阵)) 5 非线性问题:多项式回归 5.1 重塑我们心中的"线性"概念 在机器学 ...

  5. scikit-learn机器学习(三)多项式回归(二阶,三阶,九阶)

    我们仍然使用披萨直径的价格的数据 import matplotlib matplotlib.rcParams['font.sans-serif']=[u'simHei'] matplotlib.rcP ...

  6. 使用sklearn学习多项式回归(三)

    目录 1,什么是线性 1.1,变量之间的线性关系 1.2,数据间的线性与非线性 1.3,线性模型与非线性模型 1.4,使用分箱处理非线性问题 2,多项式回归PolynomialFeatures 2.1 ...

  7. 非线性问题:多项式回归

    特征分别与标签之间的关系 分类问题中特征与标签[0,1]或者[-1,1]之间关系明显是非线性的关系.除非我们 在拟合分类的概率,否则不存在例外. 当我们在进行分类的时候,我们的数据分布往往是这样的: ...

  8. 【机器学习】九种顶流回归算法及实例总结

    线性回归通常是人们为机器学习和数据科学学习的第一个算法.它简单易懂,但是由于其功能有限,在实际业务中并不是最佳选择.大多数情况下,线性回归被用作基线模型来评估和比较研究中的新方法. 在处理实际问题时, ...

  9. python3(六)监督学习

    监督学习 目录 1 监督学习 2 分类 2.1 人体运动信息评级实例 2.2 基本分类模型 2.3 运动状态程序 3 回归 3.1 线性回归 正文 回到顶部 1 监督学习 利用一组带标签的数据, 学习 ...

  10. 数学建模预测模型实例(一)---大学生体测数据模型

    数学建模预测模型实例–大学生体测数据模型 数学建模预测模型实例(一)-大学生体测数据模型 数学建模预测模型实例(二)-表白墙影响力量化模型 python预测算法-线性回归 建立模型的目的 本篇文章中, ...

最新文章

  1. 一致性协议raft详解(一):raft整体介绍
  2. 几种常见SQL分页方式效率比较
  3. OpenCV可移植图形工具HighGUI实现图像和视频操作
  4. evolution 的回收站不能清除的终极解决办法
  5. 使用Scrapy框架编写爬虫
  6. truncate table 与delete table区别
  7. AWVS 13 Docker版本(破解后)
  8. java 字符串去重排序
  9. 最全中华古诗词数据库,收录30多万诗词
  10. CLUSTERDOWN Hash slot not served
  11. CentOS7图形界面和命令行界面的切换快捷键
  12. IDO已经OUT ?3分钟了解NFT的新玩法INO
  13. hotmail邮箱设置
  14. Windows10 creators update comeing
  15. 从冯诺伊曼结构看AI 1
  16. 电子书下载:Adobe PDF 文档格式开发参考 PDF Reference 1.7
  17. 打了一台滴滴D1后,我开始思考今后还要买车吗?
  18. PPT最强抠图技巧(收藏必备)
  19. C语言比较两个字符串相等为什么不是用“==”
  20. 第四次团队作业——项目Alpha版本发布

热门文章

  1. C++17新特性总结
  2. Ping++和BeeCloud的比较
  3. c语言中用什么表示真假,C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”?...
  4. 西安电子科技大学数据结构考点大纲解析
  5. Github:this exceeds GitHub‘s file size limit of 100.00 MB
  6. 一层一层剥开背包问题
  7. 【SQL】Sql Server SQL语句学习
  8. JavaScript常用事件及其区别
  9. 浮点数转十六进制,实用!!!
  10. 用墨刀进行简单的后台页面设计