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#中进行进一步处理
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值