Python中的逻辑回归和AIC

介绍

逻辑回归是一种经典的分类算法,广泛应用于机器学习和数据分析领域。它可以用于预测二分类或多分类问题,并且具有良好的可解释性。在Python中,我们可以使用scikit-learn库来实现逻辑回归模型。本文将介绍逻辑回归的基本原理,并使用AIC(Akaike Information Criterion,赤池信息准则)来选择最佳模型。

逻辑回归原理

逻辑回归使用逻辑函数将输入特征映射到一个概率值,然后根据阈值将其分类为正类或负类。逻辑函数(或称为sigmoid函数)的数学表达式如下:

$$ g(z) = \frac{1}{1+e^{-z}} $$

其中,$z$是输入特征的线性组合,通过权重向量$w$和特征向量$x$的内积计算:

$$ z = w_0 + w_1x_1 + w_2x_2 + \ldots + w_nx_n $$

然后,将$z$代入逻辑函数,得到0到1之间的概率值。当概率大于阈值时,将样本分类为正类,否则分类为负类。

数据准备

在本文中,我们将使用一个虚拟的数据集来演示逻辑回归的应用。首先,我们需要导入必要的库,并生成一些模拟数据。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split

# 生成模拟数据
X, y = make_classification(n_samples=100, n_features=2, n_informative=2, n_redundant=0,
                           n_clusters_per_class=1, random_state=42)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

拟合逻辑回归模型

接下来,我们使用LogisticRegression类来拟合逻辑回归模型,并对其进行训练和预测。

from sklearn.linear_model import LogisticRegression

# 创建逻辑回归模型
lr = LogisticRegression()

# 训练模型
lr.fit(X_train, y_train)

# 预测测试集样本
y_pred = lr.predict(X_test)

模型评估

我们可以使用准确率(Accuracy)和混淆矩阵(Confusion Matrix)来评估模型的性能。

from sklearn.metrics import accuracy_score, confusion_matrix

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("准确率:", accuracy)

# 绘制混淆矩阵
cm = confusion_matrix(y_test, y_pred)
plt.imshow(cm, cmap=plt.cm.Blues)
plt.xlabel("预测标签")
plt.ylabel("真实标签")
plt.title("混淆矩阵")
plt.colorbar()
plt.show()

使用AIC选择最佳模型

在模型选择中,我们可以使用AIC来衡量模型的拟合程度和复杂度。AIC是一个考虑模型拟合优度和参数数量的指标,它的数学计算方式如下:

$$ AIC = -2 \cdot \log(L) + 2 \cdot K $$

其中,$L$是模型的似然函数值,$K$是模型的参数数量。AIC的值越小,表示模型的拟合优度和复杂度更好。

from sklearn.metrics import log_loss

# 计算模型的AIC值
n = len(X_train)
k = len(lr.coef_[0]) + 1  # 参数个数为特征数量+1
L = log_loss(y_test, lr.predict_proba(X_test))
aic = -2 * L + 2 * k
print("AIC值:", aic)

通过计算AIC值,我们可以比较不同模型的性能,并选择具有最佳拟合度和最小