如何使用分类数据为聚类算法找到最佳聚类数

问题描述 投票:0回答:1

我正在处理具有多个功能的分类数据,并且我一直不知道适用于我的数据集的最佳群集数。

是否有任何方法可以找到用于分类数据聚类的最佳K。

我在需要指定簇数的情况下使用了K模式,但这不能解决问题。

感谢您的帮助

cluster-analysis categorical-data
1个回答
0
投票

嗯,集群实际上不是为序数数据设计的。我建议您看看OHE。签出此代码示例。

from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder(handle_unknown='ignore')
X = [['Male', 1], ['Female', 3], ['Female', 2]]
enc.fit(X)

enc.categories_

enc.transform([['Female', 1], ['Male', 4]]).toarray()

enc.inverse_transform([[0, 1, 1, 0, 0], [0, 0, 0, 1, 0]])

enc.get_feature_names(['gender', 'group'])

drop_enc = OneHotEncoder(drop='first').fit(X)
drop_enc.categories_

drop_enc.transform([['Female', 1], ['Male', 2]]).toarray()

https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html

或者,您可以使用OE。这是更多示例代码。

from sklearn.preprocessing import OrdinalEncoder
enc = OrdinalEncoder()
X = [['Male', 1], ['Female', 3], ['Female', 2]]
enc.fit(X)

enc.categories_

enc.transform([['Female', 3], ['Male', 1]])

https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OrdinalEncoder.html#sklearn.preprocessing.OrdinalEncoder

最后,您可以考虑使用相似性传播,分层聚类或DBSCAN;下面的链接。

https://scikit-learn.org/stable/auto_examples/cluster/plot_affinity_propagation.html

https://scikit-learn.org/stable/auto_examples/cluster/plot_agglomerative_dendrogram.html

https://scikit-learn.org/stable/auto_examples/cluster/plot_dbscan.html

我认为结果对聚类分类数据集没有意义或没有意义。红色,蓝色和绿色之间的“距离”是多少?有道理吗?

© www.soinside.com 2019 - 2024. All rights reserved.