目录
Kaggle官方平台所有提交kernel,包含结果,详见网址https://www.kaggle.com/c/house-prices-advanced-regression-techniques/notebooks。
本文选用比较少见的中文kernel房价预测kaggle入门项目,提交之后排名1355
1. 读取数据
# 导入需要的模块
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
# 用来绘图的,封装了matplot
# 要注意的是一旦导入了seaborn,
# matplotlib的默认作图风格就会被覆盖成seaborn的格式
import seaborn as sns
from scipy import stats
from scipy.stats import norm
from sklearn.preprocessing import StandardScaler
import warnings
warnings.filterwarnings('ignore')
%matplotlib inline # 作图用
读取数据
data_train = pd.read_csv("../input/train.csv")
查看前5行
data_train.head()
分析“SalePrice”
data_train['SalePrice'].describe()
通过上面的结果可以知道“SalePrice”没有无效或者其他非数值的数据,下面通过图示化来进一步展示“SalePrice”
sns.distplot(data_train['SalePrice'])
可以看到与使用matplotlib作的直方图最大的区别在于有一条密度曲线(KDE),可以通过设置参数去掉这条默认的曲线。 另外由上图可以知道房价呈现正态分布。下面还可以看到两个统计学中的概念: 峰度(Kurtosis)和 偏度(Skewness)。
峰度:峰度(Kurtosis)是描述某变量所有取值分布形态陡缓程度的统计量。
它是和正态分布相比较的。
- Kurtosis=0 与正态分布的陡缓程度相同。
- Kurtosis>0 比正态分布的高峰更加陡峭——尖顶峰
- Kurtosis<0 比正态分布的高峰来得平台——平顶峰
- 计算公式:β = M_4 /σ^4
偏度:偏度(Skewness)是描述某变量取值分布对称性的统计量。
- Skewness=0 分布形态与正态分布偏度相同
- Skewness>0 正偏差数值较大,为正偏或右偏。长尾巴拖在右边。
- Skewness<0 负偏差数值较大,为负偏或左偏。长尾巴拖在左边。
- 计算公式: S= (X^ - M_0)/δ
- Skewness越大,分布形态偏移程度越大。
#偏度和峰度
print("Skewness: %f" % data_train['SalePrice'].skew())
print("Kurtosis: %f" % data_train['SalePrice'].kurt())
2. 分析特征数据
2.1 数据再分类
为了让我们对数据的分析更具科学性,我们可以新建一个excel文件,具体需要记录的数据如下:
- Variable:变量名
- Data Type:各变量的数据类型,分为“数值型–0”和“类别型–1”
- Segment:变量的类型。分为:“building–0”、“space–1”、“location–2”。具体解释如下:
- building:比如房屋材料、造型等与房屋物理特性相关的特征(e.g. ‘OverallQual’)
- space:即与房屋空间有关的特征,如面积(e.g. ‘TotalBsmtSF’)
- location:如地段、道路情况等(e.g. ‘Neighborhood’)
- Expectation:表示我们认为该变量对于“SalePrice”的影响程度,划分为“High—3”,“Medium—2”,“Low—1”
- Conclusion:与“Expectation”类似,这个表示我们在观察完数据后得出的结论,其实也可和“Expectation”相同。
- Comments:其他关于该变量的一些看法
2.2 提取主要特征
对整理后的数据进一步分析来选出主要影响售价的特征。
- Utilities:第一个映入我眼帘的是Utilities,因为公共设施越齐全肯定越贵嘛,但是我又观察了具体的训练数据集,发现每一个房屋都是“AllPub”,即都具备基础的公共设施,所以这一项不能入选。
- LotArea:英文理解能力有限,并不知道这什么意思,姑且认为是“地皮面积”,很好理解,面积越大肯定越贵
- Neighborhood:这应表示房屋所处市区的位置,这个必选啊,合不合适在后面再具体分析。
- OverallQual:对房子的整体材料和装修进行评估
- YearBuilt:建造年份
- TotalBsmtSF&GrLivArea:训练数据中有很多特征都涉及到了面积,所以没必要每个都考虑进去,为了简化,选择了TotalBsmtSF(地下室面积)&GrLivArea(不含车库的室内面积)
- Heating:供暖方式应该很重要,但是数据显示基本上都是GasA类型,所以不予考虑,
- CentralAir:中央空调这个可以考虑一下,因为有的有,有的没有。
- MiscVal:在其他类别中未涉及的其他功能的价值,一般都是“shedÿ