找到最佳布尔组合以获得最高成功率

问题描述 投票:0回答:1

我想找到想要的结果的最佳布尔组合(列和值)。 例如:在 200 件事情中找出最能让人快乐的 (+- 15) 件事情/缺少这些事情。

所以,如果有一个包含 n 个布尔值 (0...n-1) 的表和一个 1/0 结果列。 我想找到结果列中 1 的最大数量的列及其值的组合。

例如: 如果这是我的表,最后一列是结果:

table: 
[0, 0, 0, 0, 1]
[0, 1, 0, 1, 0]
[0, 1, 0, 1, 1]
[0, 0, 1, 1, 1]  
[0, 0, 1, 1, 1] 

如果我需要选择 1 列及其值:我会选择第一个 - 0:这将在结果列中给出 4 个 1(最后一个)。

如果我需要选择 2 列,我会选择值为 0 的第一列和值为 1 的第四列。 - 这将在结果列中产生 3 个 1。

知道如何以良好的复杂性做到这一点吗? 因为简单的天真的方法会太长(运行 200! - 185!)

是否有库或开箱即用的东西可以用来解决这个问题?

2 种可能的解决方案可以是:

  1. 按布尔值 num 的 DESC 顺序对列进行排序。然后遍历它们并尝试找到它。
  2. 选择 1 数量最多的列。然后每次迭代选择组合产生最大数字 1 的列。

还有另一种解决方案 - 也许某个库可以做到这一点,我可以将这两个解决方案进行比较?

python algorithm tensorflow keras
1个回答
0
投票

尝试使用 itertools lib 和 numpy+pandas libs 中的组合迭代器进行数据分析。 Itertools 可以让您更好地识别元素的排列和组合。 pandas 简化了矩阵的处理,可以在列、行等中找到最大值、最小值和其他值。

© www.soinside.com 2019 - 2024. All rights reserved.