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 07 Python
在Python中关于中文编码问题的处理建议
Apr 08 Python
python基本语法练习实例
Sep 19 Python
ubuntu中配置pyqt4环境教程
Dec 27 Python
python破解zip加密文件的方法
May 31 Python
python dataframe常见操作方法:实现取行、列、切片、统计特征值
Jun 09 Python
浅析python的优势和不足之处
Nov 20 Python
python获取点击的坐标画图形的方法
Jul 09 Python
Python中一个for循环循环多个变量的示例
Jul 16 Python
python操作excel让工作自动化
Aug 09 Python
Python如何使用ConfigParser读取配置文件
Nov 12 Python
python实现简单的井字棋游戏(gui界面)
Jan 22 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
SONY ICF-SW07收音机电路分析
2021/03/02 无线电
laravel5使用freetds连接sql server的方法
2018/12/07 PHP
关于php开启错误提示的总结
2019/09/24 PHP
使用JavaScript库还是自己写代码?
2010/01/28 Javascript
Javascript 去除数组的重复元素
2010/05/04 Javascript
ModelDialog JavaScript模态对话框类代码
2011/04/17 Javascript
基于jquery的可多选的下拉列表框
2012/07/20 Javascript
jQuery JSON实现无刷新三级联动实例探讨
2013/05/28 Javascript
JS控制文本框textarea输入字数限制的方法
2013/06/17 Javascript
Jquery绑定事件(bind和live的区别介绍)
2013/08/23 Javascript
AngularJs根据访问的页面动态加载Controller的解决方案
2015/02/04 Javascript
js获取及判断键盘按键的方法
2015/12/01 Javascript
jquery跟随屏幕滚动效果的实现代码
2016/04/13 Javascript
JavaScript注入漏洞的原理及防范(详解)
2016/12/04 Javascript
bootstrap提示标签、提示框实现代码
2016/12/28 Javascript
在vue-cli脚手架中配置一个vue-router前端路由
2017/07/03 Javascript
微信小程序 页面跳转事件绑定的实例详解
2017/09/20 Javascript
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
2017/10/13 jQuery
JS使用Date对象实时显示当前系统时间简单示例
2018/08/23 Javascript
小程序登录态管理的方法示例
2018/11/13 Javascript
layui prompt 设置允许空白提交的方法
2019/09/24 Javascript
Vue v-bind动态绑定class实例方法
2020/01/15 Javascript
在Python中使用mechanize模块模拟浏览器功能
2015/05/05 Python
Python实现视频下载功能
2017/03/14 Python
Python制作刷网页流量工具
2017/04/23 Python
Python递归函数定义与用法示例
2017/06/02 Python
Python环境搭建之OpenCV的步骤方法
2017/10/20 Python
PyCharm的设置方法和第一个Python程序的建立
2019/01/16 Python
python 实现敏感词过滤的方法
2019/01/21 Python
Django框架视图函数设计示例
2019/07/29 Python
python 实现线程之间的通信示例
2020/02/14 Python
pandas DataFrame 数据选取,修改,切片的实现
2020/04/24 Python
Python Web项目Cherrypy使用方法镜像
2020/11/05 Python
党的群众路线教育实践活动对照检查材料范文
2014/09/24 职场文书
初婚未育证明样本
2015/06/18 职场文书
《法国号》教学反思
2016/02/22 职场文书