sklearn指定集群数

时间:2018-06-28 19:10:31

标签: python scikit-learn hierarchical-clustering sklearn-pandas

对于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_)

1 个答案:

答案 0 :(得分:0)

如上所述,某些用户无法设置MeanShift算法中所需的簇数。

当我们谈论集群时,根据您的问题有很多模型可以使用。基于密度的模型,例如MeanShiftDBSCAN,试图找到比其余数据集更高密度的区域。因此,簇数将由数据本身定义。

例如,K-Means之类的基于质心的方法基于作为参数传递的质心数开始其迭代。

以下链接显示了sklearn的许多聚类算法。尝试找出最适合您的问题的人。

http://scikit-learn.org/stable/auto_examples/cluster/plot_cluster_comparison.html

参考文献:

https://towardsdatascience.com/the-5-clustering-algorithms-data-scientists-need-to-know-a36d136ef68

https://en.wikipedia.org/wiki/Cluster_analysis