LIBSVM 使用

2023-11-18

预备

正文

a 编译libsvm

uname@hname : ~/libsvm $ make
g++ -Wall -Wconversion -O3 -fPIC -c svm.cpp
g++ -Wall -Wconversion -O3 -fPIC svm-train.c svm.o -o svm-train -lm
g++ -Wall -Wconversion -O3 -fPIC svm-predict.c svm.o -o svm-predict -lm
g++ -Wall -Wconversion -O3 -fPIC svm-scale.c -o svm-scale

b svmguide1 (类别平衡数据)

代码wrap.py, 详见附录.

  1. $ python3 wrap.py --kernel rbf --C 1
    Accuracy = 66.925% (2677/4000) (classification)
  2. $ python3 wrap.py --kernel rbf --C 1 --scale
    Accuracy = 96.15% (3846/4000) (classification)
  3. $ python3 wrap.py --kernel linear --C 1
    Accuracy = 95.675% (3827/4000) (classification)
    $ python3 wrap.py --kernel linear --C 1 --scale
    Accuracy = 95.675% (3827/4000) (classification)
  4. $ python3 wrap.py --kernel rbf --C 1000
    Accuracy = 70.475% (2819/4000) (classification)
    $ python3 wrap.py --kernel rbf --C 1000 --scale
    Accuracy = 96.725% (3869/4000) (classification)
  5. $ python3 easy.py ../../data/svmguide1.tr ../../data/svmguide1.te
    Best c=2.0, g=2.0 CV rate=96.9893
    Accuracy = 96.875% (3875/4000) (classification)

请添加图片描述

结论

  • rbf核svm对数据规范化敏感, 线性核svm对数据规范化不敏感.
  • 可以通过调整超参数(正则化参数)提高(rbf核)svm的性能.
  • 调参(搜索最优参数)需要网格搜索(grid search), 代价是巨大的, 训练测试分类器的次数关于需要调的参数的个数是指数级增长的.

注意easy.py需要修改一行代码

52c52
< cmd = '{0} -svmtrain "{1}" -gnuplot "{2}" "{3}"' ...
---
> cmd = 'python3 {0} -svmtrain "{1}" -gnuplot "{2}" "{3}"' ...

否则需要执行$ chmod +777 /path/to/grid.py.

c shuttle 类别不平衡数据

代码peek.py, 详见附录.

dataset label count note
svmguide1 {1: 4000, 0: 3089} balance
shuttle {1: 35033, 4: 6906, 5: 2525, 3: 133, 2: 37, 7: 11, 6: 6} imbalance

代码wrap.py, 详见附录.

$ python3 wrap.py --dataset shuttle
Accuracy = 98.0017% (1128/1151) (classification)
$ python3 wrap.py --dataset shuttle --weight_class
Accuracy = 85.0565% (979/1151) (classification)

根据{1: 35033, 4: 6906, 5: 2525, 3: 133, 2: 37, 7: 11, 6: 6}, 输入一组参数

-w4 5.0728352157544165 (== 35033 / 6906)
-w5 13.874455445544555 (== 35033 / 2525)
-w3 263.406015037594   (== 35033 / 133)
-w2 946.8378378378378  (== 35033 / 37)
-w7 3184.818181818182  (== 35033 / 11)
-w6 5838.833333333333  (== 35033 / 6)

这一组参数十分夸张, 准确率大幅下降了. 但是如果我们仔细观察预测输出和真实标签, 我们就发现模型在较多的类上错误增加, 但是在较少的类上错误减少.

代码tmp.py, 详见附录.

argument error
with weight_class {1: 167, 4: 5}
without weight_class {1: 9, 4: 13, 3: 1}

启发式的输入另一组参数

-w4 1.025
-w3 1.005

好吧, 只多正确分类一个

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LIBSVM 使用 的相关文章

  • 使用 opencv 构建自定义 svm 内核矩阵

    我必须训练支持向量机模型 并且我想使用自定义内核矩阵 而不是预设的矩阵 如 RBF Poly 等 我怎样才能用opencv的机器学习库做到这一点 如果可能的话 谢谢你 AFAICT OpenCV 不直接支持 SVM 的自定义内核 看起来 L
  • OPencv SVM预测概率

    我正在使用 BOW 模型和 SVM 开发一个图像分类项目 我想找出SVM预测概率 但opencv svm中没有这样的函数 有什么办法可以做到这一点吗 我想找出 n 类 SVM 的预测概率 不 你不能用 CvSVM 做到这一点 OpenCV
  • 机器学习--LibSVM

    传统机器学习的故障诊断方法 就是利用分类器对不同工况进行分类 大致流程包括 在这里使用Matlab调用LibSVM库 跑一个简单的故障诊断模型 数据集选用凯斯西储大学轴承数据集 CWRU 对轴承内圈 外圈 滚珠等共10种工况进行故障诊断 滚
  • R 中用于文本分类的 SVM

    我正在使用支持向量机对我的文本进行分类 但实际上我并没有得到结果 而是得到了数值概率 数据框 1 20 训练集 21 50 测试集 Updated ou lt structure list text structure c 1L 6L 1L
  • SVM 分类 - 每个类别的最小输入集数量

    我正在尝试构建一个应用程序来检测来自网页的广告图像 一旦我检测到这些 我将不允许它们显示在客户端 从我得到的帮助这个 Stackoverflow 问题 我认为 SVM 是实现我的目标的最佳方法 所以 我自己编写了 SVM 和 SMO 我从
  • 手动计算SVM的决策函数

    我正在尝试使用Python库SKLearn手动计算SVC分类器的decision function 而不是使用内置方法 我已经尝试了几种方法 但是 当我don t扩展我的数据 z是一个测试数据 已缩放 我认为其他变量本身就说明了问题 另外
  • 使用GridSearchCV时出现值错误

    我正在使用 GridSearchCV 进行分类 我的代码是 parameter grid SVM dual True False loss squared hinge hinge penalty l1 l2 clf GridSearchCV
  • 如何为 Python 设置 LIBSVM

    I built libsvm http www csie ntu edu tw cjlin libsvm 在 Mac OS X 上使用 Make tar xzfv libsvm 3 17 tar gz cd libsvm 3 17 make
  • 根据精度、召回率、f1 分数计算准确度 - scikit-learn

    我犯了一个巨大的错误 我将 scikit learn svm 准确度的输出打印为 str metrics classification report trainExpected trainPredict digits 6 现在我需要根据以下
  • 绘制超平面线性SVM python

    我正在尝试绘制使用 LinearSVC 和 sklearn 训练的模型的超平面 请注意 我正在使用自然语言 在拟合模型之前 我使用 CountVectorizer 和 TfidfTransformer 提取了特征 这里是分类器 from s
  • 无法绘制 svm 图。 terms.default(x) 中的错误:没有术语组件或属性

    我可以在我的数据集上使用 R 包 e1071 运行 svm 但我无法使用任何两个预测变量来绘制图表 即使在谷歌搜索了很多之后我也无法找到它的解决方案 请专家帮我解决这个问题 我有一个具有以下属性的数据集 gt dim fulldata 1
  • R - mlr:是否有一种简单的方法可以在嵌套重采样(空间)中获得调整后的支持向量机模型的可变重要性?

    我正在尝试获取可变重要性对于a的所有预测变量 或变量 或特征 调优支持向量机 SVM 模型使用e1071 svm通过mlr 封装在R 但我不确定我的评估是否正确 好吧 一开始的想法是 为了获得诚实调整的 svm 模型 我遵循嵌套重采样教程
  • Python OpenCV SVM 实现

    因此 我有一个包含样本图像的矩阵 全部转换为向量 该矩阵通过 PCA LDA 运行 还有一个向量表示每个图像所属的类 现在我想使用 OpenCV SVM 类来训练我的 SVM 我使用的是 Python OpenCV 2 3 1 但我在定义参
  • R SVM 对于缺失数据的预测返回 NA

    我尝试使用 e1071 包中经过训练的 SVM 进行预测 但我的数据包含一些缺失值 NA 当该实例有任何缺失值时 我希望返回的预测为 NA 我尝试使用 na action na pass 如下 但它给了我一个错误 名称错误 ret2 如果我
  • LinearSVC sklearn (scikit-learn) 中 C 的行为

    首先我创建一些玩具数据 n samples 20 X np concatenate np random normal loc 2 scale 1 0 size n samples np random normal loc 20 0 scal
  • 在 Matlab 中使用 svmtrain 内存不足

    我有一组数据正在尝试使用 SVM 来学习 对于上下文 数据的维数为 35 包含大约 30 000 个数据点 我之前用这个数据集在 Matlab 中训练过决策树 大约花了 20 秒 由于对错误率不太满意 我决定尝试 SVM 我第一次尝试svm
  • 一类 SVM libSVM

    假设我的特征向量是 x1 x2 xn 谁能给我一个使用 libSVM 训练一类 SVM 的代码 我应该如何使用交叉验证来学习参数 这可能对你有帮助 label ones Number Of your training instances 1
  • sklearn 中的 SVM 支持增量(在线)学习吗?

    我目前正在设计一个文本文章推荐系统 有趣 或 不有趣 的二元情况 我的要求之一是它应该不断更新以适应不断变化的趋势 据我所知 最好的方法是利用支持增量 在线学习 http en wikipedia org wiki Online 5fmac
  • 如何使用SVM求精确率、召回率、准确率?

    重复计算 Precision Recall 和 F Score https stackoverflow com questions 16927964 how to calculate precision recall and f score
  • libsvm 收缩启发法

    我在 C SVC 模式下使用 libsvm 和 2 次多项式内核 并且需要训练多个 SVM 在训练期间 我训练的一些 SVM 会收到以下一个或什至两个警告 WARNING using h 0 may be faster WARNING re

随机推荐

  • 5 分钟快速掌握 OKR 管理法 - OKR 实施篇

    上文 5 分钟快速掌握 OKR 管理法 OKR 理论篇 我们讲到 OKR 的价值和意义 这次重点介绍 OKR 如何实施落地 真正为企业发展发挥作用 怎么制定目标 一个合理的目标需要符合三个原则 第一 与战略目标一致 对公司长期发展有价值 第
  • 力扣(LeetCode)2488. 统计中位数为 K 的子数组(C++)

    哈希表 找不到 O n O n O n 思路 试一下等价代换 数组所有数字大小不同 说明数组中最多有一个 k 数组的 k 要包含在 子数组 里 为了便于思考 分析奇数长度的子数组 在子数组里 大于 k 的数 和小于 k 的数 二者数量相等时
  • 深度学习用什么显卡?3060显卡适合深度学习吗?

    都知道深度学习很吃显卡 显存越大 可以缓存的内容就越多 对于非常吃显存的图像类深度学习程序来说 显存太小的显卡批处理就不能调太大 否则会程序会报错 深度学习用什么显卡 3060显卡适合深度学习吗 本文来解答一下这个问题 3060显卡适合深度
  • Spring动态代理用JDK还是用CGLIB?

    切面编程是Spring中非常重要的一个模块 切面编程的实现原理是动态代理 那么动态代理又有两种实现方式 一种方法是直接实现JDK中的InvocationHandler接口 另一种方法是继承CGLIB 那么问题来了 这两种方法有啥区别呢 分别
  • 数据结构——图的DFS(深度优先遍历)- C语言代码实现

    图的深度优先遍历的基本思想 从图中某顶点v出发 1 访问顶点v 2 依次从v的未被访问的邻接点出发 对图进行深度优先遍历 直至图中和v有路径相通的顶点都被访问 3 若此时图中尚有顶点未被访问 则从一个未被访问的顶点出发 重新进行深度优先遍历
  • Javescribt Library Javescript 库 总结

    Yahoo User Interface Library YUI Library YUI is a free open source JavaScript and CSS library for building richly intera
  • JavaScript 刷新或关闭网页时弹窗确认

    beforeunload事件在当页面关闭或刷新时调用 事件触发的时候弹出一个有确定和取消的对话框 确定则离开页面 取消则继续待在本页 有两种方法绑定事件 三种方法实现弹窗 通过 window addEventListener 对 retur
  • 轻量级前端MVVM框架avalon:整体架构

    单看这个图呢 还木有说明 感觉有点蛋疼 作者的将夜 www jiangyea com抽象度太高了 还好在前面已经大概分析过了执行流程 如图 左边是View视图 我们就理解html结构 换句话就是说用户能看到的界面 渲染页面 绑定事件 切换类
  • 【UE4 像素流 WEBUI插件】部署像素流

    目录 一 单实例本地像素流送 步骤 1 勾选插件 2 打包工程并启动信令服务器 3 创建快捷方式并启动游戏 二 单实例局域网像素流送 步骤 1 编辑cirrus js 2 编辑快捷方式属性 3 启动 三 集成WEBUI插件 一 单实例本地像
  • c++深度搜索详解

    1 什么是深度搜索 从计算机科学专业上讲 深度优先搜索算法是最常用图的搜索算法之一 这一算法也是很多重要的图的算法的原型 深度优先搜索其英文全称是Depth First Search 简称DFS 深度搜索的特点是先看 一个方向 例如 骑士在
  • STL deque 源码——deque特点、实现框架、源码分段剖析、常用函数总结(上)

    一 deque的一些特点 支持随机访问 即支持 以及at 但是性能没有vector好 可以在内部进行插入和删除操作 但性能不及list deque 两端 都能够快速插入和删除元素 而vector只能在尾端进行 deque的元素存取和迭代器操
  • 查新报告怎么写?

    一 查新报告怎么写 二 查新报告怎么查 查新报告一般是在查新机构里查 这里给大家推荐一个权威的专业查新机构 掌桥科研 掌桥科研是一家中国的科技信息服务公司 总部位于北京市 公司的主营业务是为中国的科学研究机构 大学 企业等提供科研数据和技术
  • 个人银行管理系统6(C改Java)

    C语言版本 date h ifndef DATE H define DATE H class Date 日期类 private int year 年 int month 月 int day 日 int totalDays 该日期是从公元元年
  • vue项目中跳转到外部链接方法

    div 点我 div goPage url window location href url 直接跳转去外部的a链接
  • 关于Keil中Memory中观察不到数据变化的问题以及启动文件栈的初始化

    关于Keil中Memory中观察不到数据变化的问题 在KEIL中观察Memory数据变化 一定要记得只能在RAM地址或ROM之内观察 如下图所示 RAM的地址设置在地址为0x20000000开始的地方 大小为0x20000 因此只有在这个范
  • gorm+docker+mysql

    简介 ORM Object Relational Mapping 框架采用元数据来描述对象与关系映射的细节 元数据一般采用XML格式 并且存放在专门的对象一映射文件中 简单理解为一种框架的格式 gorm是Golang中一个非常出色的 旨在对
  • 38个MySQL数据库的小技巧

    1 如何快速掌握MySQL 培养兴趣 兴趣是最好的老师 不论学习什么知识 兴趣都可以极大地提高学习效率 当然学习MySQL 5 6也不例外 夯实基础 计算机领域的技术非常强调基础 刚开始学习可能还认识不到这一点 随着技术应用的深 入 只有有
  • java之MySQL数据库

    MySQL数据库 1 什么是数据库 答 数据库是以一定方式存储在一起 能予多个用户共享 具有尽可能小的冗余度 与应用程序彼此独立的数据集合 2 数据库的分类 具体含义 常见的数据库 答 关系型数据库和非关系型数据库 关系数据库 是建立在关系
  • springCloud - 第10篇 - 服务间调用追踪 (zipkin 的使用)

    前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住分享一下给大家 点击跳转到教程 一 在微服务系统中 不同应用服务可能会有各种不同的相互调用 springcloud 集成了 zipkin 来实现对于不同服务调用的追踪和统计
  • LIBSVM 使用

    预备 NTU TW Chih Chung Chang and Chih Jen Lin LIBSVM LIBSVM Data Classification Regression and Multi label 正文 a 编译libsvm u