当前位置: 首页 > news >正文

机器学习-逻辑回归

​一、逻辑回归是什么?​

​核心定位​​:解决二分类问题的机器学习算法
​与传统回归区别​​:

  • 线性回归 → 预测连续值(如房价)
  • 逻辑回归 → 预测概率值(如用户点击广告的概率)

​通俗理解​​:

银行要判断是否给客户放贷:

  • 输入:客户年龄、收入、信用分 → 线性回归计算“信用评分”
  • 输出:通过Sigmoid函数将评分转为“放贷概率”
  • 决策:概率>0.5 → 放贷(否则拒绝)

​二、核心数学概念(零公式版)​
​概念​​作用​​生活案例​
​Sigmoid函数​把任意数值压缩到(0,1)区间信用评分 → 放贷概率转换器
​极大似然估计​根据历史数据反推最优模型参数医生根据100个病例总结疾病规律
​对数函数​将复杂计算简化为加法运算乘法计算器 → 加法计算器

​Sigmoid特性图解​​:

输入: -∞  →  ... -3  -2  -1  0  1  2  3 ... → +∞  
输出: 0% → ... 5% 12% 27% 50% 73% 88% 95% → 100%

​特点​​:输出值≥0.5时预测正例(如放贷)


​三、工作原理解析​

​预测三步骤​​:

  1. ​线性计算​​:信用评分 = 0.3×年龄 + 0.5×收入 - 0.2×负债
  2. ​概率转换​​:放贷概率 = Sigmoid(信用评分)
  3. ​分类决策​​:概率>0.5 → 放贷

​损失函数的作用​​:

模型预测为“放贷”时:

  • 真实放贷 → 损失小(预测正确)
  • 真实拒贷 → 损失大(预测错误)
    ​目标​​:通过调整参数使总损失最小

​四、实战癌症预测案例(Python)​
# 1. 数据预处理
import pandas as pd
data = pd.read_csv('breast-cancer.csv')
data = data.replace("?", np.nan).dropna()  # 处理缺失值# 2. 特征工程
X = data.iloc[:, 1:10]  # 9个医学特征
y = data['Class'].map({2:0, 4:1})  # 2良性→0, 4恶性→1# 3. 数据标准化
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)# 4. 训练模型
from sklearn.linear_model import LogisticRegression
model = LogisticRegression(solver='liblinear', penalty='l2')
model.fit(X_train, y_train)# 5. 模型评估
accuracy = model.score(X_test, y_test)
print(f"模型准确率:{accuracy:.2%}")

​关键参数说明​​:

  • solver='liblinear':适合小数据集
  • penalty='l2':防止过拟合的正则化手段

​五、分类评估四大指标​

​医疗场景举例​​:100例癌症检测

​指标​​计算公式​​医疗意义​
精确率TP/(TP+FP)确诊患者中真实患癌的比例
召回率TP/(TP+FN)真实患者中被检测出的比例
F1-Score2×(精确率×召回率)/(和)综合衡量漏诊和误诊
AUC值ROC曲线下面积模型区分患者/健康人的能力

​重点图解​​:

          真实患癌患者(20人)↗        ↘
检测阳性(25人)    检测阴性(75人)↘        ↗健康人群(80人)
  • ​精确率​​ = 15/25 = 60%(确诊者中真患者比例)
  • ​召回率​​ = 15/20 = 75%(患者中被检测出的比例)

​六、电信客户流失实战​

​业务场景​​:预测用户是否流失
​关键特征​​:

  • 合约类型(月付用户流失率高)
  • 是否光纤用户
  • 电子支付使用频率

​代码核心步骤​​:

# 1. 类别特征独热编码
df = pd.get_dummies(df, columns=['Contract', 'PaymentMethod'])# 2. 可视化特征相关性
import seaborn as sns
sns.barplot(x='Contract_Month-to-month', y='Churn', data=df)  # 月合约用户流失率高# 3. 处理样本不平衡(过采样)
from imblearn.over_sampling import SMOTE
X_res, y_res = SMOTE().fit_resample(X, y)# 4. 输出评估报告
print(classification_report(y_test, y_pred, target_names=['未流失', '流失']))

​业务结论​​:

月合约用户流失率是年合约的​​3.2倍​​,建议推出年付优惠套餐锁定用户


​七、避坑指南(新手必看)​
  1. ​特征缩放​​:逻辑回归对特征尺度敏感,必须标准化
  2. ​样本均衡​​:正负样本比例失衡时用SMOTE过采样
  3. ​阈值调整​​:默认0.5不一定最优,通过ROC曲线选择
    from sklearn.metrics import roc_curve
    fpr, tpr, thresholds = roc_curve(y_test, y_pred_proba)
    plt.plot(fpr, tpr)  # 选择靠近左上角的阈值
  4. ​正则化选择​​:特征多选L1正则化(自动特征选择)

​八、学习路径建议​
  1. ​基础练习​​:在Kaggle尝试Titanic生存预测(二分类经典案例)
  2. ​进阶方向​​:
    • 多分类问题 → softmax回归
    • 非线形边界 → 特征多项式扩展
http://www.dtcms.com/a/364407.html

相关文章:

  • 数据结构:图的表示 (Representation of Graphs)
  • 下一代自动驾驶汽车系统XIL验证方法
  • 基于机器学习的Backtrader波动性预测与管理
  • MySQL--CRUD
  • Qt使用Maintenance添加、卸载组件(未完)
  • MySQL 中的窗口函数详解:从入门到实战
  • Django 命令大全:从入门到精通,开发者必备指南
  • 【QT随笔】事件过滤器(installEventFilter 和 eventFilter 的组合)之生命周期管理详解
  • 微信小程序wx.getLocation结合腾讯地图逆解析获取位置详细教程,定位授权完整流程
  • 【Qt】国际化(中英文翻译)——Qt语言家(Linguist)和QTranslator类的简单使用(内含完整源码)
  • el-tree 点击父节点无效,只能选中子节点
  • 存算一体:重构AI计算的革命性技术(3)
  • 2025 大数据时代值得考的证书排名前八​
  • 电子病历空缺句的语言学特征描述与自动分类探析(以GPT-5为例)(上)
  • 分布式AI算力系统番外篇-----超体的现实《星核》
  • 2025版基于springboot的电影购票管理系统
  • Linux_网络基础
  • Uniapp中进行微信小程序头像和昵称的更改
  • Jenkins 可观测最佳实践
  • Flutter Android真机器调式,虚拟机调试以及在Vscode中开发Flutter应用
  • 【Linux操作系统】简学深悟启示录:进程控制
  • unity中的交互控制脚本
  • 如何选择适合企业的海外智能客服系统:6 大核心维度 + 实战选型指南
  • 【STL源码剖析】从源码看 deque :拆解双端队列的底层实现与核心逻辑
  • 用友T3、T6/U8批量作废凭证
  • 从数据生成到不确定性估计:用 LSTM + 贝叶斯优化实现时间序列多步预测
  • 基于SpringBoot的旅游管理系统
  • 【大前端】React 使用 Redux 实现组件通信的 Demo 示例
  • React实现点击按钮复制操作【navigator.clipboard与document.execCommand】
  • 基于单片机PWM信号发生器系统Proteus仿真(含全部资料)