ML.NET 示例:聚类之鸢尾花

写在前面

准备近期将微软的machinelearning-samples翻译成中文,水平有限,如有错漏,请大家多多指正。
如果有朋友对此感兴趣,可以加入我:https://github.com/feiyun0112/machinelearning-samples.zh-cn
?

聚类鸢尾花数据

ML.NET 版本 API 类型 状态 应用程序类型 数据类型 场景 机器学习任务 算法
v0.7 动态 API 最新版 控制台应用程序 .txt 文件 聚类鸢尾花 聚类 K-means++

在这个介绍性示例中,您将看到如何使用ML.NET将不同类型鸢尾花划分为不同组。在机器学习的世界中,这个任务被称为群集

问题

为了演示聚类API的实际作用,我们将使用三种类型的鸢尾花:setosa、versicolor和versicolor。它们都存储在相同的数据集中。尽管这些花的类型是已知的,我们将不使用它,只对花的参数,如花瓣长度,花瓣宽度等运行聚类算法。这个任务是把所有的花分成三个不同的簇。我们期望不同类型的花属于不同的簇。

模型的输入使用下列鸢尾花参数:

  • petal length
  • petal width
  • sepal length
  • sepal width

ML 任务 - 聚类

聚类的一般问题是将一组对象分组,使得同一组中的对象彼此之间的相似性大于其他组中的对象。

其他一些聚类示例:

  • 将新闻文章分为不同主题:体育,政治,科技等。
  • 按购买偏好对客户进行分组。
  • 将数字图像划分为不同的区域以进行边界检测或物体识别。

聚类看起来类似于多类分类,但区别在于对于聚类任务,我们不知道过去数据的答案。 因此,没有“导师”/“主管”可以判断我们的算法的预测是对还是错。 这种类型的ML任务称为无监督学习

解决方案

要解决这个问题,首先我们将建立并训练ML模型。 然后我们将使用训练模型来预测鸢尾花的簇。

1. 建立模型

建立模型包括:上传数据(使用TextLoader加载iris-full.txt),转换数据以便ML算法(使用Concatenate)有效地使用,并选择学习算法(KMeans)。 所有这些步骤都存储在trainingPipeline中:

//Create the MLContext to share across components for deterministic results
MLContext mlContext = new MLContext(seed: 1);  //Seed set to any number so you have a deterministic environment

// STEP 1: Common data loading configuration
TextLoader textLoader = mlContext.Data.TextReader(new TextLoader.Arguments()
                                {
                                    Separator = "\t",
                                    HasHeader = true,
                                    Column = new[]
                                                {
                                                    new TextLoader.Column("Label", DataKind.R4, 0),
                                                    new TextLoader.Column("SepalLength", DataKind.R4, 1),
                                                    new TextLoader.Column("SepalWidth", DataKind.R4, 2),
                                                    new TextLoader.Column("PetalLength", DataKind.R4, 3),
                                                    new TextLoader.Column("PetalWidth", DataKind.R4, 4),
                                                }
                                });

IDataView fullData = textLoader.Read(DataPath);

//STEP 2: Process data transformations in pipeline
var dataProcessPipeline = mlContext.Transforms.Concatenate("Features", "SepalLength", "SepalWidth", "PetalLength", "PetalWidth");

// STEP 3: Create and train the model
var trainer = mlContext.Clustering.Trainers.KMeans(features: "Features", clustersCount: 3);
var trainingPipeline = dataProcessPipeline.Append(trainer);

2. 训练模型

训练模型是在给定数据上运行所选算法的过程。 要执行训练,您需要调用Fit()方法。

var trainedModel = trainingPipeline.Fit(trainingDataView);

3. 使用模型

在建立和训练模型之后,我们可以使用Predict()API来预测鸢尾花的簇,并计算从给定花参数到每个簇(簇的每个质心)的距离。

                // Test with one sample text
                var sampleIrisData = new IrisData()
                {
                    SepalLength = 3.3f,
                    SepalWidth = 1.6f,
                    PetalLength = 0.2f,
                    PetalWidth = 5.1f,
                };

                // Create prediction engine related to the loaded trained model
                var predFunction = trainedModel.MakePredictionFunction<IrisData, IrisPrediction>(mlContext);

                //Score
                var resultprediction = predFunction.Predict(sampleIrisData);

                Console.WriteLine($"Cluster assigned for setosa flowers:" + resultprediction.SelectedClusterId);

原文地址:https://www.cnblogs.com/feiyun0112/p/10124828.html

时间: 2024-08-02 16:28:13

ML.NET 示例:聚类之鸢尾花的相关文章

ML.NET 示例:目录

ML.NET 示例中文版,英文原版请访问:https://github.com/dotnet/machinelearning-samples ML.NET 示例 ML.NET 是一个跨平台的开源机器学习框架,使.NET开发人员使用机器学习变得很容易. 在这个GitHub 存储库中,我们提供了示例,这些示例将帮助您开始使用ML.NET,以及如何将ML.NET加入到现有的和新的.NET应用程序中. 注意: 请在机器学习存储库中打开与ML.NET框架相关的问题.请仅当您遇到此存储库中的示例问题时,才在

ML.NET 示例:回归之销售预测

写在前面 准备近期将微软的machinelearning-samples翻译成中文,水平有限,如有错漏,请大家多多指正. 如果有朋友对此感兴趣,可以加入我:https://github.com/feiyun0112/machinelearning-samples.zh-cn eShopDashboardML - 销售预测 ML.NET 版本 API 类型 状态 应用程序类型 数据类型 场景 机器学习任务 算法 v0.7 动态 API 最新版本 ASP.NET Core Web应用程序和控制台应用

ML.NET 示例:推荐之One Class 矩阵分解

写在前面 准备近期将微软的machinelearning-samples翻译成中文,水平有限,如有错漏,请大家多多指正. 如果有朋友对此感兴趣,可以加入我:https://github.com/feiyun0112/machinelearning-samples.zh-cn 产品推荐 - 矩阵分解问题示例 ML.NET 版本 API 类型 状态 应用程序类型 数据类型 场景 机器学习任务 算法 v0.8 动态 API 最新版本 控制台应用程序 .txt 文件 推荐 矩阵分解 MatrixFact

使用ML.NET + ASP.NET Core + Docker + Azure Container Instances部署.NET机器学习模型

本文将使用ML.NET创建机器学习分类模型,通过ASP.NET Core Web API公开它,将其打包到Docker容器中,并通过Azure Container Instances将其部署到云中. 先决条件 本文假设您对Docker有一定的了解.构建和部署示例应用程序还需要以下软件/依赖项.重要的是要注意应用程序是在Ubuntu 16.04 PC上构建的,但所有软件都是跨平台的,应该适用于任何环境. Docker Azure CLI .NET Core 2.0 Docker Hub Accou

使用ML.NET进行自定义机器学习

ML.NET是Microsoft最近发布的用于机器学习的开源,跨平台,代码优先的框架.尽管对我们来说是一个新的框架,但该框架的根源是Microsoft Research,并且在过去十年中已被许多内部团队使用,包括那些您几乎肯定听说过的产品的开发人员-Microsoft Windows,Office和Bing,仅举几例. ML.NET使.NET开发人员可以轻松地将机器学习集成到其应用程序中,无论是控制台,桌面还是Web.它涵盖了机器学习活动的整个生命周期,从模型的训练和评估到使用和部署.支持许多典

AI Boot Camp 分享之 ML.NET 机器学习指南

今天在中国七城联动,全球134场的AI BootCamp胜利落幕,广州由卢建晖老师组织,我参与分享了一个主题<ML.NET 机器学习指南和Azure Kinect .NET SDK概要>,活动虽然只有短短的2天时间的宣传,报名70人,到场40多人. 下面我和你分享一下我对ML.NET 机器学习的一些内容. 作为一个.NET开发者的你,可能很难立即进入机器学习.主要原因之一就是我们无法启动Visual Studio 使用我们所精通的.NET技术尝试这个新事物,这个领域被认为更适合该工作的编程语言

【译】聚类分析

前言:这两天着手做毕设,在今年的研究生数学建模的基础上研究“大数据下多流形聚类分析”问题,导师要求我这周把每一个算法的实现对比一下效果展示给他看,表示今天google的搜索结果中没有找到诸如SSC的函数教程,又养成了不copy代码的习惯,那就自己从头开始学呗,刚好mathworks上面提供一篇详细的聚类分析的教程,特此翻译一下,希望自己和读者都能更好的咬文嚼字,以作为未来几天高维度数据matlab聚类实现的热身运动. 下面的例子将演示如何使用Matlab内的统计和机器学习工具箱中的聚类分析算法检

《Spark MLlib机器学习实践》内容简介、目录

http://product.dangdang.com/23829918.html Spark作为新兴的.应用范围最为广泛的大数据处理开源框架引起了广泛的关注,它吸引了大量程序设计和开发人员进行相关内容的学习与开发,其中 MLlib是 Spark框架使用的核心.本书是一本细致介绍 Spark MLlib程序设计的图书,入门简单,示例丰富. 本书分为 12章,从 Spark基础安装和配置开始,依次介绍 MLlib程序设计基础.MLlib的数据对象构建.MLlib中 RDD使用介绍,各种分类.聚类.

来,了解下用Python实现的四种机器学习技术!

机器学习技术VS.算法 虽然本教程专门讨论Python的机器学习技术,但我们很快就会转向算法.但在我们开始关注技术和算法之前,让我们先看看它们是否是同一回事. A 技术是解决问题的方法.这是一个相当通用的术语.但当我们说我们有一个算法,我们的意思是,我们有一个输入,并希望从它得到一个特定的输出.我们已经明确规定了实现这一目标所应遵循的步骤.我们将不遗余力地说,一个算法可以使用多种技术来获得输出. 现在我们已经区分了这两种技术,让我们来了解更多关于机器学习技术的内容. 用Python实现机器学习技