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的else子句使用指南
Feb 27 Python
python实现字典(dict)和字符串(string)的相互转换方法
Mar 01 Python
Python使用combinations实现排列组合的方法
Nov 13 Python
python 读写excel文件操作示例【附源码下载】
Jun 19 Python
浅谈PyQt5 的帮助文档查找方法,可以查看每个类的方法
Jun 25 Python
python文件选择对话框的操作方法
Jun 27 Python
如何使用Python 打印各种三角形
Jun 28 Python
基于Django静态资源部署404的解决方法
Jul 28 Python
python3获取控制台输入的数据的具体实例
Aug 16 Python
Python离线安装各种库及pip的方法
Nov 28 Python
详解pandas赋值失败问题解决
Nov 29 Python
Alpine安装Python3依赖出现的问题及解决方法
Dec 25 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
Laravel框架使用Seeder实现自动填充数据功能
2018/06/13 PHP
Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作示例
2019/10/12 PHP
Thinkphp框架+Layui实现图片/文件上传功能分析
2020/02/07 PHP
jQuery与ExtJS之选择实例分析
2010/08/19 Javascript
validator验证控件使用代码
2010/11/23 Javascript
jQuery插件bxSlider实现响应式焦点图
2015/04/12 Javascript
jquery实现的美女拼图游戏实例
2015/05/04 Javascript
WordPress中利用AJAX异步获取评论用户头像的方法
2016/01/08 Javascript
去除字符串左右两边的空格(实现代码)
2016/05/12 Javascript
通过js控制时间,一秒一秒自己动的实例
2017/10/25 Javascript
ES6中Class类的静态方法实例小结
2017/10/28 Javascript
js点击时关闭该范围下拉菜单之外的菜单方法
2018/01/11 Javascript
vue移动端下拉刷新和上拉加载的实现代码
2018/09/08 Javascript
Vue核心概念Getter的使用方法
2019/01/18 Javascript
vue中keep-alive,include的缓存问题
2019/11/26 Javascript
JS实现排行榜文字向上滚动轮播效果
2019/11/26 Javascript
python实现模拟按键,自动翻页看u17漫画
2015/03/17 Python
python异常和文件处理机制详解
2016/07/19 Python
深入理解NumPy简明教程---数组1
2016/12/17 Python
Pycharm学习教程(5) Python快捷键相关设置
2017/05/03 Python
python中hashlib模块用法示例
2017/10/30 Python
python实现图片处理和特征提取详解
2017/11/13 Python
CentOS7.3编译安装Python3.6.2的方法
2018/01/22 Python
python素数筛选法浅析
2018/03/19 Python
详解CSS3中border-image的使用
2015/07/18 HTML / CSS
越南电子产品购物网站:FPT Shop
2017/12/02 全球购物
Europcar西班牙:全球汽车租赁领域的领导者
2018/09/17 全球购物
2014元旦晚会策划方案
2014/02/19 职场文书
差生评语大全
2014/05/04 职场文书
食品安全宣传标语
2014/06/07 职场文书
爱护公物标语
2014/06/24 职场文书
公司领导九九重阳节发言稿2014
2014/09/25 职场文书
内乡县衙导游词
2015/02/05 职场文书
办公室岗位职责范本
2015/04/11 职场文书
雷锋之歌观后感
2015/06/10 职场文书
个人工作决心书
2015/09/22 职场文书