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 Tkinter GUI编程入门介绍
Mar 10 Python
Python随机生成带特殊字符的密码
Mar 02 Python
详解Python中使用base64模块来处理base64编码的方法
Jul 01 Python
python去掉空白行的多种实现代码
Mar 19 Python
Pandas 对Dataframe结构排序的实现方法
Apr 10 Python
在Python中使用MongoEngine操作数据库教程实例
Dec 03 Python
python通过移动端访问查看电脑界面
Jan 06 Python
Pytorch .pth权重文件的使用解析
Feb 14 Python
Python如何使用turtle库绘制图形
Feb 26 Python
python的json包位置及用法总结
Jun 21 Python
用python画城市轮播地图
May 28 Python
python 中的jieba分词库
Nov 23 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安装为Apache DSO
2006/10/09 PHP
实例讲解PHP面向对象之多态
2014/08/20 PHP
php通过执行CutyCapt命令实现网页截图的方法
2016/09/30 PHP
php 数组处理函数extract详解及实例代码
2016/11/23 PHP
在laravel中使用Symfony的Crawler组件分析HTML
2017/06/19 PHP
利用PHP判断是手机移动端还是PC端访问的函数示例
2017/12/14 PHP
jquery.tmpl JQuery模板插件
2011/10/10 Javascript
js模拟点击事件实现代码
2012/11/06 Javascript
js数组转json并在后台对其解析具体实现
2013/11/20 Javascript
JS获取客户端IP地址、MAC和主机名的7个方法汇总
2014/07/21 Javascript
jquery实现浮动的侧栏实例
2015/06/25 Javascript
jquery实现简单的轮换出现效果实例
2015/07/23 Javascript
基于Bootstrap里面的Button dropdown打造自定义select
2016/05/30 Javascript
基于JS递归函数细化认识及实用实例(推荐)
2017/08/07 Javascript
JS实现的计数排序与基数排序算法示例
2017/12/04 Javascript
webpack优化的深入理解
2018/12/10 Javascript
微信小程序在ios下Echarts图表不能滑动的问题解决
2019/07/10 Javascript
Vue使用mixin分发组件的可复用功能
2019/09/01 Javascript
Python中的__new__与__init__魔术方法理解笔记
2014/11/08 Python
Python函数式编程指南(一):函数式编程概述
2015/06/24 Python
python3使用scrapy生成csv文件代码示例
2017/12/28 Python
基于python的多进程共享变量正确打开方式
2018/04/28 Python
只需7行Python代码玩转微信自动聊天
2019/01/27 Python
查看keras的默认backend实现方式
2020/06/19 Python
StubHub智利:购买和出售您的门票
2016/11/23 全球购物
中秋节礼品促销方案
2014/02/02 职场文书
招商专员岗位职责
2014/02/08 职场文书
党的群众路线教育实践活动心得体会900字
2014/03/07 职场文书
网络管理员岗位职责
2014/03/17 职场文书
高中教师评语大全
2014/04/25 职场文书
村庄绿化方案
2014/05/07 职场文书
绿色环保家庭事迹材料
2014/08/31 职场文书
蓬莱阁导游词
2015/02/04 职场文书
如何制定销售人员薪酬制度?
2019/07/09 职场文书
pycharm 如何查看某一函数源码的快捷键
2021/05/12 Python
详解CSS不定宽溢出文本适配滚动
2021/05/24 HTML / CSS