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登陆asp网站页面的实现代码
Jan 14 Python
浅谈Pycharm中的Python Console与Terminal
Jan 17 Python
python 获取微信好友列表的方法(微信web)
Feb 21 Python
Python批量删除只保留最近几天table的代码实例
Apr 01 Python
Python的缺点和劣势分析
Nov 19 Python
Python使用plt.boxplot() 参数绘制箱线图
Jun 04 Python
python 实现rolling和apply函数的向下取值操作
Jun 08 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
Dec 07 Python
Linux系统下升级pip的完整步骤
Jan 31 Python
Python字节单位转换(将字节转换为K M G T)
Mar 02 Python
利用Matlab绘制各类特殊图形的实例代码
Jul 16 Python
Pandas 数据编码的十种方法
Apr 20 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 正则表达式小结
2009/08/31 PHP
php strnatcmp()函数的用法总结
2013/11/27 PHP
PHP读取大文件的类SplFileObject使用介绍
2014/04/09 PHP
PHP数组相关函数汇总
2015/03/24 PHP
php统计数组元素个数的方法
2015/07/02 PHP
静态html文件执行php语句的方法(推荐)
2016/11/21 PHP
彻底搞懂PHP 变量结构体
2017/10/11 PHP
PHP实现将base64编码字符串转换成图片示例
2018/06/22 PHP
拖拉表格的JS函数
2008/11/20 Javascript
JS俄罗斯方块,包含完整的设计理念
2010/12/11 Javascript
javascript中String类的subString()方法和slice()方法
2011/05/24 Javascript
40款非常棒的jQuery 插件和制作教程(系列二)
2011/11/02 Javascript
javascript预加载图片、css、js的方法示例介绍
2013/10/14 Javascript
将数字转换成大写的人民币表达式的js函数
2014/09/21 Javascript
使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
2015/09/16 Javascript
详解jQuery事件
2017/01/13 Javascript
JavaScript数组_动力节点Java学院整理
2017/06/26 Javascript
在vue中解决提示警告 for循环报错的方法
2018/09/28 Javascript
详解vue-cli 脚手架 安装
2019/04/16 Javascript
微信小程序如何自定义table组件
2019/06/29 Javascript
Element DateTimePicker日期时间选择器的使用示例
2020/07/27 Javascript
通过实例解析json与jsonp原理及使用方法
2020/09/27 Javascript
Vue实现菜单切换功能
2020/11/08 Javascript
python翻译软件实现代码(使用google api完成)
2013/11/26 Python
python添加菜单图文讲解
2019/06/04 Python
matplotlib 曲线图 和 折线图 plt.plot()实例
2020/04/17 Python
浅谈keras 模型用于预测时的注意事项
2020/06/27 Python
HTML5 拖放(Drag 和 Drop)详解与实例代码
2017/09/14 HTML / CSS
Html5导航栏吸顶方案原理与对比实现
2020/06/10 HTML / CSS
6号汽车旅馆预订:Motel 6
2018/02/11 全球购物
美国在线乐器和设备商店:Musician’s Friend
2018/07/06 全球购物
SQL Server笔试题
2012/01/10 面试题
建筑自我鉴定
2013/10/19 职场文书
酒店工作职员求职简历的自我评价
2013/10/23 职场文书
小学数学教学反思
2014/02/02 职场文书
解决mysql模糊查询索引失效问题的几种方法
2021/06/18 MySQL