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爬虫之爬虫的定义及URL构成
Nov 04 Python
深入浅析ImageMagick命令执行漏洞
Oct 11 Python
Python操作MongoDB详解及实例
May 18 Python
利用Python爬取微博数据生成词云图片实例代码
Aug 31 Python
Bottle框架中的装饰器类和描述符应用详解
Oct 28 Python
将pip源更换到国内镜像的详细步骤
Apr 07 Python
解决pyqt5中QToolButton无法使用的问题
Jun 21 Python
python版百度语音识别功能
Jul 09 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
Sep 06 Python
python的scipy实现插值的示例代码
Nov 12 Python
python 实现单通道转3通道
Dec 03 Python
Pytorch使用shuffle打乱数据的操作
May 20 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判断文章里是否有图片的简单方法
2014/07/26 PHP
thinkphp缓存技术详解
2014/12/09 PHP
PHP精确计算功能示例
2016/11/29 PHP
PHP实现微信商户支付企业付款到零钱功能
2018/09/30 PHP
确保Laravel网站不会被嵌入到其他站点中的方法
2019/10/18 PHP
重定向实现代码
2006/11/20 Javascript
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
小型js框架veryide.librar源代码
2009/03/05 Javascript
关于js类的定义
2011/06/28 Javascript
JQuery扩展插件Validate 5添加自定义验证方法
2011/09/05 Javascript
js函数在frame中的相互调用详解
2014/03/03 Javascript
jQuery遮罩层效果实例分析
2016/01/14 Javascript
初步使用bootstrap快速创建页面
2016/03/03 Javascript
jQuery与js实现颜色渐变的方法
2016/12/30 Javascript
JS批量替换内容中关键词为超链接
2017/02/20 Javascript
jQuery简易时光轴实现方法示例
2017/03/13 Javascript
vue.js实现条件渲染的实例代码
2017/06/22 Javascript
了解JavaScript表单操作和表单域
2019/05/27 Javascript
[00:12]DAC SOLO赛卫冕冠军 VG.Paparazi灬展现SOLO技巧
2018/04/06 DOTA
利用Python实现简单的相似图片搜索的教程
2015/04/23 Python
Python抓取框架Scrapy爬虫入门:页面提取
2017/12/01 Python
matplotlib在python上绘制3D散点图实例详解
2017/12/09 Python
Python 利用scrapy爬虫通过短短50行代码下载整站短视频
2018/10/29 Python
基于wxPython的GUI实现输入对话框(1)
2019/02/27 Python
python3实现单目标粒子群算法
2019/11/14 Python
python属于解释型语言么
2020/06/15 Python
python中rc1什么意思
2020/06/19 Python
matplotlib基础绘图命令之bar的使用方法
2020/08/13 Python
应届生高等护理求职信
2013/10/12 职场文书
小学优秀辅导员事迹材料
2014/05/11 职场文书
建筑学专业自荐书
2014/07/09 职场文书
大型公益活动策划方案
2014/08/20 职场文书
2014年优质护理服务工作总结
2014/11/14 职场文书
反邪教教育心得体会
2016/01/15 职场文书
openstack中的rpc远程调用的方法
2021/07/09 Python
SpringCloud项目如何解决log4j2漏洞
2022/04/10 Java/Android