特征聚集:如何检索构成簇的特征?

2024-06-11 16:20:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用scikitlearn的特性聚合来对特性而不是观察值使用层次聚类过程。在

这是我的代码:

from sklearn import cluster
import pandas as pd

#load the data
df = pd.read_csv('C:/Documents/data.csv')
agglo = cluster.FeatureAgglomeration(n_clusters=5)
agglo.fit(df)
df_reduced = agglo.transform(df)

我原来的df有形状(990,15),使用特征聚集后,df峎现在减少了(990,5)。在

现在如何找出最初的15个特性是如何聚集在一起的?换言之,df的5个新特性中的每一个都由df的哪些原始特性组成?在


Tags: csv代码fromimportpandasdfdata过程
2条回答

在对cluster进行拟合之后,agglo.labels_包含一个列表,该列表告诉原始数据集中的每个特征属于哪个集群。在

在转换过程中,每个簇中的特征如何组合的方式由执行层次聚类的方式来设置。简化后的特征集由n个簇的簇中心(即n个样本-维向量)组成。对于某些应用程序,您可能会认为计算中心使用不同的集群中心定义(即中值而不是平均值,以避免异常值的影响等)。在

n_features = 15
feature_identifier = range(n_features)
feature_groups = [np.array(feature_identifier )[agglo.labels_==i] for i in range(n_clusters)]
new_features = [df.loc[:,df.keys()[group]].mean(0) for group in feature_groups]

不要忘记预先标准化这些特性(例如使用sklearn的scaler)。否则,您宁愿对数量的比例进行分组,而不是对类似行为进行聚类。 希望有帮助! 还没有测试代码。如果有问题请告诉我。在

相关问题 更多 >