C# 将标签分配给集群Id';s与ML.Net

C# 将标签分配给集群Id';s与ML.Net,c#,cluster-analysis,ml.net,C#,Cluster Analysis,Ml.net,我对ML.Net和AI基本上是新手。我有一个销售统计数据集。在滚动的12个月内,销售通常分为3个阶段-低、中、高(峰值)。我的想法是,我将根据前几年的数据训练一个KMeans聚类模型,然后使用该模型来确定我们当前所处的阶段 我的模型成功地识别了3个不同的集群,但是集群id似乎从来都不一样。例如,一次模型可能会说高相位是1,然后下一次它会说是3。难道我不能使用这个模型来知道集群id 1是“低”阶段,2是“中”阶段,等等吗 string featuresColumnName = "Features"

我对ML.Net和AI基本上是新手。我有一个销售统计数据集。在滚动的12个月内,销售通常分为3个阶段-低、中、高(峰值)。我的想法是,我将根据前几年的数据训练一个KMeans聚类模型,然后使用该模型来确定我们当前所处的阶段

我的模型成功地识别了3个不同的集群,但是集群id似乎从来都不一样。例如,一次模型可能会说高相位是1,然后下一次它会说是3。难道我不能使用这个模型来知道集群id 1是“低”阶段,2是“中”阶段,等等吗

string featuresColumnName = "Features";
var pipeline = context.Transforms
    .Concatenate(featuresColumnName, "SaleCount")
    .Append(context.Clustering.Trainers.KMeans(featuresColumnName, numberOfClusters: 3));

var model = pipeline.Fit(data);
var predictor = context.Model.CreatePredictionEngine<SaleModel, SalePrediction>(model);

var prediction = predictor.Predict(new SaleModel(1600));
string功能columnname=“功能”;
var pipeline=context.Transforms
.Concatenate(功能列名称,“SaleCount”)
.Append(context.Clustering.Trainers.KMeans(featuresColumnName,numberOfClusters:3));
var模型=pipeline.Fit(数据);
var predictor=context.Model.CreatePredictionEngine(模型);
var预测=预测器预测(新SaleModel(1600));

我可能完全误解了算法及其目的。如果是这样的话,请告诉我。

你能发布一段你的数据吗?如果您已经标记了数据,那么目标阶段与每一行关联,那么您应该选择多类分类,而不是聚类。集群用于未标记的数据,试图找出是否存在分组以及分组是什么

这是有道理的。因此,本质上我应该使用集群来手动梳理分组以找到相似性,然后使用这些数据点来分配标签。一旦我有了带标签的数据集,就使用多类分类模型?如果数据上没有标签,可以使用聚类,看看你的数据是否真的聚集在你提到的三个低、中、高上,然后你可以将各自的聚类中心分配给它们,然后选择多类。但如果您有典型的timeseries数据和峰值,您可能需要查看timeseries分析。请参见:并且:我也要尝试一下automl: