python机器学习库scikit-learn:SVR的基本应用


Posted in Python onJune 26, 2019

scikit-learn是python的第三方机器学习库,里面集成了大量机器学习的常用方法。例如:贝叶斯,svm,knn等。

scikit-learn的官网 : http://scikit-learn.org/stable/index.html点击打开链接

SVR是支持向量回归(support vector regression)的英文缩写,是支持向量机(SVM)的重要的应用分支。

scikit-learn中提供了基于libsvm的SVR解决方案。

PS:libsvm是台湾大学林智仁教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包。

我们自己随机产生一些值,然后使用sin函数进行映射,使用SVR对数据进行拟合

from __future__ import division
import time
import numpy as np
from sklearn.svm import SVR
from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import learning_curve
import matplotlib.pyplot as plt
 
rng = np.random.RandomState(0)
 
#############################################################################
# 生成随机数据
X = 5 * rng.rand(10000, 1)
y = np.sin(X).ravel()
 
# 在标签中对每50个结果标签添加噪声
 
y[::50] += 2 * (0.5 - rng.rand(int(X.shape[0]/50)))
 
X_plot = np.linspace(0, 5, 100000)[:, None]
 
#############################################################################
# 训练SVR模型
 
#训练规模
train_size = 100
#初始化SVR
svr = GridSearchCV(SVR(kernel='rbf', gamma=0.1), cv=5,
     param_grid={"C": [1e0, 1e1, 1e2, 1e3],
        "gamma": np.logspace(-2, 2, 5)})
#记录训练时间
t0 = time.time()
#训练
svr.fit(X[:train_size], y[:train_size])
svr_fit = time.time() - t0
 
t0 = time.time()
#测试
y_svr = svr.predict(X_plot)
svr_predict = time.time() - t0

然后我们对结果进行可视化处理

#############################################################################
# 对结果进行显示
plt.scatter(X[:100], y[:100], c='k', label='data', zorder=1)
plt.hold('on')
plt.plot(X_plot, y_svr, c='r',
   label='SVR (fit: %.3fs, predict: %.3fs)' % (svr_fit, svr_predict))
 
plt.xlabel('data')
plt.ylabel('target')
plt.title('SVR versus Kernel Ridge')
plt.legend()
 
plt.figure()

python机器学习库scikit-learn:SVR的基本应用

##############################################################################
# 对训练和测试的过程耗时进行可视化
X = 5 * rng.rand(1000000, 1)
y = np.sin(X).ravel()
y[::50] += 2 * (0.5 - rng.rand(int(X.shape[0]/50)))
sizes = np.logspace(1, 4, 7)
for name, estimator in {
      "SVR": SVR(kernel='rbf', C=1e1, gamma=10)}.items():
 train_time = []
 test_time = []
 for train_test_size in sizes:
  t0 = time.time()
  estimator.fit(X[:int(train_test_size)], y[:int(train_test_size)])
  train_time.append(time.time() - t0)
 
  t0 = time.time()
  estimator.predict(X_plot[:1000])
  test_time.append(time.time() - t0)
 
 plt.plot(sizes, train_time, 'o-', color="b" if name == "SVR" else "g",
    label="%s (train)" % name)
 plt.plot(sizes, test_time, 'o--', color="r" if name == "SVR" else "g",
    label="%s (test)" % name)
 
plt.xscale("log")
plt.yscale("log")
plt.xlabel("Train size")
plt.ylabel("Time (seconds)")
plt.title('Execution Time')
plt.legend(loc="best")

python机器学习库scikit-learn:SVR的基本应用

################################################################################
# 对学习过程进行可视化
plt.figure()
 
svr = SVR(kernel='rbf', C=1e1, gamma=0.1)
train_sizes, train_scores_svr, test_scores_svr = \
 learning_curve(svr, X[:100], y[:100], train_sizes=np.linspace(0.1, 1, 10),
     scoring="neg_mean_squared_error", cv=10)
 
plt.plot(train_sizes, -test_scores_svr.mean(1), 'o-', color="r",
   label="SVR")
 
plt.xlabel("Train size")
plt.ylabel("Mean Squared Error")
plt.title('Learning curves')
plt.legend(loc="best")
 
plt.show()

python机器学习库scikit-learn:SVR的基本应用

看见了熟悉的LOSS下降图,我仿佛又回到了学生时代。。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python logging日志模块的详解
Oct 29 Python
一个Python最简单的接口自动化框架
Jan 02 Python
django进阶之cookie和session的使用示例
Aug 17 Python
在python环境下运用kafka对数据进行实时传输的方法
Dec 27 Python
Python设计模式之外观模式实例详解
Jan 17 Python
python实现简单图书管理系统
Nov 22 Python
简单介绍django提供的加密算法
Dec 18 Python
GDAL 矢量属性数据修改方式(python)
Mar 10 Python
python和js交互调用的方法
Jun 23 Python
tensorflow 动态获取 BatchSzie 的大小实例
Jun 30 Python
python mongo 向数据中的数组类型新增数据操作
Dec 05 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
Dec 14 Python
Python Numpy 实现交换两行和两列的方法
Jun 26 #Python
python 字典操作提取key,value的方法
Jun 26 #Python
通过PYTHON来实现图像分割详解
Jun 26 #Python
Flask模板引擎之Jinja2语法介绍
Jun 26 #Python
如何使用Python实现自动化水军评论
Jun 26 #Python
详解用pyecharts Geo实现动态数据热力图城市找不到问题解决
Jun 26 #Python
Python 数据可视化pyecharts的使用详解
Jun 26 #Python
You might like
用PHP的ob_start() 控制您的浏览器cache
2009/08/03 PHP
php求正负数数组中连续元素最大值示例
2014/04/11 PHP
PHP实现下载断点续传的方法
2014/11/12 PHP
php中获取主机名、协议及IP地址的方法
2014/11/18 PHP
基于PHP实现栈数据结构和括号匹配算法示例
2017/08/10 PHP
CI框架(CodeIgniter)实现的数据库增删改查操作总结
2018/05/23 PHP
js DOM模型操作
2009/12/28 Javascript
javascript 正则替换 replace(regExp, function)用法
2010/05/22 Javascript
javascript权威指南 学习笔记之变量作用域分享
2011/09/28 Javascript
简单实用的全选反选按钮例子
2013/10/18 Javascript
JavaScript基础语法、dom操作树及document对象
2014/12/02 Javascript
JavaScript检测实例属性, 原型属性
2015/02/04 Javascript
javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)
2015/07/27 Javascript
Javascript基础回顾之(三) js面向对象
2017/01/31 Javascript
javascript高仿热血传奇游戏实现代码
2018/02/22 Javascript
微信小程序实现的动态设置导航栏标题功能示例
2019/01/31 Javascript
js实现课堂随机点名系统
2019/11/21 Javascript
Vue表单控件数据绑定方法详解
2020/02/05 Javascript
[48:53]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第一场
2014/05/26 DOTA
[05:15]2018年度CS GO社区贡献奖-完美盛典
2018/12/16 DOTA
[02:17]快乐加倍!DOTA2食人魔魔法师至宝+迎霜节活动上线
2019/12/22 DOTA
HTML5 Canvas像素处理使用接口介绍
2012/12/02 HTML / CSS
IWOOT美国:新奇的小玩意
2018/04/27 全球购物
英国家庭和商业健身器材购物网站:Fitness Options
2018/07/05 全球购物
美国中西部家用医疗设备商店:Med Mart(轮椅、踏板车、升降机等)
2019/04/26 全球购物
ASOS西班牙官网:英国在线时尚和美容零售商
2020/01/10 全球购物
陈欧的广告词
2014/03/18 职场文书
酒店管理求职信
2014/06/09 职场文书
基层党建工作宣传标语
2014/06/24 职场文书
2015年中学图书馆工作总结
2015/07/22 职场文书
2015年挂职锻炼个人总结
2015/10/22 职场文书
学生会部长竞选稿
2015/11/19 职场文书
python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
2021/04/12 Python
.Net Core导入千万级数据至Mysql的步骤
2021/05/24 MySQL
详解Flutter和Dart取消Future的三种方法
2022/04/07 Java/Android
使用pd.merge表连接出现多余行的问题解决
2022/06/16 Python