【Accord.NET】快速入门机器学习,…

    xiaoxiao2021-03-25  219

    Aforge.NET是一个基于C#框架设计,涵盖计算机视觉与人工智能,图像处理,神经网络,遗传算法,机器学习,模糊系统,机器人控制等库 ,而Accord.NET Framework是在AForge.NET基础上封装和进一步开发来的,相比于前者来说有着更高的针对性,是一个包含常见的SVM,SURF,FAST等算法的类库,能够很方便的建立

     

    需要用到的:

    VS2015

    网络,可能要翻墙

     

     

    第一步,环境搭建

     

    先打开VS,新建一个c#的控制台程序

     

     

    然后 工具---NuGet包管理器---管理器控制台

     

    输入下面语句,下载accord相关的文件

     

    PM> Install-Package Accord.MachineLearning    PM> Install-Package Accord.Controls

     

     

     

    这里的例子是使用SVM来解决常见的异或问题

     

    什么是异或问题?如下所示

     

    a    b      将得到的结果

    0    0          0

    1    0          1

    0    1          1

     

     

     

     

     

    代码:

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Accord.Controls; using Accord.MachineLearning.VectorMachines; using Accord.MachineLearning.VectorMachines.Learning; using Accord.Math; using Accord.Statistics.Kernels; namespace AccordOne {     class Program     {         [MTAThread]//用于宣告这个程序的线程模型为多线程单元,如果说单线程则是STAThread         static void Main(string[] args)         {             double[][] inputs =            {//输入的数据                 new double[] { 0, 0 },                 new double[] { 1, 0 },                 new double[] { 0, 1 },                 new double[] { 1, 1 },             };

                int[] outputs =             {                 -1,                 +1,                 +1,                 -1,             };                         //创建一个新的机器拥有多项式内核与两个输入             var ksvm = new KernelSupportVectorMachine(new Gaussian(), 2);

                //创建采用我们所给予的输入与输出的学习算法             var smo = new SequentialMinimalOptimization(machine: ksvm, inputs: inputs, outputs: outputs)             {                 Complexity = 100 //创建具有硬性分界的支持向量机SVM             };

                // Teach the machine             double error = smo.Run();//出错则返回值             Console.WriteLine("error:" + error);             // Show results on screen             ScatterplotBox.Show("Training data", inputs, outputs);//这个窗口用于显示学习数据

                ScatterplotBox.Show("SVM results", inputs,  //这边这个窗口则显示SVM的返回结果                 inputs.Apply(p => System.Math.Sign(ksvm.Compute(p))));

                Console.ReadKey();

            }     } }

    得到的结果

     

     

     

     

     

    一点点解释:

     

     

     

    参考原文

    https://github.com/accord-net/framework/wiki/Getting-started

    转载请注明原文地址: https://ju.6miu.com/read-236.html

    最新回复(0)