[人工智能-大模型-72]:模型层技术 - 模型训练六大步:①数据预处理 - 基本功能与对应的基本组成函数

在AI(尤其是机器学习与深度学习)中,数据预处理是模型成败的基石。正如业内共识:

"80%的时间用于数据预处理,20%用于建模。"

我们来构建一个系统化、模块化、可复用的AI数据预处理框架,明确:

  • 六大核心功能模块
  • 每个功能对应的 基本组成函数(原子级操作)
  • 使用的 Python库与函数名
  • 数学原理与适用场景

一、AI数据预处理的六大核心功能模块

模块 核心目标 关键任务
1. 数据加载与探查 获取数据,了解结构 读取、查看、统计
2. 数据清洗 提高质量 处理缺失、异常、重复
3. 数据转换 统一格式 类型转换、编码、缩放
4. 特征工程 增强表达力 构造、选择、降维
5. 数据划分 为训练做准备 训练/验证/测试集分割
6. 批量处理与管道化 工程化部署 Pipeline, DataLoader

二、各功能模块对应的基本组成函数

✅ 1. 数据加载与探查:查探数据的总体特征

功能 基本组成函数 数学/逻辑
读取数据 pd.read_csv(), pd.read_excel(), np.load() pandas, numpy 文件IO
查看前几行 df.head(n) pandas 快速预览
查看数据类型 df.info() pandas 类型检查
数值统计 df.describe() pandas 均值、标准差、分位数
检查缺失 df.isna().sum() pandas 缺失计数
唯一值统计 df['col'].nunique() pandas 类别数量

📌 目的:快速了解数据的"形状"与"健康度"。


✅ 2. 数据清洗:去掉无用的噪声数据

功能 基本组成函数 数学/逻辑
检测缺失 isna(), notna() pandas 布尔判断
填充缺失 fillna(value), interpolate() pandas 均值、中位数、线性插值
删除缺失 dropna() pandas 行/列删除
删除重复 drop_duplicates() pandas 基于所有列或子集
异常值检测 zscore(), quantile() scipy, pandas Z-score, IQR
异常值处理 clip(lower, upper) pandas 截断法
正则替换 str.replace(r'\D', '') pandas 文本清洗

📌 核心逻辑

  • 数值型:中位数填充 + IQR过滤
  • 类别型:众数填充 + 合并稀有类别

✅ 3. 数据转换:确保数据符合要求

(1) 类型转换
函数 说明
astype(int/float/category) 强制类型转换
pd.to_datetime() 转时间类型
(2) 类别编码
函数 说明 公式/逻辑
pd.get_dummies() One-Hot编码 [0,1,0][0,1,0] 表示类别B
LabelEncoder() 标签编码(0,1,2,...) 仅用于目标变量
OrdinalEncoder() 序序编码(有序类别) 小<中<大 → 0<1<2
(3) 数值缩放
函数 公式 适用场景
StandardScaler x′=x−μσx′=σx−μ​ 正态分布,线性模型
MinMaxScaler x′=x−xmin⁡xmax⁡−xmin⁡x′=xmax​−xmin​x−xmin​​ 神经网络,[0,1]输入
RobustScaler 基于中位数和IQR 存在异常值
PowerTransformer Yeo-Johnson变换 使分布更接近正态

📌 Scikit-learn 是此类函数的核心库:from sklearn.preprocessing import XXX


✅ 4. 特征工程:将领域知识 编码为模型可理解的数值

功能 基本组成函数 说明
对数变换 np.log1p(x) numpy 处理右偏数据
分箱离散化 pd.cut(), pd.qcut() pandas 连续→类别
时间特征提取 dt.year/month/day/hour pandas 从时间戳提取
文本长度 df['text'].str.len() pandas 构造新特征
特征交叉 df['A_B'] = df['A'] * df['B'] pandas 组合特征
特征选择 SelectKBest, RFE sklearn 过滤/包装法
降维 PCA, t-SNE sklearn 可视化或去噪

📌 特征工程的本质 :将领域知识 编码为模型可理解的数值


✅ 5. 数据集划分

功能 基本组成函数 说明
随机划分 train_test_split() sklearn 常用 test_size=0.2
分层划分 stratify=y sklearn 保持类别比例
时间划分 TimeSeriesSplit sklearn 时间序列专用
K折交叉验证 KFold, StratifiedKFold sklearn 模型评估
复制代码
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

✅ 6. 批量处理与管道化(工程化)

功能 基本组成函数 说明
构建预处理管道 Pipeline, ColumnTransformer sklearn 自动化流程
深度学习批量加载 DataLoader, Dataset PyTorch
TensorFlow数据流 tf.data.Dataset TensorFlow 高效IO
复制代码
from sklearn.pipeline import Pipeline
from sklearn.compose import ColumnTransformer

# 数值列和类别列分别处理
preprocessor = ColumnTransformer([
    ('num', StandardScaler(), numeric_features),
    ('cat', OneHotEncoder(), categorical_features)
])

# 构建完整管道
pipeline = Pipeline([
    ('prep', preprocessor),
    ('model', RandomForestClassifier())
])

三、AI数据预处理完整流程(代码模板)

复制代码
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline

# 1. 加载数据
df = pd.read_csv('data.csv')

# 2. 数据清洗
df.drop_duplicates(inplace=True)
df.fillna(df.median(numeric_only=True), inplace=True)  # 数值用中位数
df.fillna(df.mode().iloc[0], inplace=True)             # 类别用众数

# 3. 特征工程
df['age_group'] = pd.cut(df['age'], bins=3, labels=[0,1,2])
df['income_log'] = np.log1p(df['income'])

# 4. 划分特征与目标
X = df.drop('target', axis=1)
y = df['target']

# 5. 定义数值和类别列
numeric_features = X.select_dtypes(include=[np.number]).columns
categorical_features = X.select_dtypes(include=['object']).columns

# 6. 构建预处理管道
preprocessor = ColumnTransformer([
    ('num', StandardScaler(), numeric_features),
    ('cat', OneHotEncoder(drop='first'), categorical_features)
])

# 7. 构建完整Pipeline(预处理 + 模型)
pipeline = Pipeline([
    ('prep', preprocessor),
    ('model', RandomForestClassifier())
])

# 8. 划分数据并训练
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
pipeline.fit(X_train, y_train)

✅ 总结:AI数据预处理的"最小函数集"

功能 最基本组成函数
加载探查 read_csv, head, info, describe, isna
数据清洗 fillna, dropna, drop_duplicates, clip, replace
类型转换 astype, to_datetime, map
编码缩放 get_dummies, OneHotEncoder, StandardScaler, MinMaxScaler
特征工程 np.log1p, pd.cut, .dt, str.len
数据划分 train_test_split, KFold
管道化 Pipeline, ColumnTransformer

掌握这30个左右的核心函数,你就能构建工业级AI预处理流程


🎯 最终洞见

AI中的数据预处理,不是"数据搬运",而是"知识编码"

你用 StandardScaler 统一量纲,

OneHotEncoder 表达类别,

np.log1p 矫正偏态,

实际上是在为模型构建一个可计算的认知框架

这些"基本组成函数",

就是你手中的"数据炼金术工具包"。

当你熟练组合它们,

你就拥有了将原始数据转化为AI智慧的能力------

这正是现代人工智能工程师的核心竞争力。

坚持精进,你将发现:
最强大的AI,始于最干净、最智能的数据

相关推荐
liu****2 小时前
4.基础开发工具(一)
linux·开发语言·1024程序员节
小龙报2 小时前
《C语言疑难点 --- 字符函数和字符串函数专题(上)》
c语言·开发语言·c++·算法·学习方法·业界资讯·visual studio
凭君语未可2 小时前
深度解析Java的多态特性
java·开发语言
csbysj20203 小时前
DTD 元素:XML 与 SGML 文档结构解析指南
开发语言
傻童:CPU3 小时前
C语言练习题
c语言·开发语言
晚霞apple3 小时前
三维重建技术的未来创新方向
论文阅读·人工智能·深度学习·神经网络·机器学习
NocoBase3 小时前
GitHub 上最值得关注的 14 个开源 AI 低代码工具
人工智能·低代码·github
极地星光3 小时前
协程:实战与系统集成(高级篇)
开发语言
无风听海3 小时前
神经网络之语义空间
人工智能·深度学习·神经网络