Изучение методов получения вероятностей с помощью логистической регрессии в scikit-learn

Логистическая регрессия – популярный алгоритм машинного обучения, используемый для задач двоичной классификации. Хотя его основная цель — предсказать метки классов, также можно получить оценки вероятности для каждого класса. В этой статье мы рассмотрим различные методы получения вероятностей с использованием логистической регрессии в scikit-learn, а также приведем примеры кода.

Методы получения вероятностей:

  1. Метод Predict_proba:
    Метод predict_probaв классе LogisticReгрессия scikit-learn возвращает оценки вероятности для каждого класса. Вот пример:
from sklearn.linear_model import LogisticRegression
# Create a logistic regression model
model = LogisticRegression()
# Train the model
model.fit(X_train, y_train)
# Get probability estimates for the test data
probabilities = model.predict_proba(X_test)
# Print the probabilities
print(probabilities)
  1. Метод функции решения.
    Метод decision_functionпредоставляет оценки достоверности для каждого класса. Эти оценки можно преобразовать в вероятности с помощью логистической функции. Вот пример:
from sklearn.linear_model import LogisticRegression
import numpy as np
# Create a logistic regression model
model = LogisticRegression()
# Train the model
model.fit(X_train, y_train)
# Get confidence scores for the test data
scores = model.decision_function(X_test)
# Convert scores to probabilities using logistic function
probabilities = 1 / (1 + np.exp(-scores))
# Print the probabilities
print(probabilities)
  1. CalibratedClassifierCV:
    Класс CalibratedClassifierCV позволяет нам калибровать вероятности, используя различные методы. Его можно использовать для повышения надежности оценок вероятности, полученных с помощью логистической регрессии. Вот пример:
from sklearn.linear_model import LogisticRegression
from sklearn.calibration import CalibratedClassifierCV
# Create a logistic regression model
base_model = LogisticRegression()
# Create a calibrated classifier
calibrated_model = CalibratedClassifierCV(base_model)
# Train the calibrated model
calibrated_model.fit(X_train, y_train)
# Get probability estimates for the test data
probabilities = calibrated_model.predict_proba(X_test)
# Print the probabilities
print(probabilities)
  1. Масштабирование Платта.
    Масштабирование Платта — это метод преобразования выходных данных классификатора в вероятности. Он соответствует модели логистической регрессии на выходных данных исходного классификатора в качестве обучающих данных. Вот пример:
from sklearn.linear_model import LogisticRegression
# Create a logistic regression model
model = LogisticRegression()
# Train the model
model.fit(X_train, y_train)
# Get confidence scores for the test data
scores = model.decision_function(X_test)
# Fit a logistic regression model on the scores
platt_model = LogisticRegression()
platt_model.fit(scores.reshape(-1, 1), y_test)
# Get probability estimates using Platt scaling
probabilities = platt_model.predict_proba(scores.reshape(-1, 1))
# Print the probabilities
print(probabilities)

В этой статье мы исследовали несколько методов получения вероятностей с помощью логистической регрессии в scikit-learn. Мы рассмотрели метод predict_proba, метод decision_functionс ручным преобразованием, использование CalibratedClassifierCV для калибровки вероятности и масштабирование Платта. Эти методы предоставляют различные возможности для получения оценок вероятности в зависимости от конкретных потребностей вашей задачи классификации.