Logistic回归(逻辑回归)及Python代码实现
逻辑回归(Logistic Regression)是一种广泛使用的统计方法,主要用于二分类问题。尽管名字中有“回归”二字,逻辑回归实际上是一种分类算法。其基本思想是将线性回归的输出通过逻辑函数(Sigmoid函数)转化为一个概率值,从而实现分类。
1. Logistic回归的基本原理
逻辑回归的核心在于Sigmoid函数,它的函数公式为:
[ h(x) = \frac{1}{1 + e^{-z}} ]
其中,( z ) 是线性组合,即 ( z = w^T x + b ),( w ) 是权重,( b ) 是偏置(也称为截距),而 ( x ) 是输入特征向量。
Sigmoid函数的输出值在0到1之间,可以理解为一个事件发生的概率,例如:
- 如果 ( h(x) > 0.5 ),则分类为1类(例如“是”)。
- 如果 ( h(x) \leq 0.5 ),则分类为0类(例如“否”)。
2. 损失函数
在逻辑回归中,采用的损失函数是对数损失(Log Loss),其公式为:
[ J(w, b) = -\frac{1}{m} \sum_{i=1}^m \left[ y^{(i)} \log(h(x^{(i)})) + (1 - y^{(i)}) \log(1 - h(x^{(i)})) \right] ]
其中 ( m ) 是样本数,( y^{(i)} ) 是实际标签,( h(x^{(i)}) ) 是预测概率。
3. Python代码实现
接下来,我们使用Python中的scikit-learn
库来实现逻辑回归。以下是一个简单的示例,演示如何使用逻辑回归进行鸢尾花数据集的分类。
# 导入必要的库
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
# 加载数据集
iris = load_iris()
X = iris.data # 特征
y = (iris.target == 2).astype(int) # 将目标变量转化为二分类,是否为“virginica”
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建逻辑回归模型
model = LogisticRegression()
# 训练模型
model.fit(X_train, y_train)
# 进行预测
y_pred = model.predict(X_test)
# 评估模型表现
accuracy = accuracy_score(y_test, y_pred)
conf_matrix = confusion_matrix(y_test, y_pred)
report = classification_report(y_test, y_pred)
print(f"模型准确率: {accuracy:.2f}")
print("混淆矩阵:\n", conf_matrix)
print("分类报告:\n", report)
4. 代码解析
-
数据加载:我们使用
load_iris
函数加载鸢尾花数据集,并将目标变量转化为二分类,即判断是否为“virginica”类别(目标类别2)。 -
数据划分:使用
train_test_split
将数据集划分为训练集和测试集,测试集占20%。 -
模型创建与训练:通过
LogisticRegression
类创建逻辑回归模型,并利用训练集进行训练。 -
预测与评估:使用模型进行预测,并通过准确率、混淆矩阵和分类报告评估模型的性能。
5. 结论
逻辑回归是一种简单高效的分类算法,适用于线性可分的数据。在实际应用中,可以结合其他算法和技术(如特征选择、交叉验证等)进一步提升模型性能。通过上述代码示例,我们可以快速掌握逻辑回归的基本使用方法及其在实际数据分析中的应用。