Передача списков/массивов в качестве входных данных для моделей scikit learn

#python #pandas #numpy #scikit-learn #pca

Вопрос:

У меня есть этот фрейм данных:

 | col1 | col2 | col3 | col4 | label ------------------------------------------------------------- [1,2,3,4,5,6] | [1,2] | [1,2,3,4] | [1,2,4] | 1 [5,6,7,8] | [5,6,7,8,9] | [1,4] | [1,2,3,4] | 0  

В идеале я хотел бы загружать каждый столбец как отдельные переменные. В этом случае каждый столбец представляет собой маркированные слова. Моя цель состоит в том, чтобы классифицировать, являются ли col1 и col2 нечетким совпадением с col3 и col4.

В предыдущих реализациях sci-kit, которые я делал, данные структурировались примерно так:

 | col1 | col2 | col3 | col4 | label -------------------------------------------------------------   1 | 2 | 4 | 0 | 1  8 | 9 | 1 | 2 | 0  

В этих случаях легко сбросить ярлык, позвонить df.to_numpy() и загрузить в модели.

В моем случае я попытался сделать это, объединив каждый столбец в один массив, но у меня возникли проблемы, поскольку каждый столбец может содержать массивы значительно разной длины. (от 0 до ~5000) Я попытался заполнить эти массивы nan или 0, чтобы создать массивы той же длины, что и максимальная длина в наборе. Но это значительно увеличивает размер набора данных, так как общее количество записей в наборе составляет 1 млн.

Я рассматривал возможность использования PCA для ограничения каждого массива одинаковой длиной, но столкнулся с ошибками, поскольку размеры 1D вместо 2D. Кроме того, это не решает мою проблему с каждым столбцом, содержащим массивы. (если это проблема, о которой стоит беспокоиться)

Я знаю, что это ориентировано на более фундаментальный / руководящий вопрос высокого уровня, поэтому любые дополнительные рекомендации/ документы были бы очень полезны!

Комментарии:

1. Как насчет однократного кодирования каждого массива столбцов? Отложив в сторону тысячи функций, которые будут сгенерированы, сможете ли вы по-прежнему выполнять свой алгоритм нечеткой классификации?