欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

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

发布时间:2025/3/21 编程问答 32 豆豆
生活随笔 收集整理的这篇文章主要介绍了 ML之SVM:基于SVM(sklearn+subplot)的鸢尾花iris数据集的前两个特征(线性不可分的两个样本),判定鸢尾花是哪一种类型 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

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

 

 

目录

输出结果

实现代码


 

 

 

 

输出结果

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

 

实现代码

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

 

总结

以上是生活随笔为你收集整理的ML之SVM:基于SVM(sklearn+subplot)的鸢尾花iris数据集的前两个特征(线性不可分的两个样本),判定鸢尾花是哪一种类型的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。