动态编程 - 查找最大化得分的列

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

假设我正在初始化一个随机的Dataframe:

df = pd.DataFrame(np.random.randint(0,100,size=(100, 10)), columns=list('ABCDEFGHIJ'))

现在,让我们说score(matrix)是一个函数,它接受数据帧的一个子集并计算得分。

我想找到最大化得分的df子集。必须包含所有行,但列不需要是连续的。换句话说,我可以使用df的列创建score()的子集以传递到df

我最初的方法是从第一列开始,然后连接第二列,如果分数增加,则保留列,否则,继续移动到下一列。最后,我希望顶部的x列最大化得分x<10

我觉得我的解决方案仍然无法找到最佳解决方案,因为我总是从第一列开始,它总是在我的解决方案中。但是如果最佳解决方案不包括第一列呢?

python pandas algorithm dynamic-programming
1个回答
0
投票

根据你对效率的担忧程度,你可以做一个嵌套的for循环:

for i in range(numberOfColumns):
   for j in range(numberOfColumns):
      if i == j:
         continue
      else: 
         #code

将使用每列(索引i)作为起始列,然后应用连接/检查每隔一列(索引j)和跳过j的方法(如果已经添加)。

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