C#使用ML.Net完成人工智能预测

前言

Visual Studio2019 Preview中提供了图形界面的ML.Net,所以,只要我们安装Visual Studio2019 Preview就能简单的使用ML.Net了,因为我的电脑已经安装了Visual Studio2019,所以我不需要重头安装Visual Studio2019 Preview,只要更新即可。

安装

首先找到Visual Studio Installer安装包,如下图。

运行,然后选择如下:

创建项目

我们创建一下新项目,如下图:

然后选择。

然后添加机器学习。

点击机器学习时,如果我们没有开启MLNET模型创建功能,则会弹出提示,让我们开启。

当然我们也可以手动在选项中开启,如下图:

点击【机器学习】之后会有图形界面,如下图:

然后我们可以看到,它提供了一些方案,如语义识别,图像识别,数值预测等。

我们选择数值预测,然后进入下一步,如下图:

在环境页面,选择本地训练,然后点击下一步获取数据,如下图:

这里需要选择一个数据源,我们去官网上下载一下可用的测试数据源。

这里我们下载【产品销售数据】。

方案示例数据Label特征
分类预测销售异常产品销售数据产品销售额月份
预测网站评论的情绪网站评论数据标签(负面情绪为 0,正面情绪为 1)评论、年份
预测信用卡欺诈交易信用卡数据类(存在欺诈性为 1,否则为 0)金额,V1-V28(匿名处理后的特征)
预测 GitHub 存储库中的问题类型GitHub 问题数据区域标题、描述
值预测预测出租车费用价格出租车费数据车费行程时间、距离
图像分类预测花卉的类别花卉图像花卉类型:雏菊、蒲公英、玫瑰、向日葵、郁金香图像数据本身
建议预测他人喜欢的电影电影评分用户、电影评级

选择完预测数据文件,我们配置要预测的列,然后点击训练,如下图:

训练界面如下:

点击训练,大约2分钟,训练完成,输出界面会输出如下内容。

训练完成后,如下图:

我们点击评估,如下图:

如上图,预测到1月销售数据是262.8。

然后点击代码,将ML.Net代码添加到解决方案中,如下图:

添加ML.Net代码后,如下图:

生成的MLNetConsoleML.ConsoleApp项目是入口项目,Main函数如下:

static void Main(string[] args)
{
    // Create single instance of sample data from first line of dataset for model input
    ModelInput sampleData = new ModelInput()
    {
        Month = @"1-Jan",
    };
​
    // Make a single prediction on the sample data and print results
    var predictionResult = ConsumeModel.Predict(sampleData);
​
    Console.WriteLine("Using model to make single prediction -- Comparing actual ProductSales with predicted ProductSales from sample data...\n\n");
    Console.WriteLine($"Month: {sampleData.Month}");
    Console.WriteLine($"\n\nPredicted ProductSales: {predictionResult.Score}\n\n");
    Console.WriteLine("=============== End of process, hit any key to finish ===============");
    Console.ReadKey();
}

可以看到,我们预测的是Month = @"1-Jan"。

再打开ModelBuilder文件,可以看到,这里一开始就配置了数据地址和模型地址,如下图:

到这里,我们ML.Net就算初步学会使用了,下面,再提供一个官网GIF图片供大家参考。

训练时长

模型生成器使用 AutoML 浏览多个模型,以查找性能最佳的模型。

更长的训练周期允许 AutoML 通过更多设置来浏览更多模型。

下表汇总了在本地计算机上为一组示例数据集获取良好性能所花的平均时间。

数据集大小训练的平均时间
0 - 10 MB10 秒
10 - 100 MB10 分钟
100 - 500 MB30 分钟
500 - 1 GB60 分钟
1 GB 以上3 小时以上

----------------------------------------------------------------------------------------------------

参考网址:什么是模型生成器,它的工作原理是怎样的? - ML.NET | Microsoft Learn

----------------------------------------------------------------------------------------------------

到此C#使用ML.Net完成人工智能预测的基本使用已经介绍完了。

代码已经传到Github上了,欢迎大家下载。

Github地址: GitHub - kiba518/MLNetConsole: ML.NET人工智能

----------------------------------------------------------------------------------------------------

注:此文章为原创,任何形式的转载都请联系作者获得授权并注明出处!
若您觉得这篇文章还不错,请点击下方的【推荐】,非常感谢!

C#使用ML.Net完成人工智能预测 - kiba518 - 博客园

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
以下是使用 ML.NET 和 TensorFlow 实现问答机器人的示例代码: ```csharp using System; using System.Collections.Generic; using System.IO; using Microsoft.ML; using Microsoft.ML.Data; using TensorFlow; namespace QABot { class Program { static void Main(string[] args) { // 加载数据 var dataView = LoadData("qa_data.txt"); // 定义模型架构 var pipeline = new LearningPipeline(); pipeline.Add(new TextFeaturizer("Features", "Question")); pipeline.Add(new TensorFlowTransformer { ModelLocation = "qa_model.pb", Inputs = new[] { "Features" }, Outputs = new[] { "Score" } }); pipeline.Add(new ColumnCopier(("Score", "Prediction"))); pipeline.Add(new PredictedLabelColumnOriginalValueConverter { PredictedLabelColumn = "Prediction", OriginalLabelColumn = "Answer", }); // 训练模型 var model = pipeline.Train<QAData, QAPrediction>(dataView); // 使用模型进行预测 var prediction = model.Predict(new QAData { Question = "What is your name?" }); Console.WriteLine($"Q: {prediction.Question}"); Console.WriteLine($"A: {prediction.Answer}"); Console.ReadKey(); } private static IDataView LoadData(string path) { var lines = File.ReadAllLines(path); var data = new List<QAData>(); foreach (var line in lines) { var parts = line.Split('\t'); data.Add(new QAData { Question = parts[0], Answer = parts[1] }); } var context = new MLContext(); return context.Data.LoadFromEnumerable(data); } } public class QAData { [Column("0")] public string Question { get; set; } [Column("1")] public string Answer { get; set; } } public class QAPrediction { [ColumnName("Answer")] public string Answer { get; set; } [ColumnName("Prediction")] public float[] Score { get; set; } [ColumnName("Features")] public float[] Features { get; set; } } } ``` 上述代码中,我们首先加载问答数据,然后使用 ML.NET 定义模型架构,包括文本特征提取、使用 TensorFlow 进行预测等步骤。接着,我们使用数据训练模型,并使用模型进行预测。 需要注意的是,上述代码中的 `qa_data.txt` 和 `qa_model.pb` 文件需要根据实际情况进行替换。同时,需要将 TensorFlow 模型转换为 ML.NET 模型,可以使用以下代码: ```csharp var tfModel = File.ReadAllBytes("qa_model.pb"); var mlModel = TensorFlowUtils.LoadTensorFlowModel(new TFModel { Model = tfModel }); mlModel.Save("qa_model.zip"); ``` 以上代码将 TensorFlow 模型转换为 ML.NET 模型,并将其保存为 `qa_model.zip` 文件。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kiba518

赏个1毛钱吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值