入坑ML.Net跟我一起学,机器学习从0开始

作者: 我是Mr小赵先生 | 来源:发表于2019-12-06 16:43 被阅读0次

    做什么

    随着机器学习热度逐渐上升,为了提高自身竞争力,有必要掌握一些机器学习的知识。关于机器学习的概念,各种神经网络的介绍这里就不做具体介绍了,后期看情况是否写个关于机器学习的知识普及篇。

    这篇文章主要是讲如果通过微软提供的机器学习框架,通过C#语言写一个情感分析的小程序。
    主要功能为:预测用户输入的英文是否为负面的,准确度肯定不好,但主要是抛砖引玉。

    训练数据:250条维基百科评论(wikipedia detox)wikipedia-detox-250-line-data.tsv

    训练数据
    数据标注:第一列是0和1,0表示非负面情绪,1表示负面情绪,第二列是用户评论
    大概流程:给机器输入250条评论,机器通过学习,生成模型,然后评估模型,最后输入自定义的一句英文评论,机器输出0或1

    开发环境准备

    1.安装Visual Studio 2017 15.9.12 or更高版本,作者安装的是2019最新版的,安装的时候记得安装.NetCore相关功能,具体怎么安装勾选相关功能直接下一步即可。
    2.安装ML.net模型构建器(ML.NET Model Builder tool),微软官方下载地址,下载以后直接双击安装即可。安装的时候记得把Visual Studio关闭。也可以通过Visual Studio中的扩展功能里安装,如下图:

    ML.NET Model Builder tool
    安装ML.Net扩展工具
    安装ML.Net扩展工具
    注:扩展工具下载比较慢,可以下载我上传到百度网盘的包
    链接:https://pan.baidu.com/s/1x5VhyFJzdj3CC04zrUev_Q
    提取码:vqbq

    创建项目

    新建一个.NetCore的控制台应用程序,给项目起名ML001,步骤如下:


    1.新建一个.Net Core 控制台项目
    2.给项目起名ML001

    右键ML001项目,添加一个Machine Learning,如下图:


    新建ML

    选择模型

    在新打开的页面我们选择一个机器学习模型,当前微软一共给我们提供了5个模型,教程中采用的是第一个Sentiment Analysis,该模型将数据分成2个类别,比较适合舆情分析系统,判断一段文字是正面的还是负面的。

    Scenario

    添加训练数据

    训练数据我们用的是250条维基百科的评论,如果想提高模型的准确度,训练数据越多越好。
    下载地址:wikipedia-detox-250-line-data.tsv

    训练数据可以从文件或者Sqlserver数据库中导入,教程中我们选择File,然后依次选择我们下载的训练数据,Colume to predict 选择预测结果字段,Input Colume 选择默认,然后选择Train


    数据准备

    训练模型

    填写要训练的时间(单位秒)然后点Start training就可以了,如果训练数据非常多,训练时间也需要相应的增加,同时模型会帮我们选择最优的训练结果的

    训练
    训练结果如下
    训练结果
    注:
    Status - 这将显示模型培训过程的状态;这将告诉您培训过程还剩多少时间,还将告诉您培训过程何时完成。
    Best accuracy - 显示模型生成器迄今为止找到的最佳模型的准确性。较高的精度意味着模型对试验数据的预测更准确。
    Best algorithm - 这向您展示了在ModelBuilder的探索过程中,哪种算法执行得最好。

    然后点击Evaluate

    评估模型

    在ModelBuilder训练并选择了最佳模型之后,您可以转到Evaluate步骤,该步骤向您显示各种输出(例如性能最佳的算法、探索了多少个模型以及ML任务(在本例中是二进制分类),并允许您在UI中试用该模型。

    您可以在概述和详细信息之间切换,以查看有关培训课程和探索的顶级模型(最多5个)的更多信息,包括每个顶级模型的多个评估指标。

    模型评估
    模型评估

    可以在“Try your model”部分中对样本输入进行预测。文本框预先填充了数据集的第一行数据,但是我们可以更改输入并点击Predict来尝试不同的情绪预测。

    模型评估完毕以后选择code

    code

    在code页面我们选择Add Projects

    code

    之后我们会看到解决方案里增加了2个项目


    ML001ML.ConsoleApp: .NET 控制台应用程序,包括了ModelBuilder.cs (创建和训练模型) 和Program.cs (程序入口)。

    ML001ML.Model :.NET Standard类库, 包括了ModelInput.csModelOutput.cs (模型输入和输出相关), ConsumeModel.cs(模型预测相关方法), 和MLModel.zip(训练的模型)。

    应用

    模型训练好以后,就可以开始应用了。打开我们一开始创建的.NetCore 控制台应用中的Program.cs
    然后输入如下代码:记得添加ML001ML.Model引用

    using ML001ML.Model;
    using System;
    
    namespace ML001
    {
        class Program
        {
            static void Main(string[] args)
            {
                while (true)
                {
                    Console.WriteLine("请输入一句英文进行预测");
                    //定义输入
                    var input = new ModelInput();
    
                    //获取用户输入
                    string userInput = Console.ReadLine();
                    input.SentimentText = userInput;
    
                    // 加载模型,输出预测结果。
                    ModelOutput result = ConsumeModel.Predict(input);
    
                    Console.WriteLine($"用户输入: {input.SentimentText}\n预测结果: {result.Prediction}");
                }
                
            }
        }
    }
    
    

    测试结果

    应该是训练数据不足,本身是正面的话却预测成负面的了。


    实际结果

    OK,就写这么多了,如果文章对你有帮助,就给个免费的赞吧!

    相关文章

      网友评论

        本文标题:入坑ML.Net跟我一起学,机器学习从0开始

        本文链接:https://www.haomeiwen.com/subject/vtbsgctx.html