如何在机器学习中处理大型数据集

简介: 如何在机器学习中处理大型数据集,不是大数据…。数据集是所有共享一个公共属性的实例的集合。 机器学习模型通常将包含一些不同的数据集,每个数据集用于履行系统中的各种角色。

云栖号资讯:【点击查看更多行业资讯
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!

如何在机器学习中处理大型数据集

不是大数据…

image

数据集是所有共享一个公共属性的实例的集合。 机器学习模型通常将包含一些不同的数据集,每个数据集用于履行系统中的各种角色。

当任何经验丰富的数据科学家处理与ML相关的项目时,将完成60%的工作来分析数据集,我们称之为探索性数据分析(EDA)。 这意味着数据在机器学习中起着重要作用。 在现实世界中,我们需要处理大量数据,这使得使用普通大熊猫进行计算和读取数据似乎不可行,这似乎需要花费更多时间,并且我们的工作资源通常有限。 为了使其可行,许多AI研究人员提出了一种解决方案,以识别处理大型数据集的不同技术和方式。

现在,我将通过一些示例来分享以下技术。 在这里为实际实施,我使用的是google Colab,它的RAM容量为12.72 GB。

让我们考虑使用随机数从0(含)到10(不含)创建的数据集,该数据集具有1000000行和400列。

执行上述代码的CPU时间和挂墙时间如下:

image

现在,让我们将此数据帧转换为CSV文件。

执行上述代码的CPU时间和挂墙时间如下:

image

现在,使用熊猫加载现在生成的数据集(将近763 MB),然后看看会发生什么。

当您执行上述代码时,由于RAM的不可用,笔记本电脑将崩溃。 在这里,我采用了一个相对较小的数据集,大小约为763MB,然后考虑需要处理大量数据的情况。 解决该问题的下一个计划是什么?

处理大型数据集的技术:

1.以块大小读取CSV文件:

image

当我们通过指定chunk_size读取大型CSV文件时,原始数据帧将被分解成块并存储在pandas解析器对象中。 我们以这种方式迭代对象,并连接起来以形成花费较少时间的原始数据帧。

在上面生成的CSV文件中,此文件包含1000000行和400列,因此,如果我们读取100000行中的CSV文件作为块大小,则

执行上述代码的CPU时间和挂墙时间如下:

image

现在我们需要迭代列表中的块,然后需要将它们存储在列表中并连接起来以形成完整的数据集。

执行上述代码的CPU时间和挂墙时间如下:

image

我们可以观察到阅读时间的大幅改善。 这样,我们可以读取大型数据集并减少读取时间,有时还可以避免系统崩溃。

2.更改数据类型的大小:

如果要在对大型数据集执行任何操作时提高性能,则需要花费更多时间来避免此原因,我们可以更改某些列的数据类型的大小,例如(int64→int32),(float64→float32)以减少空间 它存储并保存在CSV文件中,以供进一步实施。

例如,如果我们在分块后将其应用于数据帧,并比较文件大小减少到一半之前和之后的内存使用情况,并且内存使用减少到一半,这最终导致CPU时间减少

数据类型转换前后的内存使用情况如下:

image
image

在这里,我们可以清楚地观察到3 GB是数据类型转换之前的内存使用量,而1.5 GB是数据类型转换之后的内存使用量。 如果我们通过计算数据帧前后的平均值来计算性能,那么CPU时间将减少,我们的目标就可以实现。

3.从数据框中删除不需要的列:

我们可以从数据集中删除不需要的列,以便减少加载的数据帧的内存使用量,这可以提高我们在数据集中执行不同操作时的CPU性能。

4.更改数据格式:

您的数据是否以CSV文件之类的原始ASCII文本存储?

也许您可以通过使用另一种数据格式来加快数据加载速度并使用更少的内存。 一个很好的例子是二进制格式,例如GRIB,NetCDF或HDF。 您可以使用许多命令行工具将一种数据格式转换为另一种格式,而无需将整个数据集都加载到内存中。 使用另一种格式可以使您以更紧凑的形式存储数据,以节省内存,例如2字节整数或4字节浮点数。

5.使用正确的数据类型减少对象大小:

通常,可以通过将数据帧转换为正确的数据类型来减少数据帧的内存使用量。 几乎所有数据集都包含对象数据类型,该对象数据类型通常为字符串格式,这对内存效率不高。 当您考虑日期,类别特征(如区域,城市,地名)时,它们会占用更多的内存,因此,如果将它们转换为相应的数据类型(如DateTime),则类别将使内存使用量比以前减少10倍以上 。

6.使用像Vaex这样的快速加载库:

Vaex是一个高性能Python库,用于懒惰的Out-of-Core DataFrame(类似于Pandas),以可视化方式浏览大型表格数据集。 它以每秒超过十亿(10 ^ 9)个样本/行的速度在N维网格上计算统计信息,例如平均值,总和,计数,标准差等。 可视化使用直方图,密度图和3d体积渲染完成,从而允许交互式探索大数据。 Vaex使用内存映射,零内存复制策略和惰性计算来获得优质性能(不浪费内存)。

现在,让我们在上面随机生成的数据集中实现vaex库,以观察性能。

1.首先,我们需要根据您使用的操作系统,使用命令提示符/ shell安装vaex库。

2.然后,我们需要使用vaex库将CSV文件转换为hdf5文件。

执行上述代码后,将在您的工作目录中生成一个dataset.csv.hdf5文件。 数据类型转换前后的内存使用情况如下:

image

可以看出,将CSV转换为hdf5文件花费了将近39秒,相对于文件大小而言,时间要短一些。

3.使用vaex读取hdf5文件:-

现在我们需要通过vaex库中的open函数打开hdf5文件。

观察完上面的代码后,如果我们看到输出,则看似花了697毫秒来读取hdf5文件,由此我们可以了解读取3GB hdf5文件的执行速度。 这是vaex库的实际优势。

image

通过使用vaex,我们可以对大型数据帧执行不同的操作,例如

  • 表达系统
  • 超出核心数据帧
  • 快速分组/聚合
  • 快速高效的加入

如果您想探索有关vaex库的更多信息,请点击此处。

结论:

通过这种方式,我们可以在机器学习中处理大型数据集时遵循这些技术。

如果您喜欢这篇文章,请阅读这篇文章。如果您想在linkedin上与我联系,请点击下面的链接。

【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/live

立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK

原文发布时间:2020-06-24
本文作者:闻数起舞
本文来自:“51CTO”,了解相关信息可以关注“51CTO

相关文章
|
1天前
|
机器学习/深度学习 算法 PyTorch
用Python实现简单机器学习模型:以鸢尾花数据集为例
用Python实现简单机器学习模型:以鸢尾花数据集为例
9 1
|
28天前
|
XML JSON 数据可视化
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
本文详细介绍了不同数据集格式之间的转换方法,包括YOLO、VOC、COCO、JSON、TXT和PNG等格式,以及如何可视化验证数据集。
34 1
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
|
3月前
|
UED 存储 数据管理
深度解析 Uno Platform 离线状态处理技巧:从网络检测到本地存储同步,全方位提升跨平台应用在无网环境下的用户体验与数据管理策略
【8月更文挑战第31天】处理离线状态下的用户体验是现代应用开发的关键。本文通过在线笔记应用案例,介绍如何使用 Uno Platform 优雅地应对离线状态。首先,利用 `NetworkInformation` 类检测网络状态;其次,使用 SQLite 实现离线存储;然后,在网络恢复时同步数据;最后,通过 UI 反馈提升用户体验。
82 0
|
3月前
|
机器学习/深度学习 TensorFlow 数据处理
分布式训练在TensorFlow中的全面应用指南:掌握多机多卡配置与实践技巧,让大规模数据集训练变得轻而易举,大幅提升模型训练效率与性能
【8月更文挑战第31天】本文详细介绍了如何在Tensorflow中实现多机多卡的分布式训练,涵盖环境配置、模型定义、数据处理及训练执行等关键环节。通过具体示例代码,展示了使用`MultiWorkerMirroredStrategy`进行分布式训练的过程,帮助读者更好地应对大规模数据集与复杂模型带来的挑战,提升训练效率。
68 0
|
3月前
|
机器学习/深度学习 算法 数据挖掘
scikit-learn.datasets 机器学习数据集
scikit-learn.datasets 机器学习数据集
35 0
|
3月前
|
机器学习/深度学习 数据可视化 搜索推荐
【python机器学习】python电商数据K-Means聚类分析可视化(源码+数据集+报告)【独一无二】
【python机器学习】python电商数据K-Means聚类分析可视化(源码+数据集+报告)【独一无二】
129 0
|
6月前
|
机器学习/深度学习 数据采集 人工智能
论文介绍:机器学习中数据集规模增长的极限分析
【5月更文挑战第17天】论文《机器学习中数据集规模增长的极限分析》探讨了数据集大小对AI模型性能的影响,预测语言数据可能在2026年前耗尽,图像数据在2030-2060年可能面临相同问题。研究显示数据积累速度无法跟上数据集增长,可能在2030-2040年间导致训练瓶颈。然而,算法创新和新数据源的发展可能缓解这一问题。[链接](https://arxiv.org/pdf/2211.04325.pdf)
97 2
|
5月前
|
机器学习/深度学习 算法 PyTorch
【从零开始学习深度学习】45. Pytorch迁移学习微调方法实战:使用微调技术进行2分类图片热狗识别模型训练【含源码与数据集】
【从零开始学习深度学习】45. Pytorch迁移学习微调方法实战:使用微调技术进行2分类图片热狗识别模型训练【含源码与数据集】
|
6月前
|
机器学习/深度学习 小程序 计算机视觉
机器学习寻找数据集—动态网站获取
机器学习寻找数据集—动态网站获取

热门文章

最新文章

  • 1
    机器学习实战:房价预测项目
    202
  • 2
    强化学习(Reinforcement Learning, RL)** 是一种机器学习技术,其中智能体(Agent)通过与环境(Environment)交互来学习如何执行决策以最大化累积奖励。
    77
  • 3
    集成学习(Ensemble Learning)是一种机器学习技术,它通过将多个学习器(或称为“基学习器”、“弱学习器”)的预测结果结合起来,以提高整体预测性能。
    219
  • 4
    `sklearn.metrics`是scikit-learn库中用于评估机器学习模型性能的模块。它提供了多种评估指标,如准确率、精确率、召回率、F1分数、混淆矩阵等。这些指标可以帮助我们了解模型的性能,以便进行模型选择和调优。
    454
  • 5
    在机器学习和数据科学中,数据预处理是一个至关重要的步骤。数据规范化(或称为特征缩放)是预处理的一种常见技术,它可以帮助我们改进模型的性能。`sklearn.preprocessing`模块提供了多种数据规范化的方法,其中`StandardScaler`和`MinMaxScaler`是最常用的两种。
    89
  • 6
    在人工智能和机器学习的领域中,语音识别(Speech Recognition,SR)是一个重要的研究方向。它旨在将人类的语音转换为计算机可读的文本。
    106
  • 7
    OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
    121
  • 8
    驾驭大数据洪流:Pandas与NumPy在高效数据处理与机器学习中的核心作用
    84
  • 9
    探索机器学习在图像识别中的应用
    53
  • 10
    智能化运维:机器学习在故障预测和自动化修复中的应用
    66