探索性数据分析是机器学习开发生命周期的关键阶段之一,在任何现实生活中的数据分析项目中,它几乎占用了整个项目50-60%的时间,因为我们必须用来寻找洞察力的数据是原始数据,在应用机器学习算法之前必须进行处理,以获得最佳性能。这个步骤必须包括以下内容:
让我们通过一个故事来理解EDA在数据分析中的意义。
一家小公司刚刚在市场上开展业务。这家公司有一群对自己的角色充满热情的专业人士,他们以一种方式工作使整个公司都能获利。随着公司开始在员工或用户方面增加对其推广产品的了解,管理团队意识到,他们需要帮助了解用户或客户对公司提供的产品或服务的需求和行为。
为了克服这个问题,他们开始聘请一些技术专业人员。最终,他们在数据分析师的职位下找到了一个技术人员,以便他们能够更好地了解客户数据。该分析师将能够从中找到重要的信息或见解。他们聘请的分析师在他们主要从事探索性数据分析的同一类型技术或项目中具有良好的实践经验。
因此,对于这个问题,他们开始通过网络抓取从多个API收集数据,其中包括公司网站、社交媒体、论坛等。收集完数据后,他们开始清理和处理数据,以便他们能够从这些数据中找到一些见解。他们使用统计技术如假设测试和商业智能工具来探索数据,并使用模式识别技术发现隐藏的模式。
在建立管道后,他们观察到公司的客户对购买环保和可持续的产品最感兴趣。公司管理层基于这些见解推出了环保和可持续的产品。于是,基于这些更新,新产品得到了客户的喜欢,最终,公司的收入开始成倍增长。管理层已经开始意识到探索性数据分析的重要性,并聘请了更多的数据分析师。
因此,在本文中,受上述故事的启发,我们将了解管道的探索性数据分析阶段里面的不同技术,并在这个过程中使用流行的工具。本文为初学者和有经验的数据分析师提供了EDA的全面概述及其在数据科学中的重要性。
为了理解EDA内部使用的每一种技术,本文将研究一个数据集,并使用用于数据科学的Python库(例如NumPy、Pandas、Matplotlib等)来实现分析。
本文将在分析中使用的数据集是Titanic数据集,它可以从这里(https://www.kaggle.com/c/titanic/data)下载。本文将使用train.csv进行模型训练。
在实施之前,首先导入必要的库,本文将利用这些库来实现不同的EDA技术,包括:
在导入所有需要的库之后,我们将使用Pandas dataframe加载Titanic数据集。然后我们可以开始执行不同的数据预处理技术,为进一步建模和归纳准备数据。
输出:

图 1
下面的分析为我们提供了数据中所有数值列的统计数据。我们可以从这个函数中得到的统计数据是:
输出:

图 2
通过解释上述输出,我们可以看到有891名乘客,平均存活率为38%。年龄栏的最小值和最大值在0.42至80之间,平均年龄约为30岁。另外,至少有50%的乘客没有兄弟姐妹/配偶,至少有75%的乘客没有父母/子女,票价一栏的数值也有很大变化。
让我们试着通过从头开始编写代码来计算生存率。
为了计算总体存活率,首先选择Survived列,检查数值为1的行,然后计算所有这些行。最后,为了找到百分比,我们将用它除以总行数并输出结果。
输出:
现在,我们必须用聚合运算找到不同列的存活率,我们将使用gender和 Pclass列,然后应用均值函数来找到它,然后输出结果。
输出:
由于某些列具有不同的数据类型,我们将所有这些列转换为一个固定数据类型。即String(字符串)。
在进行数据建模时,如果存在重复的行,我们的性能可能会下降。因此,始终建议删除重复的行。
为了根据该列的可能值找到幸存列的分布,以便我们可以检查类偏差,如果有任何问题,我们可以应用诸如过量取样、欠量取样、SMOTE等技术来克服该问题。
输出:

图 3
现在,如果我们比较上述两个分布,那么建议使用相对频率,而不是使用累积密度函数等的绝对频率。由于我们以年龄一栏为例,具有绝对频率的直方图表明,在20-30岁的年龄组中受害者比幸存者多得多。
在这里,我们创建了饼状图来寻找按生存值计算的缺失值的百分比,然后查看分区。
输出:

图 4
饼状图显示,年龄缺失的乘客更有可能成为受害者。
从输出结果中,可以观察到Cabin列具有最大的缺失值,所以我们将从分析中删除该列。
在Age一栏中,大约有20%的数据缺失,Cabin一栏中大约有77%的数据缺失,Embarked一栏中有0.2%的数据缺失。我们的目的是在建模之前处理缺失的数据。
删除Cabin这一列,因为它有很多缺失的值。
为了处理Age列,首先,我们将检查Age列的数据类型并将其转换为整数数据类型,然后用Age列的中位数来填补Age列中所有的缺失值。
在这之后,数据集在缺失值、离群值等方面看起来不错。现在,如果我们应用机器学习算法来查找数据集中的模式,然后在测试数据上进行测试,与没有预处理和探索性数据分析或数据处理的数据相比,模型的性能会更强。
以下是幸存者与受害者相比的特征:
本文的讨论到此结束。当然,在EDA中还有很多技术比本文在这里介绍的要多得多,这取决于用户在问题陈述中要使用的数据集。总而言之,EDA在使用数据来训练模型之前,了解数据是有益的。这种技术在任何数据科学项目中都起着至关重要的作用,使简单模型在项目中使用时能有更好的表现。因此,每个有抱负的数据科学家、数据分析师、机器学习工程师和分析经理都需要正确了解这些技术。