2.线性回归与逻辑回归
2.1两者到底有什么区别线性回归解决问题回归预测预测连续数值输入特征 → 输出一个具体数字适用房价、销量、血压、温度预测逻辑回归解决问题二分类问题判断类别输入特征 → 输出概率判定 0 或 1适用是否违约、是否通过贷款、是否患病2.2实战案例一多元线性回归血压预测2.2.1 项目场景根据用户的体重、年龄两个特征预测人体收缩血压是典型的多元线性回归任务。2.2.2 完整代码import pandas as pd from sklearn.linear_model import LinearRegression # 读取数据集 data pd.read_csv(多元线性回归.csv, encodingGBK, enginepython) # 构建特征和标签 x data[[体重, 年龄]] # 特征 y data[[血压收缩]] # 预测目标 # 建模 训练 lr_model LinearRegression() lr_model.fit(x, y) # 模型评估 R² score lr_model.score(x, y) print(模型拟合度 R², score)输出0.9461441227520285 进程已结束,退出代码02.2.3 代码详解拟合核心概念简单来说就是让模型找到数据的规律画出一条最贴合所有数据的直线/曲线。所有的数据点都是散乱的拟合的过程就是模型不断调整参数尽可能让直线贴近大部分数据从而学习到特征和目标值的关联关系。fit(x, y)执行拟合过程模型自动学习数据规律求解出最优线性方程score()返回R²拟合系数衡量拟合效果好坏越接近 1 代表直线越贴合数据、模型效果越好2.2.4 小结线性回归 拟合数据、预测数值2.3 实战案例二逻辑回归银行贷款风险判断2.3.1 项目场景银行需要根据用户交易、金额、行为特征自动判断用户0正常用户可以放款1高风险用户存在违约风险拒绝放款这是典型的不平衡二分类问题正常用户远多于风险用户。2.3.2 完整代码import pandas as pd import matplotlib.pyplot as plt from pylab import mpl from sklearn.preprocessing import StandardScaler from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression # 1. 读取数据 data pd.read_csv(r./creditcard.csv) print(data.head()) # 2. 数据标准化金额字段量纲太大 scaler StandardScaler() data[Amount] scaler.fit_transform(data[[Amount]]) # 3. 删除无用字段 data data.drop([Time], axis1) # 4. 查看样本分布不平衡数据 mpl.rcParams[font.sans-serif] [Microsoft YaHei] mpl.rcParams[axes.unicode_minus] False labels_count data[Class].value_counts() print(labels_count) # 绘制样本分布图 plt.title(银行贷款风险样本分布) plt.xlabel(0正常用户 1高风险用户) plt.ylabel(样本数量) labels_count.plot(kindbar) plt.show() # 5. 划分训练集、测试集 X_whole data.drop(Class, axis1) y_whole data.Class x_train_w, x_test_w, y_train_w, y_test_w train_test_split( X_whole, y_whole, test_size0.3, random_state1000) # 6. 逻辑回归建模训练 lr LogisticRegression(C0.01, max_iter1000) lr.fit(x_train_w, y_train_w) # 7. 模型评估 test_predicted lr.predict(x_test_w) result lr.score(x_test_w, y_test_w) print(测试集准确率, result)输出Time V1 V2 V3 ... V27 V28 Amount Class 0 0.0 -1.359807 -0.072781 2.536347 ... 0.133558 -0.021053 149.62 0 1 0.0 1.191857 0.266151 0.166480 ... -0.008983 0.014724 2.69 0 2 1.0 -1.358354 -1.340163 1.773209 ... -0.055353 -0.059752 378.66 0 3 1.0 -0.966272 -0.185226 1.792993 ... 0.062723 0.061458 123.50 0 4 2.0 -1.158233 0.877737 1.548718 ... 0.219422 0.215153 69.99 0 [5 rows x 31 columns] Class 0 284315 1 492 Name: count, dtype: int64 0.9990168884519505 进程已结束,退出代码02.3.3 重点知识点复盘为什么要标准化贷款金额 Amount 数值很大、跨度广标准化可以消除量纲、加快模型收敛。逻辑回归参数作用C0.01加强正则化防止过拟合max_iter1000解决模型迭代不足、不收敛报错业务重点银行风控不平衡数据中准确率没有意义银行最怕漏判风险用户后续需要重点关注召回率。2.4今日核心总结两个模型对比模型任务类型输出本次实战案例线性回归回归预测连续数值血压预测逻辑回归二分类0/1 类别银行贷款风险判断2.5 数据标准化2.5.1 标准化的重要性在机器学习中数据标准化Normalization是数据预处理的关键步骤特别是当特征具有不同量纲或数值范围差异较大时。标准化可以消除量纲影响使不同特征处于同一数量级加快模型收敛优化算法如梯度下降能更快找到最优解提高模型稳定性防止某些特征因数值过大而主导模型训练改善模型性能特别是对距离敏感的算法如KNN、SVM和基于梯度的算法如逻辑回归、神经网络2.5.2 两种常用标准化方法1. Z-Score 标准化StandardScaler公式x (x - μ) / σ其中x原始特征值μ特征的均值σ特征的标准差x标准化后的值特点处理后数据均值为0标准差为1适合数据近似正态分布的情况Scikit-learn中对应StandardScaler本案例中逻辑回归使用的就是这种方法Python代码示例from sklearn.preprocessing import StandardScaler import numpy as np 示例数据 data np.array([[1000], [2000], [3000], [4000], [5000]]) Z-Score标准化 scaler StandardScaler() scaled_data scaler.fit_transform(data) print(原始数据, data.flatten()) print(标准化后, scaled_data.flatten()) print(均值, scaler.mean_) print(标准差, scaler.scale_)2. Min-Max 标准化MinMaxScaler公式x (x - min) / (max - min)其中x原始特征值min特征的最小值max特征的最大值x标准化后的值范围[0, 1]特点将数据缩放到[0, 1]区间对异常值敏感最大值最小值受异常值影响大Scikit-learn中对应MinMaxScaler适合数据边界明确、需要固定范围的情况Python代码示例from sklearn.preprocessing import MinMaxScaler import numpy as np 示例数据 data np.array([[10], [20], [30], [40], [50]]) Min-Max标准化 scaler MinMaxScaler() scaled_data scaler.fit_transform(data) print(原始数据, data.flatten()) print(标准化后, scaled_data.flatten()) print(数据范围[{}, {}].format(scaler.data_min_, scaler.data_max_))2.5.3 两种方法对比与选择建议对比维度Z-Score标准化Min-Max标准化公式x (x - μ) / σx (x - min) / (max - min)输出范围无固定范围通常[-3, 3][0, 1]对异常值相对稳健非常敏感适用场景数据近似正态分布需要保留原始分布形状需要固定输出范围图像处理像素值神经网络输入层Scikit-learn类StandardScalerMinMaxScaler本案例选择✓ 逻辑回归案例使用× 未使用2.6学习感悟回归是预测数分类是判类别。线性回归适合简单数值拟合逻辑回归是工业界最常用的二分类基线模型。真实业务数据大多不平衡如贷款风控不能只看准确率。掌握了完整机器学习流程数据读取 → 预处理 → 可视化 → 数据集划分 → 建模训练 → 模型评估。