机器学习之数据预处理学习总结

在机器学习中,数据预处理是模型训练前至关重要的环节,直接影响模型的性能和准确性。通过本次学习,我系统掌握了数据预处理的核心方法与工具,现将主要内容总结如下:

一、缺失值处理

缺失值是实际数据中常见的问题,处理方式主要包括以下几种:

  1. Pandas 中的缺失值处理

    • 识别缺失值 :使用isnull()函数判断单元格是否为空,可直观查看数据缺失情况。
    • 自定义缺失值标识 :通过na_values参数指定 "n/a""na" 等字符串作为缺失值标识,确保数据一致性。
    • 删除缺失值dropna()函数可删除包含空字段的行,参数axis(默认 0,删除行)、how("any" 有一个空即删除,"all" 全为空才删除)等可灵活控制删除规则。
    • 填充缺失值fillna()函数用指定值替换空字段,常见方式包括:
      • 固定值填充(如用 666 填充);
      • 均值填充(mean())、中位数填充(median()),适用于数值型数据,能保留数据整体分布特征。
  2. Scikit-learn 中的缺失值处理

    • SimpleImputer是处理缺失值的常用工具,支持多种策略:
      • 均值填补(strategy="mean");
      • 中位数填补(strategy="median");
      • 常数填补(strategy="constant",需指定fill_value);
      • 众数填补(strategy="most_frequent"),适用于分类特征(如 "Embarked" 港口信息)。

二、数据标准化

标准化的核心是将数据转换为统一规格,消除量纲影响,常见方法包括:

  1. 最大最小值标准化(MinMaxScaler)

    • 将数据缩放到指定范围(默认 [0,1]),公式为:Xscaled=Xmax−XminX−Xmin。
    • 通过feature_range参数可自定义缩放范围(如 [5,10])。
  2. Z 值标准化(StandardScaler/scale ())

    • 将数据转换为均值为 0、标准差为 1 的标准正态分布,公式为:Xscaled=σX−μ。
    • scale()函数直接处理数据,StandardScaler以类的形式实现,支持保存均值和标准差用于新数据转换。
  3. 其他标准化方法

    • MaxAbsScaler:按绝对值最大值缩放,使数据落在 [-1,1] 区间,适用于稀疏数据。

    • RobustScaler:基于中位数和四分位距处理,抗离群值能力强。

    • QuantileTransformer:通过分位数信息将数据映射为均匀或正态分布,适用于偏态数据。

    • PowerTransformer:通过幂变换(如 Box-Cox 变换)将数据映射为近似正态分布,适合需正态假设的模型。

三、特征编码

将分类特征转换为数值形式是预处理的关键步骤,根据特征类型可分为:

  1. 独热编码(OneHotEncoder)

    • 为每个类别创建二进制特征,适用于无顺序关系的名义变量(如血型 "A/B/AB/O")。
    • 避免模型误解类别间的数值关联,如将 "A" 编码为 (1,0,0,0),"B" 编码为 (0,1,0,0) 等。
  2. 序号编码(OrdinalEncoder)

    • 将有序分类特征转换为有序整数(如 "高 / 中 / 低" 编码为 3/2/1),保留类别间的顺序关系。
  3. 标签编码(LabelEncoder)

    • 用于一维目标标签(如 "男 / 女"),转换为 0/1 等整数,不建议用于输入特征。
  4. 其他编码方式

    • MultiLabelBinarizer:对多标签数据(如一篇文章的多个类别)进行二值化编码。
    • 目标标签编码:处理无大小关系的目标值,用 0 到 n_classes-1 编码,但数值本身无实际含义。

四、数据转换与离散化

  1. 数据二值化(Binarizer)

    • 根据阈值将数据分为 0 或 1(如年龄 > 30 为 1,否则为 0),简化特征表示。
  2. 连续数据离散化(KBinsDiscretizer)

    • 将连续特征划分为多个区间(分箱),支持均匀分箱、分位数分箱等策略,可转换为整数或独热编码。
  3. 多项式特征生成(PolynomialFeatures)

    • 生成特征的平方项、交叉项等,捕捉特征间的非线性关系,如将 (x1, x2) 扩展为 (1, x1, x2, x1², x1x2, x2²)。
  4. 自定义特征处理(FunctionTransformer)

    • 将自定义函数(如对数变换、平方运算)封装为转换器,灵活满足特定处理需求。

五、总结与应用

数据预处理的核心目标是提升数据质量,使数据更适合模型输入。实际应用中需根据数据特点选择合适方法:

  • 数值型数据常需标准化或归一化;
  • 分类特征需根据是否有序选择编码方式;
  • 缺失值和离群值需针对性处理,避免影响模型学习。

掌握scikit-learnpreprocessing模块和pandas的相关工具,能高效完成预处理流程,为后续模型训练奠定坚实基础。

相关推荐
子夜江寒1 天前
Python 学习-Day8-执行其他应用程序
python·学习
背心2块钱包邮1 天前
第7节——积分技巧(Integration Techniques)-代换积分法
人工智能·python·深度学习·matplotlib
无心水1 天前
【分布式利器:大厂技术】4、字节跳动高性能架构:Kitex+Hertz+BytePS,实时流与AI的极致优化
人工智能·分布式·架构·kitex·分布式利器·字节跳动分布式·byteps
阿正的梦工坊1 天前
DreamGym:通过经验合成实现代理学习的可扩展化
人工智能·算法·大模型·llm
湘-枫叶情缘1 天前
人脑生物芯片作为“数字修炼世界”终极载体的技术前景、伦理挑战与实现路径
人工智能
一个散步者的梦1 天前
一键生成数据分析报告:Python的ydata-profiling模块(汉化)
python·数据挖掘·数据分析
●VON1 天前
从单机应用到分布式调度:基于 HarmonyOS 构建车-空协同任务引擎
学习·华为·harmonyos·openharmony·开源鸿蒙
Aaron15881 天前
侦察、测向、识别、干扰一体化平台系统技术实现
人工智能·fpga开发·硬件架构·边缘计算·信息与通信·射频工程·基带工程
维维180-3121-14551 天前
作物模型的未来:DSSAT与机器学习、遥感及多尺度模拟的融合
人工智能·生态学·农业遥感·作物模型·地理学·农学
万变不离其宗_81 天前
http学习笔记
笔记·学习