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练习程序批量修改文件名
Jan 16 Python
Python文件操作,open读写文件,追加文本内容实例
Dec 14 Python
Python线性拟合实现函数与用法示例
Dec 13 Python
Python使用pyshp库读取shapefile信息的方法
Dec 29 Python
Python3安装Pillow与PIL的方法
Apr 03 Python
python调用自定义函数的实例操作
Jun 26 Python
Python使用Pandas对csv文件进行数据处理的方法
Aug 01 Python
twilio python自动拨打电话,播放自定义mp3音频的方法
Aug 08 Python
Python imageio读取视频并进行编解码详解
Dec 10 Python
根据tensor的名字获取变量的值方式
Jan 04 Python
Python+appium框架原生代码实现App自动化测试详解
Mar 06 Python
解决PyCharm无法使用lxml库的问题(图解)
Dec 22 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 mail to 配置详解
2014/01/16 PHP
无需数据库在线投票调查php代码
2016/07/20 PHP
jQuery查询数据返回object和字符串影响原因是什么
2013/08/09 Javascript
jquery live()重复绑定的解决方法介绍
2014/01/03 Javascript
form.submit()不能提交表单的错误原因及解决方法
2014/10/13 Javascript
jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法
2015/03/25 Javascript
js网页滚动条滚动事件实例分析
2015/05/05 Javascript
jQuery实用技巧必备(中)
2015/11/03 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
2016/10/14 Javascript
jQuery延迟执行的实现方法
2016/12/21 Javascript
BootStrap实现轮播图效果(收藏)
2016/12/30 Javascript
AngularJS报错$apply already in progress的解决方法分析
2017/01/30 Javascript
JS实现的tab切换选项卡效果示例
2017/02/28 Javascript
微信小程序倒计时功能实现代码
2017/11/09 Javascript
javascript 内存模型实例详解
2020/04/18 Javascript
[02:44]DOTA2英雄基础教程 魅惑魔女
2014/01/07 DOTA
[30:55]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第二场 11.18
2020/11/18 DOTA
Python中matplotlib中文乱码解决办法
2017/05/12 Python
python爬虫爬取淘宝商品信息
2018/02/23 Python
Django项目中model的数据处理以及页面交互方法
2018/05/30 Python
Django Rest framework三种分页方式详解
2019/07/26 Python
对python中return与yield的区别详解
2020/03/12 Python
python网络编程:socketserver的基本使用方法实例分析
2020/04/09 Python
英国的一家创新礼品和小工具零售商:Menkind
2019/08/24 全球购物
信息管理员岗位职责
2013/12/01 职场文书
大学四年规划书范文
2013/12/27 职场文书
英语道歉信范文
2014/01/09 职场文书
九年级体育教学反思
2014/01/23 职场文书
党课知识竞赛主持词
2014/04/01 职场文书
化工专业自荐书
2014/06/16 职场文书
离婚协议书怎么写
2014/09/12 职场文书
重阳节标语大全
2014/10/07 职场文书
2014年党建工作总结
2014/11/11 职场文书
小区保洁员岗位职责
2015/04/10 职场文书
党支部季度考核意见
2015/06/02 职场文书
windows server2008 开启端口的实现方法
2022/06/25 Servers