gpt4 book ai didi

python - 如何将我们自己的文本数据加载到 scikit 中进行 MeanShift 聚类?

转载 作者:行者123 更新时间:2023-11-30 08:55:33 24 4
gpt4 key购买 nike

我计划加载我自己的一组非结构化文本数据,如下所示:

64.242.88.10 - - [07/Mar/2004:16:05:49 -0800] "GET /twiki/bin/edit/Main/Double_bounce_sender?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846

或者也可以采用以下形式:

/usr/local/etc/snmp/snmpd.conf: line 68: Error: Blank line following agentaddress token.
NET-SNMP version 5.3.1

基本上,程序不关心给定数据的结构。

我已经编辑了 scikit 中 MeanShift 示例中给出的代码,以便我的代码加载我自己的数据集。在本例中,输入文件被命名为input

for idx, line in enumerate(input):
if(len(line) == ''):
continue;
line = line.strip()
tmpNumPy = np.array([line])
print tmpNumPy
example = np.append(example, tmpNumPy)

# Compute clustering with MeanShift

# The following bandwidth can be automatically detected using
bandwidth = estimate_bandwidth(example, quantile=0.2, n_samples=500)

ms = MeanShift(bandwidth=bandwidth, bin_seeding=True)
ms.fit(X)
labels = ms.labels_
cluster_centers = ms.cluster_centers_

labels_unique = np.unique(labels)
n_clusters_ = len(labels_unique)

print(labels_unique)
print("number of estimated clusters : %d" % n_clusters_)

但是,当我运行此代码时,出现以下错误:

ValueError: data type not understood

我想知道如何使用 scikit 将一组文本数据而不是数值加载到 MeanShift 聚类中,或者我可以采取任何其他方法吗?

注意:我已经浏览了以下链接,但没有任何运气:

Meanshift in scikit learn (python) doesn't understand datatype

Loading your own text dataset to scikit-learn

最佳答案

如果您想形成文本簇,首先您需要在向量空间中表示文本数据集。执行此操作的标准方法称为 Latent Semantic Analysis (LSA)。基本要点是计算一个矩阵,其中每行代表一个文档,每列代表一个术语。矩阵的元素是每个文档中每个术语的术语频率-逆文档频率 (tfidf) 值。这个矩阵将是巨大且稀疏的。您将使用奇异值分解 (SVD) 将此矩阵的维数降低为您选择的多个“主题”。标准主题数量为200-500。

一个优秀的 LSA Python 包叫做 Gensim

将文本表示为向量后,您可以根据它们之间的余弦距离对它们进行聚类,余弦距离表示任意两个文档在语义上的相似程度。 sklearn MeanShift 实现不允许您指定余弦距离,但如果您在聚类之前对向量进行归一化,您仍然可以获得语义相似性的良好度量。

关于python - 如何将我们自己的文本数据加载到 scikit 中进行 MeanShift 聚类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22758105/

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