Python使用sklearn实现的各种回归算法示例


Posted in Python onJuly 04, 2019

本文实例讲述了Python使用sklearn实现的各种回归算法。分享给大家供大家参考,具体如下:

使用sklearn做各种回归

基本回归:线性、决策树、SVM、KNN

集成方法:随机森林、Adaboost、GradientBoosting、Bagging、ExtraTrees

1. 数据准备

为了实验用,我自己写了一个二元函数,y=0.5*np.sin(x1)+ 0.5*np.cos(x2)+0.1*x1+3。其中x1的取值范围是0~50,x2的取值范围是-10~10,x1和x2的训练集一共有500个,测试集有100个。其中,在训练集的上加了一个-0.5~0.5的噪声。生成函数的代码如下:

def f(x1, x2):
  y = 0.5 * np.sin(x1) + 0.5 * np.cos(x2) + 0.1 * x1 + 3
  return y
def load_data():
  x1_train = np.linspace(0,50,500)
  x2_train = np.linspace(-10,10,500)
  data_train = np.array([[x1,x2,f(x1,x2) + (np.random.random(1)-0.5)] for x1,x2 in zip(x1_train, x2_train)])
  x1_test = np.linspace(0,50,100)+ 0.5 * np.random.random(100)
  x2_test = np.linspace(-10,10,100) + 0.02 * np.random.random(100)
  data_test = np.array([[x1,x2,f(x1,x2)] for x1,x2 in zip(x1_test, x2_test)])
  return data_train, data_test

其中训练集(y上加有-0.5~0.5的随机噪声)和测试集(没有噪声)的图像如下:

Python使用sklearn实现的各种回归算法示例

2. scikit-learn的简单使用

scikit-learn非常简单,只需实例化一个算法对象,然后调用fit()函数就可以了,fit之后,就可以使用predict()函数来预测了,然后可以使用score()函数来评估预测值和真实值的差异,函数返回一个得分。

完整程式化代码为:

import numpy as np
import matplotlib.pyplot as plt
###########1.数据生成部分##########
def f(x1, x2):
  y = 0.5 * np.sin(x1) + 0.5 * np.cos(x2) + 3 + 0.1 * x1
  return y
def load_data():
  x1_train = np.linspace(0,50,500)
  x2_train = np.linspace(-10,10,500)
  data_train = np.array([[x1,x2,f(x1,x2) + (np.random.random(1)-0.5)] for x1,x2 in zip(x1_train, x2_train)])
  x1_test = np.linspace(0,50,100)+ 0.5 * np.random.random(100)
  x2_test = np.linspace(-10,10,100) + 0.02 * np.random.random(100)
  data_test = np.array([[x1,x2,f(x1,x2)] for x1,x2 in zip(x1_test, x2_test)])
  return data_train, data_test
train, test = load_data()
x_train, y_train = train[:,:2], train[:,2] #数据前两列是x1,x2 第三列是y,这里的y有随机噪声
x_test ,y_test = test[:,:2], test[:,2] # 同上,不过这里的y没有噪声
###########2.回归部分##########
def try_different_method(model):
  model.fit(x_train,y_train)
  score = model.score(x_test, y_test)
  result = model.predict(x_test)
  plt.figure()
  plt.plot(np.arange(len(result)), y_test,'go-',label='true value')
  plt.plot(np.arange(len(result)),result,'ro-',label='predict value')
  plt.title('score: %f'%score)
  plt.legend()
  plt.show()
###########3.具体方法选择##########
####3.1决策树回归####
from sklearn import tree
model_DecisionTreeRegressor = tree.DecisionTreeRegressor()
####3.2线性回归####
from sklearn import linear_model
model_LinearRegression = linear_model.LinearRegression()
####3.3SVM回归####
from sklearn import svm
model_SVR = svm.SVR()
####3.4KNN回归####
from sklearn import neighbors
model_KNeighborsRegressor = neighbors.KNeighborsRegressor()
####3.5随机森林回归####
from sklearn import ensemble
model_RandomForestRegressor = ensemble.RandomForestRegressor(n_estimators=20)#这里使用20个决策树
####3.6Adaboost回归####
from sklearn import ensemble
model_AdaBoostRegressor = ensemble.AdaBoostRegressor(n_estimators=50)#这里使用50个决策树
####3.7GBRT回归####
from sklearn import ensemble
model_GradientBoostingRegressor = ensemble.GradientBoostingRegressor(n_estimators=100)#这里使用100个决策树
####3.8Bagging回归####
from sklearn.ensemble import BaggingRegressor
model_BaggingRegressor = BaggingRegressor()
####3.9ExtraTree极端随机树回归####
from sklearn.tree import ExtraTreeRegressor
model_ExtraTreeRegressor = ExtraTreeRegressor()
###########4.具体方法调用部分##########
try_different_method(model_DecisionTreeRegressor)

3.结果展示

决策树回归结果:
Python使用sklearn实现的各种回归算法示例

线性回归结果:
Python使用sklearn实现的各种回归算法示例

SVM回归结果:
Python使用sklearn实现的各种回归算法示例

KNN回归结果:
Python使用sklearn实现的各种回归算法示例

随机森林回归结果:
Python使用sklearn实现的各种回归算法示例

Adaboost回归结果:
Python使用sklearn实现的各种回归算法示例

GBRT回归结果:
Python使用sklearn实现的各种回归算法示例

Bagging回归结果:
Python使用sklearn实现的各种回归算法示例

极端随机树回归结果:
Python使用sklearn实现的各种回归算法示例

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
详解python中xlrd包的安装与处理Excel表格
Dec 16 Python
详解python进行mp3格式判断
Dec 23 Python
Django 导出 Excel 代码的实例详解
Aug 11 Python
Python方法的延迟加载的示例代码
Dec 18 Python
Python基于生成器迭代实现的八皇后问题示例
May 23 Python
Python进阶:生成器 懒人版本的迭代器详解
Jun 29 Python
pyinstaller还原python代码过程图解
Jan 08 Python
基于Python计算圆周率pi代码实例
Mar 25 Python
Python多线程threading创建及使用方法解析
Jun 17 Python
python 实现aes256加密
Nov 27 Python
python实现双人五子棋(终端版)
Dec 30 Python
Python中快速掌握Data Frame的常用操作
Mar 31 Python
python SQLAlchemy的Mapping与Declarative详解
Jul 04 #Python
pandas分区间,算频率的实例
Jul 04 #Python
Django中信号signals的简单使用方法
Jul 04 #Python
python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结
Jul 04 #Python
pybind11和numpy进行交互的方法
Jul 04 #Python
pandas计算最大连续间隔的方法
Jul 04 #Python
python SQLAlchemy 中的Engine详解
Jul 04 #Python
You might like
PHP中使用OpenSSL生成证书及加密解密
2017/02/05 PHP
thinkphp5修改view到根目录实例方法
2019/07/02 PHP
js中parseFloat(参数1,参数2)定义和用法及注意事项
2013/01/27 Javascript
Jquery实现三层遍历删除功能代码
2013/04/23 Javascript
javascript中拼接HTML字符串的最快、最好的方法
2014/06/07 Javascript
浅析jQuery中调用ajax方法时在不同浏览器中遇到的问题
2014/06/11 Javascript
jquery插件NProgress.js制作网页加载进度条
2015/06/05 Javascript
关于axios返回空对象的问题解决
2017/04/04 Javascript
jquery网页加载进度条的实现
2017/06/01 jQuery
jquery操作ul的一些操作笔记整理(干货)
2017/08/31 jQuery
TypeScript开发Node.js程序的方法
2019/04/30 Javascript
JavaScrip数组去重操作实例小结
2019/06/20 Javascript
Node对CommonJS的模块规范
2019/11/06 Javascript
js事件机制----捕获与冒泡机制实例分析
2020/05/22 Javascript
[01:05:00]2018国际邀请赛 表演赛 Pain vs OpenAI
2018/08/24 DOTA
python 3.0 模拟用户登录功能并实现三次错误锁定
2017/11/01 Python
Python实现简易版的Web服务器(推荐)
2018/01/29 Python
python实现定时提取实时日志程序
2018/06/22 Python
python 将print输出的内容保存到txt文件中
2018/07/17 Python
python动态进度条的实现代码
2019/07/03 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
2019/12/02 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
2020/04/26 Python
Python爬虫如何破解JS加密的Cookie
2020/11/19 Python
Python实例教程之检索输出月份日历表
2020/12/16 Python
HTML5 Web存储方式的localStorage和sessionStorage进行数据本地存储案例应用
2012/12/09 HTML / CSS
京东国际站:JOYBUY
2017/11/23 全球购物
教师产假请假条
2014/04/10 职场文书
教师批评与自我批评剖析材料
2014/10/16 职场文书
教师群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
阿甘正传观后感
2015/06/01 职场文书
怎样写家长意见
2015/06/04 职场文书
广播体操比赛主持词
2015/06/29 职场文书
2016年教师师德师风心得体会
2016/01/12 职场文书
导游词之襄阳古城
2019/09/27 职场文书
python 提取html文本的方法
2021/05/20 Python
Vue实现动态查询规则生成组件
2021/05/27 Vue.js