SVM手动实现底层代码有些麻烦,这里借助sklearn实现了一下,数据以及代码地址:
https://github.com/qdbszsj/SVM
import pandas as pd
import numpy as np
dataset = pd.read_csv('/home/parker/watermelonData/watermelon3_0a.csv', delimiter=",")
# print(dataset)
X=dataset.iloc[range(17),[1,2]].values
y=dataset.values[:,3]
print("trueV",y)
trueV=y
from sklearn import svm
linearKernalMethod=svm.SVC(C=10000,kernel='linear')#C=1 defaultly
linearKernalMethod.fit(X,y)
predictV=linearKernalMethod.predict(X)
print("linear",predictV)
confusionMatrix=np.zeros((2,2))
for i in range(len(y)):
if predictV[i]==trueV[i]:
if trueV[i]==0:confusionMatrix[0,0]+=1
else: confusionMatrix[1,1]+=1
else:
if trueV[i]==0:confusionMatrix[0,1]+=1
else:confusionMatrix[1,0]+=1
print("linearConfusionMatrix\n",confusionMatrix)
rbfKernalMethod=svm.SVC(C=10000,kernel='rbf')#C=1 defaultly
rbfKernalMethod.fit(X,y)
predictV=rbfKernalMethod.predict(X)
print("rbf",p

本文介绍了使用sklearn库手动实现SVM,探讨了C值对软间隔的影响,指出C值越大,数据重要性越高,允许的分类差错越少。在面对非线性可分数据集时,线性核无法实现完美划分,而高斯核通过调整C值可以达到无误分类。建议当线性可分时选择线性核,否则采用高斯核。
最低0.47元/天 解锁文章
5162

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



