C#使用ML.NET实现机器学习/神经网络,实现分析情绪(二元分类)问题

VS软件开发工具越来越强大,针对.NET开发2019年6月26号上线了机器学习框架ML.NET,但是只针对Visual Studio 2017 15.9.12及以后版本。所以各位要使用他要更新下自己的软件。同时,要下载ML.NET
开始正文,
注意我们要建立一个基于.NET Core2.1框架的应用,二不是. NET framework 4.6.1。不然后面在配unpnkg会出错。
在这里插入图片描述
1 我们新建一个myMLApp(Console App)项目,在解决方案管理器在工程上右键—添加---- Machine Learning。
这是弹出如下所示对话框
C#使用ML.NET实现机器学习/神经网络,实现分析情绪(二元分类)问题_第1张图片
要生成您的模型,您需要选择您的机器学习场景,在这里我们Sentiment Analysis 场景,根据客户评论的内容(文本)预测用户的情绪。

2 下载数据进行分析,点击下载,将他保存成wikipedia-detox-250-line-data.csv 格式到你创建的工程中。然后,选择文件
C#使用ML.NET实现机器学习/神经网络,实现分析情绪(二元分类)问题_第2张图片
在Column to Predict(Label)选择“Sentiment.”Label是你要预测的的结果,在本例中是在数据集第一列中找到的情绪。其余的列(在本例中是来自第二列评论的实际情感文本)是特性,这些特性有助于预测标签。
3 接下来开始训练你的模型,在对话框最左边选择Trian,
C#使用ML.NET实现机器学习/神经网络,实现分析情绪(二元分类)问题_第3张图片
模型构建器使用不同的设置评估许多模型,以提供性能最佳的模型。注意,训练时间默认10秒。如果数据量越大,你应该设置更长的训练时间。
然后点击 Start training
Status——这显示了模型训练过程的状态;这将告诉您在培训过程中还剩多少时间,还将告诉您培训过程何时完成.
Best Accuracy—这显示了模型构建器迄今为止找到的最佳模型的精度。较高的精度意味着模型对测试数据的预测更加准确。
Best algorithm ——这将向您展示在模型构建器的探索过程中哪个算法执行得最好。
Last algorithm—这显示了Model Builder探索的最后一个算法。
4 评估你的模型
其中显示了各种输出,包括研究了多少个模型和ML任务(在本例中是二进制分类),Model Builder还显示了已探索的前5个模型,并显示了这5个前5个模型的几个评估指标,包括AUC、AUPRC和F1-score,您可以在这里了解更多信息。
C#使用ML.NET实现机器学习/神经网络,实现分析情绪(二元分类)问题_第4张图片
5 创建代码
选择Add Projects.解决方案管理器中会添加机器学习模型和将定制模型应用到方案中C#使用ML.NET实现机器学习/神经网络,实现分析情绪(二元分类)问题_第5张图片
myMLAppML.ConsoleApp是一个. net控制台应用程序,其中包含ModelBuilder.cs(用于构建/培训模型)和Program.cs(用于运行模型)。
myMLAppML.Model是一个. net标准类库,其中包含ModelInput.cs和ModelOutput.cs(用于模型培训和使用的输入/输出类)以及MLModel.zip(生成的序列化ML模型)。
要尝试该模型,您可以运行控制台应用程序(myMLAppML.ConsoleApp)来使用该模型预测单个语句的情绪。

6 使用模型
Model Builder已经为您生成了经过训练的模型和代码,所以您现在可以在其他.NET应用程序(例如myMLApp console应用程序)中使用该模型
<1>从您的myMLApp应用程序中,向生成的库项目(myMLAppML.Model)添加一个引用。
右键单击您的myMLApp项目并选择添加 > 引用。在引用管理器中,检查myMLAppML。建模并选择OK。
<2>在你的myMLApp,安装 ML.NET NuGet package.
注意,你可能会不断出现下面这个问题,你只需要不断下载nupkg文件就可以了。
在这里插入图片描述
<3>myMLAppML.Model中,右击选择属性,复制到输出目录改为“”始终复制“”
<4>将myMLApp中program.cs代码改为如下所示

using System;
using MyMLAppML.Model.DataModels;
using Microsoft.ML;

namespace myMLApp
{
    class Program
    {
        static void Main(string[] args)
        {
            ConsumeModel();
        }

        public static void ConsumeModel()
        {
            // Load the model
            MLContext mlContext = new MLContext();

            ITransformer mlModel = mlContext.Model.Load("MLModel.zip", out var modelInputSchema);

            var predEngine = mlContext.Model.CreatePredictionEngine(mlModel);

            // Use the code below to add input data
            var input = new ModelInput();
            input.SentimentText = "Type your sentiment";

            // Try model on sample data
            // True is toxic, false is non-toxic
            ModelOutput result = predEngine.Predict(input);

            Console.WriteLine($"Text: {input.SentimentText} | Prediction: {(Convert.ToBoolean(result.Prediction) ? "Toxic" : "Non Toxic")} sentiment");
        }
    }
}
input.SentimentText = "That is rude.";

运行,得到预测结果

你可能感兴趣的:(算法)