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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

svm解决兵王问题_机器学习: svm

發(fā)布時(shí)間:2023/12/10 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 svm解决兵王问题_机器学习: svm 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本周學(xué)習(xí)內(nèi)容為SVM的基本原理和運(yùn)用。

參考資料:耳東陳:零基礎(chǔ)學(xué)SVM—Support Vector Machine(一)

1、什么是SVM

SVM的全稱(chēng)是Support Vector Machine,即支持向量機(jī),主要用于解決模式識(shí)別領(lǐng)域中的數(shù)據(jù)分類(lèi)問(wèn)題,屬于有監(jiān)督學(xué)習(xí)算法的一種。SVM要解決的問(wèn)題可以用一個(gè)經(jīng)典的二分類(lèi)問(wèn)題加以描述。如圖1所示,紅色和藍(lán)色的二維數(shù)據(jù)點(diǎn)顯然是可以被一條直線分開(kāi)的,在模式識(shí)別領(lǐng)域稱(chēng)為線性可分問(wèn)題。然而將兩類(lèi)數(shù)據(jù)點(diǎn)分開(kāi)的直線顯然不止一條,這是線性分類(lèi)器的特征。不同的分類(lèi)方案,分類(lèi)直線到兩類(lèi)向量之間的面積是不一樣的,術(shù)語(yǔ)稱(chēng)為“決策面”,svm試圖找到一個(gè)直線量?jī)蓚€(gè)類(lèi)分類(lèi),并且面積最大的最優(yōu)的解,而這個(gè)直線取決于兩個(gè)類(lèi)型最邊界的三個(gè)向量。

線性分類(lèi)器

svm分類(lèi)器

svm數(shù)學(xué)模型和約束

svm的優(yōu)缺點(diǎn):

優(yōu)點(diǎn):模型訓(xùn)練魯棒性很強(qiáng),對(duì)特征向量、噪音數(shù)據(jù)不敏感,預(yù)測(cè)快,占內(nèi)存少。

缺點(diǎn):訓(xùn)練耗時(shí),時(shí)間復(fù)雜度是O(N的立方),至少是N的平方,對(duì)于太多維度的尋里昂非常耗時(shí)和耗費(fèi)資源。

svm是一種非常優(yōu)秀的分類(lèi)器,老師說(shuō)在深度學(xué)習(xí)出現(xiàn)之前,它統(tǒng)治機(jī)器學(xué)習(xí)領(lǐng)域20年。

2、svm的優(yōu)化

現(xiàn)實(shí)場(chǎng)景中,使用svm訓(xùn)練可能遇到很多的問(wèn)題,比如奇怪的數(shù)據(jù),比如異常數(shù)據(jù)outlier的樣本數(shù)據(jù),一種分類(lèi)中存在另一種分類(lèi)的樣本,我們需要通過(guò)帶松弛變臉的svm進(jìn)行處理,避免無(wú)解。松弛變量是常數(shù)C,常數(shù)C可控制松弛的量度。

帶松弛變量的svm

松弛變量數(shù)學(xué)模型。

SVM雖然解決的是二分類(lèi)問(wèn)題,但可以擴(kuò)展到多個(gè)分類(lèi)問(wèn)題。

1)、可以對(duì)每個(gè)需要識(shí)別的類(lèi)型分別訓(xùn)練一個(gè)分類(lèi)模型,用于預(yù)測(cè)的時(shí)候,哪個(gè)分類(lèi)器的預(yù)測(cè)值高(wtix),就取哪個(gè)。

2)、對(duì)K個(gè)類(lèi)別,訓(xùn)練k*(k-1)/2個(gè)Svm,預(yù)測(cè)的時(shí)候采用投票方式?jīng)Q定,哪個(gè)次數(shù)多選哪個(gè)。

以上方法適用于每種分類(lèi)模型。

3、作業(yè):

用特征數(shù)據(jù)預(yù)測(cè)蘑菇是否有毒。

import pandas as pd import numpy as np# 導(dǎo)入數(shù)據(jù) mush_df = pd.read_csv('./data/mushrooms.csv')# 將值從字母轉(zhuǎn)換為 mush_df_encoded = pd.get_dummies(mush_df) ##獨(dú)熱(ont-hot)編碼,將離散的值轉(zhuǎn)(ABC)換為數(shù)字mush_df.head()# 將特征和類(lèi)別標(biāo)簽分布賦值給 X 和 y X_mush = mush_df_encoded.iloc[:,2:] y_mush = mush_df_encoded.iloc[:,1] #查看特征數(shù)據(jù) X_mush.head() #查看標(biāo)簽 y_mush.head() #訓(xùn)練svm from sklearn.svm import SVC from sklearn.decomposition import PCA from sklearn.pipeline import make_pipeline# TODO pca = PCA(n_components=100, whiten=True, random_state=42) ##這里采用的核函數(shù)為線性分類(lèi)器linear,經(jīng)過(guò)測(cè)試效果比非線性的好 svc = SVC( kernel='linear',class_weight='balanced') model = make_pipeline(pca, svc) from sklearn.model_selection import train_test_split Xtrain, Xtest, ytrain, ytest = train_test_split(X_mush, y_mush, random_state=41) from sklearn.model_selection import GridSearchCV# TODO param_grid = {'svc__C': [1, 5, 10, 50]} grid = GridSearchCV(model, param_grid)%time grid.fit(Xtrain, ytrain) print(grid.best_params_) # TODO model = grid.best_estimator_ yfit = model.predict(Xtest) from sklearn.metrics import classification_report print(classification_report(ytest, yfit)) ##結(jié)果展示,全是1。。。 precision recall f1-score support0 1.00 1.00 1.00 10471 1.00 1.00 1.00 984avg / total 1.00 1.00 1.00 2031

總結(jié)

以上是生活随笔為你收集整理的svm解决兵王问题_机器学习: svm的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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