如何计算相似矩阵的平均值和标准差



我正在使用CSV文件,我有一个代码可以计算文档之间的相似性。帖子 1 提供代码和数据的详细信息,

输出如下:

数据.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( 的情况下计算相似性矩阵下三角形的平均值和标准差(因为上下三角形都是相似的(。

我尝试使用熊猫内置平均值和标准:

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)
您可以将

所有不需要的值屏蔽为np.nan

df.values[np.triu_indices_from(df.values,0)]=np.nan
df.mean()
112    59.666667
114    50.500000
115    83.000000
117          NaN
dtype: float64
df.std()
112    15.885003
114     4.949747
115          NaN
117          NaN
dtype: float64

屏蔽后的值

df
      112   114   115  117
112   NaN   NaN   NaN  NaN
114  78.0   NaN   NaN  NaN
115  51.0  47.0   NaN  NaN
117  50.0  54.0  83.0  NaN

最新更新