【发布时间】:2019-04-27 05:05:03
【问题描述】:
我使用 k-means 在没有 TF-IDF 预处理的情况下对文本数据进行聚类,将文本数据转换为数字。 我可以毫无问题地检索 K-means 聚类组,但据我所知,K-means 不是只需要数字数据吗?
有人可以向我解释一下这个场合,K-means是如何计算文本之间的距离的?
数据是一个包含数千行的数据框,下面是其中的一些。 “牛奶果酱面包苹果牛肉苏打水”是我聚类的文本。 “真”表示该项目在第 n 个观察中显示。
Milk Jam Bread Apple Beef Soda
False True True False False False
True True False False False False
False False False False True False
False False True True False True
我的代码
# assigning index to items
id_compound_dict = dict(zip(df3.index, list(df3)))
[(k, id_compound_dict[k]) for k in list(id_compound_dict.keys())[0:5]]
# k-means clustering
n_clusters = 2
kmeans_fit = KMeans(n_clusters = n_clusters).fit(df3)
# Checking clustering groups
group = 0 # no n group
ids = np.where(kmeans_fit.labels_ == group)[0]
names = [id_compound_dict[i] for i in ids]
names
【问题讨论】:
-
文本到底在哪里?只是看起来像布尔值。您可能正在加载
1s 和0s。 -
@Tomothy32 "Milk Jam Bread Apple Beef Soda" 是我要聚类的文本
-
等等,
Trues 和Falses 是干什么用的? -
您的数据表示称为词袋。这不是文本。
-
@Tomothy32 True 表示该项目在第 n 次观察中显示