C#调用外部EXE-LibSVM为例

2024-05-02 02:18

本文主要是介绍C#调用外部EXE-LibSVM为例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

核心方法

执行EXE

/// <summary>/// 执行EXE文件/// </summary>/// <param name="exePath"></param>/// <param name="args"></param>/// <param name="outputFile">若有指定输出重定向才填写</param>private void executeEXE(String exePath, String args, bool logout){Process proc = new Process();proc.StartInfo.FileName = exePath;proc.StartInfo.CreateNoWindow = true;proc.StartInfo.Arguments = args;proc.StartInfo.RedirectStandardOutput = true;proc.StartInfo.UseShellExecute = false;proc.Start();StreamReader sr = new StreamReader(proc.StandardOutput.BaseStream);string line = "";while ((line = sr.ReadLine()) != null){if (logout){Console.WriteLine(line);}}sr.Close();proc.WaitForExit();}//把console输出到文件private void executeEXE(String exePath, String args, String outputFile, bool logout){Process proc = new Process();proc.StartInfo.FileName = exePath;proc.StartInfo.CreateNoWindow = true;proc.StartInfo.Arguments = args;proc.StartInfo.RedirectStandardOutput = true;proc.StartInfo.UseShellExecute = false;proc.Start();StreamReader sr = new StreamReader(proc.StandardOutput.BaseStream);string line = "";while ((line = sr.ReadLine()) != null){if (logout){Console.WriteLine(line);FileUtil.AppendText(outputFile, line);FileUtil.AppendText(outputFile, FileUtil.NewLine);}}sr.Close();proc.WaitForExit();}

算法调度

以下调用均是由上述的执行EXE方法

  • 将数据转换为LibSVM格式的文本文件

  • 调用svmscale.exe进行归一化

svmscale.exe feature.txt feature.scaled

  • 调用svmtrtrain.exe进行训练

svmtrain.exe -s 3 -p 0.0001 -t 2 -g 32 -c 0.53125 -n 0.99 feature.scaled

  • 调用svmpredict.exe进行预测

svmpredict.exe feature_test.scaled feature.scaled.model feature_test.predicted

  • 将结果文本转为DataSet导入C#中进行进一步处理

这篇关于C#调用外部EXE-LibSVM为例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/953199

相关文章

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Python中Tensorflow无法调用GPU问题的解决方法

《Python中Tensorflow无法调用GPU问题的解决方法》文章详解如何解决TensorFlow在Windows无法识别GPU的问题,需降级至2.10版本,安装匹配CUDA11.2和cuDNN... 当用以下代码查看GPU数量时,gpuspython返回的是一个空列表,说明tensorflow没有找到

python如何调用java的jar包

《python如何调用java的jar包》这篇文章主要为大家详细介绍了python如何调用java的jar包,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录一、安装包二、使用步骤三、代码演示四、自己写一个jar包五、打包步骤六、方法补充一、安装包pip3 install

C#如何去掉文件夹或文件名非法字符

《C#如何去掉文件夹或文件名非法字符》:本文主要介绍C#如何去掉文件夹或文件名非法字符的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#去掉文件夹或文件名非法字符net类库提供了非法字符的数组这里还有个小窍门总结C#去掉文件夹或文件名非法字符实现有输入字

C#之List集合去重复对象的实现方法

《C#之List集合去重复对象的实现方法》:本文主要介绍C#之List集合去重复对象的实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C# List集合去重复对象方法1、测试数据2、测试数据3、知识点补充总结C# List集合去重复对象方法1、测试数据

C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式

《C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式》Markdown凭借简洁的语法、优良的可读性,以及对版本控制系统的高度兼容性,逐渐成为最受欢迎的文档格式... 目录为什么要将文档转换为 Markdown 格式使用工具将 Word 文档转换为 Markdown(.

Java调用C#动态库的三种方法详解

《Java调用C#动态库的三种方法详解》在这个多语言编程的时代,Java和C#就像两位才华横溢的舞者,各自在不同的舞台上展现着独特的魅力,然而,当它们携手合作时,又会碰撞出怎样绚丽的火花呢?今天,我们... 目录方法1:C++/CLI搭建桥梁——Java ↔ C# 的“翻译官”步骤1:创建C#类库(.NET

Java -jar命令如何运行外部依赖JAR包

《Java-jar命令如何运行外部依赖JAR包》在Java应用部署中,java-jar命令是启动可执行JAR包的标准方式,但当应用需要依赖外部JAR文件时,直接使用java-jar会面临类加载困... 目录引言:外部依赖JAR的必要性一、问题本质:类加载机制的限制1. Java -jar的默认行为2. 类加

java -jar命令运行 jar包时运行外部依赖jar包的场景分析

《java-jar命令运行jar包时运行外部依赖jar包的场景分析》:本文主要介绍java-jar命令运行jar包时运行外部依赖jar包的场景分析,本文给大家介绍的非常详细,对大家的学习或工作... 目录Java -jar命令运行 jar包时如何运行外部依赖jar包场景:解决:方法一、启动参数添加: -Xb