python - 使用 scikit-learn 计算项目描述之间的余弦相似度

标签 python python-2.7 scikit-learn cosine-similarity

我正在使用 python 2.7 和 scikit-learn 来查找项目描述之间的余弦相似度。

A有一个df,例如:

items    description

1fgg     abcd ty
2hhj     abc r 
3jkl     r df

我做了以下程序:

1) 对每个描述进行标记和词干处理

2)使用tf-idf将语料库变换到向量空间

3) 计算每个描述文本之间的余弦距离,作为相似度的度量。 距离 = 1 - 余弦相似度(tfidf_matrix)

我的目标是拥有一个像这样的items的相似度矩阵,并回答这样的问题:“项目1ffg2hhj<之间的相似度是什么:

        1fgg    2hhj    3jkl
1ffg    1.0     0.8     0.1
2hhj    0.8     1.0     0.0
3jkl    0.1     0.0     1.0 

如何得到这个结果?感谢您抽出时间。

最佳答案

您可以使用 numpy 数组创建矩阵,然后添加索引和头来创建数据帧。

假设您有一个描述列表:descriptions = ['abc', 'bcd', 'etc' ...] 和相应的 tf-idf 矩阵。 (行号对应描述号)

您想要创建一个形状为 NxN 的空 numpy 数组,其中 N = len(words)

distance_matrix = np.zeros((N,N))

然后你需要用实际距离填充它:

for i in range(N):
    for j in range(N):
        distance_matrix[i,j] = cosine_distance(tf_idf[i,:], tf_idf[j,:])

您可以使用

创建数据框

pandas.DataFrame(distance_matrix,index = items_list,columns = items_list)

关于python - 使用 scikit-learn 计算项目描述之间的余弦相似度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35487537/

相关文章:

python - 类型错误 : 'type' object has no attribute '__getitem__' in pandas DataFrame

python - 具有默认选项的数据类参数选择

python - 在 Python 中将 UNIX 时间戳转换为非本地时间

python - 将列表中具有特定第一个单词的每个字符串移动到另一个列表

python - 在 Windows 64 位上安装 Scrapy 时遇到问题

python - 如何将连续变量转换为分类变量?

python - 如何使用 sklearn.decomposition FactorAnalysis 在 python 中获取因子加载

python - 使用sklearn线性回归,如何限制计算的回归系数大于0?

python - 替换 Pandas 数据框中特定范围的值

python - 递归访问嵌套字典的路径和值