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 相关文章推荐
本地文件上传到七牛云服务器示例(七牛云存储)
Jan 11 Python
Python中unittest模块做UT(单元测试)使用实例
Jun 12 Python
Python+matplotlib+numpy绘制精美的条形统计图
Jan 02 Python
Python SMTP发送邮件遇到的一些问题及解决办法
Oct 24 Python
python3爬虫怎样构建请求header
Dec 23 Python
Python3爬虫之urllib携带cookie爬取网页的方法
Dec 28 Python
pyQT5 实现窗体之间传值的示例
Jun 20 Python
树莓派采用socket方式文件传输(python)
Jun 22 Python
Python递归函数 二分查找算法实现解析
Aug 12 Python
Python Web框架之Django框架文件上传功能详解
Aug 16 Python
python利用opencv实现SIFT特征提取与匹配
Mar 05 Python
Python如何生成xml文件
Jun 04 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
《魔兽争霸3》重制版究竟重制了什么?玩家:这么糊弄真的好吗?
2020/05/04 魔兽争霸
与数据库连接
2006/10/09 PHP
php适配器模式介绍
2012/08/14 PHP
ThinkPHP进程计数类Process用法实例详解
2015/09/25 PHP
浅谈PHP的数据库接口和技术
2016/12/09 PHP
php解压缩zip和rar压缩包文件的方法
2019/07/10 PHP
ajax页面无刷新 IE下遭遇Ajax缓存导致数据不更新的问题
2012/12/11 Javascript
jQuery实现鼠标滑过遮罩并高亮显示效果
2013/07/16 Javascript
Node.js实现批量去除BOM文件头
2014/12/20 Javascript
了不起的node.js读书笔记之node.js中的特性
2014/12/22 Javascript
基于chosen插件实现人员选择树搜索自动筛选功能
2016/09/24 Javascript
JS调用Android、Ios原生控件
2017/01/06 Javascript
canvas实现图像布局填充功能
2017/02/06 Javascript
javascript事件的传播基础实例讲解(35)
2017/02/14 Javascript
AngularJS自定义指令之复制指令实现方法
2017/05/18 Javascript
vue使用drag与drop实现拖拽的示例代码
2017/09/07 Javascript
axios post提交formdata的实例
2018/03/16 Javascript
Vue组件内部实现一个双向数据绑定的实例代码
2019/04/04 Javascript
微信小程序实现获取用户信息并存入数据库操作示例
2019/05/07 Javascript
vue.js实现简单的计算器功能
2020/02/22 Javascript
JS脚本实现定时到网站上签到/签退功能
2020/04/22 Javascript
Vue 简单实现前端权限控制的示例
2020/12/25 Vue.js
八大排序算法的Python实现
2021/01/28 Python
Python中字典的setdefault()方法教程
2017/02/07 Python
python中协程实现TCP连接的实例分析
2018/10/14 Python
Python实现程序判断季节的代码示例
2019/01/28 Python
django多种支付、并发订单处理实例代码
2019/12/13 Python
Python导入模块包原理及相关注意事项
2020/03/25 Python
Django自定义列表 models字段显示方式
2020/04/03 Python
python能做哪方面的工作
2020/06/15 Python
浅谈cookie和localStorage那些事
2019/08/27 HTML / CSS
《槐乡五月》教学反思
2014/04/25 职场文书
实习单位指导教师评语
2014/12/30 职场文书
2015年宣传部工作总结范文
2015/03/31 职场文书
2015领导干部廉洁自律工作总结
2015/07/23 职场文书
mapstruct的用法之qualifiedByName示例详解
2022/04/06 Java/Android