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使用pil生成缩略图的方法
Mar 26 Python
python简单获取本机计算机名和IP地址的方法
Jun 03 Python
python黑魔法之参数传递
Feb 12 Python
django实现登录时候输入密码错误5次锁定用户十分钟
Nov 05 Python
python3+PyQt5使用数据库表视图
Apr 24 Python
Python 使用PIL numpy 实现拼接图片的示例
May 08 Python
pandas 实现字典转换成DataFrame的方法
Jul 04 Python
在PyCharm中批量查找及替换的方法
Jan 20 Python
python pandas写入excel文件的方法示例
Jun 25 Python
Python json读写方式和字典相互转化
Apr 18 Python
解决启动django,浏览器显示“服务器拒绝访问”的问题
May 13 Python
Matplotlib 折线图plot()所有用法详解
Jul 28 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
实现WordPress主题侧边栏切换功能的PHP脚本详解
2015/12/14 PHP
7个Javascript地图脚本整理
2009/10/20 Javascript
jQuery使用技巧简单汇总
2013/04/18 Javascript
JS中Location使用详解
2015/05/12 Javascript
JavaScript实现横向滑出的多级菜单效果
2015/10/09 Javascript
jQuery+json实现的简易Ajax调用实例
2015/12/14 Javascript
JavaScript排序算法动画演示效果的实现方法
2016/10/18 Javascript
javascript阻止事件冒泡和浏览器的默认行为
2017/01/21 Javascript
浅谈Node模块系统及其模式
2017/11/17 Javascript
javascript数组拍平方法总结
2018/01/20 Javascript
基于axios 解决跨域cookie丢失的问题
2018/09/26 Javascript
Webpack4+Babel7+ES6兼容IE8的实现
2019/04/10 Javascript
Vue 3.x+axios跨域方案的踩坑指南
2019/07/04 Javascript
vue中使用rem布局代码详解
2019/10/30 Javascript
详解nginx配置vue h5 history去除#号
2020/11/09 Javascript
js实现有趣的倒计时效果
2021/01/19 Javascript
python的re模块应用实例
2014/09/26 Python
安装ElasticSearch搜索工具并配置Python驱动的方法
2015/12/22 Python
Python中第三方库Requests库的高级用法详解
2017/03/12 Python
python把1变成01的步骤总结
2019/02/27 Python
详解python中的线程与线程池
2019/05/10 Python
Python全局锁中如何合理运用多线程(多进程)
2019/11/06 Python
python爬虫容易学吗
2020/06/02 Python
详解如何在PyCharm控制台中输出彩色文字和背景
2020/08/17 Python
Python3.7安装PyQt5 运行配置Pycharm的详细教程
2020/10/15 Python
使用Python解析Chrome浏览器书签的示例
2020/11/13 Python
CSS3 网页下拉菜单代码解释 中文翻译
2010/02/27 HTML / CSS
Hotels.com爱尔兰:全球酒店预订
2017/02/24 全球购物
宝拉珍选英国官网:Paula’s Choice英国
2019/05/29 全球购物
Mountain Warehouse波兰官方网站:英国户外品牌
2019/08/29 全球购物
俄罗斯香水在线商店:AromaCode
2019/12/04 全球购物
自我评价个人范文
2013/12/16 职场文书
同事打架检讨书
2014/02/04 职场文书
小学美术教学反思
2016/02/17 职场文书
bat批处理之字符串操作的实现
2022/03/16 Python
IDEA中sout快捷键无效问题的解决方法
2022/07/23 Java/Android