При разделении поездов и тестов отсутствуют имена заголовков и индексов

#python #pandas #dataframe #numpy #scikit-learn

Вопрос:

Я разделяю набор данных на обучающий и тестовый набор, используя,

 X_train, X_test, y_train, y_test = train_test_split(X.values, y.values, test_size = 0.20, random_state=99)
 

Однако наборы поездов и тестов не имеют имен столбцов и имен индексов после разделения. Как это восстановить?

Ответ №1:

 X_names = X.columns
y_name = y.name

X_train, X_test, y_train, y_test = train_test_split(X.values, y.values, 
                                                    test_size = 0.20, random_state=99)
 

Сохраните имена перед выполнением разделения (при условии, что X и y являются объектами pandas). В качестве альтернативы вам даже не нужно передавать значения X и y. значения. Вместо этого вы могли бы просто ввести X и y. Таким образом, вы будете поддерживать структуру данных pandas.

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

1. для X и y ,X_names = X. столбцы y_names=y.столбцы ??

2. y не является фреймом данных. y — это один столбец, который с точки зрения панд известен как ряд. Таким образом, вы можете найти название серии, используя .name. Но в случае X X-это фрейм данных (несколько рядов образуют df). Таким образом, в этом случае вам нужно будет сделать X. столбцы.

3. после преобразования скалярного соответствия снова отсутствуют имена столбцов и имя индекса !

4. Пожалуйста, отредактируйте свой пост и укажите свой код. Трудно оценить, что вы делаете до разделения теста на поезд. Я думаю, что вы путаете свои панды и структуры данных numpy. Эти структуры хорошо интегрируются друг с другом, но вам нужно знать, как двигаться вперед и назад. Итак, если вы хотите перейти от numpy к pandas, проще всего было бы переназначить имена столбцов массиву numpy при приведении в качестве фрейма данных pandas. Опять же, мне нужно будет увидеть ваш код, чтобы направить вас.

5. Обновите свой первоначальный вопрос кодом в соответствующем формате. Это неправильный способ написания кода.