Комбинации массива при падении значений x - PullRequest
0 голосов
/ 20 апреля 2020

Я реализую метод, чтобы получить перекрестные проверки и иметь список numpy массивов с размером s. Я хочу использовать массивы x в качестве тестовых сгибов и, следовательно, sx массивы в качестве тренировочных сгибов. Для правильного метода перекрестной проверки каждый массив должен быть один раз тестовым сгибом со всеми комбинациями других массивов x-1 в качестве тестового сгиба. Делая это таким образом, я отказываюсь от полных массивов от обучения. Я хочу проверить переносимость регрессоров, обученных с данными из массивов sx в массивы x. Эта проблема может быть сведена к проблеме. Все возможные комбинации массива numpy размера s генерируются при отбрасывании любых значений x.

пример кода:

s = 4
x = 2
array = np.arange(0, s)
drop_out = x
combinations(array, drop_out)
## output (I hope, I didn't forget a combination)
array([[2, 3], [1, 3], [1, 2], [0, 3], [0, 2], [0, 1]])

Есть ли какие-либо Предварительно построить функцию, чтобы сделать это? Единственное решение, которое я придумала до сих пор, это использование x-loop для этого. Но тогда x не является параметром.

Я с нетерпением жду предложений.

Best, Jannis

1 Ответ

0 голосов
/ 20 апреля 2020

Вы можете использовать itertools для генерации комбинаций:

import numpy as np
import itertools


def combinations(a, drop_out):
    """
    >>> print(combinations(range(4), 2))
    [[0 1]
     [0 2]
     [0 3]
     [1 2]
     [1 3]
     [2 3]]
    """
    a = np.asarray(a)
    return np.array([r for r in itertools.combinations(a, a.size - drop_out)])
...