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。 不需要标签列。 该训练程序输出以下列:

输出列名称 列名称 描述
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

训练器期望的标签列。 可以 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> 估算器链生成一个估算器链,以便将转换器埋在此链中的某个位置。 对于该方案,我们可以通过此方法附加一个委托,该委托将在调用拟合后调用。

适用于

另请参阅