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

