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

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

一、缺失值处理

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

  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的相关工具,能高效完成预处理流程,为后续模型训练奠定坚实基础。

相关推荐
山烛12 分钟前
OpenCV图像形态学操作
图像处理·人工智能·python·opencv·计算机视觉·图像形态学
向左转, 向右走ˉ14 分钟前
神经网络显存占用分析:从原理到优化的实战指南
人工智能·深度学习·神经网络
掘金安东尼1 小时前
数据仓库现代化迁移到亚马逊 Redshift 完整指南
人工智能
掘金安东尼1 小时前
Amazon Polly :让文字开口说话的云端实践
人工智能·云原生
后端小肥肠1 小时前
从 0 到 1 用 Coze 做美食漫画,长尾流量 + 长期收益全拿下,小白可学!
人工智能·aigc·coze
AI_RSER1 小时前
遥感&机器学习入门实战教程|Sklearn 案例④ :多分类器对比(SVM / RF / kNN / Logistic...)
python·算法·机器学习·支持向量机·分类·sklearn
于越海1 小时前
Python工程师向项目管理转型的深度分析与学习道路规划
笔记·python·学习
初学小刘1 小时前
机器学习中的聚类与集成算法:从基础到应用
算法·机器学习·聚类
机器之心2 小时前
好莱坞特效师展示AI生成的中文科幻大片,成本只有330元
人工智能·openai
Codebee2 小时前
用原生AI-IDE快速搞定OneCode视图注解:AI与注解驱动开发的完美结合
人工智能·低代码