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中的二叉树查找算法模块使用指南
Jul 04 Python
python 如何快速找出两个电子表中数据的差异
May 26 Python
Python简单实现控制电脑的方法
Jan 22 Python
78行Python代码实现现微信撤回消息功能
Jul 26 Python
python爬虫URL重试机制的实现方法(python2.7以及python3.5)
Dec 18 Python
Python设计模式之职责链模式原理与用法实例分析
Jan 11 Python
详解PANDAS 数据合并与重塑(join/merge篇)
Jul 09 Python
python使用tomorrow实现多线程的例子
Jul 20 Python
Python学习笔记之While循环用法分析
Aug 14 Python
python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例
Feb 27 Python
python3 正则表达式基础廖雪峰
Mar 25 Python
python利用文件时间批量重命名照片和视频
Feb 09 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
在Windows版的PHP中使用ADO
2006/10/09 PHP
PHP 操作文件的一些FAQ总结
2009/02/12 PHP
MongoDB在PHP中的常用操作小结
2014/02/20 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
表单验证的完整应用案例探讨
2013/03/29 Javascript
利用javascript判断文件是否存在
2013/12/31 Javascript
再探JavaScript作用域
2014/09/24 Javascript
详解JavaScript的AngularJS框架中的表达式与指令
2016/03/05 Javascript
Javascript字符串常用方法详解
2016/07/21 Javascript
js实现带缓动动画的导航栏效果
2017/01/16 Javascript
微信小程序 template模板详解及实例
2017/02/21 Javascript
jQuery的$.extend 浅拷贝与深拷贝
2017/03/08 Javascript
完美解决iview 的select下拉框选项错位的问题
2018/03/02 Javascript
vue中的适配px2rem示例代码
2018/11/19 Javascript
详解JavaScript原生封装ajax请求和Jquery中的ajax请求
2019/02/14 jQuery
百度小程序之间的页面通信过程详解
2019/07/18 Javascript
[06:09]辉夜杯主赛事开幕式
2015/12/25 DOTA
在Python中使用HTMLParser解析HTML的教程
2015/04/29 Python
Python常用内置模块之xml模块(详解)
2017/05/23 Python
Python内置函数reversed()用法分析
2018/03/20 Python
python yield关键词案例测试
2019/10/15 Python
Python命名空间namespace及作用域原理解析
2020/06/05 Python
Python使用20行代码实现微信聊天机器人
2020/06/05 Python
Python实现自动签到脚本功能
2020/08/20 Python
python selenium xpath定位操作
2020/09/01 Python
浅析python 通⽤爬⾍和聚焦爬⾍
2020/09/28 Python
python UIAutomator2使用超详细教程
2021/02/19 Python
介绍一下常见的木马种类
2014/11/15 面试题
服务中心夜班服务员岗位职责
2013/11/27 职场文书
幼儿园中班教师寄语
2014/04/03 职场文书
小学科学教学计划
2015/01/21 职场文书
学习保证书100字
2015/02/26 职场文书
2015年教师节演讲稿范文
2015/03/19 职场文书
员工手册编写范本
2015/05/14 职场文书
计算机教师工作总结
2015/08/13 职场文书