python - 如何计算相似度矩阵的均值和标准差?
问题描述
我正在使用 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
制作 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)
推荐阅读
- excel - 转置和 if - excel
- javascript - 如何在基于类的组件中使用 React.forwardRef?
- amazon-web-services - 禁用 http 重定向到 https
- python - 如何使用 python comtypes.client 为特定版本的应用程序创建 com 对象?
- javascript - module.js 中的语法错误 - 应用程序在 IE 和 Egde 中为空白
- r - R中更快的多列部分字符串识别循环
- pdf - 浏览器是否可以重新打开下载的文件,而不是每次请求时都下载文件?
- git - Git - 查找提交的所有父母的最古老的共同祖先分支点?
- python - 如何根据同义词映射两个数据框?我尝试使用同义词集,但并不详尽
- android - 在 DialogFragment 中引用布局层内的视图