python - 如何计算相似度矩阵的均值和标准差?

标签 python pandas numpy dataframe similarity

我正在处理 CSV 文件,并且我有一个代码可以计算文档之间的相似性。发表1提供数据和输出的代码和详细信息如下:

data.csv 看起来像:

idx         messages
112  I have a car and it is blue
114  I have a bike and it is red
115  I don't have any car
117  I don't have any bike

输出是:

    id     112    114    115    117
    id                             
    112  100.0   78.0   51.0   50.0
    114   78.0  100.0   47.0   54.0
    115   51.0   47.0  100.0   83.0
    117   50.0   54.0   83.0  100.0

现在我想在没有身份数据 (100.0) 的情况下计算相似矩阵下三角的均值和标准差(因为上三角和下三角相似)。

我尝试使用 panda 内置的 mean 和 std 作为:

df_std = df.std()
df_Mean = df.mean()

但这考虑了输出中的所有数据,如身份和上三角。

我想知道是否有任何方法可以按照我提到的方式计算均值和标准差。

最佳答案

使用 numpy.trilk=-1 并生成 0 np.nan:

import numpy as np

ltri = np.tril(df.values, -1)
ltri = ltri[np.nonzero(ltri)]

输出:

array([[ 0.,  0.,  0.,  0.],
       [78.,  0.,  0.,  0.],
       [51., 47.,  0.,  0.],
       [50., 54., 83.,  0.]])

现在你可以做 ltri.std(), ltri.mean():

ltri.std(), ltri.mean()
# (14.361406616345072, 60.5)

关于python - 如何计算相似度矩阵的均值和标准差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56623864/

相关文章:

python - 使用二维数组索引一维 Numpy 数组

python-2.7 - 具有单个样本的 Sklearn 训练模型引发 DeprecationWarning

python - DataFrame 上的地板分割操作的 ValueError 异常

python - 将 Pandas 列拆分为多列

python - 获取 pandas 中多个数据帧的每个第 n 个元素

python - 使用 Python 高效地绘制 csv 格式的表格

python - tkinter py2app 应用程序不会关闭

python - 无法在 ubuntu 12.04 上的 virtualenv 内安装 pycrypto

Python BeautifulSoup 从保存的 HTML 网页中提取表格

Pandas 回填日期多索引数据