西瓜书 习题6.2 用线性核、高斯核训练SVM

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("linearConfusi
  • 8
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在西瓜数据集3.0a上,我们可以使用支持向量机(SVM)作为分类器进行训练和测试。SVM是一种监督学习算法,它可以在高维空间中构建一个超平面来区分不同类别的数据点。在此数据集上,我们可以采用不同的函数来训练SVM模型,其中包括线性高斯,这两种函数的训练和预测结果也会有所不同。 线性SVM中最常用的函数之一。它的主要作用是线性转换原始特征空间到高维空间,这使得线性不可分的数据集也变得线性可分。在西瓜数据集3.0a中,如果我们使用线性训练SVM模型,它会在一个平面上构建一个超平面,通过该超平面将数据分为两个类别。由于数据集中的样本数据比较简单,线性的表现就比较好,容易得到较高的精度率和较好的泛化性能。 高斯也是SVM中常用的函数之一。它的主要作用是将原始特征空间变换到高维空间,并且在高维空间中计算样本之间的相似度。在西瓜数据集3.0a中,采用高斯训练SVM模型可以达到更好的分类效果。使用高斯SVM模型能够更准确地捕捉数据的特征,适用于更复杂的非线性问题。同时,高斯也有一定的泛化能力,使得该模型可以对新的数据进行较好的预测。 总结来说,西瓜数据集3.0a上采用不同的函数训练SVM模型,线性主要适用于简单的线性分割问题,而高斯适用于更复杂的非线性问题。在实际应用中,我们需要根据数据分布的特点和问题的细节来选择合适的函数,以达到最佳的分类效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值