数据集:https://www.kaggle.com/c/house-prices-advanced-regression-techniques/data
参考:
https://blog.csdn.net/u012063773/article/details/79349256
https://www.jianshu.com/p/62716b33e7be
https://zhuanlan.zhihu.com/p/77306845
https://segmentfault.com/a/1190000015613967
字段:(字段下的具体分类因为太多了就不写了
MSSubClass:参与销售的住宅类型 包含层数、年份等
MSZoning:一般分区分类 农业、商业、工业、住宅密度等等
LotFrontage:连接到房子的街道的直线距离
LotArea:地块面积(?)
Street:通往房子的道路类型
Alley:通往房子的小巷类型
LotShape:属性(?)
LandContour:场地平整度
Utilities:可使用的设施
LotConfig:地段
LandSlope: 坡度
Neighborhood:实际位置 附近地点
Condition1:条件1
Condition2:条件2
BldgType:住宅类型
HouseStyle:住宅风格
OverallQual:评估房屋的整体材料和装饰
OverallCond:评估房子的整体状况
YearBuilt:建造日期
YearRemodAdd:改建日期
RoofStyle:屋顶样式
RoofMatl:屋顶材料
Exterior1st:房屋外部覆盖物1
Exterior2nd:房屋外部覆盖物2
MasVnrType:砌砖类型
MasVnrArea:砖石面积
ExterQual:评估外部材料的质量
ExterCond:评估外部材料的现状
Foundation:住宅基础类型
BsmtQual:地下室高度
BsmtCond:评估地下室的状况
BsmtExposure:室外或花园曝光水平
BsmtFinType1:地下室完工区域的等级
BsmtFinSF1:type1成品的平方
BsmtFinType2:地下室完工区域的等级2
BsmtFinSF2::type2成品的平方
BsmtUnfSF:地下室未完工的平方面积
TotalBsmtSF:地下室总面积
Heating:住宅加热类型
HeatingQC:加热水平
CentralAir:是否为中央空调
Electrical:电气系统类型
1stFlrSF:一楼面积
2ndFlrSF:二楼面积
LowQualFinSF:低质量成品面积(所有楼层)(?)
GrLivArea:地上生活面积
BsmtFullBath:地下全浴室
BsmtHalfBath:地下半浴室
FullBath:地上全浴室
HalfBath:地上半浴室
Bedroom:地上卧室(不包括地下室浴室)
Kitchen:地上厨房
KitchenQual:厨房质量
TotRmsAbvGrd:地上总房间(不包括浴室)
Functional:家庭功能性保存程度
Fireplaces:壁炉数量
FireplaceQu:壁炉质量
GarageType:车库位置
GarageYrBlt:车库建造年份
GarageFinish:车库内部装饰
GarageCars:车库车容量大小
GarageArea:车库面积
GarageQual:车库质量
GarageCond:车库条件
PavedDrive:车道铺砌方式
WoodDeckSF:木质甲板面积
OpenPorchSF:开放式门廊面积
EnclosedPorch:封闭门廊面积
3SsnPorch:三季门廊面积
ScreenPorch:屏风廊面积
PoolArea:游泳池面积
PoolQC:游泳池质量
Fence:围栏质量
MiscFeature:未包含的其他功能
MiscVal:其他功能的质量
MoSold:售出月份
YrSold:售出年份
SaleType:销售类型
SaleCondition:销售条件
真的太多了我昏迷……但是这样整出来又比较方便我之后看
本来今天打算照常把体力清完以后在出门前把昨晚的分析整理一下
但是今天大奥开了 每关都1ap5ap的 体力清了好久 鹅且我还快升级了
我真的好着急.jpg
有很多跟以前重复或者可复用的代码就不贴啦
数据清洗
想查看缺失值的时候 字段太多了显示不全
显示全部行:
pd.set_option('max_row',300)
热力图
#选择影响销售价格相关性最高的前10个字段 再针对性进行缺失值处理
k = 11
plt.figure(figsize=(12,9))
corrmat = train.corr()
cols = corrmat.nlargest(k,'SalePrice')['SalePrice'].index
cm = np.corrcoef(train[cols].values.T)
sns.set(font_scale=1.25)
hm = sns.heatmap(cm,cbar=True,annot=True,square=True,fmt='.2f',annot_kws={'size':11},yticklabels=cols.values,xticklabels=cols.values)
plt.show()
数字型相关性前十:
OverallQual 评估房屋的整体材料和装饰
GrLivArea 地上生活面积
GarageCars 车库车容量大小
GarageArea 车库面积
TotalBsmtSF 地下室总面积
1stFlrSF 一楼面积
FullBath 地上全浴室
TotRmsAbvGrd 地上总房间(不包括浴室)
YearBuilt 建造年份
YearRemodAdd 改建日期
取出指定列
full_1 = pd.DataFrame(full,columns=['OverallQual','GrLivArea','GarageCars','GarageArea','TotalBsmtSF','1stFlrSF','FullBath','TotRmsAbvGrd','YearBuilt','YearRemodAdd'])
缺失值统计
full_1.isnull().sum()
直接用平均值补上了【后来想想会不会有的是无地下室or无车库 不过就一行
#GarageCars 车库车容量大小
full_1['GarageCars'] = full_1['GarageCars'].fillna(full_1['GarageCars'].mean())
#GarageArea 车库面积
full_1['GarageArea'] = full_1['GarageArea'].fillna(int(full_1['GarageArea'].mean()))
#TotalBsmtSF 地下室总面积
full_1['TotalBsmtSF'] = full_1['TotalBsmtSF'].fillna(int(full_1['TotalBsmtSF'].mean()))
根据每个字段的意思 挑选出可能比较有用的字段进行查看&缺失值处理 基本都是看情况填成最常见类别or均值or0
查看分类统计
full['SaleCondition'].value_counts()
LotFrontage 房子到街道的直线距离
使用多项式拟合填充
x = full.loc[full['LotFrontage'].notnull(),'LotArea']
y = full.loc[full['LotFrontage'].notnull(),'LotFrontage']
t = (x<=25000) & (y<=150)
p = np.polyfit(x[t],y[t],1)
full.loc[full['LotFrontage'].isnull(),'LotFrontage'] = \
np.polyval(p,full.loc[full['LotFrontage'].isnull(),'LotArea'])
MSZoning 分区分类
只有4个空值 填成最常见的类别
A Agriculture 农业区
C Commercial 商业区
FV Floating Village Residential 流动村住宅
I Industrial 工业区
RH Residential High Density 高密度住宅区
RL Residential Low Density 低密度住宅区
RP Residential Low Density Park 低密度公园住宅(?)
RM Residential Medium Density 中密度住宅区
full['MSZoning'] = full['MSZoning'].fillna('RL')
Utilities 可使用的设施
基本都是allpub 只有几个不一样
AllPub All public Utilities (E,G,W,& S) 所有公共设施
NoSewr Electricity, Gas, and Water (Septic Tank) 电气水
NoSeWa Electricity and Gas Only 只有电气
ELO Electricity only 只有电
Neighborhood 实际位置
无空值 但取值很多 附近地标建筑
OverallCond 房子整体状况
无空值 1-9的打分
BldgType 住宅类型
无空值
1Fam Single-family Detached 单一家庭
2FmCon Two-family Conversion; originally built as one-family dwelling 两个家庭 最初以一个家庭的标准建造
Duplx Duplex 复式
TwnhsE Townhouse End Unit 联排别墅末端单元
TwnhsI Townhouse Inside Unit 单元内联排别墅
HouseStyle 住宅风格
无空值
1Story One story
1.5Fin One and one-half story: 2nd level finished
1.5Unf One and one-half story: 2nd level unfinished
2Story Two story
2.5Fin Two and one-half story: 2nd level finished
2.5Unf Two and one-half story: 2nd level unfinished
SFoyer Split Foyer
SLvl Split Level
Foundation 我猜是地基类型
无空值
BrkTil Brick & Tile 砖瓦
CBlock Cinder Block 煤渣块
PConc Poured Contrete 灌注混凝土
Slab Slab 厚板
Stone Stone 石头
Wood Wood 木头
BsmtCond评估地下室的状况
Ex Excellent 极好
Gd Good 挺好
TA Typical - slight dampness allowed 一般 允许轻微潮湿
Fa Fair - dampness or some cracking or settling 潮湿或有裂痕或沉淀
Po Poor - Severe cracking, settling, or wetness 严重开裂、沉降或潮湿
NA No Basement 无地下室
BsmtQual 地下室高度
Ex Excellent (100+ inches)
Gd Good (90-99 inches)
TA Typical (80-89 inches)
Fa Fair (70-79 inches)
Po Poor (<70 inches
NA No Basement
BsmtExposure 室外或花园曝光水平
Gd Good Exposure
Av Average Exposure (split levels or foyers typically score average or above) 平均暴露(分等级或门厅)
Mn Mimimum Exposure
No No Exposure
NA No Basement
BsmtFinType1 地下室完工区域的等级
GLQ Good Living Quarters 良好生活条件
ALQ Average Living Quarters
BLQ Below Average Living Quarters
Rec Average Rec Room
LwQ Low Quality
Unf Unfinshed
NA No Basement
BsmtFinType2 地下室完工区域的等级2
GLQ Good Living Quarters 良好生活条件
ALQ Average Living Quarters
BLQ Below Average Living Quarters
Rec Average Rec Room
LwQ Low Quality
Unf Unfinshed
NA No Basement
GarageCond 车库条件
Ex Excellent
Gd Good
TA Typical/Average
Fa Fair
Po Poor
NA No Garage
GarageType 车库位置
2Types More than one type of garage 不止一种类型的车库
Attchd Attached to home 附属于住宅
Basment Basement Garage 地下车库
BuiltIn Built-In (Garage part of house - typically has room above garage) 住宅的一部分
CarPort Car Port 停车场
Detchd Detached from home 不在家附近
NA No Garage 无车库
GarageFinish 车库内部装饰
Fin Finished
RFn Rough Finished
Unf Unfinished
NA No Garage
GarageQual 车库质量
Ex Excellent
Gd Good
TA Typical/Average
Fa Fair
Po Poor
NA No Garage
PoolArea 游泳池面积
无空值
PoolQC 游泳池质量
Ex Excellent
Gd Good
TA Typical/Average
Fa Fair
NA No Pool
绝大部分游泳池面积为0 所以填充空值时填为NA
KitchenQual 厨房质量
Ex Excellent
Gd Good
TA Typical/Average
Fa Fair
Po Poor
Functional 功能性
Typ Typical Functionality 具备典型功能
Min1 Minor Deductions 1 缺少小部分
Min2 Minor Deductions 2 缺少小部分
Mod Moderate Deductions 中等缺少
Maj1 Major Deductions 1 大部分缺少
Maj2 Major Deductions 2 大部分缺少
Sev Severely Damaged 严重损坏
Sal Salvage only ?没看懂 只能用来住?
Fence 围栏质量
空值超多 可能很多没有 补为None
GdPrv Good Privacy 良好的隐私性
MnPrv Minimum Privacy 保证最小隐私
GdWo Good Wood 好木头
MnWw Minimum Wood/Wire 一般木头/电线
NA No Fence 无围栏
FireplaceQu 壁炉质量
空值挺多 可能很多没有 补为None
Ex Excellent - Exceptional Masonry Fireplace 独特的砖石壁炉
Gd Good - Masonry Fireplace in main level 主层砖石壁炉
TA Average - Prefabricated Fireplace in main living area or Masonry Fireplace in basement 生活区预制/地下室砖石壁炉
Fa Fair - Prefabricated Fireplace in basement 地下室预制壁炉
Po Poor - Ben Franklin Stove 本富兰克林炉
NA No Fireplace 无壁炉
SaleType 销售类型
WD Warranty Deed - Conventional 担保契约-常规
CWD Warranty Deed - Cash 担保契约-现金
VWD Warranty Deed - VA Loan 担保契约-VA贷款
New Home just constructed and sold 刚建成并出售的房子
COD Court Officer Deed/Estate 法院契据/遗产
Con Contract 15% Down payment regular terms 合同15%定金定期付款
ConLw Contract Low Down payment and low interest 合同低首付低利息
ConLI Contract Low Interest 低利率合同
ConLD Contract Low Down 收缩低点
Oth Other 其他
SaleCondition 销售条件
无空值
Normal Normal Sale 正常销售
Abnorml Abnormal Sale - trade, foreclosure, short sale 异常销售-交易、止赎、卖空
AdjLand Adjoining Land Purchase 邻接土地购买
Alloca Allocation - two linked properties with separate deeds, typically condo with a garage unit 分配-两个有独立契约的相连房产,通常是带车库的公寓
Family Sale between family members 家庭成员之间的买卖
Partial Home was not completed when last assessed (associated with New Homes) 上次评估时未完成的住宅(与新住宅相关)
把以上都合并到full_1以便分析&后续的特征处理
特征分析
查看SalePrice的分布情况
#分布分析
#查看数据是否符合正态分布
sns.distplot(train['SalePrice'])
fig = plt.figure()
import scipy.stats as stats
res = stats.probplot(train['SalePrice'],plot=plt)
1、saleprice与overallqual住宅整体装饰情况的关系
data = pd.concat([train['SalePrice'],train['OverallQual']],axis=1)
fig = sns.boxplot(x='OverallQual',y='SalePrice',data=data)
出售价格随着装饰得分的提高逐渐升高
2、saleprice与grlivarea住宅地上生活面积的关系
data = pd.concat([train['SalePrice'],train['GrLivArea']],axis=1)
data.plot.scatter(x='GrLivArea', y='SalePrice', ylim=(0,800000))# 直方图和正态概率图,查看是否正态分布
plt.show()
sns.distplot(train['GrLivArea']);
plt.show()
图像非正态分布&由散点图可知,图像的右下角存在两个异常值
按条件查看多列
train[['GrLivArea','SalePrice']][train['GrLivArea']>4000]
按条件删除
full_1 = full_1.drop(full_1[full_1.GrLivArea>4600].index)
3、saleprice与garagecars车库车容量大小的关系
车库容量为3的出售价格最高 且异常点多且高 说明不是车库容量越多越受欢迎
4、saleprice与GarageArea车库面积的关系
5、saleprice与TotalBsmtSF地下室面积的关系
删除异常点
6、saleprice与1stFlrSF一楼面积的关系
删除异常点
7、saleprice与FullBath地上全浴室间数的关系
为啥0间还比1间价格高点 但123是逐步上升的
2的比较高的点还挺多 说明可能不需要这么多间浴室
8、saleprice与TotRmsAbvGrd地上总房间数不包括浴室的关系
并不是越多越好 太多价格反而下降 可能和其他因素比如地点/类型之类的有关
9、MoSold与销售量
train.groupby('MoSold')['SalePrice'].count()
sns.countplot(x='MoSold',data=train)
虽然567月的销售量最高 但在看每月销售平均价格的时候发现每个月都差不多
10、saleprice与LotFrontage房子到街道的直线距离的关系
删除异常点
11、saleprice与MSZoning分区的关系
低密度住宅区RL&流动村住宅FV的价格较高 高密度住宅区RH&中密度住宅区RM的价格次之
商业区C的价格最低(???为啥 一般不应该商区最贵)
12、saleprice与OverallCond房子整体状况得分的关系
得分5和9的价格较高 且得分5的有很多价格很高的点 这是为啥 难道因为买房的人想自己再装修?
13、saleprice与BldgType房子类型得分的关系
单一家庭&联排别墅末端单元的价格较高 且一家的价格有很多高点
别墅在边缘的比在中间的价格高 有钱人.jpg
为啥复式价格一般 我还挺喜欢复式的……
14、saleprice与HouseStyle住宅风格的关系
其实没太看懂这个style的意思
15、saleprice与Foundation住宅地基类型的关系
毫无疑问的是混凝土&石头价格更高 毕竟更安全
不过没想到木头比砖瓦价格高 随手百度了一下发现国外很多用木头当砖做地基的 方便便宜能调节温度
16、saleprice与BsmtCond评估地下室状况的关系
搞笑事件 没有excellent的地下室
虽然good的平均价格&上下分位数都比typical高 但typical有很多高出正常值的点 可能大家对地下室状况没有那么在意
17、saleprice与BsmtCond评估地下室高度的关系
价格和地下室高度同步上升
18、saleprice与BsmtCond评估地下室曝光的关系
同步上升 不过差别不是很大 地下室要啥曝光度
19、saleprice与BsmtFinType1评估地下室完工区域1的关系
除了good living quarters较高其他都差不多
20、saleprice与BsmtFinType1评估地下室完工区域2的关系
也差不多 未完成有很多高点 看来大家不是很care
21、saleprice与GarageCond车库状况的关系
excellent还没有typical/average强 看来这也不是主要考虑因素
22、saleprice与GarageType车库位置的关系
当然跟住宅一起的是坠好的啦 毕竟是外国的房子……
23、saleprice与GarageFinish车库内部装饰的关系
虽然不太care 但是当然已完成>完成得比较粗糙的>未完成的
24、saleprice与GarageQual车库质量的关系
虽然不太care 但也不能到fait和poor的水平
25、saleprice与PoolQC游泳池质量的关系
excellent 问就是有钱
26、saleprice与KitchenQual厨房质量的关系
果然还是excellent 不过如果像我这种不会&不想做饭的就不care了……
27、saleprice与Functional功能性保存程度的关系
具有典型功能的当然最好 不过其他数据表明没有区别也不大
28、saleprice与fence围栏质量的关系
不太重要
29、saleprice与FireplaceQu壁炉质量的关系
有壁炉且质量较好的当然比较高贵
30、saleprice与SaleType销售类型的关系
刚建好的房子比较受欢迎 常规的担保契约WD也有很多高点 交定金再定期的方式也不错
31、saleprice与SaleCondition销售条件的关系
上次评估时未完成的住宅&正常销售价格较高
特征处理&模型放在下一部分