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 获取et和excel的版本号
Apr 09 Python
布同 统计英文单词的个数的python代码
Mar 13 Python
Python实现3行代码解简单的一元一次方程
Aug 18 Python
Python实现命令行通讯录实例教程
Aug 18 Python
pandas 使用apply同时处理两列数据的方法
Apr 20 Python
python 拷贝特定后缀名文件,并保留原始目录结构的实例
Apr 27 Python
python format 格式化输出方法
Jul 16 Python
Python生成一个迭代器的实操方法
Jun 18 Python
Python matplotlib 绘制双Y轴曲线图的示例代码
Jun 12 Python
用python写一个带有gui界面的密码生成器
Nov 06 Python
Python趣味挑战之实现简易版音乐播放器
May 28 Python
详解如何用Python实现感知器算法
Jun 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
php中的mongodb select常用操作代码示例
2014/09/06 PHP
php中opendir函数用法实例
2014/11/15 PHP
php微信公众开发之获取周边酒店信息的方法
2014/12/22 PHP
PHP遍历数组的三种方法及效率对比分析
2015/02/12 PHP
thinkPHP5.0框架API优化后的友好性分析
2017/03/17 PHP
PHP基于swoole多进程操作示例
2019/08/12 PHP
Gambit vs CL BO3 第二场 2.13
2021/03/10 DOTA
jquery实现心算练习代码
2010/12/06 Javascript
javascript判断变量是否有值的方法
2015/04/20 Javascript
使用纯javascript实现经典扫雷游戏
2015/04/23 Javascript
JavaScript包装对象使用详解
2015/07/09 Javascript
Bootstrap~多级导航(级联导航)的实现效果【附代码】
2016/03/08 Javascript
在JavaScript中对HTML进行反转义详解
2016/05/18 Javascript
javascript判断firebug是否开启的方法
2016/11/23 Javascript
Angular项目中$scope.$apply()方法的使用详解
2017/07/26 Javascript
Vue条件循环判断+计算属性+绑定样式v-bind的实例
2018/09/18 Javascript
js实现购物车商品数量加减
2020/09/21 Javascript
[47:22]Mineski vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
深入分析在Python模块顶层运行的代码引起的一个Bug
2014/07/04 Python
Tornado Web服务器多进程启动的2个方法
2014/08/04 Python
Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
2015/05/16 Python
python3序列化与反序列化用法实例
2015/05/26 Python
python语言使用技巧分享
2016/05/31 Python
利用Python实现微信找房机器人实例教程
2019/03/10 Python
python+adb+monkey实现Rom稳定性测试详解
2020/04/23 Python
巴西体育用品商店:Lojão dos Esportes
2018/07/21 全球购物
接口可以包含哪些成员
2012/09/30 面试题
公司同意接收函
2014/01/13 职场文书
前厅收银主管岗位职责
2014/02/04 职场文书
网络编辑职责
2014/03/01 职场文书
婚前保证书
2014/04/29 职场文书
中学生秋季运动会广播稿
2014/09/21 职场文书
故宫的导游词
2015/01/31 职场文书
员工开除通知书
2015/04/25 职场文书
导游词之无锡梅园
2019/11/28 职场文书
避坑之 JavaScript 中的toFixed()和正则表达式
2022/04/19 Javascript