Динамическое программирование - поиск столбцов с максимальным баллом - PullRequest
0 голосов
/ 31 марта 2019

Допустим, я инициализирую случайный фрейм данных следующим образом:

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

Теперь, скажем, score(matrix) - это функция, которая принимает подмножество фрейма данных и вычисляет оценку.

Я хочу найти подмножество df, которое максимизирует оценку.Все строки должны быть включены, но столбцы не должны быть смежными.Другими словами, я могу создать подмножество df для перехода в score() только с использованием столбцов df.

Мой первоначальный подход состоял в том, чтобы начать с первого столбца, затем объединить второй столбец и, если счет увеличивается, сохранить столбец, в противном случае продолжать перемещаться к следующему столбцу. В конце мне нужны верхние x столбцы, которые максимизируют балл, где x<10.

Я чувствую, что мое решение все еще не найдет оптимального решения, потому что, поскольку я 'Я всегда начинаю с первого столбца, он всегда будет в моем решении.Но что, если оптимальное решение не включает первый столбец?

1 Ответ

0 голосов
/ 31 марта 2019

В зависимости от того, насколько вы обеспокоены эффективностью, вы можете сделать вложенный цикл for, например:

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

, который будет использовать каждый столбец (индекс i) в качестве начального столбца, а затем применитьваш метод объединения / проверки каждого второго столбца (индекс j) и пропуска j, если он уже добавлен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...