sklearn快速入门教程: SVM

52643186bb874fbe8ca0ca0ace07daa6.png

 33df62b3de8843f8b1d16c1dd042ae3f.png

74c6513ee97347338928263cca173478.png 

 bd7eafb6107b4805b545bbbea5840ff5.png

fb00f6e5f4384ec5b777a03afc5b5ed5.png

ed4d064c07ae49419dc609cda06633b9.png 

f3477fd780b140d989ade166a771eecc.png 

 

8035dba158d14f309e03743cd5dabeed.png 

e58cb39566dc4359bdd6bebcbc9d926b.png 

2d852e9ed9de4ac2b43f05b2e5f71c3f.png 

d20722d978764620bf9e24c0ba0c366b.png  

 

 

升维转换

8a0a80c0a62c4652aa1537fe220bc94d.png

升维转换后

810f69449b4747e493823edf59f0a029.png 

6b3e221925df424096e1a83ec2b3d4ed.png 

ffb196b437404905b1426f66c2c1698b.png

508443fba7924a0eb8150d410cf736bb.png 

 

Kernal Trick 核技巧 

不升维计算也能和上面一样

 

实现一个支持向量机(SVM) 

 

import numpy as np
from sklearn.svm import SVR

一、格式化数据

X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])

y = np.dot(X, np.array([1, 2])) + 3 # y = 1 * x0 + 2 * x1 + 3

 二、初始化模型

model = SVR()

 三、拟合fit(X,y)

model.fit(X,y)

 四、预测predict(X_test) 

model.predict(X)

 全过程代码

import numpy as np
from sklearn.svm import SVR

X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
y = np.dot(X, np.array([1, 2])) + 3
    
model = SVR()
model.fit(X,y)
model.predict(X)
array([7.44500403, 8.09999999, 8.90000001, 9.55499597])

运行结果与理论值有误差,可见其精度不如上篇博客的代码,因为未对模型进行调参(直接预先设定,反复调整使模型达到一个最优的状态)

为什么要调参

在绝大多数的非线性模型中(包括一些特殊的线性模型,比如ridge regression),还有一部分参数是无法通过训练直接获取的

基于此,我们的

非线性模型的通用模式:

gif.latex?y%20%3D%20f%28h%2Cw%3Bx%29

w是可以通过训练算出的参数;h表示超参数(一个或多个)

 

以SVR为例,它的超参数实际上包括:

  • 核函数及其参数
  • 惩罚系数

这里我们常用高斯核作为它的核函数,同时将核参数设为1,惩罚系数设为100。

import numpy as np
from sklearn.svm import SVR
X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
# y = 1 * x_0 + 2 * x_1 + 3
y = np.dot(X, np.array([1, 2])) + 3

model = SVR(kernel='rbf',gamma= 1, C = 100)
model.fit(X,y)
model.predict(X)

array([ 6.1       ,  7.93810802,  9.06189198, 10.9       ])

 可以看到这样模型的精度就有了明显的提升。如果我们事先知道模型的超参数,那么可以很容易得出较好的预测结果。但如果不知道的话,就需要进行调参。当然调参的方式有很多种,后面的教程我们再详细讨论。

符合上述通用模式的常用模型

sklearn快速入门教程:(三)机器学习的通用模式及实现方法_半个冯博士的博客-CSDN博客

的最下面的表格 

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值