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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

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

發布時間:2023/12/10 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 svm解决兵王问题_机器学习: svm 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本周學習內容為SVM的基本原理和運用。

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

1、什么是SVM

SVM的全稱是Support Vector Machine,即支持向量機,主要用于解決模式識別領域中的數據分類問題,屬于有監督學習算法的一種。SVM要解決的問題可以用一個經典的二分類問題加以描述。如圖1所示,紅色和藍色的二維數據點顯然是可以被一條直線分開的,在模式識別領域稱為線性可分問題。然而將兩類數據點分開的直線顯然不止一條,這是線性分類器的特征。不同的分類方案,分類直線到兩類向量之間的面積是不一樣的,術語稱為“決策面”,svm試圖找到一個直線量兩個類分類,并且面積最大的最優的解,而這個直線取決于兩個類型最邊界的三個向量。

線性分類器

svm分類器

svm數學模型和約束

svm的優缺點:

優點:模型訓練魯棒性很強,對特征向量、噪音數據不敏感,預測快,占內存少。

缺點:訓練耗時,時間復雜度是O(N的立方),至少是N的平方,對于太多維度的尋里昂非常耗時和耗費資源。

svm是一種非常優秀的分類器,老師說在深度學習出現之前,它統治機器學習領域20年。

2、svm的優化

現實場景中,使用svm訓練可能遇到很多的問題,比如奇怪的數據,比如異常數據outlier的樣本數據,一種分類中存在另一種分類的樣本,我們需要通過帶松弛變臉的svm進行處理,避免無解。松弛變量是常數C,常數C可控制松弛的量度。

帶松弛變量的svm

松弛變量數學模型。

SVM雖然解決的是二分類問題,但可以擴展到多個分類問題。

1)、可以對每個需要識別的類型分別訓練一個分類模型,用于預測的時候,哪個分類器的預測值高(wtix),就取哪個。

2)、對K個類別,訓練k*(k-1)/2個Svm,預測的時候采用投票方式決定,哪個次數多選哪個。

以上方法適用于每種分類模型。

3、作業:

用特征數據預測蘑菇是否有毒。

import pandas as pd import numpy as np# 導入數據 mush_df = pd.read_csv('./data/mushrooms.csv')# 將值從字母轉換為 mush_df_encoded = pd.get_dummies(mush_df) ##獨熱(ont-hot)編碼,將離散的值轉(ABC)換為數字mush_df.head()# 將特征和類別標簽分布賦值給 X 和 y X_mush = mush_df_encoded.iloc[:,2:] y_mush = mush_df_encoded.iloc[:,1] #查看特征數據 X_mush.head() #查看標簽 y_mush.head() #訓練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) ##這里采用的核函數為線性分類器linear,經過測試效果比非線性的好 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)) ##結果展示,全是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

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。