本文主要向大家介绍了机器学习入门之机器学习之路:python 多项式特征生成PolynomialFeatures  欠拟合与过拟合,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助。

分享一下 线性回归中 欠拟合 和 过拟合 是怎么回事~为了解决欠拟合的情 经常要提高线性的次数建立模型拟合曲线, 次数过高会导致过拟合,次数不够会欠拟合。再建立高次函数时候,要利用多项式特征生成器 生成训练数据。下面把整个流程展示一下模拟了一个预测蛋糕价格的从欠拟合到过拟合的过程git: https://github.com/linyi0604/MachineLearning在做线性回归预测时候,为了提高模型的泛化能力,经常采用多次线性函数建立模型f = k*x + b   一次函数f = a*x^2 + b*x + w  二次函数f = a*x^3 + b*x^2 + c*x + w  三次函数。。。泛化:    对未训练过的数据样本进行预测。    欠拟合:    由于对训练样本的拟合程度不够,导致模型的泛化能力不足。过拟合:    训练样本拟合非常好,并且学习到了不希望学习到的特征,导致模型的泛化能力不足。    在建立超过一次函数的线性回归模型之前,要对默认特征生成多项式特征再输入给模型

poly2 = PolynomialFeatures(degree=2)    # 2次多项式特征生成器

x_train_poly2 = poly2.fit_transform(x_train)

下面模拟 根据蛋糕的直径大小 预测蛋糕价格

1 from sklearn.linear_model import LinearRegression

2 import numpy as np

3 import matplotlib.pyplot as plt

4

5 ‘‘‘

6 在做线性回归预测时候,

7 为了提高模型的泛化能力,经常采用多次线性函数建立模型

8

9 f = k*x + b   一次函数

10 f = a*x^2 + b*x + w  二次函数

11 f = a*x^3 + b*x^2 + c*x + w  三次函数

12 。。。

13

14 泛化:

15     对未训练过的数据样本进行预测。

16

17 欠拟合:

18     由于对训练样本的拟合程度不够,导致模型的泛化能力不足。

19

20 过拟合:

21     训练样本拟合非常好,并且学习到了不希望学习到的特征,导致模型的泛化能力不足。

22

23

24 在建立超过一次函数的线性回归模型之前,要对默认特征生成多项式特征再输入给模型

25

26 下面模拟 根据蛋糕的直径大小 预测蛋糕价格

27

28 ‘‘‘

29

30 # 样本的训练数据,特征和目标值

31 x_train = [[6], [8], [10], [14], [18]]

32 y_train = [[7], [9], [13], [17.5], [18]]

33

34 # 一次线性回归的学习与预测

35 # 线性回归模型 学习

36 regressor = LinearRegression()

37 regressor.fit(x_train, y_train)

38 # 画出一次线性回归的拟合曲线

39 xx = np.linspace(0, 25, 100)   # 0到16均匀采集100个点做x轴

40 xx = xx.reshape(xx.shape[0], 1)

41 yy = regressor.predict(xx)  # 计算每个点对应的y

42 plt.scatter(x_train, y_train)   # 画出训练数据的点

43 plt1, = plt.plot(xx, yy, label="degree=1")

44 plt.axis([0, 25, 0, 25])

45 plt.xlabel("Diameter")

46 plt.ylabel("Price")

47 plt.legend(handles=[plt1])

48 plt.show()

一次线性函数拟合曲线的结果,是欠拟合的情况:

下面进行建立2次线性回归模型进行预测:

1 # 2次线性回归进行预测

2 poly2 = PolynomialFeatures(degree=2)    # 2次多项式特征生成器

3 x_train_poly2 = poly2.fit_transform(x_train)

4 # 建立模型预测

5 regressor_poly2 = LinearRegression()

6 regressor_poly2.fit(x_train_poly2, y_train)

7 # 画出2次线性回归的图

8 xx_poly2 = poly2.transform(xx)

9 yy_poly2 = regressor_poly2.predict(xx_poly2)

10 plt.scatter(x_train, y_train)

11 plt1, = plt.plot(xx, yy, label="Degree1")

12 plt2, = plt.plot(xx, yy_poly2, label="Degree2")

13 plt.axis([0, 25, 0, 25])

14 plt.xlabel("Diameter")

15 plt.ylabel("Price")

16 plt.legend(handles=[plt1, plt2])

17 plt.show()

18 # 输出二次回归模型的预测样本评分

19 print("二次线性模型预测得分:", regressor_poly2.score(x_train_poly2, y_train))     # 0.9816421639597427

二次线性回归模型拟合的曲线:

拟合程度明显比1次线性拟合的要好

下面进行4次线性回归模型:

1 # 进行四次线性回归模型拟合

2 poly4 = PolynomialFeatures(degree=4)    # 4次多项式特征生成器

3 x_train_poly4 = poly4.fit_transform(x_train)

4 # 建立模型预测

5 regressor_poly4 = LinearRegression()

6 regressor_poly4.fit(x_train_poly4, y_train)

7 # 画出2次线性回归的图

8 xx_poly4 = poly4.transform(xx)

9 yy_poly4 = regressor_poly4.predict(xx_poly4)

10 plt.scatter(x_train, y_train)

11 plt1, = plt.plot(xx, yy, label="Degree1")

12 plt2, = plt.plot(xx, yy_poly2, label="Degree2")

13 plt4, = plt.plot(xx, yy_poly4, label="Degree2")

14 plt.axis([0, 25, 0, 25])

15 plt.xlabel("Diameter")

16 plt.ylabel("Price")

17 plt.legend(handles=[plt1, plt2, plt4])

18 plt.show()

19 # 输出二次回归模型的预测样本评分

20 print("四次线性模型预测得分:", regressor_poly4.score(x_train_poly4, y_train))     # 1.0

四次线性模型预测准确率为百分之百, 但是看一下拟合曲线,明显存在不合逻辑的预测曲线,

在样本点之外的情况,可能预测的非常不准确,这种情况为过拟合

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标人工智能机器学习频道!

python3中多项式创建_机器学习入门之机器学习之路:python 多项式特征生成PolynomialFeatures 欠拟合与过拟合...相关推荐

  1. python 非线性回归_机器学习入门之菜鸟之路——机器学习之非线性回归个人理解及python实现...

    本文主要向大家介绍了机器学习入门之菜鸟之路--机器学习之非线性回归个人理解及python实现,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助. 梯度下降:就是让数据顺着梯度最大的方向,也 ...

  2. python svr回归_机器学习入门之机器学习之路:python支持向量机回归SVR 预测波士顿地区房价...

    本文主要向大家介绍了机器学习入门之机器学习之路:python支持向量机回归SVR  预测波士顿地区房价,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助. 支持向量机的两种核函数模型进行预 ...

  3. matlab 职坐标,机器学习入门之机器学习实战ByMatlab(四)二分K-means算法

    本文主要向大家介绍了机器学习入门之机器学习实战ByMatlab(四)二分K-means算法,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助.前面我们在是实现K-means算法的时候,提到 ...

  4. l2正则化python_机器学习入门之机器学习之路: python线性回归 过拟合 L1与L2正则化...

    本文主要向大家介绍了机器学习入门之机器学习之路: python线性回归 过拟合 L1与L2正则化,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助. 正则化:    提高模型在未知数据上的 ...

  5. 机器学习入门 01 —— 机器学习概述

    文章目录 系列文章 机器学习概述 1.1.人工智能概述 1 人工智能应用场景 2 人工智能小案例 3 人工智能发展必备三要素 4 人工智能.机器学习和深度学习 5 小结 1.2.人工智能发展历程 1. ...

  6. matlab 职坐标,机器学习入门之机器学习实战ByMatlab(三)K-means算法

    本文主要向大家介绍了机器学习入门之机器学习实战ByMatlab(三)K-means算法,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助.K-means算法属于无监督学习聚类算法,其计算步 ...

  7. 深度学习试题_初学者入门宝典-机器学习入门资料汇总及学习建议(2018版)

    机器学习初学者公众号自从2018年10月开设以来,发表了不少机器学习入门的宝贵资料,受到广大机器学习爱好者的好评,本文对2018年本站发过的文章进行分类和汇总,以便初学者更好地学习. 机器学习入门,初 ...

  8. python3中zip函数_用python实现矩阵转置,python3 中zip()函数

    前几天群里有同学提出了一个问题:手头现在有个列表,列表里面两个元素,比如[1, 2],之后不断的添加新的列表,往原来相应位置添加.例如添加[3, 4]使原列表扩充为[[1, 3], [2, 4]],再 ...

  9. ☀️机器学习入门☀️(一) 机器学习简介 | 附加小练习

    目录 1. 机器学习是什么 2. 机器学习.深度学习和人工智能的区别与联系 3. 机器学习的应用 4. 机器学习分类 4.1 监督学习 4.2 无监督学习 4.3 半监督学习 4.4 强化学习 5. ...

最新文章

  1. PHP的Smarty
  2. 一步一步识别验证码(切分和识别)
  3. jquery插件编写学习
  4. 耻辱的时间戳(笑哭)
  5. hash表与系统顺序寻址
  6. unity中链接字符串和变量显示_理解Unity中的优化(六):字符串和文本
  7. 详解java访问修饰符
  8. vulkan 利用GPU加速ENet
  9. python实现给定一个字符串,寻找最长非重复子串
  10. shell初级-----更多结构化命令
  11. javaScript之函数,分支结构 ,循环结构(二)
  12. 用Tensorflow基于Deep Q Learning DQN 玩Flappy Bird
  13. Java 小记 — RabbitMQ 的实践与思考
  14. Nsight Compute内存访问常用Metrics含义理解
  15. 捷径 播报日期、时间、星期
  16. python请输入一个三位数输出该三位数的逆序数_编写程序,从键盘输入一个三位数,求出其逆序数并输出,例如输入123,输出321。...
  17. NB-IoT窄带物联网的优势特点
  18. 未能创建 SSL/TLS 安全通道解决方案
  19. 教育培训行业使用CRM管理系统有什么好处
  20. 新媒体运营:如何策划出一场完整高效的活动方案?(二) 黎想

热门文章

  1. AAAI 2020 开源论文 | 可建模语义分层的知识图谱补全方法
  2. 线下活动 × 深圳 | 大咖云集!第11届国际博士生论坛报名开启
  3. 阿里巴巴创新研究计划AIR2018正式发布 邀全球学者共创未来
  4. poj 1664 放苹果 DPDFS
  5. 华为内部存储转sd卡_高调谈洗牌 2019年中国存储市场下半场的关键词是“低调”吗?...
  6. excel 宏编程_在 Excel 中使用 Python 开发宏脚本
  7. 牛客题霸 NC6 二叉树的最大路径和
  8. Spring Boot——读取.properties配置文件解决方案
  9. Filling Shapes
  10. find the most comfortable road