Нужно ли вырезать столбец y (прогноз) из Pandas кадра данных с помощью Scikit-learn? - PullRequest
2 голосов
/ 11 марта 2020

Я разделил мой Pandas DataFrame на части train_X и train_y, где train_X имеет все N столбцов, а train_y имеет только N-й столбец, изображая переменную, которую я хочу предсказать , В настоящее время я делаю:

train_X.drop("N-th column name", axis=1, inplace=True)
model = SomeSklearnModel()
model.fit(train_X, train_y)

Должен ли я сделать это "вручную" (т.е. используя drop() на train_X), или я могу просто сделать 3-ю строку и Scikit-learn будет «знать», какой столбец train_y является, и не использовать его для обучения модели (только для проверки результатов)?

1 Ответ

3 голосов
/ 11 марта 2020

Вы должны явно объявить X и y при вызове fit в оценщике sklearn. Как правило, к тому времени, когда вы будете готовы разбить свои данные на наборы для обучения и тестирования, X должен включать только функции модели, поэтому не должен включать вашу цель y.
Есть много способов сделать это, но здесь пара распространенных способов, использующих набор данных iris в качестве примера:

# Setup
df_iris = pd.DataFrame({'sepal_length': [5.0, 4.8, 5.8, 5.7, 4.5, 6.0, 6.3, 4.8, 5.6, 6.4],
                        'sepal_width': [3.2, 3.4, 2.8, 4.4, 2.3, 3.0, 2.5, 3.4, 3.0, 2.8],
                        'petal_length': [1.2, 1.6, 5.1, 1.5, 1.3, 4.8, 5.0, 1.9, 4.5, 5.6],
                        'petal_width': [0.2, 0.2, 2.4, 0.4, 0.3, 1.8, 1.9, 0.2, 1.5, 2.1],
                        'target': ['setosa', 'setosa', 'virginica', 'setosa', 'setosa','virginica',
                                   'virginica', 'setosa', 'versicolor', 'virginica']})

Если ваша цель y - это «n-й» столбец «n», вы можете использовать iloc нарезка:

X = df_iris.iloc[:, :-1]
y = df_iris.iloc[:, -1]

Другой способ - использовать pop, который одновременно удаляет и возвращает столбец для назначения:

X = df_iris.copy()
y = X.pop('target')

Или используя ваш собственный метод с drop:

X = df_iris.drop('target', axis=1)
y = df_iris['target']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...