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

机器学习-逻辑回归

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

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

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

​通俗理解​​:

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

  • 输入:客户年龄、收入、信用分 → 线性回归计算“信用评分”
  • 输出:通过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.xdnf.cn/news/19902.html

相关文章:

  • raspberry Pi 4B(树莓派4B)开启VNC服务 主机用VNC连接
  • 14、Docker构建后端镜像并运行
  • 关于SPI串口spidev接收数据不完整的问题
  • Moonchain:「新加坡大华银行」加持下连接现实金融与链上经济的价值通道
  • 大数据毕业设计选题推荐-基于大数据的电信客户流失数据分析系统-Hadoop-Spark-数据可视化-BigData
  • 03、Maven下载与阿里云镜像加速
  • 电子电气架构 --- 新EEA架构下开发模式转变
  • Openmanus复现教程:打造自己的Agent助手
  • Python之split - 常遇见的bug
  • Redis突然挂了,数据丢了多少?就看你用RDB还是AOF
  • Git配置:禁用全局HTTPS验证
  • LangGraph 时间旅行深度解析:掌握状态、持久化与人机协同工作流
  • SecureCRT v9.5.2 Mac SSH终端操作工具
  • 3种通过USB从电脑传输文件到iPad的方法
  • 【Luogu】P2398 GCD SUM (容斥原理求gcd为k的数对个数)
  • Ubuntu查看开机以来修改的文件
  • k8s,v1.30.4,安装使用docker
  • 嵌入式解谜日志-网络编程(udp,tcp,(while循环原理))
  • [特殊字符] 预告!我正在开发一款让自动化操作变得「像呼吸一样自然」的AI神器
  • 从静态到智能:用函数式接口替代传统工具类
  • 命令行小工具
  • Controller返回CompletableFuture到底是怎么样的
  • Ubuntu系统镜像源配置
  • 数据结构——树(03二叉树,与路径有关的问题,代码练习)
  • SPI片选踩坑实录(硬件片选和软件片选)
  • Base64编码的作用与应用场景
  • 利用 Java 爬虫获取淘宝商品 SKU 详细信息实战指南
  • 美团龙猫(longcat.AI)编写的利用二分查找优化Excel的sheet.xml指定范围输出C程序
  • 【数学建模学习笔记】时间序列分析:ARIMA
  • Scikit-learn从入门到实践:Scikit-learn入门-安装与基础操作