Как добавить перекрестный член в модель логистической регрессии?

Вопрос или проблема

У меня есть данные о 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. Перекрестные термины позволяют учесть взаимодействие между признаками, что может быть полезно, если вы подозреваете, что некоторые типы фруктов зависят друг от друга в зависимости от конкретных условий местоположения.

Вот пошаговое руководство, как это можно сделать:

  1. Импортировать необходимые библиотеки:
    Начните с импорта библиотек, которые вы будете использовать.

    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
  2. Создайте матрицу признаков с взаимодействиями:
    Используя PolynomialFeatures, вы можете создать новую матрицу признаков, которая будет содержать как исходные признаки, так и их взаимодействия.

    # Предположим, что neighborhoodClass – это ваша матрица признаков
    poly = PolynomialFeatures(interaction_only=True, include_bias=False)
    neighborhoodClass_interaction = poly.fit_transform(neighborhoodClass)

    Примечание: interaction_only=True гарантирует, что в выходной матрице будут только взаимодействия между признаками, без учета полиномиальных терминов высшего порядка. Параметр include_bias=False исключает добавление константного термина (единицы).

  3. Поделите данные на обучающую и тестовую выборки:
    Разделите свои данные на обучающую и тестовую выборки, чтобы проверить производительность модели на новых данных.

    X_train, X_test, y_train, y_test = train_test_split(
       neighborhoodClass_interaction, target, test_size=0.2, random_state=42
    )
  4. Обучите модель логистической регрессии:
    После предобработки данных вы можете обучить свою модель.

    log_reg_model = LogisticRegression(max_iter=500, penalty='l2', solver="newton-cg")
    log_reg_model.fit(X_train, y_train)
  5. Оцените модель:
    Проверьте качество модели на тестовых данных. Вы можете использовать различные метрики, такие как точность, F1-меру и т.д.

    accuracy = log_reg_model.score(X_test, y_test)
    print(f"Точность модели: {accuracy:.2f}")
  6. Примените модель к новым данным:
    Теперь, когда ваша модель обучена, вы можете использовать ее для прогнозирования типа фрукта для нового местоположения. Не забудьте также применить те же функции обработки, чтобы создать взаимодействия для новых данных.

    new_location = ...  # ваши новые данные
    new_location_interaction = poly.transform(new_location)
    predicted_class = log_reg_model.predict(new_location_interaction)

Таким образом, вы сможете добавить перекрестные термины в вашу модель логистической регрессии, что позволит лучше учитывать взаимодействия между различными факторами, влияющими на рост фруктов. Удачи в ваших исследованиях!

Оцените материал
Добавить комментарий

Капча загружается...