ML之SVM:基于SVM(sklearn+subplot)的鸢尾花iris数据集的前两个特征(线性不可分的两个样本),判定鸢尾花是哪一种类型

514 篇文章 131 订阅

ML之SVM:基于SVM(sklearn+subplot)的鸢尾花iris数据集的前两个特征(线性不可分的两个样本),判定鸢尾花是哪一种类型

 

 

目录

输出结果

实现代码


 

 

 

 

输出结果

(1)、黄色的点为支持向量

 

实现代码

#ML之SVM:基于SVM(sklearn+subplot)的鸢尾花数据集的前两个特征,判定鸢尾花是哪一种类型
#基于鸢尾花的花萼的长度和宽度进行分类的,本案例只采用前两维特征
import numpy as np
import pylab as pl


from sklearn import svm
svc = svm.SVC(kernel='linear')

from sklearn import datasets   # 鸢尾花数据集是sklearn自带的。

iris = datasets.load_iris()
X = iris.data[:, :2]   # 只提取前面两列数据作为特征,鸢尾花的长度、宽度
y = iris.target
svc.fit(X, y)   # 基于这些数据训练出一个支持向量分离器SVC

……

plot_estimator(svc, X, y, 3,2,1)
pl.title('one versus one')   #如图所示,红色与其他点是线性可分的;蓝色和绿色的点是线性不可分的

plot_estimator(svm.LinearSVC(), X, y, 3,2,2)
pl.title('one versus all')


X, y = X[np.in1d(y, [1, 2])], y[np.in1d(y, [1, 2])]
plot_estimator(svc, X, y, 3,2,3)
pl.scatter(svc.support_vectors_[:, 0], svc.support_vectors_[:, 1], s=80,c='y')   #,c='',facecolors='none', zorder=10
pl.title('Both circles are support vectors')

#下面进行调参C:该C可以理解为正则项的C
svc = svm.SVC(kernel='linear', C=1e3)
plot_estimator(svc, X, y, 3,2,4)
pl.scatter(svc.support_vectors_[:, 0], svc.support_vectors_[:, 1], s=80,c='y')  #, facecolors='none', zorder=10
pl.title('High C values: small number of support vectors')


svc = svm.SVC(kernel='linear', C=1e-3)
plot_estimator(svc, X, y, 3,2,5)
pl.scatter(svc.support_vectors_[:, 0], svc.support_vectors_[:, 1], s=80)  #, facecolors='none', zorder=10
pl.title('Low C values: high number of support vectors')
pl.show() 


#采用核方法的SVM
svc = svm.SVC(kernel='linear')
plot_estimator(svc, X, y, 2,2,1)
pl.scatter(svc.support_vectors_[:, 0], svc.support_vectors_[:, 1], s=80,c='y')  #, facecolors='none', zorder=10
pl.title('Linear kernel→linear')


svc = svm.SVC(kernel='poly', degree=4)
plot_estimator(svc, X, y, 2,2,2)
pl.scatter(svc.support_vectors_[:, 0], svc.support_vectors_[:, 1], s=80,c='y')  #, facecolors='none', zorder=10
pl.title('Polynomial kernel→parabola')


#可以看到,高斯核更灵活,而且对于训练数据效果是最好的。但是要担心过拟合。
svc = svm.SVC(kernel='rbf', gamma=1e2)
plot_estimator(svc, X, y, 2,2,3)
pl.scatter(svc.support_vectors_[:, 0], svc.support_vectors_[:, 1], s=80,c='y')   #, facecolors='none', zorder=10
pl.title('RBF kernel')
pl.show() 

 

相关文章推荐
ML之SVM:基于SVM(sklearn+subplot)的鸢尾花数据集的前两个特征,判定鸢尾花是哪一种类型

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个处女座的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值