AI 大模型之 机器学习 数据预处理 清洗 / 增强 / 不平衡数据处理 技术

AI人工智能阿木 发布于 2025-07-13 12 次阅读


摘要:在机器学习项目中,数据预处理是至关重要的步骤。本文将围绕数据清洗、数据增强以及不平衡数据处理三个方面,详细介绍相关技术,并通过Python代码进行实现,以帮助读者更好地理解和应用这些技术。

一、

数据预处理是机器学习项目中的基础工作,它包括数据清洗、数据增强以及不平衡数据处理等步骤。良好的数据预处理可以提升模型的性能,减少过拟合,提高模型的泛化能力。本文将详细介绍这些技术,并通过Python代码进行实现。

二、数据清洗

数据清洗是数据预处理的第一步,其主要目的是去除数据中的噪声、异常值以及重复数据等。以下是一些常用的数据清洗方法:

1. 去除重复数据

python

import pandas as pd

创建一个示例DataFrame


data = pd.DataFrame({


'name': ['Alice', 'Bob', 'Alice', 'Charlie', 'Bob'],


'age': [25, 30, 25, 35, 30]


})

去除重复数据


clean_data = data.drop_duplicates()

print(clean_data)


2. 处理缺失值

python

创建一个示例DataFrame,包含缺失值


data = pd.DataFrame({


'name': ['Alice', 'Bob', None, 'Charlie', 'David'],


'age': [25, 30, None, 35, 40]


})

使用均值填充缺失值


clean_data = data.fillna(data.mean())

print(clean_data)


3. 异常值处理

python

import numpy as np

创建一个示例DataFrame,包含异常值


data = pd.DataFrame({


'name': ['Alice', 'Bob', 'Charlie', 'David'],


'age': [25, 30, 100, 35]


})

使用Z-Score方法去除异常值


z_scores = np.abs((data['age'] - data['age'].mean()) / data['age'].std())


clean_data = data[z_scores < 3]

print(clean_data)


三、数据增强

数据增强是通过对原始数据进行变换,生成更多具有代表性的样本,从而提高模型的泛化能力。以下是一些常用的数据增强方法:

1. 随机翻转

python

from sklearn.utils import shuffle

创建一个示例DataFrame


data = pd.DataFrame({


'name': ['Alice', 'Bob', 'Charlie', 'David'],


'age': [25, 30, 35, 40]


})

随机翻转数据


augmented_data = shuffle(data)

print(augmented_data)


2. 随机缩放

python

import numpy as np

创建一个示例DataFrame


data = pd.DataFrame({


'name': ['Alice', 'Bob', 'Charlie', 'David'],


'age': [25, 30, 35, 40]


})

随机缩放数据


augmented_data = data np.random.uniform(0.8, 1.2)

print(augmented_data)


四、不平衡数据处理

在不平衡数据集中,某些类别的样本数量远多于其他类别,这可能导致模型偏向于多数类别。以下是一些常用的不平衡数据处理方法:

1. 重采样

python

from imblearn.over_sampling import SMOTE

创建一个示例DataFrame,包含不平衡数据


data = pd.DataFrame({


'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve', 'Frank'],


'age': [25, 30, 35, 40, 45, 50],


'label': [0, 0, 1, 1, 1, 0]


})

使用SMOTE方法进行过采样


smote = SMOTE()


X_res, y_res = smote.fit_resample(data[['age']], data['label'])

print(X_res, y_res)


2. 使用权重

python

from sklearn.utils.class_weight import compute_class_weight

创建一个示例DataFrame,包含不平衡数据


data = pd.DataFrame({


'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve', 'Frank'],


'age': [25, 30, 35, 40, 45, 50],


'label': [0, 0, 1, 1, 1, 0]


})

计算类别权重


class_weights = compute_class_weight(class_weight='balanced', classes=np.unique(data['label']), y=data['label'])


class_weights_dict = dict(zip(np.unique(data['label']), class_weights))

print(class_weights_dict)


五、总结

本文详细介绍了机器学习数据预处理中的数据清洗、数据增强以及不平衡数据处理技术,并通过Python代码进行了实现。在实际项目中,合理运用这些技术可以有效提升模型的性能,提高模型的泛化能力。希望本文对读者有所帮助。