机器学习和人工智能数据预处理和建模的工具Slik-wrangler

人工智能
在本文中将展示Slik-wrangler的一些基本用法。在介绍一些概念的同时,还会演示一些有用的函数,这些函数有助于数据清理和整理。

现在人工智能AI和机器学习已经走进我们的日常,并且逐渐改变着我们的生活。让生活变得更便捷、更人性、更智能,更美好。但是现阶段的人工智能(智障)还不完美,存在这样或者那样的问题,除了算法、模型和算力上的问题以外,最大的一个问题就是数据不准确的问题,训练模型的数据存在缺失、存在着噪点,而往往这一丁点的数据噪声会让结果“谬以千里”。

为了解决这个问题,必须预先对数据进行数据清洗和预处理,而这却是数据科学中最繁琐,最恼人的工作。算法的学习可以在一行代码中完成,模型的训练工作也可能需要几秒钟或几天不等的时间内自动完成。而历来数据的处理缺失需要人工长时间来处理,如果自动对这些数据处理成了数据科学工作者迫切的需求,本文我们就介绍这样一个工具Slik-wrangler。

在本文中将展示Slik-wrangler的一些基本用法。在介绍一些概念的同时,还会演示一些有用的函数,这些函数有助于数据清理和整理。

概述

为解决数据研究中的数据处理的烦恼产生了Slik-wrangler。它旨在帮助解决在处理任何形式的数据时基本数据整理和预处理的问题。Slik-wrangler项目有助于快速启动监督学习,它自带多种工具,可以轻松加载任何格式的数据、并进行清理和检查。它提供了一种预处理数据和执行特征工程的快速方法。

数据预处理

数据预处理是将原始数据转换为易于理解的格式的过程,这也是数据挖掘中的最重要一步。因为原始数据很难处理。在应用机器学习或数据挖掘算法之前,都需要检查数据的质量。

在数据开学中,经常会提及一个概念“脏进脏出”(Garbage In、Garbage out)即如果你使用的是“坏”或“脏”数据来训练模型,即使你的算法再高明,模型再好,出现的结果也是错误的。

所以原始数据必须做预处理,保证数据真实、正确且具有统计学意义。

数据预处理步骤

要对数据做预处理,必须遵循一定的步骤,以确保成功预处理数据:

  1. 数据加载(Data Loading)。
  2. 数据质量评估(Data quality assessment)。
  3. 数据清洗(Data cleaning)。
  4. 数据转换(Data transformation)。
  5. 数据裁剪(Data reduction)。

下面我们以这些基本步骤为示例,介绍Slik-wrangler的基本功能。

安装部署

Slik-wrangler支持安装在Linux、MacOS和Windows。在支持版本Python(3.5+)环境下可以通过pip包管理器直接安装。

pip install slik-wrangler

也可以在的多版本Python环境中安装,比如通过Anaconda。首先,确认已安装 Anaconda:

conda --version

创建新的虚拟环境并安装Python 3.5 及更高版本:

conda create -n yourenvname python=3.7

激活环境:

source activate yourenvname

然后安装Slik-wrangler和项目所需的其他软件包

pip install slik_wrangler

测试安装:

python
Python 3.7.1 (default, Dec 14 2018, 19:28:38)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
import slik_wrangler

数据加载

数据加载(导入)是处理任何数据集的第一步。Slik-wrangler提供loadfile模块实现高效地读取数据文件。

使用Pandas读取文件时,需要指定要读取的文件的特定扩展名。例如CSV、excel、parquet等。而使用loadfile载入数据,可以直接读取具有不同文件扩展名的多个文件,无需指定扩展名。可以用函数read_file 加载 CSV、excel和parquet等不同类型的文件。只需指定的文件路径,对不同扩展名数据文件loadfile可以自动适配处理。

from slik_wrangler import loadfile as lf
lf.read_file(path_to_dataset)

假设有一个包含大数据集的文件,比如有几百万行的数据集,可能需要将其拆分为较小文件(数据集),比如2w行。可以使用split_csv_file来进行处理。这对需要从文件中读取的有限行数据进行分析的情况很有用。

from slik_wrangler import loadfile as lf
lf.split_csv_file(path_to_dataset, row_limit=20000)

数据质量评估 (DQA)

数据质量评估(DQA)是判定数据(或数据集)质量的过程。判定数据质量的过程可确保数据适合使用并满足项目或业务流程所需的质量。slik-wrangler中提供了专门的模块dqa用来进行数据质量评估,slik-dqa包含了用于数据质量检查的多个功能。

其中data_cleanness_assessment ,用来检查并显示数据清洁程度的总体程度。

from slik_wrangler.dqa import data_cleanness_assessment
data_cleanness_assessment(dataset)

结果显示数据集的干净程度以及是否有任何需要解决的数据问题,比如示例数据集中主要存在数据缺失的问题,其中Cabin缺失数据高达77.2%。

slik-dqa还提供了用于检查数据集特定问题独立函数,例如:

  • missing_value_assessment:缺失数据评估;
  • duplicate_assessment:重复数据评估;

数据清洗

数据清理是格式化/清理数据以使其适合分析的过程。它包括处理缺失值、替换重复项以及更正、修复或删除不相关的数据。这是实现数据满足业务需求的最重要的预处理步骤。是slik-wrangler提供了一个有价值的API来清理的数据集,称为预处理(约定import为pp):

from slik_wrangler import preprocessing as pp

识别和修复异常值

异常值会对数据分析和建模结果产生巨大影响。例如,如果对人群的年龄进行调查,并且如果有人输1000作为他的年龄。这明显就是错误的,如果不删除或纠正,它会极大地扭曲结果(比如求平均年龄)。

slik-wrangler目前主要依靠四分位距方法来检测数据集中存在的异常值,还使用不同的方法修复数据中存在的异常值,例如用数据点的平均值或中值替换异常值。可以自定义要筛选的数字特征,并显示一个表格,该表格连续标识至少“n”个异常值。

from slik_wrangler import preprocessing as pp
pp.detect_fix_outliers(data,target_column='Age',n=1)

识别缺失值

要检查我们的数据集是否包含缺失值,可以使用check_nan函数。上面的dqa模块中slik_wrangler.preprocessing也可显示缺失数据信息的概述。我们可以对其缺失占比图示显示:

from slik_wrangler import preprocessing as pp
pp.check_nan(train, plot=True)

图示方法比直接数字的效果要明显得多。

处理缺失值

有几种方法可以处理缺失值,可以删除缺失值或用特定的值替换缺失值。slik-wranglerz使用handle_nan模块智能高效地处理数据中的缺失值。handle_nan函数通过选择一种策略来处理的数字特征,为fillna参数传递一个值来处理分类特征或默认使用mode填充。还可以使用threshold参数跨行和列删除缺失值。

删除缺失值可以使用以下替代方法之一:

  • 删除缺少值的行。
  • 删除包含缺失值的列。

用另一个值替换缺失值。通常采用以下策略:

  • 对于数值,将缺失值替换为平均值或众数。
  • 对于分类值,将缺失值替换为列的最频繁值(模式)或想要的任何值。
from slik_wrangler import preprocessing as pp
data = pp.handle_nan(
dataframe=titanic, target_name='Survived', strategy='mean',
fillna='mode', drop_outliers=True, thresh_x=50, thresh_y=75,
display_inline=True
)

以上示例中,我们设置去除掉记录(行)阈值thresh_x中缺失值超过50%的值。设置一个字段(列)中thresh_y阈值thresh_y缺失值超过75%的列。

结果中对缺失超过75%的一列数据清除,原始数据由12列变为11列。

data.shape
(890, 11)

slik.preprocessing模块用来进行对数据预处理,它可以实现一行代码中清理数据。该函数通过删除数据中存在的异常值、处理缺失值、特征化DateTime 列和映射相关列来清理您的数据。

from slik_wrangler import preprocessing as pp
pp.preprocess(
data= titanic, target_column='Survived', train=True,
display_inline=True, project_path='./Titanic', logging='display'
)

将预处理结果文件保存在指定的项目路径中,本例中为当前路径下的Titanic目录。

总结

在机器学习ML和人工智能AI数据准备阶段,数据预处理过程将其进行数据整理,评估,清洗和异常处理的过程。统计数据表明,数据科学家在数据预处理花费的时间大概占整个项目的80%还多。如果能将这部分繁琐和耗时的过程自动化,这样可以大大增加研究人员在数据分析EDA、算法和模型研究等其他事情的时间。

slik-wrangler非常适合从初学者到专家级数据科学家。通过使用 Slik-wrangler 进行数据预处理,可以实现自动评估数据质量和存在的问题,有效处理缺失值、处理异常值和列管理,从而建立数据模式,为进一步数据分析做好准备。

责任编辑:赵宁宁 来源: 虫虫搜奇
相关推荐

2019-03-06 09:00:00

机器学习人工智能

2020-09-07 11:28:09

人工智能机器学习AI

2021-04-16 09:53:45

人工智能机器学习深度学习

2021-12-01 22:55:45

人工智能机器学习深度学习

2022-04-07 14:37:37

人工智能机器学习数据安全

2021-02-26 10:02:13

人工智能深度学习机器学习

2020-10-16 10:19:10

智能

2017-03-18 16:28:40

人工智能机器学习深度学习

2021-04-08 15:42:13

人工智能机器学习

2022-06-01 14:33:59

人工智能交通运输机器学习

2018-03-18 16:10:24

2023-01-17 13:55:39

2023-09-05 10:41:28

人工智能机器学习

2022-08-18 09:42:02

人工智能机器学习

2021-10-08 10:26:37

人工智能机器学习AI

2016-12-05 14:37:25

人工智能机器学习

2023-10-12 15:55:42

人工智能机器学习

2017-11-29 12:01:03

AWS机器学习人工智能

2017-11-17 08:17:48

2020-12-28 14:59:46

人工智能机器学习物联网
点赞
收藏

51CTO技术栈公众号