Python机器学习:svm007高斯核函数,SVM007

发表时间:2020-12-25

在这里插入图片描述
径向基/RBF/高斯核 都是这种形式
在这里插入图片描述
为了感性理解,模拟一下。。。过程
在这里插入图片描述
在这里插入图片描述
高斯核本质
l1 l2 两个地标
在这里插入图片描述

在这里插入图片描述
显然这样就线性可分了
在这里插入图片描述
我们只去了地标点l1 l2
高斯核去了len(x)个地标点
在这里插入图片描述

本质是将原本数据,映射到一个无穷维空间(样本理论上有无穷多个) 计算开销特别大~~~~~~ 有些应用适合 初始样本数据样本维度高 数量却不多 m < n 通常 就是自然语言处理领域 构建高维特征空间,然而样本的数量不多。

遗留问题
γ作用是什么?
通过代码直观理解

#直观理解高斯核函数
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-4,5,1)
x
array([-4, -3, -2, -1,  0,  1,  2,  3,  4])
y =  np.array((x >= -2) & (x <= 2),dtype= 'int')
y
array([0, 0, 1, 1, 1, 1, 1, 0, 0])
x > -2
array([False, False, False,  True,  True,  True,  True,  True,  True])
x < 2
array([ True,  True,  True,  True,  True,  True, False, False, False])
plt.scatter(x[y == 0],[0] * len(x[y == 0]))
plt.scatter(x[y == 1],[0] * len(x[y == 1]))

在这里插入图片描述

使用高斯核函数将数据映射到二维

#使用高斯核函数将数据映射到二维
def gaussian(x,l):
    gamma = 1.0
    return np.exp(-gamma * (x - l ) ** 2)
l1, l2 = -1,1

X_new = np.empty((len(x),2))

for i,data in enumerate(x):
    X_new[i , 0] = gaussian(data , l1)
    X_new[i , 1] = gaussian(data , l2)
print(X_new)
[[1.23409804e-04 1.38879439e-11]
 [1.83156389e-02 1.12535175e-07]
 [3.67879441e-01 1.23409804e-04]
 [1.00000000e+00 1.83156389e-02]
 [3.67879441e-01 3.67879441e-01]
 [1.83156389e-02 1.00000000e+00]
 [1.23409804e-04 3.67879441e-01]
 [1.12535175e-07 1.83156389e-02]
 [1.38879439e-11 1.23409804e-04]]
plt.scatter(X_new[y == 0,0],X_new[y == 0,1])
plt.scatter(X_new[y == 1,0],X_new[y == 1,1])

在这里插入图片描述

文章来源互联网,如有侵权,请联系管理员删除。邮箱:417803890@qq.com / QQ:417803890

微配音

Python Free

邮箱:417803890@qq.com
QQ:417803890

皖ICP备19001818号
© 2019 copyright www.pythonf.cn - All rights reserved

微信扫一扫关注公众号:

联系方式

Python Free