首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python libsvm预测模型分析

python libsvm预测模型分析
EN

Stack Overflow用户
提问于 2012-04-08 21:44:43
回答 1查看 795关注 0票数 1

关于在python中使用libsvm的两个问题:

  1. 我如何知道这个问题是否可行?
  2. 如何得到原始变量(w和偏移量b)?

我使用一个简单的例子,考虑到2D空间中的4个训练点(由*描述):

代码语言:javascript
复制
*----*
|    |
|    |
*----*

我用C_SVC公式和线性核训练支持向量机,在两个标号-1,+1中对4点进行分类。

例如,当我设置像这样的训练点时,它应该找到一个分离的超平面。

代码语言:javascript
复制
{-1}----{+1}
 |       |
 |       |
{-1}----{+1}

但是对于这个非线性问题,它不应该找到一个分离的超平面(因为线性核)。

代码语言:javascript
复制
{+1}----{-1}
 |       |
 |       |
{-1}----{+1}

我希望能发现这个案子。

第二个示例的示例代码:

代码语言:javascript
复制
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)

样本输出:

代码语言:javascript
复制
optimization finished, #iter = 21
nu = 1.000000
obj = -40.000000, rho = 0.000000
nSV = 4, nBSV = 4
Total nSV = 4
EN

回答 1

Stack Overflow用户

发布于 2012-04-09 07:24:24

对C的指数网格运行交叉验证,如在线性核支持向量机上的libsvm指南中解释的那样。如果训练集的精度永远不能接近100%,就意味着线性模型对于数据来说是太有偏的,这就意味着线性假设是错误的(数据不是线性可分的)。

顺便说一下。测试集精度是对模型泛化能力的真实评价,但它度量的是偏差和方差之和,因此不能直接用于测量偏差。训练集和测试集之间的差异精确性度量了模型的方差或过度拟合。有关错误分析的更多信息可以在这个博客帖子中找到,它总结了来自毫升级在线类的实用技巧和技巧。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10066809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档