日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

支持向量机python实例_Python机器学习SVM简单应用实例 | kTWO-个人博客

發(fā)布時間:2025/3/12 python 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 支持向量机python实例_Python机器学习SVM简单应用实例 | kTWO-个人博客 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。