Вы должны явно объявить 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']