支持向量机

本文详细介绍了支持向量机在高维空间中的高效性、内存效率,以及其分类、多分类、处理不平衡问题和核函数选择的方法。通过实例演示了如何使用sklearn库进行SVM编程。特别关注了决策函数形状、权重设置和不同核函数的选择技巧。
摘要由CSDN通过智能技术生成

支持向量机的优势:高维空间中高效,维度比样本数量多依然有效,内存利用高效。

缺点:选择核函数避免过拟合。

时间复杂度:线性

1.4.1 分类

from sklearn import svm
dataSet = [
    [
        [0,0], [1,1]
    ],
    [
        0,1
    ]
]
clf = svm.SVC(gamma='scale')
clf.fit(dataSet[0], dataSet[1])
print(clf.predict(dataSet[0]))
console: [0 1]
clf.support_vectors_ # 支持向量
clf.support_ # 获得支持向量的索引
clf.n_support_ # 两个类的支持向量的数量

1.4.2 多分类

from sklearn import svm
dataSet = [
    [
        [0,0], [1,1],[2,2]
    ],
    [
        0,1,2
    ]
]
clf = svm.SVC(gamma='scale',decision_function_shape="ovo")
clf.fit(dataSet[0], dataSet[1])
print(clf.predict(dataSet[0]))
print(clf.predict_proba(dataSet[0]))

对于决策函数的形状,我们有ovr和ovo。

print(clf.predict_proba(dataSet[0]))输出得分和概率,得分和概率和预测结果可能不同,得分采用交叉验证来拟合,而预测则不是。

1.4.3 非均衡问题

  1. 训练集不均衡,为训练集设置权重。
dataSet = [
    [
        [0,0], [1,1],[2,2]
    ],
    [
        0,1,2
    ],
    [
        1,1,2
    ]
]
clf.fit(dataSet[0], dataSet[1], sample_weight=dataSet[2])
  1. 类别不均衡,为类别设置权重。
clf = svm.SVC(gamma='scale', decision_function_shape="ovo",class_weight={0: 1, 1: 2, 2: 3})

类别不均衡,相当于某个类中的所有训练集,相同程度的不均衡。

1.4.4 核函数

  1. 预定义核
clf = svm.SVC(gamma='scale', decision_function_shape="ovo", kernel='rbf')
clf = svm.SVC(gamma='scale', decision_function_shape="ovo", kernel='linear')
  1. 自定义核
import numpy as np
from sklearn import svm


def myKernel(X, Y):
    return np.dot(X, Y.T)

clf = svm.SVC(kernel=myKernel)
  1. 使用Gram函数
gram = np.dot(X, Y.T)
clf = svm.SVC(gram, Y)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值