#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. Обновите свой первоначальный вопрос кодом в соответствующем формате. Это неправильный способ написания кода.