【发布时间】:2018-12-07 22:40:59
【问题描述】:
对于 sklearn 中的聚类算法,有没有办法指定您希望算法找到多少个聚类(而不是算法找到自己的聚类数)?根据我输入的数据,我希望得到 2 个集群,而不是它为我输出的 3 个集群。
如果有帮助,我正在使用 MeanShift 算法(但我的问题适用于所有算法)。此外,大多数教程似乎都使用 make_blobs,但我使用 pandas 的 read_csv 来上传我的数据,而不是如果这有任何改变。
这是我的代码的开始部分:
df = pd.read_csv(filename, header = 0)
original_headers = list(df.columns.values)
df = df._get_numeric_data()
data = df.values
ms = MeanShift()
ms.fit(data)
labels = ms.labels_
cluster_centers = ms.cluster_centers_
n_clusters_ = len(np.unique(labels))
print("Number of estimated clusters:", n_clusters_)
【问题讨论】:
-
不可以,
MeasShift中不能设置簇数。您可以尝试设置bandwidth参数,但仍然可能无法获得 2 个集群。如果你可以使用其他算法,then check others here,其中大多数都有一个参数n_clusters,你可以设置它来获得那么多集群。 -
@VivekKumar 我建议将其发布为答案 - 毕竟,它确实回答了问题
-
@desertnaut 我不愿以当前形式将此作为答案发布,因为我不知道如何配置
MeanShift中的参数以获得 OP 想要的 2 个集群。所以我建议使用其他算法。一旦 OP 对此作出答复并感到满意,就会这样做。 -
@VivekKumar 如果其他算法确实将我的数据拆分为正确的集群(我认为它确实如此),那么它一定会回答我的问题 :)
-
KMeans 运行良好!
标签: python scikit-learn hierarchical-clustering sklearn-pandas