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实现的系统实用log类实例
Jun 30 Python
python数据结构之链表详解
Sep 12 Python
Django 中自定义 Admin 样式与功能的实现方法
Jul 04 Python
更新pip3与pyttsx3文字语音转换的实现方法
Aug 08 Python
python生成requirements.txt的两种方法
Sep 18 Python
Python拼接字符串的7种方式详解
Mar 19 Python
python中安装django模块的方法
Mar 12 Python
Python视频编辑库MoviePy的使用
Apr 01 Python
Python figure参数及subplot子图绘制代码
Apr 18 Python
基于python requests selenium爬取excel vba过程解析
Aug 12 Python
基于Python实现的购物商城管理系统
Apr 27 Python
使用Python通过企业微信应用给企业成员发消息
Apr 18 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
Discuz! Passport 通行证整合
2008/03/27 PHP
php xml-rpc远程调用
2008/12/19 PHP
PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
2011/09/09 PHP
php取得字符串首字母的方法
2015/03/25 PHP
PHP中COOKIES使用示例
2015/07/26 PHP
PHP XML和数组互相转换详解
2016/10/26 PHP
Yii2框架加载css和js文件的方法分析
2019/05/25 PHP
php apache开启跨域模式过程详解
2019/07/08 PHP
关于IE、Firefox、Opera页面呈现异同 写脚本很痛苦
2009/08/28 Javascript
JavaScript的setAttribute兼容性问题解决方法
2013/11/11 Javascript
让JavaScript的Alert弹出框失效的方法禁止弹出警告框
2014/09/03 Javascript
鼠标经过子元素触发mouseout,mouseover事件的解决方案
2015/07/26 Javascript
JS+CSS实现带有碰撞缓冲效果的竖向导航条代码
2015/09/15 Javascript
js电话号码验证方法
2015/09/28 Javascript
JavaScript数据结构与算法之栈与队列
2016/01/29 Javascript
详解React-Todos入门例子
2016/11/08 Javascript
Web前端框架Angular4.0.0 正式版发布
2017/03/28 Javascript
Vue使用vue-cli创建项目
2017/09/01 Javascript
select获取下拉框的值 下拉框默认选中方法
2018/02/28 Javascript
Vue开发之watch监听数组、对象、变量操作分析
2019/04/25 Javascript
深入了解JavaScript 私有化
2019/05/30 Javascript
layer.open的自适应及居中及子页面标题的修改方法
2019/09/05 Javascript
Python实现模拟时钟代码推荐
2015/11/08 Python
Python实现定时执行任务的三种方式简单示例
2019/03/30 Python
python利用多种方式来统计词频(单词个数)
2019/05/27 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
2019/12/19 Python
Flask模板引擎Jinja2使用实例
2020/04/23 Python
澳大利亚在线时尚精品店:Hello Molly
2018/02/26 全球购物
优秀学生干部推荐材料
2014/02/03 职场文书
共产党员公开承诺书范文
2014/03/28 职场文书
私用公车造成事故检讨书
2014/11/16 职场文书
小石潭记导游词
2015/02/03 职场文书
2015财务年终工作总结范文
2015/05/22 职场文书
公务员的复习计划书,请收下!
2019/07/15 职场文书
关于食品安全的演讲稿范文(三篇)
2019/10/21 职场文书
python实现局部图像放大
2021/11/17 Python