我正在处理 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.tril
和 k=-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/