- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我计划加载我自己的一组非结构化文本数据,如下所示:
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
最佳答案
如果您想形成文本簇,首先您需要在向量空间中表示文本数据集。执行此操作的标准方法称为 Latent Semantic Analysis (LSA)。基本要点是计算一个矩阵,其中每行代表一个文档,每列代表一个术语。矩阵的元素是每个文档中每个术语的术语频率-逆文档频率 (tfidf) 值。这个矩阵将是巨大且稀疏的。您将使用奇异值分解 (SVD) 将此矩阵的维数降低为您选择的多个“主题”。标准主题数量为200-500。
一个优秀的 LSA Python 包叫做 Gensim 。
将文本表示为向量后,您可以根据它们之间的余弦距离对它们进行聚类,余弦距离表示任意两个文档在语义上的相似程度。 sklearn MeanShift 实现不允许您指定余弦距离,但如果您在聚类之前对向量进行归一化,您仍然可以获得语义相似性的良好度量。
关于python - 如何将我们自己的文本数据加载到 scikit 中进行 MeanShift 聚类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22758105/
我是一名优秀的程序员,十分优秀!