linearSVC,SC的linear,poly,rbf,sigmoid等效换用具体举例

###################################
首先使用linearSVC
K ( v 1 , v 2 ) = &lt; v 1 , v 2 &gt; K(v_1,v_2)=&lt;v_1,v_2&gt; K(v1,v2)=<v1,v2>
Polynomial_no_kernel.py

# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
# @Author: appleyuchi
# @Date:   2018-12-15 20:35:43
# @Last Modified by:   appleyuchi
# @Last Modified time: 2018-12-15 22:20:19
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from plot import *
X, y = datasets.make_moons(noise=0.15, random_state=666)
# plt.scatter(X[y==0, 0], X[y==0, 1])
# plt.scatter(X[y==1, 0], X[y==1, 1])
# plt.show()
print"X=",X
print len(X)
print"y=",y
print len(y)


from sklearn.preprocessing import PolynomialFeatures, StandardScaler
from sklearn.svm import LinearSVC
from sklearn.svm import SVC
from sklearn.pipeline import Pipeline
import sklearn.svm
# print dir(sklearn.svm)

def PolynomialSVC(degree, C=3):
    return Pipeline([
        ('poly', PolynomialFeatures(degree=degree)),
        ('std_scaler', StandardScaler()),
        # ('linearSVC', LinearSVC(C=C))#注意这两句都行
        ('kernelSVC', SVC(kernel='linear', degree=degree, C=C))#注意这两句都行
    ])

poly_svc = PolynomialSVC(degree=5)
poly_svc.fit(X, y)

plot_decision_boundary(poly_svc, axis=[-1.5, 2.5, -1.0, 1.5])
plt.scatter(X[y==0, 0], X[y==0, 1])
plt.scatter(X[y==1, 0], X[y==1, 1])
plt.show()

#########################################
接下来使用SVC+linear核
K ( v 1 , v 2 ) = &lt; v 1 , v 2 &gt; K(v_1,v_2)=&lt;v_1,v_2&gt; K(v1,v2)=<v1,v2>
将上面的

('linearSVC', LinearSVC(C=C))

换成

('kernelSVC', SVC(kernel='linear', degree=degree, C=C))

效果是一样的:

在这里插入图片描述

########################################
接下来使用SVC+poly核
K ( v 1 , v 2 ) = ( γ &lt; v 1 , v 2 &gt; + c ) n K(v_1,v_2)=(\gamma&lt;v_1,v_2&gt;+c)^n K(v1,v2)=(γ<v1,v2>+c)n
将Polynomial_no_kernel.py文件中的内容改为:


def PolynomialSVC(degree, C=1):
    return Pipeline([
        ('poly', PolynomialFeatures(degree=degree)),
        ('std_scaler', StandardScaler()),
        # ('linearSVC', LinearSVC(C=C))#注意这两句都行
        ('kernelSVC', SVC(kernel='poly', degree=degree, C=C,class_weight={0:40,1:70})
        )#注意这两句都行
    ])

poly_svc = PolynomialSVC(degree=2)
poly_svc.fit(X, y)

效果如下:
在这里插入图片描述
######################################
接下来使用SVC+rbf核:
K ( v 1 , v 2 ) = exp ⁡ ( − γ ∣ ∣ v 1 − v 2 ∣ ∣ 2 ) K(v_1,v_2)=\exp(-\gamma||v_1-v_2||^2) K(v1,v2)=exp(γv1v22)

('kernelSVC', SVC(kernel='poly', degree=degree, C=C,class_weight={0:40,1:70})

改为:

('kernelSVC', SVC(kernel='rbf', degree=degree, C=C,class_weight={0:40,1:70})

效果如下:
在这里插入图片描述
###########################
最后使用SVC+sigmoid核
修改其中两句代码为:

        ('kernelSVC', SVC(kernel='sigmoid', degree=degree, C=C,class_weight={0:80,1:80})
        
        poly_svc = PolynomialSVC(degree=10)

结果如下:
在这里插入图片描述

完整代码如下:
https://github.com/appleyuchi/scikit_kernel_use

参考连接:
https://www.cnblogs.com/volcao/p/9464991.html
https://blog.csdn.net/qq_41577045/article/details/79859902

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值