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实现搜索指定目录下文件及文件内搜索指定关键词的方法
Jun 28 Python
python实现文本去重且不打乱原本顺序
Jan 26 Python
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
Jan 26 Python
分享Pycharm中一些不为人知的技巧
Apr 03 Python
Python文件如何引入?详解引入Python文件步骤
Dec 10 Python
Python实现将通信达.day文件读取为DataFrame
Dec 22 Python
解决PyCharm控制台输出乱码的问题
Jan 16 Python
使用python list 查找所有匹配元素的位置实例
Jun 11 Python
Python按照list dict key进行排序过程解析
Apr 04 Python
django queryset相加和筛选教程
May 18 Python
python regex库实例用法总结
Jan 03 Python
基于flask实现五子棋小游戏
May 25 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
无限级别菜单的实现
2006/10/09 PHP
php mssql扩展SQL查询中文字段名解决方法
2012/10/15 PHP
PHP实现WebService的简单示例和实现步骤
2015/03/27 PHP
DOM2非标准但却支持很好的几个属性小结
2012/01/21 Javascript
JS函数实现动态添加CSS样式表文件
2012/12/15 Javascript
file模式访问网页时iframe高度自适应解决方案
2013/01/16 Javascript
JS onmousemove鼠标移动坐标接龙DIV效果实例
2013/12/16 Javascript
JavaScript中判断两个字符串是否相等的方法
2015/07/07 Javascript
js实现数组冒泡排序、快速排序原理
2016/03/08 Javascript
vue分页组件table-pagebar使用实例解析
2020/11/15 Javascript
浅析ES6的八进制与二进制整数字面量
2016/08/30 Javascript
响应式框架Bootstrap栅格系统的实例
2017/12/19 Javascript
浅谈在vue中使用mint-ui swipe遇到的问题
2018/09/27 Javascript
VUE前后端学习tab写法实例
2019/08/06 Javascript
jquery实现两个div中的元素相互拖动的方法分析
2020/04/05 jQuery
[51:53]完美世界DOTA2联赛决赛日 Inki vs LBZS 第二场 11.08
2020/11/10 DOTA
python多重继承新算法C3介绍
2014/09/28 Python
Python与Java间Socket通信实例代码
2017/03/06 Python
Python解决八皇后问题示例
2018/04/22 Python
python读取csv文件并把文件放入一个list中的实例讲解
2018/04/27 Python
在python 不同时区之间的差值与转换方法
2019/01/14 Python
Python转换时间的图文方法
2019/07/01 Python
python实现两个dict合并与计算操作示例
2019/07/01 Python
修改 CentOS 6.x 上默认Python的方法
2019/09/06 Python
django 简单实现登录验证给你
2019/11/06 Python
python基于三阶贝塞尔曲线的数据平滑算法
2019/12/27 Python
使用keras实现非线性回归(两种加激活函数的方式)
2020/07/05 Python
总结Pyinstaller的坑及终极解决方法(小结)
2020/09/21 Python
新加坡航空官方网站:Singapore Airlines
2016/10/13 全球购物
公共汽车、火车和飞机票的通用在线预订和销售平台:INFOBUS
2019/11/30 全球购物
NYX Professional Makeup俄罗斯官网:世界知名的化妆品品牌
2019/12/26 全球购物
Blue Nile中国官网:全球知名的钻石和珠宝网络零售商
2020/03/22 全球购物
实现strstr功能,即在父串中寻找子串首次出现的位置
2016/08/05 面试题
化验室岗位职责
2015/02/14 职场文书
Python装饰器的练习题
2021/11/23 Python
前端vue+express实现文件的上传下载示例
2022/02/18 Vue.js