libsvm相关变量总结以及libsvm 参数粗调、微调技巧 和PCA主成分分析princomp函数的使用

2023-10-27

libsvm搭建的支持向量机运行起来,在命令行里会蹦出很多变量,开始的时候,我不以为意。现在想想这样糊弄,到最后还是稀里糊涂,不如一次总结,当做日后的复习资料。

运行起来会出现这些:

1.变量总结

     *

optimization finished, #iter = 162

nu = 0.431029

obj = -100.877288, rho = 0.424462

nSV = 132, nBSV = 107

      Total nSV = 132


其中:

#iter为迭代次数

nu是选择的核函数类型的参数

objSVM文件转换为的二次规划求解得到的最小值

rho为判决函数的偏置项b

nSV 为标准支持向量个数(0<a[i]<c)

nBSV为边界上的支持向量个数(a[i]=c)

Total nSV为支持向量总个数(对于两类来说,因为只有一个分类模型Total nSV = nSV但是对于多类,这个是各个分类模型的nSV之和)。

2.libsvm参数粗调与微调

先给出SVMcgForClass函数的代码(这个函数是《MATLAB神经网络30个案例分析》这本书里面用于对svm,c、g变量进行交叉验证的函数)

function [bestacc,bestc,bestg] = SVMcgForClass(train_label,train,cmin,cmax,gmin,gmax,v,cstep,gstep,accstep)
%SVMcg cross validation by faruto

%
% by faruto
%Email:patrick.lee@foxmail.com QQ:516667408 http://blog.sina.com.cn/faruto BNU
%last modified 2010.01.17
%Super Moderator @ www.ilovematlab.cn

% 若转载请注明:
% faruto and liyang , LIBSVM-farutoUltimateVersion 
% a toolbox with implements for support vector machines based on libsvm, 2009. 
% Software available at http://www.ilovematlab.cn
% 
% Chih-Chung Chang and Chih-Jen Lin, LIBSVM : a library for
% support vector machines, 2001. Software available at
% http://www.csie.ntu.edu.tw/~cjlin/libsvm

% about the parameters of SVMcg 
if nargin < 10
    accstep = 4.5;
end
if nargin < 8
    cstep = 0.8;
    gstep = 0.8;
end
if nargin < 7
    v = 5;
end
if nargin < 5
    gmax = 8;
    gmin = -8;
end
if nargin < 3
    cmax = 8;
    cmin = -8;
end
% X:c Y:g cg:CVaccuracy
[X,Y] = meshgrid(cmin:cstep:cmax,gmin:gstep:gmax);
[m,n] = size(X);
cg = zeros(m,n);

eps = 10^(-4);

% record acc with different c & g,and find the bestacc with the smallest c
bestc = 1;
bestg = 0.1;
bestacc = 0;
basenum = 2;
for i = 1:m
    for j = 1:n
        cmd = ['-v ',num2str(v),' -c ',num2str( basenum^X(i,j) ),' -g ',num2str( basenum^Y(i,j) )];
        cg(i,j) = svmtrain(train_label, train, cmd);
        
        if cg(i,j) <= 55
            continue;
        end
        
        if cg(i,j) > bestacc
            bestacc = cg(i,j);
            bestc = basenum^X(i,j);
            bestg = basenum^Y(i,j);
        end        
        
        if abs( cg(i,j)-bestacc )<=eps && bestc > basenum^X(i,j) 
            bestacc = cg(i,j);
            bestc = basenum^X(i,j);
            bestg = basenum^Y(i,j);
        end        
        
    end
end
% to draw the acc with different c & g
figure;
[C,h] = contour(X,Y,cg,70:accstep:100);
clabel(C,h,'Color','r');
xlabel('log2c','FontSize',12);
ylabel('log2g','FontSize',12);
firstline = 'SVC参数选择结果图(等高线图)[GridSearchMethod]'; 
secondline = ['Best c=',num2str(bestc),' g=',num2str(bestg), ...
    ' CVAccuracy=',num2str(bestacc),'%'];
title({firstline;secondline},'Fontsize',12);
grid on; 

figure;
meshc(X,Y,cg);
% mesh(X,Y,cg);
% surf(X,Y,cg);
axis([cmin,cmax,gmin,gmax,30,100]);
xlabel('log2c','FontSize',12);
ylabel('log2g','FontSize',12);
zlabel('Accuracy(%)','FontSize',12);
firstline = 'SVC参数选择结果图(3D视图)[GridSearchMethod]'; 
secondline = ['Best c=',num2str(bestc),' g=',num2str(bestg), ...
    ' CVAccuracy=',num2str(bestacc),'%'];
title({firstline;secondline},'Fontsize',12);

然后应用这个函数对c、g参数进行交叉验证,会得到一个比较粗略的范围,一个是2维的logc,logg的等高图,一个是3维的准确率,logc,logg的图。通过先出的图得到一个比较粗略的c、g范围,然后在这个范围上进一步缩小范围,同时accstep变量是画出图像的步长,通过调节这个值可以方便地将图放大缩小。




3.PCA主成分分析princomp函数的使用

这个函数有一个比较变态的地方就是 行列变换容易把人搞糊涂。

基本形式就是这个了:[COEFF,SCORE,latent,tsquare] = princomp(X)

1、输入参数 X 是一个 n 行 p 列的矩阵。每行代表一个样本观察数据,每列则代表一个属性,或特征

2、COEFF 就是所需要的特征向量组成的矩阵,是一个 p 行 p 列的矩阵,每列表示一个出成分向量,经常也称为(协方差矩阵的)特征向量。并且是按照对应特征值降序排列的。所以,如果只需要前 k 个主成分向量,可通过:COEFF(:,1:k) 来获得。

3、SCORE 表示原数据在各主成分向量上的投影。但注意:是原数据经过中心化后在主成分向量上的投影(the representation of X in the principal component space.  Rows of SCORE correspond to observations, columns to components.)。即通过:SCORE = x0*COEFF 求得。其中 x0 是中心平移后的 X(注意:是对维度进行中心平移,而非样本。),因此在重建时,就需要加上这个平均值了。

4、latent 是一个列向量,表示特征值,并且按降序排列。(the principal component   variances, i.e., the eigenvalues of the covariance matrix of X)。


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

libsvm相关变量总结以及libsvm 参数粗调、微调技巧 和PCA主成分分析princomp函数的使用 的相关文章

  • 图神经网络与智能教育:创新教育技术的未来

    导言 图神经网络 GNNs 和智能教育技术的结合为教育领域注入新活力 本文深入研究二者的结合可能性 涉及各自侧重 当前研究动态 技术运用 实际场景 未来展望 并提供相关链接 1 图神经网络与智能教育的结合方向 1 1 图神经网络在教育技术中
  • 山西电力市场日前价格预测【2024-01-09】

    日前价格预测 预测说明 如上图所示 预测明日 2024 01 09 山西电力市场全天平均日前电价为314 92元 MWh 其中 最高日前电价为593 66元 MWh 预计出现在18 15 最低日前电价为54 95元 MWh 预计出现在13
  • 自动驾驶轨迹预测

    目录 神经网络轨迹预测综述 比较新的轨迹预测网络 Uber LaneRCNN 5 Google VectorNet 6 Huawei HOME 7 Waymo TNT 8 Aptive Covernet 9 NEC R2P2 10 商汤 T
  • 毕业设计-基于深度学习的细菌微生物目标检测系统系统 YOLO python 目标检测 人工智能 卷积神经网络 机器学习

    目录 前言 设计思路 一 课题背景与意义 二 算法理论原理 2 1 CBAM模块 2 2 损失函数 三 检测的实现 3 1 数据集 3 2 实验环境搭建 3 3 实验及结果分析 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一
  • MATLAB 中 10 重 SVM 分类的示例

    我需要一个描述性示例来展示如何对两类数据集进行 10 倍 SVM 分类 MATLAB 文档中只有一个示例 但不是 10 倍 有人能帮我吗 这是一个完整的示例 使用生物信息学工具箱中的以下函数 SVMTRAIN http www mathwo
  • 机器学习算法实战案例:时间序列数据最全的预处理方法总结

    文章目录 1 缺失值处理 1 1 统计缺失值 1 2 删除缺失值 1 3 指定值填充 1 4 均值 中位数 众数填充
  • 如何用GPT进行论文润色与改写?

    详情点击链接 如何用GPT GPT4进行论文润色与改写 一OpenAI 1 最新大模型GPT 4 Turbo 2 最新发布的高级数据分析 AI画图 图像识别 文档API 3 GPT Store 4 从0到1创建自己的GPT应用 5 模型Ge
  • GPT4+Python近红外光谱数据分析及机器学习与深度学习建模

    详情点击链接 GPT4 Python近红外光谱数据分析及机器学习与深度学习建模 第一 GPT4 入门基础 1 ChatGPT概述 GPT 1 GPT 2 GPT 3 GPT 3 5 GPT 4模型的演变 2 ChatGPT对话初体验 注册与
  • 5_机械臂运动学基础_矩阵

    上次说的向量空间是为矩阵服务的 1 学科回顾 从科技实践中来的数学问题无非分为两类 一类是线性问题 一类是非线性问题 线性问题是研究最久 理论最完善的 而非线性问题则可以在一定基础上转化为线性问题求解 线性变换 数域 F 上线性空间V中的变
  • AI 赋能绿色制冷,香港岭南大学开发 DEMMFL 模型进行建筑冷负荷预测

    近年来 城市化进程加速所带来的碳排放量骤增 已经严重威胁到了全球环境 多个国家均已给出了 碳达峰 碳中和 的明确时间点 一场覆盖全球 全行业的 绿色革命 已经拉开序幕 在一众行业中 建筑是当之无愧的能耗大户 其中又以暖通空调 Heating
  • sklearn多类SVM函数

    我有多个类标签 想要计算模型的准确性 我有点困惑我需要使用哪个 sklearn 函数 据我了解 以下代码仅用于二元分类 dividing X y into train and test data X train X test y train
  • 文本分类方法?支持向量机和决策树

    我有一个训练集 我想使用分类方法根据我的训练集对其他文档进行分类 我的文档类型是新闻 类别是体育 政治 经济等 我完全理解朴素贝叶斯和KNN 但是SVM和决策树很模糊 我不知道我是否可以自己实现这个方法 或者有使用这种方法的应用程序吗 我可
  • 测试示例集属性应等于训练示例集 Rapidminer SVM 的 OR 超集

    I am new to Rapid Miner and using SVM Linear in it My model is as I made Training Example set which consist of 3552 exam
  • 使用支持向量回归进行时间序列预测

    我一直在尝试使用Python语言中的支持向量回归来实现时间序列预测工具 我使用 scikit learn 中的 SVR 模块进行非线性支持向量回归 但我对未来事件的预测有严重的问题 回归线非常适合原始函数 根据已知数据 但一旦我想预测未来的
  • 如何加速sklearn SVR?

    我正在实施SVR http en wikipedia org wiki Support vector machine Regression using sklearn http scikit learn org stable python
  • 如何使用 SVM 预测多类情感分析问题中的所有类?

    好吧 我正在制作一个情感分析分类器 我有三个类别 标签 积极 中性和消极 我的训练数据的形状是 14640 15 其中 negative 9178 neutral 3099 positive 2363 我对数据进行了预处理 使其标准化 并将
  • 如何加载之前存储的svm分类器?

    我正在 Visual Studio 中使用 openCV SVM OpenCV 2 4 4 0 我训练它 mySVM train trainingDataMat labelsMat Mat Mat params 已保存 mySVM save
  • 如何解释R中SVM的预测结果?

    我是 R 新手 我正在使用e1071R 中的 SVM 分类包 我使用了以下代码 data lt loadNumerical model lt svm data ncol data data ncol data gamma 10 print
  • 将 OneClassSVM 与 GridSearchCV 结合使用

    我正在尝试在 OneClassSVM 上执行 GridSearchCV 函数 但我似乎无法找到 OCSVM 的正确评分方法 根据我收集的信息 像 OneClassSVM score 这样的东西不存在 因此 GridSearchCV 中没有所
  • 选择 c 和 gamma 值

    您好 我正在使用 SMO 执行 SVM 分类 其中我的内核是 RBF 现在我想选择c and sigma值 使用网格搜索和交叉验证 我是内核函数的新手 请帮助 一步一步的过程 选择一些您认为有趣的 C 和 sigma 值 例如 C 1 10

随机推荐

  • QJsonObject 类

    1 QJsonObject简介 QJsonObject类封装了一个JSON对象 JSON对象是键值对的列表 其中键是唯一的字符串 值由QJsonValue表示 QJsonObject可以转换为QVariantMap 也可以从QVariant
  • k8s动态使用glusterfs存储

    k8s中运行Heketi服务 在使用kismatic安装k8s和glusterfs后 需要配置k8s默认动态管理 provisioning 使用glusterfs 以下内容是实现这样的目的 Hekeli glusterfs的restful端
  • Scrapy框架的使用之Scrapy通用爬虫

    通过Scrapy 我们可以轻松地完成一个站点爬虫的编写 但如果抓取的站点量非常大 比如爬取各大媒体的新闻信息 多个Spider则可能包含很多重复代码 如果我们将各个站点的Spider的公共部分保留下来 不同的部分提取出来作为单独的配置 如爬
  • word目录编号自动更新排版技巧

    二 多级列表生成目录 文档中一般需要插入目录 手动添加 写上页面非常麻烦 而且文档修改后还得手动修改 今天给大家介绍一种通过多级列表生成目录的方法 1 选择多级列表 定义新的多级列表 2 选择 要修改的级别 选择1 在样式中 选择样式 级别
  • 数字电路-门电路

    摘要 本章系统地讲述了数字集成电路中的基本逻辑单元电路 门电路 由于门电路中的二极管和三极管经常工作在开关状态 所以首先介绍它们在开关状态下的工作特性 然后 重点讨论了目前广泛使用的CMOS门电路和TTL门电路 对于每一种门电路 除了讲解它
  • java21天打卡-day14 日期时间

    import java util Calendar import java util Date public class Day14 数字和日期 Date 题目1 分别打印出当前时间所属的年月日 Calendar类 题目2 计算出当前时间的
  • buuctf-[极客大挑战 2019]LoveSQL

    打开靶机进入之后是个登录界面 查看源码得知是get类型注入 因为是sql注入的题嘛 所以我们直接尝试用万能密码进行登录 用户名1 or 1 1 密码随意 成功登录 并没有得到flag 此时发现url中貌似可以进行sql注入 并且已经把万能密
  • scrapy 部署到服务器上

    1 安装依赖库 pip install scrapyd pip install scrapyd client 2 验证是否成功 cmd中输入 scrapyd deploy h 如下图ok的 3 运行 scrapyd dep 若遇到错误 报错
  • 运行报错Parsing error: The keyword ‘import‘ is reserved

    问 运行报错Parsing error The keyword import is reserved 答 分析 这是因为我们还没有在配置文件 eslintrc中配置parserOptions来指定语言版本为和模块类型 在 eslintrc添
  • uniapp 微信小程序webview 踩坑

    uniapp 微信小程序的存在许多功能上的限制和约束 有些情况不得不去使用webview进行开发实现需求 比如 原生无法满足 例如某团队维护SDK 只提供了WEB端jsSDK 且不维护小程序SDK H5可以同时适用多端 适用范围更广 H5可
  • 13LinuxC线程学习之利用pthread_create设置线程分离属性和相关属性解释

    1 线程属性 1 本节作为指引性介绍 linux下线程的属性是可以根据实际项目需要 进行设置 之前我们讨论的线程都是采用线程的默认属性 默认属性已经可以解决绝大多数开发时遇到的问题 如我们对程序的性能提出更高的要求那么需要设置线程属性 比如
  • java常用类之Math类--Java笔记

    Math类包含的一些用于数学运算的静态方法 1 abs 绝对值 System out println 1 t Math abs 10 2 pow 求幂 System out println 2 t Math pow 10 2 3 ceil
  • 什么是PROFINET?PROFINET支持哪些通信方式?

    什么是PROFINET PROFINET 通讯是一种新的以太网通讯系统 是由西门子公司和Profibus用户协会开发 PROFINET具有多制造商产品之间的通讯能力 自动化和工程模式 并针对分布式智能自动化系统进行了优化 其应用结果能够大大
  • F-Measure MCC ROC Area PRC Area_MCC学生会

    传媒学院学生会 媒体运营部 水墨勾染纸笺 是山海的讯息 尘世浮华轮换 是星辰的轨迹 用笔尖筑起一座城 用光影编成一曲歌 我们是凡嚣之外的不同颜色 抬眼看花开花落 云卷云舒 红霞满天 千种美景 万缕愁思 卷携着落日 我想把无数次的擦肩而过和这
  • python3GUI--在线小说播放器By:PyQt5(附ui源码)

    文章目录 一 准备工作 1 PyQt5 2 qtawesome 3 QMediaPlayer 4 LAVFilters 二 预览 1 启动 2 查看小说详情 播放小说 3 搜索后播放 4 动态演示 三 设计流程 1 UI设计 2 整体流程设
  • pycharm自带python解释器吗,如何设置默认PyCharm解释器?

    My PyCharm installation has two interpreters available Python 3 3 2 usr bin python3 3m Python 2 7 5 usr bin python2 7 Wh
  • docker获取镜像image id命令_Docker之镜像和容器基础操作命令

    本篇文章是介绍镜像 image 和 容器 container 的基础操作命令 后直接使用英文 image 和 container 替代 首先来讲解释一下 image 和 container 的关系 image 概念 image 就是我们从
  • Blender 建模案例一(1)

    目录 1 指环 1 1 创建一个柱体 1 2 柱体微调 1 3 缩放 1 4 应用缩放 1 5 物体属性回归默认 1 6 进入编辑模式 1 7 内插面 1 8 桥接循环边 1 9 添加表面细分修改器 1 10 平滑着色 1 11 添加环切
  • LTH7锂电池充电IC

    LTH7是一个完善的单片锂离子电池恒流 恒压线形电源管理芯片 它薄的尺寸和小的外包装使它便于便携应用 更值得一提的是 LTH7专门设计适用于USB的供电规格 得益于内部的MOSFET 结构 在应用上不需要外部电阻 和阻塞二极管 在高能量运行
  • libsvm相关变量总结以及libsvm 参数粗调、微调技巧 和PCA主成分分析princomp函数的使用

    libsvm搭建的支持向量机运行起来 在命令行里会蹦出很多变量 开始的时候 我不以为意 现在想想这样糊弄 到最后还是稀里糊涂 不如一次总结 当做日后的复习资料 运行起来会出现这些 1 变量总结 optimization finished i