看起来,除了Sigmoid核函数,其他核函数效果都还不错。但其实rbf和poly都有自己的弊端,我们使用乳腺癌数据集作为例子来展示一下:
from sklearn.datasets import load_breast_cancer
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
import numpy as np
from time import time
import datetime
#实例化数据集,提取特征和标签
data = load_breast_cancer()
X = data.data
y = data.target
#切分训练集和测试集
Xtrain, Xtest, Ytrain, Ytest =
train_test_split(X,y,test_size=0.3,random_state=420)
Kernel = ["linear","poly","rbf","sigmoid"]
for kernel in Kernel:
time0 = time()
clf= SVC(kernel = kernel
, gamma="auto"
).fit(Xtrain,Ytrain)
print("The accuracy under kernel %s is %f" %
(kernel,clf.score(Xtest,Ytest)))
print(datetime

本文通过乳腺癌数据集探讨SVM的核函数,发现线性核在线性数据集上表现良好,但计算速度慢;rbf和sigmoid在非线性场景下有效,但在线性数据集上效果不佳。关键问题在于数据的量纲不一,导致计算效率低下。通过数据无量纲化,可以显著提高核函数的运算速度,特别是多项式核函数,并使rbf展现出更好的性能。总结指出,SVM在应用前应先进行数据无量纲化。
最低0.47元/天 解锁文章
2121

被折叠的 条评论
为什么被折叠?



