【发布时间】: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