ML之SVM:基于SVM(sklearn+subplot)的鸢尾花iris数据集的前两个特征(线性不可分的两个样本),判定鸢尾花是哪一种类型
生活随笔
收集整理的這篇文章主要介紹了
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数据集的前两个特征(线性不可分的两个样本),判定鸢尾花是哪一种类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ML之SVM:基于sklearn的svm
- 下一篇: ML之NB:朴素贝叶斯Naive Bay