Вопрос или проблема
У меня есть данные о 2000 (например, местоположения, где растут разные фрукты) и 10000 (например, факторы, влияющие на рост фруктов). Я также знаю, что в этих местоположениях имеется 20 различных типов фруктов. Я хочу построить логистическую модель для этого набора данных, чтобы, если я получу новое местоположение, моя модель смогла определить тип фрукта.
log_reg_model = LogisticRegression(max_iter=500,penalty='l2',solver="newton-cg")
log_reg_model.fit(neighborhoodClass,target)
Форма neighborhoodClass составляет (2000, 10000), а target — это целочисленный массив из 20 меток длиной 2000.
Я полагаю, что некоторые из этих типов фруктов зависимы друг от друга, это значит, что если я вижу фрукт A на местоположении l1, то есть высокая вероятность, что я также наблюдаю фрукт B в ближайшем местоположении к l1. Это означает, что фрукт A и фрукт B обитают в соседних регионах. Есть ли способ добавить перекрестные термины в модели логистической регрессии, чтобы захватить признаки соседства? Так, чтобы, когда я вижу новое местоположение с различными признаками, моя модель могла определить тип фрукта?
Спасибо.
Они обычно называются взаимодействующими терминами.
Похоже, вы используете scikit-learn. Взаимодействующие термины могут быть автоматически сгенерированы в scikit-learn с помощью sklearn.preprocessing.PolynomialFeatures.
Ответ или решение
Для добавления перекрестных (или взаимодействующих) терминов в модель логистической регрессии с использованием библиотеки scikit-learn, можно воспользоваться классом PolynomialFeatures
из модуля sklearn.preprocessing
. Перекрестные термины позволяют учесть взаимодействие между признаками, что может быть полезно, если вы подозреваете, что некоторые типы фруктов зависят друг от друга в зависимости от конкретных условий местоположения.
Вот пошаговое руководство, как это можно сделать:
-
Импортировать необходимые библиотеки:
Начните с импорта библиотек, которые вы будете использовать.import numpy as np import pandas as pd from sklearn.linear_model import LogisticRegression from sklearn.preprocessing import PolynomialFeatures from sklearn.model_selection import train_test_split
-
Создайте матрицу признаков с взаимодействиями:
ИспользуяPolynomialFeatures
, вы можете создать новую матрицу признаков, которая будет содержать как исходные признаки, так и их взаимодействия.# Предположим, что neighborhoodClass – это ваша матрица признаков poly = PolynomialFeatures(interaction_only=True, include_bias=False) neighborhoodClass_interaction = poly.fit_transform(neighborhoodClass)
Примечание:
interaction_only=True
гарантирует, что в выходной матрице будут только взаимодействия между признаками, без учета полиномиальных терминов высшего порядка. Параметрinclude_bias=False
исключает добавление константного термина (единицы). -
Поделите данные на обучающую и тестовую выборки:
Разделите свои данные на обучающую и тестовую выборки, чтобы проверить производительность модели на новых данных.X_train, X_test, y_train, y_test = train_test_split( neighborhoodClass_interaction, target, test_size=0.2, random_state=42 )
-
Обучите модель логистической регрессии:
После предобработки данных вы можете обучить свою модель.log_reg_model = LogisticRegression(max_iter=500, penalty='l2', solver="newton-cg") log_reg_model.fit(X_train, y_train)
-
Оцените модель:
Проверьте качество модели на тестовых данных. Вы можете использовать различные метрики, такие как точность, F1-меру и т.д.accuracy = log_reg_model.score(X_test, y_test) print(f"Точность модели: {accuracy:.2f}")
-
Примените модель к новым данным:
Теперь, когда ваша модель обучена, вы можете использовать ее для прогнозирования типа фрукта для нового местоположения. Не забудьте также применить те же функции обработки, чтобы создать взаимодействия для новых данных.new_location = ... # ваши новые данные new_location_interaction = poly.transform(new_location) predicted_class = log_reg_model.predict(new_location_interaction)
Таким образом, вы сможете добавить перекрестные термины в вашу модель логистической регрессии, что позволит лучше учитывать взаимодействия между различными факторами, влияющими на рост фруктов. Удачи в ваших исследованиях!