一、前言

在数据分析中,我们经常需要处理 分类问题

  • 用户是否会流失?

  • 客户是否会购买某产品?

  • 银行交易是否存在欺诈?

逻辑回归(Logistic Regression)是最基础、最经典的分类算法,
它可以预测 事件发生的概率,并输出 0/1 分类结果。


二、逻辑回归简介

逻辑回归与线性回归类似,但它的输出经过 Sigmoid 函数 转换为概率:

P(Y=1∣X)=11+e−(β0+β1X1+...+βnXn)P(Y=1|X) = \frac{1}{1+e^{-(\beta_0 + \beta_1 X_1 + ... + \beta_n X_n)}}P(Y=1∣X)=1+e−(β0​+β1​X1​+...+βn​Xn​)1​

  • 输出值在 0~1 之间

  • 通常以 0.5 为阈值进行分类


三、准备数据

Titanic 生存数据集为例:


import pandas as pd import seaborn as sns df = sns.load_dataset('titanic') df = df[['survived','pclass','age','sex','fare']].dropna() df['sex'] = df['sex'].map({'male':0, 'female':1}) df.head()

  • survived 为因变量(0=未生存,1=生存)

  • pclass, age, sex, fare 为自变量


四、训练逻辑回归模型


from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score, confusion_matrix, classification_report X = df[['pclass','age','sex','fare']] y = df['survived'] 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)


五、模型评估


print("Accuracy:", accuracy_score(y_test, y_pred)) print("Confusion Matrix:\n", confusion_matrix(y_test, y_pred)) print("\nClassification Report:\n", classification_report(y_test, y_pred))

  • Accuracy:预测正确率

  • Confusion Matrix:混淆矩阵,显示 TP/FP/FN/TN

  • Precision / Recall / F1-score:衡量分类性能


六、概率预测

逻辑回归还可以输出生存概率:


y_prob = model.predict_proba(X_test)[:,1] print(y_prob[:10])

  • 输出 0~1 的概率值

  • 可调整阈值进行分类


七、可视化逻辑回归

以性别为例,观察生存概率:


import matplotlib.pyplot as plt import numpy as np age_range = np.linspace(df['age'].min(), df['age'].max(), 100) prob_male = model.predict_proba(pd.DataFrame({'pclass':1, 'age':age_range, 'sex':0, 'fare':50}))[:,1] prob_female = model.predict_proba(pd.DataFrame({'pclass':1, 'age':age_range, 'sex':1, 'fare':50}))[:,1] plt.plot(age_range, prob_male, label='Male') plt.plot(age_range, prob_female, label='Female') plt.xlabel('Age') plt.ylabel('Survival Probability') plt.title('Titanic Survival Probability by Age & Sex') plt.legend() plt.show()

  • 可视化显示不同特征下概率变化

  • 直观理解逻辑回归模型


八、实际应用场景

  1. 💳 金融风控:预测贷款违约或信用风险

  2. 🛍️ 用户行为预测:是否流失、是否购买

  3. 🚨 欺诈检测:交易是否异常

  4. 🧪 医疗诊断:是否患病

逻辑回归不仅能分类,还能量化特征对结果的影响,为决策提供依据。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐