我想为两列的每 5 行计算归一化互信息 (NMI)。 例如,我有一个包含两列的 df:
| Column_A | Column_B |
0 3.0 5.75
1 6.0 3.75
2 1.0 6.25
3 0.0 0.00
4 1.0 18.00
5 5.0 12.50
我想计算两列前三行的 NMI:
| Column_A | Column_B |
0 3.0 5.75
1 6.0 3.75
2 1.0 6.25
,然后移至[1:3]: |列_A |列_B | 1 6.0 3.75 2 1.0 6.25 3 0.0 0.00 , 和 [2:4]:
| Column_A | Column_B |
2 1.0 6.25
3 0.0 0.00
4 1.0 18.00
等
我试过了
df[['Column_A ','Column_B ']].rolling(window = 5).apply(lambda x: normalized_mutual_info_score(df['Column_A '],df['Column_A ']),raw=True)
我得到的结果是这样的:
| Column_A | Column_B |
0 NaN NaN
1 NaN NaN
2 NaN NaN
3 NaN NaN
4 0.817271 0.817271
然而,前5行手动计算的结果是0.9057460992755193;我使用的方法是:
df = df[['count_incident','count_nonincident']].head(5)
df_1 = normalized_mutual_info_score(df['Column_A '],df['Column_B '])
df_1
我想知道是否有人可以帮助修复我的代码
df[['Column_A ','Column_B ']].rolling(window = 5).apply(lambda x: normalized_mutual_info_score(df['Column_A '],df['Column_B ']),raw=True)
或任何其他方式来实现结果。
我也体会到结果通过rolling和apply来保持一致...应该是不同组不一样吧
非常感谢!