Accord.Net之HelloWorld(1)

开发环境配置

1.本系列博文主要以VS2017版本介绍,具体安装方法请参照官方说明;

2.模块的引用请参照上一小结;

创建新项目

本章节将从启动Visual Studio开始,逐步介绍开发如何使用Accord.Net开发一个简单的事例,以决策树分类为例。

Visual启动后,选择【文件】->【新建项目】

在弹出的新建对话框中,以Visual C#分类下选择【控制台应用程序】。在本章节中虽然创建的事例是C#语言,但Accord.Net同样支持所有.Net兼容的语言,如VB.Net或C++/CLI。

 给新建的项目添加引用。具体操作可参考上一节介绍的两种方法,在这里通过命令的方式添加了Accord.MachineLearning模块。

PM>Install-Package Accord.MachineLearning

编码

现在准备开发应用程序。下面将演示如何创建和训练一个决策树模型识别一个西瓜是否为好瓜,关于决策树的相关介绍大家可以看看周志华的《机器学习》一书,在这里就不在累赘相关的原理。问题关键在学习下面的训练集:

西瓜数据集

编号(No)

Color(色泽)Root(根蒂)Sound(敲声)Result(好瓜)

1

青绿蜷缩浊响

2

乌黑蜷缩浊响

3

青绿硬挺清脆

4

乌黑稍蜷沉闷

输入数据集inputs由Color、Root、Sound、Good三列组成,对应的输出数据集output由Result组成,在这里主要采用C45方法进行训练,关键代码如下:

            //1.创建数据集
            DataTable data = new DataTable("Watermelon  Example");

            data.Columns.Add("No", typeof(string));
            data.Columns.Add("Color", typeof(string));
            data.Columns.Add("Root", typeof(string));
            data.Columns.Add("Sound", typeof(string));
            data.Columns.Add("Result", typeof(string));

            data.Rows.Add("1", "青绿", "蜷缩", "浊响", "是");
            data.Rows.Add("2", "乌黑", "蜷缩", "浊响", "是");
            data.Rows.Add("3", "青绿", "硬挺", "清脆", "否");
            data.Rows.Add("4", "乌黑", "稍蜷", "沉闷", "否");

            data.Rows.Add("5", "青绿", "蜷缩", "浊响", "是");//用于预测

            //2.创建Codification用于把字符串转化为整型
            Codification codebook = new Codification(data);
            DecisionVariable[] attributes =
           {
               new DecisionVariable("Color",codebook["Color"].NumberOfClasses),
               new DecisionVariable("Root",codebook["Root"].NumberOfClasses),
               new DecisionVariable("Sound",codebook["Outlook"].NumberOfClasses)
            };

            int classCount = codebook["Result"].NumberOfClasses;

            //3.创建C45决策树
            tree = new DecisionTree(attributes, classCount);
            C45Learning c45 = new C45Learning(tree);

            DataTable symbols = codebook.Apply(data);
            inputs = symbols.ToJagged("Color", "Root", "Sound");
            outputs = symbols.ToArray<int>("Result");

            c45.Learn(inputs, outputs);

  测试代码:

        static void Main(string[] args)
        {
            DecisionTree tree;
            double[][] inputs;
            int[] outputs;

            CreateDecisionTreeExample(out tree, out inputs, out outputs);

            int result = tree.Decide(inputs[4]);

            Console.WriteLine("该瓜是否是好瓜:" + (result == 0 ? "是" : "否"));
            Console.ReadKey();
        }

运行结果如图所示

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值