首页 > 解决方案 > 如何计算相似度矩阵的均值和标准差?

问题描述

我正在使用 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()

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

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

标签: pythonpandasnumpydataframesimilarity

解决方案


使用numpy.trilk=-1制作 0s 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)

推荐阅读