支持向量机python实例_Python机器学习SVM简单应用实例 | kTWO-个人博客
1、前言
在上一篇理論性的文章中我們說過了,SVM是分線性可分和線性不可分兩種情況的,線性可分的比較容易理解,比較容易一些,線性不可分的就稍微復(fù)雜一點了。我們測試就分別用線性可分和線性不可分兩種情況分別測試Python中的SVM算法。
Python中已經(jīng)封裝了SVM的算法在sklearn的庫中,若不知道sklearn是啥我想你可能是沒有看前面的基礎(chǔ)課程,建議去了解一下sklearn。
本篇文章只講線性可分的情況,下一篇文章講線性不可分的情況,使用圖片識別做例子。
2、線性可分的SVM應(yīng)用測試
(1)簡單的預(yù)測
測試數(shù)據(jù)我們給出三個點:(2,0)(1,1)(2,3)。
前兩個點我們分為一類,第三個點事另一類可以記為(0,0,1)。
看代碼:
#coding:utf8
#導(dǎo)入svm的庫
from?sklearn?import?svm
x?=?[[2,?0],?[1,?1],?[2,?3]]
y?=?[0,?0,?1]??#對應(yīng)x的分類標(biāo)記
clf?=?svm.SVC(kernel=?'linear')?#線性核函數(shù)
clf.fit(x,?y)
print?clf
print?clf.support_vectors_??#支持向量
print?clf.support_??#支持向量是哪幾個(下標(biāo))
print?clf.n_support_????#每一類中有幾個支持向量
print?clf.predict([0,?1])???#測試數(shù)據(jù)
1
2
3
4
5
6
7
8
9
10
11
12
13
#coding:utf8
#導(dǎo)入svm的庫
from?sklearn?import?svm
x?=?[[2,?0],?[1,?1],?[2,?3]]
y?=?[0,?0,?1]??#對應(yīng)x的分類標(biāo)記
clf?=?svm.SVC(kernel=?'linear')?#線性核函數(shù)
clf.fit(x,?y)
print?clf
print?clf.support_vectors_??#支持向量
print?clf.support_??#支持向量是哪幾個(下標(biāo))
print?clf.n_support_????#每一類中有幾個支持向量
print?clf.predict([0,?1])???#測試數(shù)據(jù)
上面的代碼非常簡單就不用講了,注釋寫的很清楚。
(2)復(fù)雜一些的預(yù)測
下面我們做一個復(fù)雜點的例子,我們來隨機生成兩類點,進行SVM的建模然后我們在畫布中畫出這個模型圖。
訓(xùn)練集:隨機生成正太分布的點,20個小于0的 20個大于0的數(shù)。
代碼如下:
#######################復(fù)雜的測試###############################
print?"########################################\n"
import?numpy?as?np
import?pylab?as?pl
#生成隨機點數(shù)據(jù)集
np.random.seed(0)?#固定隨機值
x?=?np.r_[np.random.randn(20,?2)?-?[2,?2],?np.random.randn(20,?2)?+?[2,?2]]
y?=?[0]?*20?+[1]?*?20
print?x
print?y
clf2?=?svm.SVC(kernel='linear')
clf2.fit(x,?y)
print?clf2.support_
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#######################復(fù)雜的測試###############################
print?"########################################\n"
import?numpy?as?np
import?pylab?as?pl
#生成隨機點數(shù)據(jù)集
np.random.seed(0)?#固定隨機值
x?=?np.r_[np.random.randn(20,?2)?-?[2,?2],?np.random.randn(20,?2)?+?[2,?2]]
y?=?[0]?*20?+[1]?*?20
print?x
print?y
clf2?=?svm.SVC(kernel='linear')
clf2.fit(x,?y)
print?clf2.support_
模型已經(jīng)建完,了我們下面就畫出這個模型的二維形狀。這里我們使用了一個繪圖的庫叫pylab。
繪圖很簡單,只要知道點的坐標(biāo)就可以繪制出點,只要知道多個點的坐標(biāo)連接起來就可以構(gòu)成線。
不過這里注意一下,有個計算斜率和截距的公式,看代碼吧。
#畫出散點圖
#畫出支持向量的點,參數(shù):x,y,大小
pl.scatter(clf2.support_vectors_[:,?0],clf2.support_vectors_[:,?1],s=80)
#畫出全部的點,參數(shù):x,y,顏色,colormap,形狀
pl.scatter(x[:,?0],x[:,?1],c=y,cmap=pl.cm.Paired,marker='o')
pl.axis('tight')
#pl.savefig("dd")?保存繪圖
pl.show()
1
2
3
4
5
6
7
8
9
#畫出散點圖
#畫出支持向量的點,參數(shù):x,y,大小
pl.scatter(clf2.support_vectors_[:,?0],clf2.support_vectors_[:,?1],s=80)
#畫出全部的點,參數(shù):x,y,顏色,colormap,形狀
pl.scatter(x[:,?0],x[:,?1],c=y,cmap=pl.cm.Paired,marker='o')
pl.axis('tight')
#pl.savefig("dd")?保存繪圖
pl.show()
最終的繪制結(jié)果如下:
總結(jié)
以上是生活随笔為你收集整理的支持向量机python实例_Python机器学习SVM简单应用实例 | kTWO-个人博客的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 的硬件报错_工程师经验:78%的硬件失效
- 下一篇: python3 collections模