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 相关文章推荐
在Django的上下文中设置变量的方法
Jul 20 Python
win10下Python3.6安装、配置以及pip安装包教程
Oct 01 Python
python 日志增量抓取实现方法
Apr 28 Python
基于pip install django失败时的解决方法
Jun 12 Python
python实现创建新列表和新字典,并使元素及键值对全部变成小写
Jan 15 Python
python3 selenium自动化 下拉框定位的例子
Aug 23 Python
python 协程 gevent原理与用法分析
Nov 22 Python
tensorflow实现训练变量checkpoint的保存与读取
Feb 10 Python
Pycharm在指定目录下生成文件和删除文件的实现
Dec 28 Python
python保存图片的四个常用方法
Feb 28 Python
Python中request的基本使用解决乱码问题
Apr 12 Python
Python循环之while无限迭代
Apr 30 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
星际实力自我测试
2020/03/04 星际争霸
PHP的PSR规范中文版
2013/09/28 PHP
ThinkPHP中U方法的使用浅析
2014/06/13 PHP
PHP生成数组再传给js的方法
2014/08/07 PHP
php实现的常见排序算法汇总
2014/09/08 PHP
php验证session无效的解决方法
2014/11/04 PHP
PHP常用处理静态操作类
2015/04/03 PHP
PHP+Ajax+JS实现多图上传
2016/05/07 PHP
thinkPHP交易详情查询功能详解
2016/12/02 PHP
JavaScript弹簧振子超简洁版 完全符合能量守恒,胡克定理
2009/10/25 Javascript
读jQuery之一(对象的组成)
2011/06/11 Javascript
js 验证密码强弱的小例子
2013/03/21 Javascript
JQuery插件fancybox无法在弹出层使用左右键的解决办法
2013/12/25 Javascript
jQuery 无限级菜单的简单实例
2014/02/21 Javascript
改变隐藏的input中value值的方法
2014/03/19 Javascript
使用angularjs创建简单表格
2016/01/21 Javascript
使用bootstrap validator的remote验证代码经验分享(推荐)
2016/09/21 Javascript
搭建Bootstrap离线文档的方法
2016/12/02 Javascript
bootstrap输入框组件使用方法详解
2017/01/19 Javascript
jQuery extend()详解及简单实例
2017/05/06 jQuery
bootstrap里bootstrap动态加载下拉框的实例讲解
2018/08/10 Javascript
简单了解vue中父子组件如何相互传递值(基础向)
2019/07/12 Javascript
解决Vue 刷新页面导航显示高亮位置不对问题
2019/12/25 Javascript
[02:28]DOTA2 2017国际邀请赛小组赛回顾
2017/08/09 DOTA
在Python中的Django框架中进行字符串翻译
2015/07/27 Python
Python基于递归算法实现的走迷宫问题
2017/08/04 Python
python基础之包的导入和__init__.py的介绍
2018/01/08 Python
使用python绘制cdf的多种实现方法
2020/02/25 Python
英国领先的野生鸟类食品供应商:GardenBird
2018/08/09 全球购物
中国旅游网站:途牛旅游网
2019/09/29 全球购物
土木工程毕业生推荐信
2013/10/28 职场文书
中学生运动会入场词
2014/02/12 职场文书
幼儿园健康教育方案
2014/06/14 职场文书
企业整改报告范文
2014/11/08 职场文书
2014年财政所工作总结
2014/11/22 职场文书
毕业生爱心捐书倡议书
2015/04/27 职场文书