#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?