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);
ML.NET 示例:聚类之鸢尾花的更多相关文章
- ML.NET 示例:聚类之客户细分
写在前面 准备近期将微软的machinelearning-samples翻译成中文,水平有限,如有错漏,请大家多多指正. 如果有朋友对此感兴趣,可以加入我:https://github.com/fei ...
- ML.NET 示例:开篇
写在前面 准备近期将微软的machinelearning-samples翻译成中文,水平有限,如有错漏,请大家多多指正. 如果有朋友对此感兴趣,可以加入我:https://github.com/fei ...
- ML.NET 示例:目录
ML.NET 示例中文版:https://github.com/feiyun0112/machinelearning-samples.zh-cn 英文原版请访问:https://github.com/ ...
- ML.NET 示例:多类分类之鸢尾花分类
写在前面 准备近期将微软的machinelearning-samples翻译成中文,水平有限,如有错漏,请大家多多指正. 如果有朋友对此感兴趣,可以加入我:https://github.com/fei ...
- ML.NET 示例:深度学习之集成TensorFlow
写在前面 准备近期将微软的machinelearning-samples翻译成中文,水平有限,如有错漏,请大家多多指正. 如果有朋友对此感兴趣,可以加入我:https://github.com/fei ...
- ML.NET 示例:推荐之场感知分解机
写在前面 准备近期将微软的machinelearning-samples翻译成中文,水平有限,如有错漏,请大家多多指正. 如果有朋友对此感兴趣,可以加入我:https://github.com/fei ...
- ML.NET 示例:推荐之One Class 矩阵分解
写在前面 准备近期将微软的machinelearning-samples翻译成中文,水平有限,如有错漏,请大家多多指正. 如果有朋友对此感兴趣,可以加入我:https://github.com/fei ...
- ML.NET 示例:推荐之矩阵分解
写在前面 准备近期将微软的machinelearning-samples翻译成中文,水平有限,如有错漏,请大家多多指正. 如果有朋友对此感兴趣,可以加入我:https://github.com/fei ...
- ML.NET 示例:回归之销售预测
写在前面 准备近期将微软的machinelearning-samples翻译成中文,水平有限,如有错漏,请大家多多指正. 如果有朋友对此感兴趣,可以加入我:https://github.com/fei ...
随机推荐
- Java根据年龄段获取对应年份起始时间戳和最终时间戳、根据生日时间戳获取月份(与数据库的时间戳处理成的月份拼接成SQL条件)
1.传入年龄段,两个值,一个最小值,一个最大值,然后获取该年龄段的两个时间戳: (1)处理时间方法: /** * 根据年龄获取时间戳(开始年龄key取0,返回一年最后一秒时间戳,时间戳大:反之结束年龄 ...
- NoHttp封装--07 自定义异步任务框架
MainActivity: public class MainActivity extends Activity implements View.OnClickListener { .... @Ove ...
- <自动化测试方案书>方案书目录排版
自动化测试方案书 一.介绍 QQ交流群:585499566 这篇是一个系列,用来给需要做自动化测试方案的人做个参考,文章的内容是我收集网上和自己工作经验所得,希望能够给你们有所帮助 背景:因为工作需要 ...
- springboot 学习之路 2(注解介绍)
目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...
- html之css选择器学习
相关内容: 什么是css选择器 标签选择器 类选择器 id选择器 并集选择器(分组选择器) 交集选择器 后代选择器 子标签选择器 属性选择器 相邻兄弟选择器 伪类选择器 伪元素选择器(伪对象选择器) ...
- Scala链式编程内幕
package big.data.analyse.scala /** * 链式编程原理 * Created by zhen on 2018/12/16. */ class Computer{def c ...
- Linux平台下RMAN异机恢复总结
下面总结.整理一下RMAN异机恢复这方面的知识点,这篇笔记在个人笔记里面躺了几年了,直到最近偶然被翻看到,遂整理.总结一下.如下所示,个人将整个RMAN异机恢复分为准备工作和操作步骤两大部分.当然,准 ...
- 安装Jenkins getting started卡住
前言 jenkins版本:2.32.3 操作系统:windows 卡住信息 如果在安装jenkins时卡在getting startted的界面,如下所示 解决方法 1.打开 运行 输入 servi ...
- [Hive_10] Hive 的分析函数
0. 说明 Hive 的分析函数 窗口函数 | 排名函数 | 最大值 | 分层次 | lead && lag 统计活跃用户 | cume_dist 1. 窗口函数(开窗函数) ove ...
- zabbix 添加自动发现端口并监控
最近在部署zabbix监控 有些服务器上开启的服务端口非常多 如果一个个添加监控会很繁琐,于是想到了自动发现规则 自动发现服务器上的服务端口并进行监控. 在zabbix客户端服务器上进行操作 1 ...