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 相关文章推荐
linux下安装easy_install的方法
Feb 10 Python
下载安装setuptool和pip linux安装pip    
Jan 24 Python
python提示No module named images的解决方法
Sep 29 Python
通过代码实例展示Python中列表生成式的用法
Mar 31 Python
python中的闭包用法实例详解
May 05 Python
python脚本设置系统时间的两种方法
Feb 21 Python
python中json格式数据输出的简单实现方法
Oct 31 Python
详解django的serializer序列化model几种方法
Oct 16 Python
Python3简单爬虫抓取网页图片代码实例
Aug 26 Python
python 连续不等式语法糖实例
Apr 15 Python
Python代码风格与编程习惯重要吗?
Jun 03 Python
教你用Python爬取英雄联盟皮肤原画
Jun 13 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中autoload的用法总结
2013/11/08 PHP
php获取文件大小的方法
2014/02/26 PHP
10个超级有用值得收藏的PHP代码片段
2015/01/22 PHP
PHP多文件上传实例
2015/07/09 PHP
PHP用户验证和标签推荐的简单使用
2016/10/31 PHP
Prototype 1.5.0_rc1 及 Prototype 1.5.0 Pre0小抄本
2006/09/22 Javascript
用函数式编程技术编写优美的 JavaScript
2006/11/25 Javascript
SWFObject Flash js调用类
2008/07/08 Javascript
VBS通过WMI监视注册表变动的代码
2011/10/27 Javascript
公共js在页面底部加载的注意事项介绍
2013/07/18 Javascript
JS Date函数整理方便使用
2013/10/23 Javascript
js判断url是否有效的两种方法
2014/03/04 Javascript
使用jquery 简单实现下拉菜单
2015/01/14 Javascript
jquery插件NProgress.js制作网页加载进度条
2015/06/05 Javascript
JS组件Bootstrap实现图片轮播效果
2016/05/16 Javascript
使用bootstrap实现多窗口和拖动效果
2016/09/22 Javascript
Javascript中判断一个值是否为undefined的方法详解
2016/09/28 Javascript
seajs模块之间依赖的加载以及模块的执行
2016/10/21 Javascript
详解node-ccap模块生成captcha验证码
2017/07/01 Javascript
Angular2+国际化方案(ngx-translate)的示例代码
2017/08/23 Javascript
微信小程序实现的picker多级联动功能示例
2019/05/23 Javascript
ES6顶层对象、global对象实例分析
2019/06/14 Javascript
微信小程序 动态修改页面数据及参数传递过程详解
2019/09/27 Javascript
Python网络编程使用select实现socket全双工异步通信功能示例
2018/04/09 Python
python实现诗歌游戏(类继承)
2019/02/26 Python
python3.7 使用pymssql往sqlserver插入数据的方法
2019/07/08 Python
Python ConfigParser模块的使用示例
2020/10/12 Python
Python脚本打包成可执行文件过程解析
2020/10/20 Python
webView加载html图片遇到的问题解决
2019/10/08 HTML / CSS
如何使用amaze ui的分页样式封装一个通用的JS分页控件
2020/08/21 HTML / CSS
中国医药集团国药在线:国药网
2017/02/06 全球购物
会计工作心得体会
2014/01/13 职场文书
党员教师四风问题整改措施思想汇报
2014/10/08 职场文书
考察邀请函范文
2015/01/31 职场文书
Python基础之教你怎么在M1系统上使用pandas
2021/05/08 Python
CentOS7 minimal 最小化安装网络设置过程
2022/12/24 Servers