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

[人工智能-大模型-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, pandasZ-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) 数值缩放
函数公式适用场景
StandardScalerx′=x−μσx′=σx−μ​正态分布,线性模型
MinMaxScalerx′=x−xmin⁡xmax⁡−xmin⁡x′=xmax​−xmin​x−xmin​​神经网络,[0,1]输入
RobustScaler基于中位数和IQR存在异常值
PowerTransformerYeo-Johnson变换使分布更接近正态

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


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

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

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


✅ 5. 数据集划分

功能基本组成函数说明
随机划分train_test_split()sklearn常用 test_size=0.2
分层划分stratify=ysklearn保持类别比例
时间划分TimeSeriesSplitsklearn时间序列专用
K折交叉验证KFoldStratifiedKFoldsklearn模型评估
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. 批量处理与管道化(工程化)

功能基本组成函数说明
构建预处理管道PipelineColumnTransformersklearn自动化流程
深度学习批量加载DataLoaderDatasetPyTorch
TensorFlow数据流tf.data.DatasetTensorFlow高效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_csvheadinfodescribeisna
数据清洗fillnadropnadrop_duplicatesclipreplace
类型转换astypeto_datetimemap
编码缩放get_dummiesOneHotEncoderStandardScalerMinMaxScaler
特征工程np.log1ppd.cut.dtstr.len
数据划分train_test_splitKFold
管道化PipelineColumnTransformer

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


🎯 最终洞见

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

你用 StandardScaler 统一量纲,
OneHotEncoder 表达类别,
np.log1p 矫正偏态,
实际上是在为模型构建一个可计算的认知框架

这些“基本组成函数”,
就是你手中的“数据炼金术工具包”。

当你熟练组合它们,
你就拥有了将原始数据转化为AI智慧的能力——
这正是现代人工智能工程师的核心竞争力。

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

http://www.dtcms.com/a/528356.html

相关文章:

  • java基础-13 : 双列集合(Map)
  • 【十年后台管理系统】Redis的使用
  • SSM框架-MyBatis2
  • 深入理解JVM垃圾回收机制:从原理到实践
  • Spring的后处理器
  • 本地佛山顺德网站设计深圳市宝安区西乡街道
  • 监控 Linux 系统上的内存使用情况
  • 湖北省住房与建设厅网站高品质的网站开发
  • 智慧校园建设方案-6PPT(32页)
  • Spring的@Cacheable取缓存默认实现
  • MySQL-TrinityCore异步连接池的学习(七)
  • 2020应该建设什么网站建网站的论坛
  • 华为OD机考双机位A卷 - Excel单元格数值统计 (C++ Python JAVA JS GO)
  • SpringBoot集成Elasticsearch | Elasticsearch 7.x专属HLRC(High Level Rest Client)
  • 广东省住房城乡建设厅门户网站免费下载手机app
  • 信创入门指南:一文掌握信息技术应用创新的核心要点
  • 基于鸿蒙UniProton的物联网边缘计算:架构设计与实现方案
  • 基于Swin Transformer的脑血管疾病中风影像诊断系统研究
  • 宝安第一网站东莞关键词优化软件
  • 篮球论坛|基于SprinBoot+vue的篮球论坛系统(源码+数据库+文档)
  • SQL 进阶:触发器、存储过程
  • ansible快速准备redis集群环境
  • 公司网站制作效果长沙网站制造
  • 数据结构之堆
  • 【Linux学习笔记】日志器与线程池设计
  • 【Linux系统编程】编辑器vim
  • 鸿蒙ArkTS入门教程:小白实战“易经”Demo,详解@State、@Prop与List组件
  • 扩散模型与UNet融合的创新路径
  • 从入门到精通的鸿蒙学习之路——基于鸿蒙6.0时代的生态趋势与实战路径
  • 704.力扣LeetCode_二分查找