关于在python中使用libsvm的两个问题:
我使用一个简单的例子,考虑到2D空间中的4个训练点(由*描述):
*----*
| |
| |
*----*我用C_SVC公式和线性核训练支持向量机,在两个标号-1,+1中对4点进行分类。
例如,当我设置像这样的训练点时,它应该找到一个分离的超平面。
{-1}----{+1}
| |
| |
{-1}----{+1}但是对于这个非线性问题,它不应该找到一个分离的超平面(因为线性核)。
{+1}----{-1}
| |
| |
{-1}----{+1}我希望能发现这个案子。
第二个示例的示例代码:
from svmutil import *
import numpy as np
y = [1, -1, 1, -1]
x = [{1:-1, 2 :1}, {1:-1, 2:-1}, {1:1, 2:-1}, {1:1, 2:1}]
prob = svm_problem(y, x)
param = svm_parameter()
param.kernel_type = LINEAR
param.C = 10
m = svm_train(prob, param)样本输出:
optimization finished, #iter = 21
nu = 1.000000
obj = -40.000000, rho = 0.000000
nSV = 4, nBSV = 4
Total nSV = 4发布于 2012-04-09 07:24:24
对C的指数网格运行交叉验证,如在线性核支持向量机上的libsvm指南中解释的那样。如果训练集的精度永远不能接近100%,就意味着线性模型对于数据来说是太有偏的,这就意味着线性假设是错误的(数据不是线性可分的)。
顺便说一下。测试集精度是对模型泛化能力的真实评价,但它度量的是偏差和方差之和,因此不能直接用于测量偏差。训练集和测试集之间的差异精确性度量了模型的方差或过度拟合。有关错误分析的更多信息可以在这个博客帖子中找到,它总结了来自毫升级在线类的实用技巧和技巧。
https://stackoverflow.com/questions/10066809
复制相似问题