Панды: Преобразуйте массивы, закодированные в OneHot, в одну и ту же длину

#python #pandas #reshape #numpy-ndarray #one-hot-encoding

Вопрос:

У меня есть два кадра данных с общим столбцом A. Я сгруппировал каждый кадр данных и применил кодировку onehot в столбце A каждой группы. В результате я получил массив значений в кодировке onehot для каждого кадра данных. Это основная структура этих массивов:

Массивы в кодировке Onehot для фрейма1:

 A
Item1    [[0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0....
Item2    [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,...
Item3    [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,...
Item4    [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0], [0....
Item5    [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,...
                                                                                
 

Массивы в кодировке Onehot для фрейма2:

 A
Item0    [[0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0....
Item2    [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,...
Item7    [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,...
Item8    [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0], [0....
Item9    [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,...
 

Я попытался разделить эти массивы на обучающие и тестовые наборы, используя train_test_split() как:

 x_train, y_train, x_test, y_test = train_test_split(array_1, array_2, test_size=0.2, train_size=0.8)
 

Но так как они не одинаковой длины, я получаю ошибку:

 ValueError: Found input variables with inconsistent numbers of samples: [4832, 5396]
 

Я изменил форму обоих массивов, используя reshape() как:

 array_1 = array_1.values.reshape(1, -1)
array_2 = array_2.values.reshape(1, -1)
 

Но я получаю ошибку:

 ValueError: With n_samples=1, test_size=0.2 and train_size=0.8, the resulting train set will be empty. Adjust any of the aforementioned parameters.
 

Существует ли эффективный способ изменить форму массивов, закодированных в onehot?