逻辑回归是一种广泛用于分类任务的统计模型,尤其是用于二分类问题。在逻辑回归中,我们预测的是观测值属于某个类别的概率,这通过逻辑函数(或称sigmoid函数)来实现,该函数能将任意值压缩到0和1之间。
逻辑回归的基本原理
逻辑回归模型的输出是通过逻辑函数转换的线性方程的结果,公式如下:
其中:
- 𝑝是给定观测属于正类的概率。
- 𝑏0,𝑏1 等是模型参数。
- 𝑥 是输入特征。
模型通过最大化似然函数(或等价地最小化成本函数,如交叉熵损失)来学习参数。
Python 实现逻辑回归
在Python中,我们可以使用scikit-learn
库中的LogisticRegression
类来实现逻辑回归模型。以下是一个具体案例,展示了如何使用逻辑回归来分类鸢尾花数据集中的花朵类型。
案例分析:鸢尾花数据集分类
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report, confusion_matrix
# 加载数据
data = load_iris()
X = data.data
y = data.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 创建逻辑回归模型
model = LogisticRegression(max_iter=200) # 增加迭代次数以确保收敛
model.fit(X_train, y_train)
# 进行预测
predictions = model.predict(X_test)
# 输出性能评估
print("Classification Report:")
print(classification_report(y_test, predictions))
print("Confusion Matrix:")
print(confusion_matrix(y_test, predictions))
这段代码首先加载了鸢尾花数据集,这是一个包含150个样本的多分类数据集,每个样本有4个特征和3种可能的输出类别。代码接着将数据分为训练集和测试集,然后创建了一个逻辑回归模型,训练这个模型,并在测试集上进行预测。最后,代码打印了分类报告和混淆矩阵,以评估模型性能。
高级应用:正则化
在逻辑回归中,为了防止过拟合,通常会加入正则化项。scikit-learn
的LogisticRegression
默认使用L2正则化。可以通过调整C
参数(正则化强度的倒数)来控制正则化的程度。
# 创建带L2正则