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

ML 模型的数据预处理技术

Dec 03, 2024 am 10:39 AM

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
2小时的Python计划:一种现实的方法2小时的Python计划:一种现实的方法Apr 11, 2025 am 12:04 AM

2小时内可以学会Python的基本编程概念和技能。1.学习变量和数据类型,2.掌握控制流(条件语句和循环),3.理解函数的定义和使用,4.通过简单示例和代码片段快速上手Python编程。

Python:探索其主要应用程序Python:探索其主要应用程序Apr 10, 2025 am 09:41 AM

Python在web开发、数据科学、机器学习、自动化和脚本编写等领域有广泛应用。1)在web开发中,Django和Flask框架简化了开发过程。2)数据科学和机器学习领域,NumPy、Pandas、Scikit-learn和TensorFlow库提供了强大支持。3)自动化和脚本编写方面,Python适用于自动化测试和系统管理等任务。

您可以在2小时内学到多少python?您可以在2小时内学到多少python?Apr 09, 2025 pm 04:33 PM

两小时内可以学到Python的基础知识。1.学习变量和数据类型,2.掌握控制结构如if语句和循环,3.了解函数的定义和使用。这些将帮助你开始编写简单的Python程序。

如何在10小时内通过项目和问题驱动的方式教计算机小白编程基础?如何在10小时内通过项目和问题驱动的方式教计算机小白编程基础?Apr 02, 2025 am 07:18 AM

如何在10小时内教计算机小白编程基础?如果你只有10个小时来教计算机小白一些编程知识,你会选择教些什么�...

如何在使用 Fiddler Everywhere 进行中间人读取时避免被浏览器检测到?如何在使用 Fiddler Everywhere 进行中间人读取时避免被浏览器检测到?Apr 02, 2025 am 07:15 AM

使用FiddlerEverywhere进行中间人读取时如何避免被检测到当你使用FiddlerEverywhere...

Python 3.6加载Pickle文件报错"__builtin__"模块未找到怎么办?Python 3.6加载Pickle文件报错"__builtin__"模块未找到怎么办?Apr 02, 2025 am 07:12 AM

Python3.6环境下加载Pickle文件报错:ModuleNotFoundError:Nomodulenamed...

如何提高jieba分词在景区评论分析中的准确性?如何提高jieba分词在景区评论分析中的准确性?Apr 02, 2025 am 07:09 AM

如何解决jieba分词在景区评论分析中的问题?当我们在进行景区评论分析时,往往会使用jieba分词工具来处理文�...

如何使用正则表达式匹配到第一个闭合标签就停止?如何使用正则表达式匹配到第一个闭合标签就停止?Apr 02, 2025 am 07:06 AM

如何使用正则表达式匹配到第一个闭合标签就停止?在处理HTML或其他标记语言时,常常需要使用正则表达式来�...

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境