LibSVMsharp的一个多分类小demo

关于libSVM的一些总结 libsvm相关参数 阅读详情

文章目录

emm

前几天使用一个如下图的libsvm的c#封装库进行多分类任务的demo,记录一下步骤;
在这里插入图片描述

Step

0、整理数据至合理范围(进行归一化处理,这里的数据在matlab中已经处理好了);
在这里插入图片描述

1、处理数据为libsvm能够识别的格式,可以使用libsvm提供的FormatDataLibsvm.xls进行快速处理,这里使用matlab进行文件写操作处理:

load('NIAB_shannonE_new.mat'); %加载文件
A=NIAB_shannonE_new;
fp = fopen('mydataset.txt','w'); %打开或创建新文件,没有则创建
for i=1:11052
	v1=A(1,i); %特征值
	v2=A(2,i);
	v3=A(3,i);
	v4=A(4,i);
	v5=A(5,i);
	v6=A(6,i); %标签
	%格式化数据
	formatSpec = '%d 1:%f 2:%f 3:%f 4:%f 5:%f \r\n';
	fprintf(fp,formatSpec,v6,v1,v2,v3,v4,v5); %输出文件
end
fclose(fp);		%关闭文件

转换格式后数据:
在这里插入图片描述

2、使用subset.py划分训练集和测试集:0.8:0.2(11052个样本数据–> 8842:2210)

cd SVMTest  
//划分数据集
python subset.py -s 0 mydataset.txt 8842 dataset_train.txt dataset_test.txt

3、使用训练样本进行训练,并使用测试样本进行测试来调整参数;
code:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

//添加LibSVM命名空间
//参考:https://github.com/ccerhan/LibSVMsharp/blob/master/LibSVMsharp.Examples.Classification/Program.cs
using LibSVMsharp.Helpers;
using LibSVMsharp.Extensions;
using LibSVMsharp;

namespace svmTest_CSharp
{
    class Program
    {
        static void PrintFunction(string output)
        {
            Console.Write(output);
        }

        static void Main(string[] args)
        {
            ////计算模型
            //设置用于访问输出日志的 print 函数
            SVM.SetPrintStringFunction(PrintFunction);
            //加载数据集           
            SVMProblem trainSet = SVMProblemHelper.Load("dataset_train.txt");
            SVMProblem testSet = SVMProblemHelper.Load("dataset_test.txt");                      
            //选择SVM参数
            SVMParameter parameter = new SVMParameter();
            parameter.Type = SVMType.C_SVC;
            parameter.Kernel = SVMKernelType.RBF;
            parameter.CacheSize = 2000;
            //调整参数至合适值
            parameter.C = 16;
            parameter.Gamma = 1.0;      
            //进行5折交叉验证判断参数设置是否正确
            double[] crossValidationResults;
            int nFold = 5;
            trainSet.CrossValidation(parameter, nFold, out crossValidationResults);
            //评估交叉验证结果,如果结果不好,重新设置参数C与Gamma
            double crossValidationAccuracy = trainSet.EvaluateClassificationProblem(crossValidationResults);
            //训练模型
            SVMModel model = trainSet.Train(parameter);
            //保存模型
            SVM.SaveModel(model, "mymodel.txt");
            //测试
            double[] testResults = testSet.Predict(model);
            //评估
            int[,] confusionMatrix;
            double testAccuracy = testSet.EvaluateClassificationProblem(testResults, model.Labels, out confusionMatrix);           
            //输出评估结果
            Console.WriteLine("\n\ncrossValidationAccuracy: {0}", crossValidationAccuracy);
            Console.WriteLine("\nTest Accuracy:{0}", testAccuracy);


            ///预测输出            
            Console.WriteLine("请输入数据值(demo: a-b-c-d-e,换行结束):");
            string str = Console.ReadLine();      //读入一行字符串
            string[] strValues = str.Split('-');  //字符串分割
            double[] values = new double[strValues.Length];
            Console.Write("输入的数据为:");
            for(int i = 0; i < strValues.Length; i++)
            {
                values[i] = double.Parse(strValues[i]); 
                Console.Write(" {0} ", values[i]);
            }
            Console.Write("\n");

            SVMNode[] x = new SVMNode[5];
            for(int i =0; i < 5; i++)
            {
                x[i] = new SVMNode();       //申请内存空间
                x[i].Value = values[i];
                x[i].Index = i + 1;     //索引从1开始
            }
            //预测
            double prelabel = SVM.Predict(model, x);
            Console.WriteLine("这组数据的预测标签为:{0}", (int)prelabel);

            Console.ReadKey();
        }
    }
}


出现的小问题:
1、编译平台选择anycpu;
2、error: libsvm.dll找不到,复制该dll到bin目录下


效果

参数简单调整后,分类效果如图:
在这里插入图片描述

LibSVMsharp 简单易用的支持向量机 C# 封装 LibSVMsharp 是一个简单易用的支持向量机 C# 封装;此库使用 LibSVM 3.23 版,支持 x64 LibSVMsharp 是一个简单易用的支持向量机 C# 封装;此库使用 LibSVM 3.23 版,支持 x64 LibSVMsharp 是一个简单易用的支持向量机 C# 封装;此库使用 LibSVM 3.23 版,支持 x64 立即下载

相关推荐

libsvm的c#借口使用,包括使用demo

用svm方法进行分类、回归应用。 自己承销加载的话添加几个.cs文件和core文件夹再加上动态库就可以了 其中还有个demo教怎么使用的。 上手快,便于应用

LibSVM工具箱之C#版本

LibSVM工具箱之C#版本 在libsvm的官网上下载了C#版本的支持向量机,对已有的数据进行训练和测试,网站如下:LibSVM官网。 打开后的源代码如下,训练集和测试集均为wine.txt数据文件。 我们将自己的训练数据和测试数据均放在Dataset文件夹下,然后将程序的读取文件wine.txt分别修改为libsvmtrain_sample.txt和libsvmtest_sample.txt,接着在如下图所示的Dataset下添加现有项,则Dataset就包含了libsvmtrain_sample.

总结论文中的算法并给出论文的复现代码 1278

c#实现的svm完整工程,调用了c#版的libsvm

vs2010c#实现的svm完整工程,调用了c#版的libsvm,窗口界面,功能包括参数设置,加载训练/泛化/测试数据,保存训练好的svm模型,加载训练好的svm模型,输出泛化和测试结果。本人亲自开发的,可以直接运行。相信对大家有帮助。

libsvm源代码在C#上的集成和参数寻优

1. 下载源代码和移植代码 源代码可以在libsvm官网下载:https://www.csie.ntu.edu.tw/~cjlin/libsvm/; 移植代码这里用的是C#Can Erhan版本,下载地址是:https://github.com/ccerhan/LibSVMsharp 2. 嵌入项目 2.1 C++动态库(dll)函数的导入 新建C++项目,头文件添加libsvm源代码...

propellant_j的博客 620

LibSvmCsharp2.6

Libsvm2.6 的C#源代码

LibSvmSharp:libsvm 3的java版本的C#端口

LibSvmSharp LibSVM# 是的 Java 版本的 C# 端口,是多个方法的库。 该项目还提供 F# 绑定。 有关 SVM 的更多信息,请参阅原始 libsvm和。 目前该项目的目标是仅提供 .NET 版本的核心库,没有 libsvm 项目提供的额外工具,如命令行工具(svm-train、svm-predict 等)或 svm-toy。 当前 LibSvmSharp 版本基于 libsvm 3.20。 解决方案详情 该解决方案包括 6 个项目: LibSvm – 主要的 LibSvmSharp 项目。 它是原始 libsvm java 源代码的端口(进行了一些修改和重构,使其看起来像 C# 风格)。 代码尽可能接近原始代码库,因此可以轻松更新以反映 libsvm 中的更改。 LibSvmDemo – 用于演示如何使用 LibSvm assenbly 的示例项目。

Libsvm使用笔记【matlab】

​ 代码流程 I. 清空环境变量 II. 导入数据 III. 数据归一化 IV. SVM创建/训练(RBF核函数) V. SVM仿真测试 VI. 绘图 ​

arispy的博客 8587

Fastp实战指南:高效处理fastq数据的质控技巧

本文是Fastp实战指南,详细介绍了如何使用Fastp工具高效处理fastq数据的质控技巧。从数据清洗的必要性、基础命令解析,到高级参数定制、UMI数据处理及批量自动化流程,提供一站式解决方案。Fastp以其“All-in-One”的快速质控能力,帮助用户确保测序数据质量,为后续生物信息学分析奠定可靠基础。

weixin_29254029的博客 388

LIBSVM使用方法

1、 Libsvm下载 下载libsvm的最新版本,下载地址为http://www.csie.ntu.edu.tw/~cjlin/libsvm/ 目前最新版本为libsvm-3.22 将libsvm-3.22.zip解压,我的解压到了F:\libsvm。 添加环境变量到path:我的电脑->属性->高级->环境变量->系统变量->变量列表里面双击 Path,在变量值最后添加;F:\libs

于书盼的博客 3万+

嘉立创EDA vs Altium Designer:新手如何选择?从界面到实战全对比

本文全面对比了嘉立创EDA与Altium Designer(AD)两大PCB设计工具,从设计哲学、界面交互、封装库管理、设计规则引擎、协作功能到成本生态六大维度进行深入分析。嘉立创EDA以极简设计和云端协作为特色,适合学生和创客快速上手;而AD则凭借专业级精准控制,成为高端电子设计的行业标准。通过实战案例和详细对比表格,帮助新手根据项目需求选择合适的EDA工具。

weixin_30296405的博客 720

【导航】ESP32 教学篇目录 【快速跳转】

本文章 来自原创专栏《ESP32教学专栏 (基于ESP-IDF)》,讲解如何使用 ESP-IDF 构建 ESP32 的WIFI及连接的程序,发布文章并会持续为已发布文章添加新内容! 每篇文章都经过了精打细磨! ↓↓↓通过下方 按钮 进入专栏主页↓↓↓ 专栏主页:点击进入→ESP32 教学专栏 (基于ESP-IDF) WIFI二级专栏:点击进入→ESP32 上的 WiFi ............

Augtons 的博客 3万+

MATLAB环境使用LIBSVM-分类详解(三)

##介绍 LIBSVM在MATLAB下只有四个函数,分别时:libsvmread,Libsvmwrite,svmtrain,svmpredict。 ##函数说明 libsvmread函数用于读取数据 。 用法 [heart_scale_label,heart_scale_inst]=libsvmread('heart_scale_new'); libsvmwrite写函数,就是把已知数据存起来...

wokaowokaowokao12345的专栏 4512

LAP-D协议概述

Q.921协议由称为LAPD(链路访问协议-D通道),与HDLC的关系密切,它是在ISDN D通道上使用的数据链路协议。 注:http://www.freesoft.org/CIE/Topics/125.htm LAP-D的帧格式 标志、位填充技术和FCS校验计算与HDLC一致。 16位的地址包括C/R字段、SAPI(服务访问点标识)和TEI(端点标识)。TEI用于区分使用相同ISDN...

系统运维 1914

LibSVM之C# Wrapper

【百度百科】   LIBSVM是台湾大学林智仁(Lin Chih-Jen)教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包,他不但提供了编译好的可在Windows系列系统的执行文件,还提供了源代码,方便改进、修改以及在其它操作系统上应用;该软件对SVM所涉及的参数调节相对比较少,提供了很多的默认参数,利用这些默认参数可以解决很多问题;并提供了交互检验(Cross Val...

weixin_30318645的博客 475

【深度学习|语义分割之UNet】如何使用ResNet50 作为 U-Net 网络的骨干网络(backbone)并使用预训练的 ResNet50 模型。附代码及解读。

【深度学习|语义分割之UNet】如何使用ResNet50 作为 U-Net 网络的骨干网络(backbone)并使用预训练的 ResNet50 模型。附代码及解读。

985小水博的摸鱼日常 3089

AI应用架构师实战:超算中AI与量子计算融合的初探与架构

当大模型的算力需求突破E级超算的极限,当量子计算的“量子优势”从实验室走向真实场景,超算+AI+量子计算的融合架构成为解决复杂问题的关键路径。本文从架构师的实战视角出发,系统拆解三者融合的底层逻辑:从“计算本质”的第一性原理推导,到“量子-经典异构”的架构设计;从“量子机器学习”的代码实现,到“金融/医药”的场景落地。我们将回答:如何用超算支撑量子计算的噪声抑制与纠错?如何用量子计算加速AI模型的训练与推理?如何设计可扩展、高可用的融合系统?最终给出架构师的实战指南——从技术选型到运营管理的全流程方法论。

AIGC应用创新大全的博客 924

文本分类学习 (十)构造机器学习Libsvm 的C# wrapper(调用c/c++动态链接库)

前言:对于SVM的了解,看前辈写的博客加上读论文对于SVM的皮毛知识总算有点了解,比如线性分类器,和求凸二次规划中用到的高等数学知识。然而SVM最核心的地方应该在于核函数和求关于α函数的极值的方法:SMO算法(当然还有很多别的算法。libsvm使用的是SMO,SMO算法也是最高效和简单的),还有松弛变量。。毕设答辩在即,这两个难点只能拖到后面慢慢去研究了。    于是我便是用了LibSvm,...

weixin_30596343的博客 323

为分析表明卡诺电池技术(或热泵式储电技术)-是目前最佳的储能技术!!!-2021年

卡诺电池(Carnot Battery)是一种基于热力学循环的储能技术,其核心原理是通过热力循环将电能转化为热能存储,并在需要时将热能重新转换为电能输出。这种技术得名于热力学中的卡诺循环原理,由法国工程师卡诺于1824年提出。

qq_15963745的博客 654

C#调用外部EXE-LibSVM为例

主要是前一段做客流预测的时候,发现不会写SVM,想直接用LibSVM来进行预测。因为LibSVM可以直接将运算结果生成文件, 所以打算通过C#调用EXE的形式进行调用,同时读取结果数据。

嗡汤圆的博客 1528

【MATLAB】嵌入式PID控制参数整定与优化

本文提出了一种基于MATLAB仿真的嵌入式PID参数优化方法,解决了传统人工试凑法效率低、适应性差的问题。通过建立一阶滞后被控对象模型,对比分析了不同PID参数组合的性能表现,筛选出最优参数。仿真结果表明,优化后的PID参数能有效降低超调量(从传统方法的显著超调降至接近0%),缩短调节时间,提高稳态精度。最终将优化算法部署到STM32平台,实现了"仿真整定-参数优化-嵌入式落地"的完整开发流程。该方法显著提升了嵌入式系统的响应速度和控制精度,为工业控制应用提供了标准化解决方案。

unber的博客 45

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

[转]笨蛋也可以用的 libsvm

 libsvm相关资料官方网站:http://www.csie.ntu.edu.tw/~cjlin/libsvm/下载:Linux:http://www.csie.ntu.edu.tw/~cjlin/cgi-bin/libsvm.cgi?+http://www.csie.ntu.edu.tw/~cjlin/libsvm+tar.gz Windows:http://www.csie.nt

heiyeluren的blog(黑夜路人的开源世界) 5223

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

libsvm 的使用

1. libsvm 支持的SVM模型 官网地址:LIBSVM – A Library for Support Vector Machines libsvm 支持的 SVM 模型如下(C:classification,R:regression): C-SVC(C-support vector classification), nu-SVC(nu-suppor...

weixin_30265171的博客 244

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

上一篇: LIBSVM使用方法
下一篇: 学习神经网络算法1(python复现)
hellohake
博客等级 码龄10年 4543粉丝 108原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值