在集群中打印主要特征 (python)
Printing principal features in clusters (python)
我有一个 mxn 矩阵,有 m 个特征和 n 个样本。该矩阵称为 term_individual
。聚类是使用 scikitlearn 完成的:
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=n_clusters)
kmeans.fit(term_individual.T)
centroids = kmeans.cluster_centers_.squeeze()
labels = kmeans.labels_
每个样本都是一个用正整数填充的向量。如果一个样本的第i个分量是n,则表示第i个特征在该样本中出现了n次。
我想知道每个集群最有代表性的特征。例如,假设第 i 个特征在第一个和第二个样本中多次出现,导致这些样本与许多其他也存在第 i 个特征的样本位于同一簇中。我想打印该功能(或与之关联的索引,即打印 i)。
感谢您的帮助。
看来您要问的问题是哪些功能对每个集群最重要。基本上你可以开始估计每个集群中每个特征的 zscore 平均值:
def cluster_feature_importance(X, Y, feature_importances):
N, M = X.shape
X = scale(X)
out = {}
for c in set(Y):
out[c] = dict(
zip(range(N), np.mean(X[Y==c, :], axis=0))
)
return out
这里 X
是你的矩阵 term_individual
和 Y
作为一个列表,通知每个样本属于哪个集群,例如像这样:[0, 0, 1, 1, 0, 3, 2, 2, 3, 0, ...]
其中 Y
是 n
长。
我有一个 mxn 矩阵,有 m 个特征和 n 个样本。该矩阵称为 term_individual
。聚类是使用 scikitlearn 完成的:
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=n_clusters)
kmeans.fit(term_individual.T)
centroids = kmeans.cluster_centers_.squeeze()
labels = kmeans.labels_
每个样本都是一个用正整数填充的向量。如果一个样本的第i个分量是n,则表示第i个特征在该样本中出现了n次。
我想知道每个集群最有代表性的特征。例如,假设第 i 个特征在第一个和第二个样本中多次出现,导致这些样本与许多其他也存在第 i 个特征的样本位于同一簇中。我想打印该功能(或与之关联的索引,即打印 i)。
感谢您的帮助。
看来您要问的问题是哪些功能对每个集群最重要。基本上你可以开始估计每个集群中每个特征的 zscore 平均值:
def cluster_feature_importance(X, Y, feature_importances):
N, M = X.shape
X = scale(X)
out = {}
for c in set(Y):
out[c] = dict(
zip(range(N), np.mean(X[Y==c, :], axis=0))
)
return out
这里 X
是你的矩阵 term_individual
和 Y
作为一个列表,通知每个样本属于哪个集群,例如像这样:[0, 0, 1, 1, 0, 3, 2, 2, 3, 0, ...]
其中 Y
是 n
长。