人体检测中,如何获取RBF核SVM的准确率、检测分数及核系数?
问题解决方案
1. 获取RBF核SVM的检测分数
在Python的sklearn.svm.SVC中,不用局限于predict()返回的0/1分类结果,可通过两种方式获取检测分数:
- 调用
decision_function()方法:返回样本到分类超平面的距离值,和线性SVM的检测分数逻辑一致,所有核类型(包括RBF)都适用。距离的正负对应分类类别,绝对值越大表示分类置信度越高。 - 调用
predict_proba()方法:初始化SVC时设置probability=True,训练后可返回样本属于各类别的概率值(范围0-1),但该方法需要额外做概率校准,会增加训练开销。
示例代码:
from sklearn.svm import SVC import numpy as np # 模拟HOG特征数据,实际使用替换为你的真实特征 X_train = np.random.rand(100, 128) y_train = np.random.randint(0, 2, 100) X_test = np.random.rand(20, 128) # 初始化RBF核SVM,启用概率计算(可选) svm_rbf = SVC(kernel='rbf', probability=True) svm_rbf.fit(X_train, y_train) # 获取距离形式的检测分数 decision_scores = svm_rbf.decision_function(X_test) # 获取概率形式的检测分数 prob_scores = svm_rbf.predict_proba(X_test) print("RBF核SVM的检测距离分数:", decision_scores) print("RBF核SVM的分类概率:", prob_scores)
2. 查看RBF核SVM的核心参数(替代线性SVM的coef_)
RBF核SVM采用对偶形式训练,不存在线性SVM那样的coef_(原始特征空间的权重系数)——因为RBF会把特征映射到无限维空间,无法直接输出高维空间的权重。但可以查看以下核心参数来理解模型:
support_vectors_:训练中筛选出的支持向量,是模型决策的关键样本。dual_coef_:对应支持向量的对偶系数,和核函数计算结果结合构成决策函数的核心部分。intercept_:决策函数的截距项,对应超平面的偏移量。
RBF核的决策函数公式为:
$f(x) = \sum_{i=1}^{n_s} \alpha_i y_i K(x, x_i) + b$
其中$\alpha_i$是dual_coef_中的元素,$x_i$是support_vectors_,$b$是intercept_,$K$是RBF核函数
示例代码:
# 查看RBF核SVM的核心参数 print("支持向量数量:", len(svm_rbf.support_vectors_)) print("支持向量:", svm_rbf.support_vectors_) print("对偶系数:", svm_rbf.dual_coef_) print("截距项:", svm_rbf.intercept_)
内容的提问来源于stack exchange,提问作者Bhavin
相关产品推荐
相关产品推荐

