现实世界的曲线关系都是通过增加多项式实现的,现在解决多项式回归问题

  住房价格样本

  

  样本图像

import matplotlib.font_manager as fm
import matplotlib.pyplot as plt
myfont = fm.FontProperties(fname='C:\Windows\Fonts\simsun.ttc')
# plt.figure() # 实例化作图变量
plt.title('房价面积价格样本', fontproperties = myfont) # 图像标题
plt.xlabel('面积(平方米)', fontproperties = myfont) # x轴文本
plt.ylabel('价格(万元)', fontproperties = myfont) # y轴文本
# plt.axis([30, 400, 100, 400])
plt.grid(True) # 是否绘制网格线 X = [[50], [100], [150], [200], [250], [300]]
y = [[150], [200], [250], [280], [310], [330]] X_test = [[250], [300]] # 用来做最终效果测试
y_test = [[310], [330]] # 用来做最终效果测试
# plt.plot(X, y, 'b.')#点
# plt.plot(X, y, 'b-')#线
plt.scatter(X, y, marker='*',color='blue',label='房价面积价格样本')
plt.show()

  

  用线性回归

     添加以下代码

model = LinearRegression()
model.fit(X, y)
print('一元线性回归 r-squared', model.score(X_test, y_test)) X2 = [[30], [400]]
y2 = model.predict(X2)
plt.plot(X2, y2, 'g-')
plt.show()

  

  实际情况是,如果房屋面积一味的增加,房价并不会线性增长,因此线性关系已经无法描述真实的房价问题

  采用多项式回归

  首先我们用二次多项式
  

# 实例化一个二次多项式特征实例
quadratic_featurizer = PolynomialFeatures(degree=2) # 用二次多项式对样本X值做变换
X_train_quadratic = quadratic_featurizer.fit_transform(X) # 创建一个线性回归实例
regressor_model = LinearRegression() # 以多项式变换后的x值为输入,代入线性回归模型做训练
regressor_model.fit(X_train_quadratic, y) # 设计x轴一系列点作为画图的x点集
xx = np.linspace(30, 400, 100) # 把训练好X值的多项式特征实例应用到一系列点上,形成矩阵
xx_quadratic = quadratic_featurizer.transform(xx.reshape(xx.shape[0], 1)) yy_predict = regressor_model.predict(xx_quadratic) # 用训练好的模型作图
plt.plot(xx, yy_predict, 'r-') X_test_quadratic = quadratic_featurizer.transform(X_test)
print('二次回归 r-squared', regressor_model.score(X_test_quadratic, y_test))
#
#
plt.show() # 展示图像

  

  继续三次回归

cubic_featurizer = PolynomialFeatures(degree=3)
X_train_cubic = cubic_featurizer.fit_transform(X)
regressor_cubic = LinearRegression()
regressor_cubic.fit(X_train_cubic, y)
xx_cubic = cubic_featurizer.transform(xx.reshape(xx.shape[0], 1))
plt.plot(xx, regressor_cubic.predict(xx_cubic)) X_test_cubic = cubic_featurizer.transform(X_test)
print('三次回归 r-squared', regressor_cubic.score(X_test_cubic, y_test))
plt.show() # 展示图像

  

  

   可以看到三次回归比二次回归效果又好了一些,但是不是很明显。所以二次回归更可能是最适合的回归模型,三次回归可能有过拟合现象

  参考:http://www.aboutyun.com/thread-19073-1-1.html

python 机器学习多项式回归的更多相关文章

  1. Python机器学习--回归

    线性回归 # -*- coding: utf-8 -*- """ Created on Wed Aug 30 19:55:37 2017 @author: Adminis ...

  2. Python 机器学习实战 —— 监督学习(上)

    前言 近年来AI人工智能成为社会发展趋势,在IT行业引起一波热潮,有关机器学习.深度学习.神经网络等文章多不胜数.从智能家居.自动驾驶.无人机.智能机器人到人造卫星.安防军备,无论是国家级军事设备还是 ...

  3. 常用python机器学习库总结

    开始学习Python,之后渐渐成为我学习工作中的第一辅助脚本语言,虽然开发语言是Java,但平时的很多文本数据处理任务都交给了Python.这些年来,接触和使用了很多Python工具包,特别是在文本处 ...

  4. [Python] 机器学习库资料汇总

    声明:以下内容转载自平行宇宙. Python在科学计算领域,有两个重要的扩展模块:Numpy和Scipy.其中Numpy是一个用python实现的科学计算包.包括: 一个强大的N维数组对象Array: ...

  5. 【转】常见的python机器学习工具包比较

    http://algosolo.com/ 分析对比了常见的python机器学习工具包,包括: scikit-learn mlpy Modular toolkit for Data Processing ...

  6. python机器学习《回归 一》

    唠嗑唠嗑 依旧是每一次随便讲两句生活小事.表示最近有点懒,可能是快要考试的原因,外加这两天都有笔试和各种面试,让心情变得没那么安静的敲代码,没那么安静的学习算法.搞得第一次和技术总监聊天的时候都不太懂 ...

  7. 2016年GitHub排名前20的Python机器学习开源项目(转)

    当今时代,开源是创新和技术快速发展的核心.本文来自 KDnuggets 的年度盘点,介绍了 2016 年排名前 20 的 Python 机器学习开源项目,在介绍的同时也会做一些有趣的分析以及谈一谈它们 ...

  8. [resource]Python机器学习库

    reference: http://qxde01.blog.163.com/blog/static/67335744201368101922991/ Python在科学计算领域,有两个重要的扩展模块: ...

  9. Python机器学习包

    常用Python机器学习包 Numpy:用于科学计算的包 Pandas:提供高性能,易于使用的数据结构和数据分析工具 Scipy:用于数学,科学工程的软件 StatsModels:用于探索数据.估计统 ...

随机推荐

  1. MIPS Mars 安装

    Mars 4.5下载 Java 环境配置好了以后可以直接双击打开 Mars

  2. centos7 打造基于python语言Selenium2自动化开发环境

    1. 准备 安装模块 # yum groupinstall "Development tools" # yum install zlib-devel bzip2-devel ope ...

  3. 正余弦信号的DFT频谱分析

    一般的,对正余弦信号进行採样并DFT运算,画出频谱图,会发现频谱并不干净.这样的现象称为频谱泄漏.由于DFT运算仅仅能是有限序列,突然的截断产生了泄漏. 会有这种特殊情况.当採样截取的刚好是整数个周期 ...

  4. Google 镜像站搜集

    在特殊的地方和特殊的时间,流畅顺利的打开一个网站也变得如此艰难. 2016.01.16 更新.本站订阅更新功能已上线,欢迎订阅! 以下是直接使用谷歌的方法,如需***戳这里(VPN | Shadows ...

  5. C程序设计的抽象思维-递归过程-砝码称重

    [问题] 在狄更斯时代,商人们用砝码和天平来称量商品的重量,假设你仅仅有几个砝码,就仅仅能精确地称出一定的重量.比如,假定仅仅有两个砝码:各自是1kg和3kg. 仅仅用1kg的砝码能够称出1kg重量的 ...

  6. 用DELPHI 开发压缩、解压、自解压、加密

    引 言:在日常中,我们一定使用过WINZIP.WINRAR这样的出名的压缩软件,就是我们开发软件过程中不免要遇到数据加密.数据压缩的问题!本文中就这一技术问题展开探讨,同时感谢各位网友的技巧,在我每次 ...

  7. eclipse 安装 weblogic server

  8. Android_开源框架_AndroidUniversalImageLoader网络图片加载

    1.功能概要 Android-Universal-Image-Loader是一个开源的UI组件程序,该项目的目的是提供一个可重复使用的仪器为异步图像加载,缓存和显示. (1).使用多线程加载图片(2) ...

  9. websocket消息推送实现

    一.服务层 package com.demo.websocket; import java.io.IOException; import java.util.Iterator; import java ...

  10. SharePoint Online 创建和使用视图

    前言 本文介绍如何在Office 365中创建和使用视图. 正文 首先,解释一下什么是SharePoint站点视图,所谓视图,就是列表的一个呈现形式,包含特定的栏.排序.筛选.分组等特性,我们通常创建 ...