我有一个数据框,包含LDA主题分发输出以及其他人口统计信息,如下所示:
single_df = pd.DataFrame([{"department": 'marketing', 'LDA_1': 0.252, 'LDA_2':0.002, 'LDA_3':0.50},
{"department": 'engineering', 'LDA_1': 0.478, 'LDA_2':0.152, 'LDA_3':0.492},
{"department": 'cooperate', 'LDA_1': 0.52, 'LDA_2':0.780, 'LDA_3':0.50},
{"department": "marketing", 'LDA_1': 0.352, 'LDA_2':0.052, 'LDA_3':0.20}])
我想进入下面的最终数据帧。我如何编写一个函数来计算返回到数据帧下方的两行(列名包含“LDA_”)之间的Jenson-Shannon距离
i j same_department distance_LDA
0 1 0 0.23
0 2 0 0.43
0 3 1 0.26
1 2 0 0.24
1 3 0 0.11
2 3 0 0.29
我已经编写了如下代码来计算各个对之间的JS距离。如何将其转换为函数
array=single_df.filter(regex='LDA').to_numpy()
distance.jensenshannon(array[0],array[1])
然后,为了计算两个人是否共享该部门,我有以下代码:
def same_department(i,j):
if i['department'] == j['department']:
return 1
else:
return 0
让我们尝试生成所有可能的行组合,合并以生成一个数据帧,其中比较可以在同一行中进行。然后根据列后缀按行应用jensenshannon函数:
输出:
相关问题 更多 >
编程相关推荐