Python支持向量机
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Python支持向量機
1 聲明
本文的數據來自網絡,部分代碼也有所參照,這里做了注釋和延伸,旨在技術交流,如有冒犯之處請聯系博主及時處理。
2 支持向量機簡介
相關概念見下:
支持向量機通過尋找訓練數據里最大化類之間距離的超平面來來對數據進行分類。
間隔是對是對訓練樣本里距離分離超平面(決策邊界)最近時的距離,這些最近的訓練樣本叫做支持向量,支持向量機由此得名。
由上圖不難發現這里的間隔即為
而 這里對最大間隔的求解轉換為求ω的最小值。詳細的推導這里不再展開,后續再補充。
松弛變量
軟間隔英文名soft-margin classification記作 ,對于非線性可分數據,需要放寬限制,在存在誤分類的情況下,加入適當的懲罰,以達到優化收斂的目的。將正的松弛變量添加到線性約束中:
新的目標函數變成:
這里C是個控制參數,用它控制對錯誤分類的懲罰程度。較大的C值對應較大的錯誤懲罰,對錯誤分類越敏感,越接近硬間隔,而如果選擇較小的C值,則對誤分類錯誤不那么嚴格。
對于數據集線性不可分的,可以將數據映射到高維空間中找到該空間的分離超平面,從而對數據進行分類。
核函數
為了利用支持向量機解決非線性問題,我們通過映射函數 將訓練數據轉換到一個高維特征空間,并訓練一個線性支持向量機模型,在這個新的特征空間對數據進行分類。為了降低兩點間點積的昂貴的計算,引進了核函數。常見核函數有:徑向基函數核(Radial Basis Function kernel ?RBF核)或高斯核(Gaussian kernel)
3 支持向量機代碼與注釋示例
# 加載相關包 from sklearn.svm import SVC from sklearn import datasets from sklearn.preprocessing import StandardScaler import numpy as np # 加載鳶尾花數據集 iris = datasets.load_iris() features = iris.data target = iris.target # 標準化特征 scaler = StandardScaler() features_standardized = scaler.fit_transform(features) # 常見支持向量機 svc = SVC(kernel="linear", probability=True, random_state=0) # 訓練分類 model = svc.fit(features_standardized, target) new_observation = [[.4, .4, .4, .4]] # 查看概率值 print(model.predict_proba(new_observation))????
4 總結
無
總結
以上是生活随笔為你收集整理的Python支持向量机的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微贷产品有哪些
- 下一篇: Python 多种算法模型对比