小贴士:核函数是一项非常有用的特征映射技巧,同时在数学描述上也略为复杂。因此这里不做过度引申。简单一些理解,便是通过某种函数计算,将原有的特征映射到更高维度的空间,从而尽可能达到新的高维度特征线性可分的程度,如下图所示。结合支持向量机的特点,这种高维度线性可分的数据特征恰好可以发挥其模型优势。

大家应该对基础篇3中的支持向量机(分类)中提到的分类模型的作用机理有所了解。本篇介绍的支持向量机(回归)也同样是从训练数据中选取一部分更加有效的支持向量,只是这少部分的训练样本所提供的并不是类别目标,而是具体的预测数值。

我们继续使用上一篇分割处理好的训练和测试数据;同时我们第一次修改模型初始化的默认配置,以展现不同配置下模型性能的差异,也为后面要介绍的内容做个铺垫。

# 从sklearn.svm中导入支持向量机(回归)模型。
from sklearn.svm import SVR# 使用线性核函数配置的支持向量机进行回归训练,并且对测试样本进行预测。
linear_svr = SVR(kernel='linear')
linear_svr.fit(X_train, y_train)
linear_svr_y_predict = linear_svr.predict(X_test)# 使用多项式核函数配置的支持向量机进行回归训练,并且对测试样本进行预测。
poly_svr = SVR(kernel='poly')
poly_svr.fit(X_train, y_train)
poly_svr_y_predict = poly_svr.predict(X_test)# 使用径向基核函数配置的支持向量机进行回归训练,并且对测试样本进行预测。
rbf_svr = SVR(kernel='rbf')
rbf_svr.fit(X_train, y_train)
rbf_svr_y_predict = rbf_svr.predict(X_test)

接下来我们就不同核函数配置下的支持向量机回归模型在测试集上的回归性能作出评估。通过三组性能评测我们发现,不同配置下的模型在相同测试集上,存在非常重大的性能差异。并且在使用了径向基核函数对特征进行非线性映射之后,支持向量机展现了最佳的回归性能。

# 使用R-squared、MSE和MAE指标对三种配置的支持向量机(回归)模型在相同测试集上进行性能评估。
from sklearn.metrics import r2_score, mean_absolute_error, mean_squared_error
print 'R-squared value of linear SVR is', linear_svr.score(X_test, y_test)
print 'The mean squared error of linear SVR is', mean_squared_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(linear_svr_y_predict))
print 'The mean absoluate error of linear SVR is', mean_absolute_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(linear_svr_y_predict))

R-squared value of linear SVR is 0.65171709743
The mean squared error of linear SVR is 26.6433462972

The mean absoluate error of linear SVR is 3.53398125112

print 'R-squared value of Poly SVR is', poly_svr.score(X_test, y_test)
print 'The mean squared error of Poly SVR is', mean_squared_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(poly_svr_y_predict))
print 'The mean absoluate error of Poly SVR is', mean_absolute_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(poly_svr_y_predict))

R-squared value of Poly SVR is 0.404454058003
The mean squared error of Poly SVR is 46.179403314

The mean absoluate error of Poly SVR is 3.75205926674

print 'R-squared value of RBF SVR is', rbf_svr.score(X_test, y_test)
print 'The mean squared error of RBF SVR is', mean_squared_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(rbf_svr_y_predict))
print 'The mean absoluate error of RBF SVR is', mean_absolute_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(rbf_svr_y_predict))

R-squared value of RBF SVR is 0.756406891227
The mean squared error of RBF SVR is 18.8885250008
The mean absoluate error of RBF SVR is 2.60756329798
    本篇首次展示了不同配置模型在相同数据上所表现的性能差异。特别是除了基础篇3支持向量机(分类)模型里曾经提到过的特点之外,该系列模型还可以通过配置不同的核函数来改变模型性能。因此,建议大家使用时多尝试几种配置,进而获得更好的预测性能。

Python机器学习及实践——基础篇9(SVM回归)相关推荐

  1. Python机器学习与实践——简介篇

    周四晚上胡哥给大家简单培训了一下nlp的一些算法,感觉受益匪浅.回去之后反省了一下,有段时间没看机器学习的东西了,nlp要抓,机器学习也要学.开个坑,记录和分享一下学习内容(书籍为<python ...

  2. Python机器学习及实践——简介篇3(逻辑回归)

    前面两篇都是介绍性的文字,这篇详细介绍完整的"良/恶性乳腺癌肿瘤预测"问题的Python源代码. 根据前两篇的描述,大家可以确定"良/恶性乳腺癌肿瘤预测"的问题 ...

  3. 【Python机器学习及实践】进阶篇:模型实用技巧(特征提升)

    Python机器学习及实践--进阶篇:模型实用技巧(特征提升) 所谓特征抽取,就是逐条将原始数据转化为特征向量的形式,这个过程同时涉及对数据特征的量化表示:而特征筛选则进一步,在高维度.已量化的特征向 ...

  4. python机器学习及实践_机器学习入门之《Python机器学习及实践:从零开始通往Kaggle竞赛之路》...

    本文主要向大家介绍了机器学习入门之<Python机器学习及实践:从零开始通往Kaggle竞赛之路>,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助. <Python 机 ...

  5. python机器学习及实践_Python机器学习及实践

    Python机器学习及实践/Chapter_1/.ipynb_checkpoints/Chapter_1.1-checkpoint.ipynb Python机器学习及实践/Chapter_1/.ipy ...

  6. python进阶记录之基础篇二十六_Python进阶记录之基础篇(十六)

    回顾 在Python进阶记录之基础篇(十五)中,我们介绍了面向对象的基本概念以及Python中类和对象的基础知识,需要重点掌握类的创建和对象的使用.今天我们继续讲一下Python中面向对象的相关知识点 ...

  7. Python:Excel自动化实践入门篇 甲【留言点赞领图书门票】

    *以下内容为本人的学习笔记,如需要转载,请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s?__biz=MzUxMTgxMzExNQ==&mid=22 ...

  8. Python学习日记-day1基础篇 字符 输出 注释

    Python学习日记-day1基础篇 字符 输出 注释 by北栀一刺 # -*- coding: utf-8 -*- """ Spyder EditorThis is a ...

  9. 《Python机器学习及实践》----良/恶性乳腺癌肿瘤预测

    本片博客是根据<Python机器学习及实践>一书中的实例,所有代码均在本地编译通过.数据为从该书指定的百度网盘上下载的. 代码片段: import pandas as pd import ...

最新文章

  1. 可扩展且侵入性最小的脑机接口平台
  2. POJ-1459 Power Network 网络流
  3. 直播 | EMNLP 2020:用语义分割的思路解决不完整话语重写任务
  4. 练习11.1 奥运五环色 7-1 藏头诗
  5. 使用echarts(一) 第一次使用echarts
  6. block的界面间传值的使用
  7. 基于.NET Socket API 通信的综合应用
  8. http://renmin.cnblogs.com/archive/2006/03/03/341669.aspx
  9. HEX2BIN不能在win7_64位下执行的Keil官方解决方案
  10. 【CSDN软考VIP资料群】让软考通过更容易,软考资料大全支持你软考!
  11. 会计计算机,什么是好的计算机会计软件?
  12. cmd安装pip问题。
  13. 解决米8应用下面有黑边的问题
  14. 2018年河南省高中计算机考试,【改革 】 2018年河南中考将采取4+6+1模式,高中自主招生已确定...
  15. c#将PDF文件转成图片
  16. 解决win10以太网没有有效的ip配置
  17. r语言中大小写c的区别吗,R语言和C语言哪个难?
  18. 全新的MySQL 8.0行锁观测方式
  19. 敏捷实践不可忽略的环节
  20. for循环(循环结构)

热门文章

  1. 深度观察:杭州区块链周,中国版的共识大会
  2. 今年职高计算机数学高考试题,2018-2019高职高考数学试题
  3. 【大学物理学】静电场
  4. Java 获取昨天的日期
  5. 2014 C专科C组第五题 套娃
  6. 尚硅谷web前端工程师1000集学习笔记11
  7. HTML练习—东风破
  8. 麦克风产品 麦克风元器件 市场调研
  9. 激光雷达和相机联合标定
  10. wind客户端python接口 java调用