写在前面
准备近期将微软的machinelearning-samples翻译成中文,水平有限,如有错漏,请大家多多指正。
如果有朋友对此感兴趣,可以加入我:https://github.com/feiyun0112/machinelearning-samples.zh-cn
鸢尾花分类
| ML.NET 版本 | API 类型 | 状态 | 应用程序类型 | 数据类型 | 场景 | 机器学习任务 | 算法 |
|---|---|---|---|---|---|---|---|
| v0.7 | 动态 API | 最新版本 | 控制台应用程序 | .txt 文件 | 鸢尾花分类 | 多类分类 | Sdca Multi-class |
在这个介绍性示例中,您将看到如何使用ML.NET来预测鸢尾花的类型。 在机器学习领域,这种类型的预测被称为多类分类。
问题
这个问题集中在根据花瓣长度,花瓣宽度等花的参数预测鸢尾花(setosa,versicolor或virginica)的类型。
为了解决这个问题,我们将建立一个ML模型,它有4个输入参数:
- petal length
- petal width
- sepal length
- sepal width
并预测该花属于哪种鸢尾花类型:
- setosa
- versicolor
- virginica
确切地说,模型将返回花属于每个类型的概率。
ML 任务 - 多类分类
多类分类的广义问题是将项目分类为三个或更多类别中的一个。 (将项目分类为两个类别之一称为二元分类)。
多类分类的其他例子包括:
- 手写数字识别:预测图像中包含10个数字(0~9)。
- 问题标记:预测问题属于哪个类别(UI,后端,文档)。
- 根据患者的测试结果预测疾病阶段。
所有这些例子的共同特点是我们要预测的参数可以取几个(超过两个)值中的一个。换句话说,这个值由enum表示,而不是由integer、float、double或boolean类型表示。
解决方案
为了解决这个问题,首先我们将建立一个ML模型。然后,我们将在现有数据上训练模型,评估其有多好,最后我们将使用该模型来预测鸢尾花类型。

1. 建立模型
建立模型包括:
- 使用
DataReader上传数据(iris-train.txt) - 创建一个评估器并将数据转换为一列,以便ML算法(使用
Concatenate)可以有效地使用它。 - 选择学习算法(
StochasticDualCoordinateAscent)。
初始代码类似以下内容:
// Create MLContext to be shared across the model creation workflow objects // Set a random seed for repeatable/deterministic results across multiple trainings.
