开源
Accord.NET:. NET ML 学习框架
来源:元经纪     阅读:559
网站管理员
发布于 2023-01-28 05:42
查看主页

概述

Accord.NET 使用. NET 框架。这是一个 . NET ML 学习框架,提供用 C# 编码的图像和音频库。它具有前瞻性,因为它为开发商业级应用程序提供了一个平台,包括面向信号处理的应用程序、视听工具集和统计应用程序。如果你刚刚起步,Accord.NET 还包括模板应用程序,这样你就可以更快地开始构建。      

安装示例:

[hidecontent type="logged" desc="隐藏内容:登录后可查看"]

设置环境

最简单的入门方法是通过 NuGet。在包管理器中搜索“Accord.NET”,然后选择安装您感兴趣的模块。该框架已划分为多个模块,因为并非所有用户都希望在他们的项目中使用例如音频或视频处理功能,如果他们正在做纯粹的统计应用程序的话。为了遵循本教程,首先安装
    PM> Install-Package Accord.MachineLearning
    PM> Install-Package Accord.Controls
如果您还没有可用的 .NET 开发环境,请安装Microsoft Visual Studio Express(或等效的)

创建一个新项目

我们将开发一个使用支持向量机的示例应用程序。我们将通过打开 Visual Studio 来开始这个例子。 Visual Studio加载完成后,点击File->New Project菜单项开始创建新项目。 在新建项目对话框中,选择 Visual C# 类别下的“控制台应用程序”项。即使我们打算在此示例中使用 C#,请记住 Accord.NET 支持所有 .NET 兼容语言,例如 VB.NET 或 C++/CLI。 此时我们可以开始添加对我们项目的引用。在本教程的顶部运行 Install-Package 命令,或者在解决方案浏览器中右键单击项目名称并选择“管理 NuGet 包”。 由于我们要开发一个使用支持向量机的示例应用程序,因此我们需要通过 NuGet 安装 Accord.MachineLearning。如果您希望使用视觉控件报告信息,请同时安装 Accord.Controls。

编码

现在我们准备开始开发我们的应用程序。以下代码演示了如何创建和训练 SVM 来识别经典 XOR 问题。XOR 问题是一个经典的非线性可分问题,不能用简单的线性分类器(例如感知器或线性 SVM)来解决。问题在于学习以下布尔函数。 问题的输入由ab列给出。输出是a ⊕ b上的结果。为了解决这个问题,我们将使用多项式核机。支持向量机要求输出为 -1 或 +1,因此我们将 -1 分配给输出列中的任何零值。 示例应用程序的代码如下所示。
using Accord.Controls;
using Accord.MachineLearning.VectorMachines.Learning;
using Accord.Math.Optimization.Losses;
using Accord.Statistics;
using Accord.Statistics.Kernels;
using System;

namespace GettingStarted
{
    class Program
    {
        [MTAThread]
        static void Main(string[] args)
        {
            double[][] inputs =
            {
                /* 1.*/ new double[] { 0, 0 },
                /* 2.*/ new double[] { 1, 0 }, 
                /* 3.*/ new double[] { 0, 1 }, 
                /* 4.*/ new double[] { 1, 1 },
            };

            int[] outputs =
            { 
                /* 1. 0 xor 0 = 0: */ 0,
                /* 2. 1 xor 0 = 1: */ 1,
                /* 3. 0 xor 1 = 1: */ 1,
                /* 4. 1 xor 1 = 0: */ 0,
            };

            // Create the learning algorithm with the chosen kernel
            var smo = new SequentialMinimalOptimization<Gaussian>()
            {
                Complexity = 100 // Create a hard-margin SVM 
            };

            // Use the algorithm to learn the svm
            var svm = smo.Learn(inputs, outputs);

            // Compute the machine's answers for the given inputs
            bool[] prediction = svm.Decide(inputs);

            // Compute the classification error between the expected 
            // values and the values actually predicted by the machine:
            double error = new AccuracyLoss(outputs).Loss(prediction);

            Console.WriteLine("Error: " + error);

            // Show results on screen 
            ScatterplotBox.Show("Training data", inputs, outputs);
            ScatterplotBox.Show("SVM results", inputs, prediction.ToZeroOne());

            Console.ReadKey();
        }
    }
}
如果您需要添加任何缺少的命名空间引用,您始终可以右键单击类的名称并让 Visual Studio 为您完成它。 应用程序代码完成后,我们可以通过在 Visual Studio 上按 F5(或等效地单击“开始调试”按钮)来运行它。该应用程序将训练上述支持向量机,并应显示学习后获得的训练误差。训练误差为零表示机器已完美地学习了该问题。 下载本指南中提供的源代码。

[/hidecontent]

 
免责声明:本文为用户发表,不代表网站立场,仅供参考,不构成引导等用途。 开源
联想yogapadproai元启版开售,成启程未来的理想之选
数十万患者用的这根线,定安造!
行业资讯丨深圳“AI公务员”上岗,数字劳动力时代来了!
水乡幻境,探秘周庄 | 一键开启周庄元宇宙
苹果放话:iPhone保值率比安卓至少高40%

首页

分类

定制方案

消息

我的