Anaconda环境下的逻辑回归实战:从数据预处理到模型调优

1次阅读
没有评论

共计 2043 个字符,预计需要花费 6 分钟才能阅读完成。

image.webp

背景介绍

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

Anaconda 环境下的逻辑回归实战:从数据预处理到模型调优

技术对比

相比其他分类算法,逻辑回归具有独特优势:

  • 解释性强 :可输出特征系数,直观反映变量影响程度
  • 计算高效 :适合处理高维稀疏数据(如文本特征)
  • 概率输出 :预测结果带有概率值,便于业务决策

但与 SVM、随机森林等相比,其局限性在于:

  1. 对非线性关系捕捉能力较弱
  2. 易受异常值影响
  3. 需要特征间相对独立

核心实现

数据预处理

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))

关键指标解读:

  1. 准确率 :整体预测正确的比例
  2. 召回率 :实际正例中被正确识别的比例
  3. F1-score:精确率和召回率的调和平均

思考题

  1. 当特征中存在多重共线性时,逻辑回归模型会受到什么影响?如何检测和处理?
  2. 对于文本分类任务,逻辑回归与朴素贝叶斯相比各有何优劣?
  3. 如何扩展逻辑回归来处理多分类问题?有哪些常用方法?

通过本教程,你应该已经掌握了逻辑回归的核心实现流程。建议尝试在 Kaggle 数据集上实践,并观察不同预处理方法对结果的影响。

正文完
 0
评论(没有评论)