首页 >后端开发 >Python教程 >ML 模型的数据预处理技术

ML 模型的数据预处理技术

DDD
DDD原创
2024-12-03 10:39:10535浏览

Data Preprocessing Techniques for ML Models

数据预处理是在将数据集用于机器学习或其他任务之前对数据集执行某些操作或步骤的行为。数据预处理涉及清理、格式化或转换数据,以提高其质量或确保其适合其主要目的(在本例中为训练模型)。干净且高质量的数据集可以增强机器学习模型的性能。

低质量数据的常见问题包括:

  • 缺失值
  • 格式不一致
  • 重复值
  • 不相关的功能

在本文中,我将向您展示一些常见的数据预处理技术,以准备用于训练模型的数据集。您将需要 Python 的基本知识以及如何使用 Python 库和框架。

要求:
为了充分利用本指南,需要满足以下条件

  • Python 3.12
  • Jupyter Notebook 或您最喜欢的笔记本
  • Numpy
  • 熊猫
  • Scipy
  • Scikit 学习
  • 墨尔本住房数据集

您还可以在 Github 上查看这些 Jupyter 笔记本中每个代码的输出。

设置

如果您还没有安装Python,可以从Python网站下载并按照说明进行安装。

安装 Python 后,安装所需的库

pip install numpy scipy pandas scikit-learn

安装 Jupyter Notebook。

pip install notebook

安装后,使用以下命令启动 Jupyter Notebook

jupyter notebook

这将在您的默认网络浏览器中启动 Jupyter Notebook。如果没有,请检查终端是否有可以手动粘贴到浏览器中的链接。

从“文件”菜单打开一个新笔记本,导入所需的库并运行单元

import numpy as np
import pandas as pd
import scipy
import sklearn

前往墨尔本住房数据集网站并下载数据集。使用以下代码将数据集加载到笔记本中。您可以复制计算机上的文件路径以粘贴到 read_csv 函数中。您还可以将 csv 文件放在与笔记本相同的文件夹中,然后导入文件,如下所示。

data = pd.read_csv(r"melb_data.csv")

# View the first 5 columns of the dataset
data.head()

将数据分为训练集和验证集

from sklearn.model_selection import train_test_split

# Set the target
y = data['Price']

# Firstly drop categorical data types
melb_features = data.drop(['Price'], axis=1) #drop the target column

X = melb_features.select_dtypes(exclude=['object'])

# Divide data into training and validation sets
X_train, X_valid, y_train, y_valid = train_test_split(X, y, train_size=0.8, test_size=0.2, random_state=0)

您必须将数据拆分为训练集和验证集,以防止数据泄漏。因此,您对训练特征集执行的任何预处理技术都与您对验证特征集执行的预处理技术相同。

现在数据集已准备好进行处理!

数据清理

处理缺失值
数据集中的缺失值就像布料上的洞,应该用来缝制裙子。衣服还没做好就已经被它弄坏了。

有 3 种方法来处理数据集中的缺失值。

  1. 删除包含空单元格的行或列
pip install numpy scipy pandas scikit-learn

此方法的问题是您可能会丢失用于训练模型的有价值的信息。除非删除的行或列中的大多数值丢失,否则无需删除包含空单元格的行或列。

  1. 在空单元格中估算值 您可以使用该特定列中数据的平均值、中位数或众数来估算或填充空单元格。 Scikit learn 中的 SimpleImputer 将用于估算空单元格中的值
pip install notebook
  1. 估算并通知 其工作原理是,您在空单元格中估算值,但同时创建一个列来指示该单元格最初为空。
jupyter notebook

重复删除
重复的单元格意味着重复的数据,它会影响模型的准确性。对付它们的唯一方法就是扔掉它们。

import numpy as np
import pandas as pd
import scipy
import sklearn

处理异常值
异常值是与数据集中的其他值显着不同的值。与其他数据值相比,它们可能异常高或异常低。它们可能是由于输入错误而出现,也可能确实是异常值。

处理异常值非常重要,否则它们将导致数据分析或模型不准确。检测异常值的一种方法是计算 z 分数。

它的工作方式是使用 z 分数来检查数据点是否距平均值 3 点或更多。此计算针对每个数据点进行。如果数据点的 z 分数等于 3 或更高值,则该数据点为异常值。

data = pd.read_csv(r"melb_data.csv")

# View the first 5 columns of the dataset
data.head()

数据转换

标准化
您对特征进行标准化,以便将它们描述为正态分布。

正态分布(也称为高斯分布)是一种统计分布,其中平均值上方和下方的距离或分布大致相等。正态分布数据的数据点图形形成钟形曲线。

标准化数据的要点是您要使用的机器学习算法是否假设数据呈正态分布。一个例子是高斯朴素贝叶斯模型。

from sklearn.model_selection import train_test_split

# Set the target
y = data['Price']

# Firstly drop categorical data types
melb_features = data.drop(['Price'], axis=1) #drop the target column

X = melb_features.select_dtypes(exclude=['object'])

# Divide data into training and validation sets
X_train, X_valid, y_train, y_valid = train_test_split(X, y, train_size=0.8, test_size=0.2, random_state=0)

标准化
标准化将数据集的特征转换为均值 0 和标准差 1。此过程对每个特征进行缩放,使其在数据中具有相似的范围。这确保了每个功能对模型训练的贡献均等。

在以下情况下使用标准化:

  • 数据中的特征具有不同的尺度或单位。
  • 您想要使用的机器学习模型基于距离或梯度优化(例如线性回归、逻辑回归、K 均值聚类)。

您可以使用 sklearn 库中的 StandardScaler() 来标准化特征。

pip install numpy scipy pandas scikit-learn

结论

数据预处理不仅仅是一个初步阶段。这是构建准确的机器学习模型过程的一部分。它还可以进行调整以满足您正在使用的数据集的需求。

与大多数活动一样,熟能生巧。当您继续预处理数据时,您的技能和模型都会得到提高。

我很想听听您对此的想法?

以上是ML 模型的数据预处理技术的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn