【问题标题】:Changing the results of Kmeans algorithm改变 Kmeans 算法的结果
【发布时间】:2019-12-22 16:20:52
【问题描述】:

我使用KBinsDiscretizer 使用kmeans 算法将我的数据聚类到四个类别,如下所示。目标是基于avg_error 的值拥有4 个集群。代码正常运行并返回 4 个集群:

0:非常低的错误率,

1:错误率低,

2:错误率高,

3:非常高的错误率。

最后两个簇中的数据点数(2:高错误率,3:非常高的错误率)非常低。我需要找到一种影响结果的方法,以便将更多数据点分配给这两个集群。有可能吗?如果可以,怎么做?

enc = KBinsDiscretizer(n_bins=4, encode='ordinal', strategy="kmeans")

grouped = df.groupby('day')
clustered = pd.DataFrame()
for name, group in grouped:
  group["cluster"] = enc.fit_transform(group.avg_error.values.reshape(-1,1))
  clustered = clustered.append(group)

【问题讨论】:

  • 您是否查看了imbalanced-learn.org 以使用平衡技术并增加您的样本数量?
  • 虽然您可以使用一些平衡技术,但我觉得这个问题很奇怪。听起来你有数字1,1,...,1, 10,10,...,10, 100,...,100,1000,...,1000,由于你的100-s 和1000-s 太少,你还想将一些10-s 与它们分组。如果我正确理解情况,那没有多大意义。为什么需要它?

标签: machine-learning cluster-analysis k-means unsupervised-learning


【解决方案1】:

kmeans 策略试图优化平方误差的统计量。那么你想优化多少数量呢?

在您的数据上,您也可以简单地手动预定义阈值,而不是对其进行优化。

【讨论】:

    猜你喜欢
    • 2018-01-23
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    相关资源
    最近更新 更多