【Python機器學習基礎教程6】一個簡單的例子和支持向量機

例子摘自李航老師的《統計學習方法》,公式參考西瓜書或者《統計學習方法》

例:

已知一個如圖所示訓練集,正例點是x1 = (3,3),x2 = (4,3),反例點是x3 = (1,1),試求最大間隔分離超平面。

解:

以上是直接帶入公式的求解過程,如果使用python和庫函數來計算模型參數,將會方便很多,因爲不涉及向高維轉換,所以使用線性核即可。

from sklearn.svm import SVC
import numpy as np

data = {
    "X": np.array([[3, 3], [4, 3], [1, 1]]),
    "y": np.array([1, 1, -1])
}

# 如果採用高斯核,將對結果產生影響
svc = SVC(kernel="linear")
svc.fit(X=data["X"], y=data["y"])

# 輸出支持向量
print("support vector:", svc.support_vectors_)

# dual_coef_存儲α * y的值
a_y = svc.dual_coef_
# 類標
y = np.array([data["y"][svc.support_]])
print("支持向量的類標", y)
# 拉格朗日系數α
a = np.multiply(a_y, y)
print("支持向量的拉格朗日系數", a)

結果:

support vector: [[1. 1.]
 [3. 3.]]
支持向量的類標 [[-1  1]]
支持向量的拉格朗日系數 [[0.25 0.25]]

其實"dual_coef_"就是"ai*yi" 的集合,即:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章