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中文问题解决方法(总结了多位前人经验,初学者必看)
Mar 13 Python
python异步任务队列示例
Apr 01 Python
python文本数据相似度的度量
Mar 12 Python
python利用requests库进行接口测试的方法详解
Jul 06 Python
Python字典循环添加一键多值的用法实例
Jan 20 Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
May 07 Python
python常用函数与用法示例
Jul 02 Python
Python 给定的经纬度标注在地图上的实现方法
Jul 05 Python
pyinstaller打包单文件时--uac-admin选项不起作用怎么办
Apr 15 Python
使用PyQt5实现图片查看器的示例代码
Apr 21 Python
在pycharm中文件取消用 pytest模式打开的操作
Sep 01 Python
python3实现Dijkstra算法最短路径的实现
May 12 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插入mysql数据返回id的方法
2018/05/31 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
PHP使用Http Post请求发送Json对象数据代码解析
2020/07/16 PHP
模仿百度三维地图的js数据分享
2011/05/12 Javascript
jquery easyui中treegrid用法的简单实例
2014/02/18 Javascript
js获取域名的方法
2015/01/27 Javascript
浅析js中substring和substr的方法
2015/11/09 Javascript
深入剖析JavaScript面向对象编程
2016/07/12 Javascript
js仿腾讯QQ的web登陆界面
2016/08/19 Javascript
详解Node.js中的事件机制
2016/09/22 Javascript
微信JSSDK调用微信扫一扫功能的方法
2017/07/25 Javascript
加快Vue项目的开发速度的方法
2018/12/12 Javascript
JavaScript学习笔记之图片库案例分析
2019/01/08 Javascript
js module大战
2019/04/19 Javascript
微信小程序动态添加和删除组件的现实
2020/02/28 Javascript
微信小程序实现滑动操作代码
2020/04/23 Javascript
ES5 模拟 ES6 的 Symbol 实现私有成员功能示例
2020/05/06 Javascript
python实现ipsec开权限实例
2014/11/11 Python
Python采用Django开发自己的博客系统
2020/09/29 Python
Python3 伪装浏览器的方法示例
2017/11/23 Python
python实现邮件发送功能
2019/08/10 Python
python修改文件内容的3种方法详解
2019/11/15 Python
浅谈PyTorch的可重复性问题(如何使实验结果可复现)
2020/02/20 Python
Python flask路由间传递变量实例详解
2020/06/03 Python
Python logging模块handlers用法详解
2020/08/14 Python
python利用faker库批量生成测试数据
2020/10/15 Python
Python截图并保存的具体实例
2021/01/14 Python
css3与html5实现响应式导航菜单(导航栏)效果分享
2014/02/12 HTML / CSS
海信商城:海信电视、科龙空调、容声冰箱官方专卖
2017/02/07 全球购物
Lyle & Scott苏格兰金鹰官网:英国皇室御用品牌
2018/05/09 全球购物
俄罗斯香水在线商店:AromaCode
2019/12/04 全球购物
大专生工程监理求职信
2013/10/04 职场文书
课例研修方案
2014/05/31 职场文书
拉拉队口号
2014/06/16 职场文书
2014年乡镇人大工作总结
2014/11/25 职场文书
安徽导游词
2015/02/12 职场文书