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来解决常见的异或问题

 

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

 

       将得到的结果

           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();

        }
    }
}

得到的结果

 

 

【Accord.NET】快速入门机器学习,之SVM算法C#下应用

 

 

 

一点点解释:

 

 

 

参考原文

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

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐