Для этого вам нужно будет выполнить два шага.Предположим, вы используете набор данных iris (поэтому у вас есть воспроизводимый пример):
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
data = load_iris()
X = data.data
y = data.target
X_train, X_test, y_train, y_test = train_test_split(X, y)
Шаг 1
Сначала вам нужно преобразовать данные в полиномиальные объекты.Первоначально наши данные имеют 4 столбца:
X_train.shape
>>> (112,4)
Вы можете создавать полиномиальные объекты с помощью scikit learn (здесь это для степени 2):
poly = PolynomialFeatures(degree = 2, interaction_only=False, include_bias=False)
X_poly = poly.fit_transform(X_train)
X_poly.shape
>>> (112,14)
Мы знаем, что имеется 14 функций (исходные 4, их квадрат и 6 скрещенных комбинаций)
Шаг 2
Теперь вы можете построить свою логистическую регрессию, назвав X_poly
lr = LogisticRegression()
lr.fit(X_poly,y_train)
Примечание: если вы затем хотите оценить свою модель по тестовым данным, вам также необходимо выполнить следующие 2 шага и выполнить:
lr.score(poly.transform(X_test), y_test)
Собрать все вместе в конвейер (необязательно)
Выможет потребоваться использовать конвейер, который обрабатывает эти два шага в одном объекте, чтобы избежать создания промежуточных объектов:
pipe = Pipeline([('polynomial_features',poly), ('logistic_regression',lr)])
pipe.fit(X_train, y_train)
pipe.score(X_test, y_test)