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

数据预处理流程与关键步骤解析

数据预处理流程图(Markdown格式):

开始
数据清洗
是否需要特征工程
特征工程
数据集成
数据变换
数据标准化/归一化
是否有异常值
异常值处理
去噪化
结束

1. 数据清洗(Data Cleaning)

目标: 处理缺失值、重复值和异常值。

常用函数:

  • 删除/填充缺失值: sklearn.impute.SimpleImputer
  • 处理重复值: pandas.DataFrame.duplicated

使用场景:

在数据分析中,数据集可能包含缺失值或重复值。例如,在鸢尾花数据集中,假设某些特征值缺失。

示例代码:

import pandas as pd
from sklearn.impute import SimpleImputer

# 创建示例数据集(带缺失值)
data = {
    'sepal_length': [5.1, 3.5, np.nan, 6.7],
    'sepal_width': [3.6, 2.3, np.nan, 3.3],
    'petal_length': [1.4, 0.2, 1.3, 2.5],
    'species': ['setosa', 'versicolor', 'virginica', 'setosa']
}
df = pd.DataFrame(data)

# 使用SimpleImputer填充缺失值(mean策略)
imputer = SimpleImputer(strategy='mean')
df_filled = imputer.fit_transform(df[['sepal_length', 'sepal_width']])

print("原始数据:\n", df)
print("\n填充后数据:\n", df_filled)

2. 特征工程(Feature Engineering)

目标: 创建新的特征或从现有数据中提取有用信息。

常用函数:

  • 多项式特征生成: sklearn.preprocessing.PolynomialFeatures
  • 文本特征向量化: sklearn.feature_extraction.text.CountVectorizer

使用场景:

在自然语言处理任务中,需要将文本数据转换为数值特征。例如,在情感分析任务中,可以使用CountVectorizer提取单词频率。

示例代码:

from sklearn.feature_extraction.text import CountVectorizer

# 创建示例文本数据集
texts = [
    "This is a positive review",
    "This is a negative review",
    "This is an amazing product",
    "This is a terrible product"
]

# 使用CountVectorizer提取特征
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(texts)

print("特征名称:", vectorizer.get_feature_names())
print("\n文本向量化结果:\n", X.toarray())

3. 数据标准化(Normalization)和归一化(Standardization)

目标: 标准化数据范围,使其具有相同的尺度。

常用函数:

  • 标准化: sklearn.preprocessing.MinMaxScaler
  • 归一化: sklearn.preprocessing.StandardScaler

使用场景:

在机器学习模型中,不同特征的尺度差异可能会影响模型性能。例如,在K-means聚类算法中,通常需要对数据进行标准化处理。

示例代码:

from sklearn.preprocessing import MinMaxScaler, StandardScaler

# 创建示例数据集(带不同尺度的特征)
data = {
    'age': [20, 30, 40, 50],
    'income': [20000, 30000, 40000, 50000]
}
df = pd.DataFrame(data)

# 使用MinMaxScaler进行标准化
scaler_minmax = MinMaxScaler()
scaled_minmax = scaler_minmax.fit_transform(df)

print("标准化结果:\n", scaled_minmax)

# 使用StandardScaler进行归一化
scaler_standard = StandardScaler()
scaled_standard = scaler_standard.fit_transform(df)

print("\n归一化结果:\n", scaled_standard)

4. 数据编码(Encoding)

目标: 将非数值型数据转换为数值型数据。

常用函数:

  • 类别变量编码: sklearn.preprocessing.LabelEncoder
  • 独热编码: sklearn.preprocessing.OneHotEncoder

使用场景:

在分类任务中,类别特征需要被编码为数值。例如,在Titanic生存预测问题中,乘客的性别(男/女)可以使用LabelEncoder进行编码。

示例代码:

from sklearn.preprocessing import LabelEncoder

# 创建示例数据集(带类别变量)
data = {
    'gender': ['male', 'female', 'female', 'male'],
    'age': [20, 30, 40, 50]
}
df = pd.DataFrame(data)

# 使用LabelEncoder进行编码
label_encoder = LabelEncoder()
df['gender_encoded'] = label_encoder.fit_transform(df['gender'])

print("原始数据:\n", df)
print("\n编码后结果:\n", df['gender_encoded'])

5. 数据分割(Splitting Data)

目标: 将数据集划分为训练集和测试集。

常用函数:

  • 数据分割: sklearn.model_selection.train_test_split

使用场景:

在模型训练过程中,通常需要将数据集划分为训练集和测试集,以评估模型的泛化能力。

示例代码:

from sklearn.model_selection import train_test_split

# 创建示例数据集
X = [[1, 2], [3, 4], [5, 6], [7, 8]]
y = [0, 1, 0, 1]

# 使用train_test_split分割数据
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

print("训练集特征:\n", X_train)
print("\n测试集特征:\n", X_test)
print("\n训练集标签:\n", y_train)
print("\n测试集标签:\n", y_test)

总结

以上是常见的数据预处理方法及其在不同任务中的应用示例。通过合理地对数据进行预处理,可以显著提高机器学习模型的性能和准确性。

相关文章:

  • React 开发环境搭建
  • 多个内容滑动轮播图【前端】
  • 第十六次CCF-CSP认证(含C++源码)
  • c++图论(五)之判断图连通
  • 浪潮信息再塑AI+OS格局,联手龙蜥共筑未来
  • 元数据管理系列(一):元数据管理的前世今生
  • 实战3. 利用Pytorch预写好ResNet-18预测电视剧《辛普森一家》中的人物——图像分类
  • Ceph集群2025(Squid版)导出高可用NFS集群(上集)
  • 第一人称动作识别文献阅读——LSTA:用于自我中心动作识别的长短期注意力机制
  • 第二章 | 智能合约 区块链基础知识{介绍篇}
  • 三、重学C++—C语言内存管理
  • PyTorch 面试题及参考答案(精选100道)
  • 圆弧插补相关算法汇总(C++和ST源代码)
  • Spring6: 1概述
  • 拆解美团2024年报,业务协同、生态共赢、科技创新
  • POP点、LT、DX、YD
  • 20250322 c++gesp三级编程题答案
  • Linux shell脚本2-test条件测试语句:文件类型、字符串是否相等、数字大小比较、多重条件判断,测试语句验证
  • Kafka消息序列化深度革命:构建高性能、高安全的自定义编码体系
  • 从扩展黎曼泽塔函数构造物质和时空的结构-7
  • 街区党支部书记们亮出治理实招,解锁“善治街区二十法”
  • 青海西宁市城西区副区长于媛媛主动投案,接受审查调查
  • 五一假期上海地铁部分线路将延时运营,这些调整请查收
  • 农业农村部:把住能繁母猪存栏量“总开关”,引导养殖场户优化母猪存栏结构、合理控制产能
  • 人社部:将制定提前领取个人养老金相关办法
  • 习近平访问金砖国家新开发银行