首页 后端开发 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

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

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

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1672
14
CakePHP 教程
1428
52
Laravel 教程
1332
25
PHP教程
1276
29
C# 教程
1256
24
Python与C:学习曲线和易用性 Python与C:学习曲线和易用性 Apr 19, 2025 am 12:20 AM

Python更易学且易用,C 则更强大但复杂。1.Python语法简洁,适合初学者,动态类型和自动内存管理使其易用,但可能导致运行时错误。2.C 提供低级控制和高级特性,适合高性能应用,但学习门槛高,需手动管理内存和类型安全。

学习Python:2小时的每日学习是否足够? 学习Python:2小时的每日学习是否足够? Apr 18, 2025 am 12:22 AM

每天学习Python两个小时是否足够?这取决于你的目标和学习方法。1)制定清晰的学习计划,2)选择合适的学习资源和方法,3)动手实践和复习巩固,可以在这段时间内逐步掌握Python的基本知识和高级功能。

Python vs.C:探索性能和效率 Python vs.C:探索性能和效率 Apr 18, 2025 am 12:20 AM

Python在开发效率上优于C ,但C 在执行性能上更高。1.Python的简洁语法和丰富库提高开发效率。2.C 的编译型特性和硬件控制提升执行性能。选择时需根据项目需求权衡开发速度与执行效率。

Python vs. C:了解关键差异 Python vs. C:了解关键差异 Apr 21, 2025 am 12:18 AM

Python和C 各有优势,选择应基于项目需求。1)Python适合快速开发和数据处理,因其简洁语法和动态类型。2)C 适用于高性能和系统编程,因其静态类型和手动内存管理。

Python标准库的哪一部分是:列表或数组? Python标准库的哪一部分是:列表或数组? Apr 27, 2025 am 12:03 AM

pythonlistsarepartofthestAndArdLibrary,herilearRaysarenot.listsarebuilt-In,多功能,和Rused ForStoringCollections,而EasaraySaraySaraySaraysaraySaraySaraysaraySaraysarrayModuleandleandleandlesscommonlyusedDduetolimitedFunctionalityFunctionalityFunctionality。

Python:自动化,脚本和任务管理 Python:自动化,脚本和任务管理 Apr 16, 2025 am 12:14 AM

Python在自动化、脚本编写和任务管理中表现出色。1)自动化:通过标准库如os、shutil实现文件备份。2)脚本编写:使用psutil库监控系统资源。3)任务管理:利用schedule库调度任务。Python的易用性和丰富库支持使其在这些领域中成为首选工具。

科学计算的Python:详细的外观 科学计算的Python:详细的外观 Apr 19, 2025 am 12:15 AM

Python在科学计算中的应用包括数据分析、机器学习、数值模拟和可视化。1.Numpy提供高效的多维数组和数学函数。2.SciPy扩展Numpy功能,提供优化和线性代数工具。3.Pandas用于数据处理和分析。4.Matplotlib用于生成各种图表和可视化结果。

Web开发的Python:关键应用程序 Web开发的Python:关键应用程序 Apr 18, 2025 am 12:20 AM

Python在Web开发中的关键应用包括使用Django和Flask框架、API开发、数据分析与可视化、机器学习与AI、以及性能优化。1.Django和Flask框架:Django适合快速开发复杂应用,Flask适用于小型或高度自定义项目。2.API开发:使用Flask或DjangoRESTFramework构建RESTfulAPI。3.数据分析与可视化:利用Python处理数据并通过Web界面展示。4.机器学习与AI:Python用于构建智能Web应用。5.性能优化:通过异步编程、缓存和代码优

See all articles