bounty将在5天后过期。回答此问题可获得+100声望奖励。DN1希望吸引更多人关注此问题。
我在Pandas Dataframe 中有一列概率,作为多类机器学习的输出。
我希望筛选模型在该行的类之间具有非常接近的概率的行,理想情况下,我只关心与该行中的最高值相似的相似值,但我不确定从哪里开始。
例如,我的数据如下所示:
ID class1 class2 class3 class4 class5
row1 0.97 0.2 0.4 0.3 0.2
row2 0.97 0.96 0.4 0.3 0.2
row3 0.7 0.5 0.3 0.4 0.5
row4 0.97 0.98 0.99 0.3 0.2
row5 0.1 0.2 0.3 0.78 0.8
row6 0.1 0.11 0.3 0.9 0.2
我想过滤至少2个(或更多)概率类列的概率接近该行中至少一个其他概率列的行(例如,可能在0.05以内)。因此,示例输出将过滤为:
ID class1 class2 class3 class4 class5
row2 0.97 0.96 0.4 0.3 0.2
row4 0.97 0.98 0.99 0.3 0.2
row5 0.1 0.2 0.3 0.78 0.8
我不介意一个过滤器是否包含row6
,因为它也满足我〈0.05的主要要求,但理想情况下,因为0.05的差异不是最大的概率,我也宁愿忽略它。
如何开发这样的过滤器?
示例数据:
编辑:我增加了示例数据的大小,因为我并不需要特定的对,而是任何和所有在其行内其列值为2或更多概率具有接近值的行
d = {'ID': ['row1', 'row2', 'row3', 'row4', 'row5', 'row6'],
'class1': [0.97, 0.97, 0.7, 0.97, 0.1, 0.1],
'class2': [0.2, 0.96, 0.5, 0.98, 0.2, 0.11],
'class3': [0.4, 0.4, 0.3, 0.2, 0.3, 0.3],
'class4': [0.3, 0.3, 0.4, 0.3, 0.78, 0.9],
'class5': [0.2, 0.2, 0.5, 0.2, 0.8, 0.2]}
df = pd.DataFrame(data=d)
2条答案
按热度按时间64jmpszr1#
下面是一个使用
numpy
和itertools.combinations
来获取至少N
与0.05匹配的相似行对的示例:输出量:
随访
我的真实的数据是10,000行,我想筛选出具有多列彼此接近的概率的所有行。
yb3bgrhw2#
您可以通过以下方式实现此目的:
输出:
转置后的 Dataframe :