CML.net机器学习入门

一赫技术 2024-04-04 08:32:35
摘要

ML.NET是一个开源的机器学习框架,由微软开发和维护。它是专门为.NET开发者设计的,可以在.NET平台上轻松地集成和使用机器学习模型。

ML.NET提供了一组易于使用的API和工具,使开发者能够在.NET应用程序中使用机器学习技术。它支持各种常见的机器学习任务,包括分类、回归、聚类和推荐等。开发者可以使用ML.NET来训练和评估机器学习模型,然后将其集成到他们的应用程序中,以进行预测和推断。

正文

ML.NET具有以下特点和优势:

简单易用:ML.NET提供了简单易用的API和工具,使开发者能够快速上手并使用机器学习技术,无需深入了解复杂的算法和数学原理。跨平台支持:ML.NET可以在Windows、Linux和macOS等平台上运行,使开发者能够在不同的操作系统上开发和部署机器学习应用程序。集成性:ML.NET可以与.NET生态系统中的其他组件和工具集成,如ASP.NET、Azure、SQL Server等,使开发者能够将机器学习技术无缝地集成到他们的应用程序和解决方案中。可扩展性:ML.NET支持使用自定义的机器学习模型和算法,开发者可以根据自己的需求和场景进行扩展和定制。性能优化:ML.NET针对.NET平台进行了性能优化,可以高效地处理大规模数据和复杂的机器学习任务。第一个示例

在项目中添加Model

选一个算法

我们选数据分类方案

选取要训练的数据集

选取一个训练集

在模型生成器中,可以从本地文件添加数据或连接到 SQL Server 数据库。在本例中,您将从文件添加。yelp_labelled.txt

选择**“文件**”作为输入数据源类型。浏览 .选择数据集后,数据预览将显示在**“数据预览**”部分中。由于数据集没有标题,因此会自动生成标题(“col0”和“col1”)。yelp_labelled.txt在“**要预测的列(标签)”**下,选择“col1”。标签是你所预测的,在本例中是数据集的第二列 (“col1”) 中找到的情绪。用于帮助预测标签的列称为**“功能**”。数据集中除“标注”之外的所有列都将自动选择为“要素”。在本例中,审阅注释列 (“col0”) 是“功能”列。您可以在高级数据选项中更新“功能”列并修改其他数据加载选项,但对于此示例来说,这不是必需的。训练模型

模型生成器根据为构建性能最佳模型而提供的训练时间量,使用不同的算法和设置来评估许多模型。

将训练时间(即您希望模型生成器探索各种模型的时间)更改为 60 秒(如果训练后未找到模型,可以尝试增加此数字)。请注意,对于较大的数据集,训练时间会更长。模型生成器会根据数据集大小自动调整训练时间。您可以更新高级训练选项中使用的优化指标和算法,但对于此示例来说,这不是必需的。选择“开始训练”以开始训练过程。训练开始后,您可以看到剩余时间。训练结果

训练完成后,您可以看到训练结果的摘要。

最佳宏精度 - 显示模型生成器找到的最佳模型的精度。更高的准确性意味着模型对测试数据的预测更正确。最佳模型 - 显示哪个算法在模型生成器的探索过程中表现最佳。训练时间 - 显示训练/探索模型所花费的总时间。探索的模型(总数) - 这显示模型生成器在给定时间内探索的模型总数。生成的代码隐藏 - 这会显示为帮助使用模型或训练新模型而生成的文件的名称。评估模型

“评估”步骤显示性能最佳的算法和最佳准确性,并允许你在 UI 中试用模型。

试用您的模型

可以在**“试用模型**”部分中对示例输入进行预测。文本框预先填充了数据集中的第一行数据,但你可以更改输入并选择“预测”按钮来尝试不同的情绪预测。

在这种情况下,0 表示消极情绪,1 表示积极情绪。

生成代码

训练完成后,将自动将四个文件作为代码隐藏添加到:SentimentModel.mbconfig

SentimentModel.consumption.cs:此文件包含模型输入和输出类以及可用于模型使用的方法。PredictSentimentModel.evaluate.cs:此文件包含模型输入和输出类以及可用于模型使用的方法。PredictSentimentModel.mlnet:此文件是经过训练的 ML.NET 模型,它是一个序列化的 zip 文件。SentimentModel.training.cs:此文件包含用于了解输入列对模型预测的重要性的代码。

代码调用static void Main(string[] args){ // 输入测试数据 var sampleData = new MLModel1.ModelInput() { Col0 = "This restaurant was wonderful." }; // 载入数据到检测模型 var result = MLModel1.Predict(sampleData); // 如果检测结是1,显示正面,否则负面 var sentiment = result.PredictedLabel == 1 ? "Positive" : "Negative"; Console.WriteLine($"Text: {sampleData.Col0}\nSentiment: {sentiment}");}
0 阅读:0

一赫技术

简介:感谢大家的关注