首页 > 解决方案 > Python DataFrame:每行的反距离概率

问题描述

我有一个pandas DataFrame形状 (2697, 30) 的示例,其中每个单元格都是标准化距离(每行总和为一个)。我现在想将每一行转换为最低距离应该获得最高概率的概率。我知道公式是

1/d  / sum(1/d)

但是我不知道如何实现这一点。ADataFrame.apply可以(我认为)不执行此操作(如果我错了请纠正我,我真的很喜欢学习)。

编辑:如果可能有帮助,我也有原始的未归一化距离

标签: pythonpandas

解决方案


import pandas as pd
from sklearn import preprocessing

df = df.apply(lambda x: 1 / x)
x = df.values #returns a numpy array
scaler = preprocessing.Normalizer(norm='l1')
x_scaled = scaler.fit_transform(x)
df = pd.DataFrame(x_scaled, columns=df.columns)

推荐阅读