KMeansTrainer 类

定义

用于 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)
继承

注解

若要创建此训练器,请使用 KMeansKmeans(选项)。

输入和输出列

输入特征列数据必须是 Single。 不需要标签列。 该训练程序输出以下列:

输出列名称 列类型 Description
Score 向量 Single 给定数据点到所有群集的质心的距离。
PredictedLabel 类型 模型预测的最接近的群集的索引。

训练器特征

机器学习任务 Clustering
是否需要规范化? 是的
是否需要缓存? 是的
除 Microsoft.ML 之外所需的 NuGet None
可导出到 ONNX 是的

训练算法详细信息

K-means 是一种常用的聚类分析算法。 使用 K 表示时,数据将聚集到指定数量的分类中,以最大程度地减少平方距离的分类内总和。 此实施遵循 阴阳K-means方法。 若要选择初始群集中心,可以使用以下三个选项之一:

  • 随机初始化。 这可能会导致最佳聚类分析的近似值可能很差。
  • K-means++ 方法。 这是 Ding 等人在此处引入的改进初始化算法,它保证找到一个$O(log K)$ 竞争的最佳 K 平均值解决方案的解决方案。
  • The K-means||方法。 此方法 Bahmani 等人在此处引入,并使用并行方法大幅减少获取良好初始化所需的传递数。

K-means||是默认初始化方法。 使用 KMeansTrainer(Options)创建训练程序时,可以在选项中指定其他方法。

评分函数

输出分数列包含给定输入向量 $\textbf{x}\in \mathbb{R}^n$ 到每个分类的质心的 $L_2$-norm 距离(即 Euclidean 距离)的平方。 假设第 $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-meansK-means++

有关使用示例的链接,请查看“另请参阅”部分。

字段

名称 说明
FeatureColumn

训练程序期望的功能列。

(继承自 TrainerEstimatorBase<TTransformer,TModel>)
LabelColumn

训练程序期望的标签列。 可以是 null,指示标签不用于训练。

(继承自 TrainerEstimatorBase<TTransformer,TModel>)
WeightColumn

训练器期望的权重列。 可以 null,指示权重不用于训练。

(继承自 TrainerEstimatorBase<TTransformer,TModel>)

属性

名称 说明
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> 估算器链来生成一个估算器链,而我们想要获取转换器的估算器被埋在此链中的某个位置。 对于这种情况,我们可以通过此方法附加一个委托,该委托将在调用拟合后调用。

适用于

另请参阅