共计 2043 个字符,预计需要花费 6 分钟才能阅读完成。
背景介绍
逻辑回归是机器学习中最基础的分类算法之一,尽管名字中有 ” 回归 ” 二字,但它实际上是解决二分类问题的利器。在金融风控、医疗诊断、营销响应预测等领域应用广泛。Anaconda 作为 Python 数据科学的集成环境,预装了 scikit-learn、pandas 等必备库,能一键解决依赖冲突问题,特别适合新手快速搭建实验环境。

技术对比
相比其他分类算法,逻辑回归具有独特优势:
- 解释性强 :可输出特征系数,直观反映变量影响程度
- 计算高效 :适合处理高维稀疏数据(如文本特征)
- 概率输出 :预测结果带有概率值,便于业务决策
但与 SVM、随机森林等相比,其局限性在于:
- 对非线性关系捕捉能力较弱
- 易受异常值影响
- 需要特征间相对独立
核心实现
数据预处理
import pandas as pd
from sklearn.preprocessing import StandardScaler
# 加载泰坦尼克数据集示例
data = pd.read_csv('titanic.csv')
# 处理缺失值
data['Age'].fillna(data['Age'].median(), inplace=True)
data['Embarked'].fillna('S', inplace=True)
# 特征编码
data = pd.get_dummies(data, columns=['Sex', 'Embarked'])
# 特征选择与标准化
features = ['Age', 'Fare', 'Sex_female', 'Embarked_Q']
X = data[features]
y = data['Survived']
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
模型训练
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
# 划分训练测试集
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)
# 初始化模型
model = LogisticRegression(penalty='l2', C=1.0, solver='liblinear')
# 训练模型
model.fit(X_train, y_train)
# 查看特征系数
print(dict(zip(features, model.coef_[0])))
模型优化
超参数调优
from sklearn.model_selection import GridSearchCV
param_grid = {'C': [0.001, 0.01, 0.1, 1, 10],
'penalty': ['l1', 'l2'],
'solver': ['liblinear', 'saga']
}
grid_search = GridSearchCV(LogisticRegression(max_iter=1000),
param_grid,
cv=5,
scoring='accuracy'
)
grid_search.fit(X_train, y_train)
print(f"最佳参数: {grid_search.best_params_}")
print(f"最佳准确率: {grid_search.best_score_:.3f}")
交叉验证
from sklearn.model_selection import cross_val_score
cv_scores = cross_val_score(
grid_search.best_estimator_,
X_scaled,
y,
cv=10,
scoring='recall'
)
print(f"平均召回率: {cv_scores.mean():.3f}±{cv_scores.std():.3f}")
避坑指南
类别不平衡处理
- 过采样(SMOTE)或欠采样
- 调整 class_weight 参数
- 使用 AUC-PR 曲线替代准确率
过拟合识别
- 训练集精度远高于测试集
- 使用 L1/L2 正则化
- 通过学习曲线判断
性能评估
from sklearn.metrics import classification_report
y_pred = grid_search.predict(X_test)
print(classification_report(y_test, y_pred))
关键指标解读:
- 准确率 :整体预测正确的比例
- 召回率 :实际正例中被正确识别的比例
- F1-score:精确率和召回率的调和平均
思考题
- 当特征中存在多重共线性时,逻辑回归模型会受到什么影响?如何检测和处理?
- 对于文本分类任务,逻辑回归与朴素贝叶斯相比各有何优劣?
- 如何扩展逻辑回归来处理多分类问题?有哪些常用方法?
通过本教程,你应该已经掌握了逻辑回归的核心实现流程。建议尝试在 Kaggle 数据集上实践,并观察不同预处理方法对结果的影响。
正文完
