大数据,机器学习,人工智能机器学习与数据挖掘人工智能/模式识别/机器学习精华专题

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

2019-12-06  本文已影响0人  我是Mr小赵先生

做什么

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

这篇文章主要是讲如果通过微软提供的机器学习框架,通过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,就写这么多了,如果文章对你有帮助,就给个免费的赞吧!

上一篇下一篇

猜你喜欢

热点阅读