gpt4 book ai didi

python - 如何通过特征重要性来解释文本聚类结果? (DBSCAN)

转载 作者:行者123 更新时间:2023-12-03 21:10:56 25 4
gpt4 key购买 nike

有类似的questions和图书馆,如 ELI5LIME .但是我找不到解决我的问题的方法。我有一组文档,我正在尝试使用 scikit-learn 的 DBSCAN 对它们进行聚类。 .首先,我正在使用 TfidfVectorizer对文档进行矢量化。然后,我简单地对数据进行聚类并接收预测的标签。我的问题是:如何解释集群形成的原因?我的意思是,假设有 2 个预测的集群(集群 1 和集群 2)。 哪些特征(因为我们的输入数据是向量化的文档,我们的特征是向量化的“词”)对于创建集群 1(或集群 2)很重要?
您可以在下面找到我目前正在处理的最小示例。这不是我试图实现的最小工作示例(因为我不知道如何实现)。

import numpy as np
import pandas as pd
from sklearn.cluster import DBSCAN
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import TfidfVectorizer

categories = ['alt.atheism', 'soc.religion.christian',
'comp.graphics', 'sci.med']
twenty_train = fetch_20newsgroups(
subset='train',
categories=categories,
shuffle=True,
random_state=42,
remove=('headers', 'footers'),
)

visualize_train_data = pd.DataFrame(data=np.c_[twenty_train
['data'], twenty_train
['target']])
print(visualize_train_data.head())

vec = TfidfVectorizer(min_df=3, stop_words='english',
ngram_range=(1, 2))
vectorized_train_data = vec.fit_transform(twenty_train.data)

clustering = DBSCAN(eps=0.6, min_samples=2).fit(vectorized_train_data)
print(f"Unique labels are {np.unique(clustering.labels_)}")
附注:我提供的问题专门针对 k-Means 算法,答案不是很直观(对我而言)。 ELI5 和 LIME 是很棒的库,但它们提供的示例与回归或分类相关(不是聚类),它们的回归器和分类器直接支持“预测”。 DBSCAN 不...

最佳答案

首先,让我们了解您使用的嵌入空间是什么。 TfidfVectorizer将创建一个非常稀疏的矩阵,其中一个维度对应于句子,另一个维度对应于您的词汇(文本中的所有单词,除了“停用词”和非常不常见 - 参见 min_dfstop_words )。当您要求 DBSCAN 对句子进行聚类时,它会使用单词 tf-idfs 的那些表示,并使用欧几里德距离度量找到彼此接近的句子。因此,希望您的集群应该由具有常用词的句子创建。为了找到特定集群中哪些单词(或“特征”)最重要,只需取属于同一集群(矩阵的行)的句子,并找到列的前 K 个(比如~10)个索引具有最常见的非零值。然后查找这些词在使用什么vec.get_feature_names()更新

cluster_id = 55   # select some cluster
feat_freq = (vectorized_train_data[(clustering.labels_== cluster_id)] > 0).astype(int).sum(axis=0) # find frequencies of the words
max_idx = np.argwhere(feat_freq == feat_freq.max())[:,1] # select those with maximum frequency
for i in max_idx:
print(i, vec.get_feature_names()[i])

请注意,您在此处获得的集群非常小。集群 55 只有 4 个句子。大多数其他人只有2句话。

关于python - 如何通过特征重要性来解释文本聚类结果? (DBSCAN),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63934291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com