KMeansTrainer 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
用于 IEstimator<TTransformer> 训练 KMeans 群集器
public class KMeansTrainer : Microsoft.ML.Trainers.TrainerEstimatorBase<Microsoft.ML.Data.ClusteringPredictionTransformer<Microsoft.ML.Trainers.KMeansModelParameters>,Microsoft.ML.Trainers.KMeansModelParameters>
type KMeansTrainer = class
inherit TrainerEstimatorBase<ClusteringPredictionTransformer<KMeansModelParameters>, KMeansModelParameters>
Public Class KMeansTrainer
Inherits TrainerEstimatorBase(Of ClusteringPredictionTransformer(Of KMeansModelParameters), KMeansModelParameters)
- 继承
注解
若要创建此训练器,请使用 KMeans 或 Kmeans (选项) 。
输入和输出列
输入特征列数据必须是 Single。 不需要标签列。 该训练程序输出以下列:
输出列名称 | 列名称 | 描述 |
---|---|---|
Score |
Single 的向量 | 给定数据点的距离指向所有群集的质心。 |
PredictedLabel |
key 类型 | 模型预测的最接近的群集的索引。 |
训练器特征
机器学习任务 | 群集 |
是否需要规范化? | 是 |
是否需要缓存? | 是 |
除 Microsoft.ML 以外,还需要 NuGet | 无 |
可导出到 ONNX | 是 |
训练算法详细信息
K-means 是一种常用的聚类分析算法。 使用 K 表示时,数据将聚集到指定数量的群集中,以最大程度地减少平方距离的分类内总和。 此实施遵循 银阳K-means方法。 若要选择初始群集中心,可以使用以下三个选项之一:
- 随机初始化。 这可能会导致最佳聚类分析的潜在近似值。
- K-means++ 方法。 这是丁等人在此处引入的改进初始化算法,它保证找到$O (日志 K) $ 竞争的最佳 K 值解决方案的解决方案。
- The K-means||方法。 此方法 由 Bahmani 等人在此处引入,并使用并行方法大幅减少获取良好初始化所需的传递数。
K-means||是默认初始化方法。 使用 KMeansTrainer (Options) 创建训练器时,可以在选项中指定其他方法。
评分函数
输出分数列包含给定输入向量 $\textbf{x}\in \mathbb{R}^n$ 到每个分类的质心) 的 $L_2$-norm 距离 (的平方。 假设 $c$-th 群集的 centriod 为 $\textbf{m}_c \in \mathbb{R}^n$。 Score 列的 $c$-th 值将为 $d_c = ||\textbf{x} - \textbf{m}_c ||_2^2$。 预测的标签是具有$K$ 维向量 $[d_{0}, \dots, d_{K-1}]$中的最小值的索引,其中 $K$ 是分类数。
有关 K-means 和 K-means++ 的详细信息,请参阅:K-means K-means++
有关使用示例的链接,请查看“另请参阅”部分。
字段
FeatureColumn |
训练器期望的功能列。 (继承自 TrainerEstimatorBase<TTransformer,TModel>) |
LabelColumn |
训练器期望的标签列。 可以 |
WeightColumn |
训练器期望的权重列。 可以 |
属性
Info |
用于 IEstimator<TTransformer> 训练 KMeans 群集器 |
方法
Fit(IDataView) |
火车并返回一个 ITransformer。 (继承自 TrainerEstimatorBase<TTransformer,TModel>) |
GetOutputSchema(SchemaShape) |
用于 IEstimator<TTransformer> 训练 KMeans 群集器 (继承自 TrainerEstimatorBase<TTransformer,TModel>) |
扩展方法
AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment) |
将“缓存检查点”追加到估算器链。 这将确保根据缓存的数据训练下游估算器。 在执行多个数据传递的训练器之前,拥有缓存检查点会很有帮助。 |
WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>) |
给定估算器后,返回一个包装对象,该对象将调用委托一次 Fit(IDataView) 。 估算器通常必须返回有关适合的内容的信息,这就是为什么 Fit(IDataView) 该方法返回特定类型化对象的原因,而不仅仅是常规 ITransformer对象。 但是,同时, IEstimator<TTransformer> 通常形成为包含许多对象的管道,因此,我们可能需要通过 EstimatorChain<TLastTransformer> 估算器链生成一个估算器链,以便将转换器埋在此链中的某个位置。 对于该方案,我们可以通过此方法附加一个委托,该委托将在调用拟合后调用。 |