大数跨境
0
0

如何使用Python进行全方位的数据探索

如何使用Python进行全方位的数据探索 数据皮皮侠
2020-03-23
0
导读:数据集介绍本次的介绍基于房价预测数据集,描述是这样的:“如果让一位购房者描述一下他们梦想中的房子,他们可能不


数据集介绍


本次的介绍基于房价预测数据集,描述是这样的:

“如果让一位购房者描述一下他们梦想中的房子,他们可能不会从地下室的天花板高度或东西走向的铁路附近说起。数据集证明,对价格谈判的内容远远超过卧室数量或是有没有停车场这么简单”。

79个解释变量(几乎)描述了爱荷华州埃姆斯住宅的各个方面,这个任务要求你预测每套住宅的最终价格。


我们需要做的事情



从数据科学的角度出发,我们需要依次做如下事情:
1. 理解这个问题。

我们需要研究每个变量,并从领域角度分析它们对这个问题的意义和重要性。
2.单变量的研究。

我们需要关注因变量房价('Sale Price')并试着对它了解更多。
3.多变量的研究。

我们需要理解因变量和自变量之间的关系,以及自变量与自变量之间的关系。
4.基本的数据清洗。

我们需要清理数据集并处理丢失的数据、异常值和分类变量。

5. 测试是否满足假设。

我们需要检查数据是否符合使用到的技术要求的假设。


其中,使用到的库为:


1import pandas as pd
2import matplotlib.pyplot as plt
3import seaborn as sns
4import numpy as np
5from scipy.stats import norm
6from sklearn.preprocessing import StandardScaler
7from scipy import stats



第一步:理解这个问题



我们应该阅读所有变量的描述,一个接一个地问自己:

我们买房的时候会考虑这个变量吗?

例:当我们想到我们梦想中的房子时,我们关心的是它的“砌体饰面类型”吗?
如果是,这个变量有多重要?

例:拥有“优质”材料而不是“劣质”材料的影响是什么?
这个信息已经在其他变量中描述过了吗?

例如:“地形等高线”显示了平坦度,我们真的需要知道“地形坡度”吗?


在这个艰巨任务之后,我们需要仔细查看具有“对因变量影响高”“用户期望”的变量。然后,我们可以快速进入这些变量和“销售价格”之间的一些散点图,填充上述问题对应的结论栏,这是我们进行探索性数据分析(Exploratory Data Analysis,EDA)时,需要完成的。




第二步:单变量的研究,对于因变量房价的深入了解


使用seaborn库中的distplot方法将数据中房价的分布显示出,如下:

sns.distplot(df_train['SalePrice']);



从中,我们不难看出这个数据集存在以下三个特征:

1. 偏离正态分布。

2. 有明显的正偏度(skew)。

3. 存在尖峰。




四.第三步:多变量的研究1,特征属性是如何影响房价的


我们可以使用plot.scatter方法将数字类型变量与因变量房价的关系用散点图画出:(以下依次为房屋地下室总面积和小区总面积)

(细心的可能会发现这张图中有一个偏离主要分布区域的孤立点,这是后续离群点剔除时需要做的。)

      也可以使用sns.boxplot方法绘制一些箱图帮助我们分析数据(以下依次为总体质量和建成年份):


我们只分析了四个变量,还有许多其他的变量需要分析。这里的技巧是选择正确的特性(特性选择),而不是定义它们之间的复杂关系(特性工程)。

也就是说,我们需要把小麦和谷壳分开。


第三步:多变量的研究2,特征属性之间是如何相互影响的



计算相关矩阵(correlation matrix)后使用热图显示出来,可以帮助我们快速的获得属性间关系的总览。

从图中乍一看,有两个红色的方块可能会吸引你的注意。

第一个是指“TotalBsmtSF”和“1stFlrSF”变量。

第二个是指“GarageX”变量。

这两种情况都表明了这些变量之间的相关性有多么显著。实际上,这种相关性是非常强的,如果我们考虑这些变量,可以发现它们提供了几乎相同的信息,因此我们可以理解为这是一种多重共线性。热图可以很好的检测这种情况和问题,并主导特征选择的过程,是一个必不可少的工具。



第四步:弥补缺失值和剔除异常点

我们在思考丢失数据时需要考虑的重要问题: 缺失值与异常值。
对于缺失值:
缺失的数据有多普遍?
丢失的数据是随机的还是有规律的?

这些问题的答案是十分重要的。因为丢失的数据可能意味样本量的减少,这可能妨碍我们进行分析。此外,从实质性的角度来看,我们需要确保缺失的数据不存在独特性,从而不隐藏难以忽视的真相。

对于异常值:

异常值也是我们应该注意的。因为异常值可以显著地影响我们的模型,并且可以成为有价值的信息来源,为我们提供关于特定行为的见解。

离群值是一个复杂的问题,值得关注。但并不是所有离群的一定都是没有价值的,有些离群点包含着重要的信息。(在离群点挖掘任务中可以充分体现出此点)


离群点分析需要相应的领域知识(domain knowledge)来判断,比如在这个问题中,有些问题和解决过程需要建立在对售房领域有所了解的前提下。



第五步:观察是否满足假设

正态性-数据应该看起来像一个正态分布。

这很重要,因为一些统计测试依赖于此(例如t-statistics)。我们需要检查“Sales price”的单变量正态性。虽然单变量正态性并不能保证多变量正态性(这是我们想要的),但它是有帮助的。

另一个需要考虑的细节是,在大样本(>200观测值)中,正态性不是什么大的问题。但是如果我们解决了正态性,我们就避免了很多其他问题(例如,异方差heteroscedacity),这就是我们做这个分析的主要原因。

同方差(heteroscedacity)-这是指“假设在预测变量的范围内,因变量的方差水平相同”。同方差是可取的,因为我们希望误差项在所有自变量的值上都是相同的。


回到之前第一步中观察的因变量分布图,并将它与正态分布比对,我们需要做的,是使它通过某种转换,尽可能的贴合正态分布曲线。


一个简单的数据转换就可以解决这个问题。我们可以从统计学书籍中学到的一件很棒的事情:在正偏态的情况下,对数转换通常工作得很好。



十.总结

本次的介绍到此就结束了,但是这一问题的探索还远没有结束,这里还包括更多的内容,比如dummy variables,以及后续的建模,特征工程等等。本次介绍着重放在如何用各种图表来辅助我们进行初步的数据分析,希望读者能够有所收获。


code和data:

链接: https://pan.baidu.com/s/1UXXByVJKxO_NCpVX7YbosQ 

提取码: sxav 

【声明】内容源于网络
0
0
数据皮皮侠
社科数据综合服务中心,立志服务百千万社科学者
内容 2137
粉丝 0
数据皮皮侠 社科数据综合服务中心,立志服务百千万社科学者
总阅读16
粉丝0
内容2.1k