kaggle房价预测模型总结

房价预测任务

目标:根据房屋属性预测每个房子的最终价格。

在这里插入图片描述

(一):分析数据指标
  1. 先查看数据的特征值与目标值:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
from scipy.stats import norm
from sklearn.preprocessing import StandardScaler
from scipy import stats
import warnings
warnings.filterwarnings('ignore')
%matplotlib inline
df_train = pd.read_csv('./data/train.csv')
df_train.columns

Index([‘Id’, ‘MSSubClass’, ‘MSZoning’, ‘LotFrontage’, ‘LotArea’, ‘Street’,
‘Alley’, ‘LotShape’, ‘LandContour’, ‘Utilities’, ‘LotConfig’,
‘LandSlope’, ‘Neighborhood’, ‘Condition1’, ‘Condition2’, ‘BldgType’,
‘HouseStyle’, ‘OverallQual’, ‘OverallCond’, ‘YearBuilt’, ‘YearRemodAdd’,
‘RoofStyle’, ‘RoofMatl’, ‘Exterior1st’, ‘Exterior2nd’, ‘MasVnrType’,
‘MasVnrArea’, ‘ExterQual’, ‘ExterCond’, ‘Foundation’, ‘BsmtQual’,
‘BsmtCond’, ‘BsmtExposure’, ‘BsmtFinType1’, ‘BsmtFinSF1’,
‘BsmtFinType2’, ‘BsmtFinSF2’, ‘BsmtUnfSF’, ‘TotalBsmtSF’, ‘Heating’,
‘HeatingQC’, ‘CentralAir’, ‘Electrical’, ‘1stFlrSF’, ‘2ndFlrSF’,
‘LowQualFinSF’, ‘GrLivArea’, ‘BsmtFullBath’, ‘BsmtHalfBath’, ‘FullBath’,
‘HalfBath’, ‘BedroomAbvGr’, ‘KitchenAbvGr’, ‘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’, ‘SalePrice’],
dtype=‘object’)

特征值:

  • MSSubClass:建筑类
  • mszoning:一般的分区分类
  • LotFrontage:街道连接属性线性英尺
  • LotArea:平方英尺批量
  • Street:道路通行方式
  • Alley:通道入口的类型
  • LotShape:房屋的一般形状
  • LandContour:房屋的平整度
  • Utilities:基础设施配套(电、水、煤气)
  • LotConfig:批次配置
  • LandSlope:物业的坡度
  • Neighborhood:Ames市区范围内的物理位置
  • Condition1:邻近主要道路或铁路
  • Condition2:靠近主要道路或铁路(如果第二存在)
  • BldgType:住宅类型
  • housestyle:住宅风格
  • overallqual:评估房屋的整体材料和装饰
  • overallcond:评估房屋的整体状况
  • yearbuilt:原施工日期
  • yearremodadd:重塑日期
  • RoofStyle:屋顶类型
  • RoofMatl:屋顶材料
  • exterior1st:房屋外墙
  • exterior2nd:房屋外墙(如果有多种材料)
  • MasVnrType:砌体饰面类型
  • masvnrarea:砌体饰面面积平方英尺
  • exterqual:外部材料质量
  • extercond:评估外部材料的当前状态
  • Foundation:基础类型
  • BsmtQual:评估地下室的高度
  • bsmtcond:评估地下室的一般状况
  • BsmtExposure:花园层地下室墙
  • bsmtfintype1:质量基底成品区
  • bsmtfinsf1:型完成1平方英尺
  • bsmtfintype2:质量第二成品区(如果有的话)
  • bsmtfinsf2:型完成2平方英尺
  • BsmtUnfSF:未完成的平方英尺的地下室
  • totalbsmtsf:地下室面积总平方英尺
  • 加热:加热类型
  • heatingqc:加热质量和条件
  • 中央:中央空调
  • 电气:电气系统
  • 1stflrsf:一楼平方英尺
  • 2ndflrsf:二楼平方英尺
  • lowqualfinsf:完成平方英尺Low质量(各楼层)
  • grlivarea:以上等级(地)居住面积平方英尺
  • BsmtFullBath: Basement full bathrooms
  • BsmtHalfBath:地下室半浴室
  • FullBath:完整的浴室级以上
  • HalfBath:半浴室级以上
  • 卧室:高于地下室的卧室数
  • 厨房:厨房数量
  • kitchenqual:厨房的品质
  • totrmsabvgrd:房间总级以上(不包括卫生间)
  • 功能:家庭功能评级
  • 一些壁炉壁炉:
  • fireplacequ:壁炉质量
  • GarageType:车库位置
  • GarageYrBlt:建立年车库
  • GarageFinish:车库的室内装修
  • GarageCars:在汽车车库大小的能力
  • GarageArea:在平方英尺的车库规模
  • GarageQual:车库质量
  • garagecond:车库条件
  • paveddrive:铺的车道
  • WoodDeckSF:平方英尺的木甲板面积
  • openporchsf:平方英尺打开阳台的面积
  • enclosedporch:封闭式阳台的面积以平方英尺
  • 3ssnporch:平方英尺三季阳台的面积
  • screenporch:平方英尺纱窗门廊区
  • PoolArea:在平方英尺的游泳池
  • poolqc:池质量
  • 栅栏:栅栏的质量
  • miscfeature:杂项功能在其他类未包括
  • miscval:$杂特征值
  • MoSold:月销售
  • YrSold:年销售
  • SaleType:销售类型
  • salecondition:销售条件

目标值:

  • saleprice:销售价格
df_train['SalePrice'].describe()

count 1460.000000
mean 180921.195890
std 79442.502883
min 34900.000000
25% 129975.000000
50% 163000.000000
75% 214000.000000
max 755000.000000
Name: SalePrice, dtype: float64

首先来看一下,目标值是否满足正态分布

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

在这里插入图片描述
计算偏度与峰度:

#skewness and kurtosis
print("Skewness: %f" % df_train['SalePrice'].skew())
print("Kurtosis: %f" % df_train['SalePrice'].kurt())

Skewness: 1.882876
Kurtosis: 6.536282

分析:数据符合正太分布特点,但偏度比较大,需要做正太分布变化处理。

#居住面积平方英尺
var = 'GrLivArea'
data = pd.concat([df_train['SalePrice'], df_train[var]], axis=1)
data.plot.scatter(x=var, y='SalePrice', ylim=(0,800000));

在这里插入图片描述
越大的面积,房价肯定也越贵,但是这里出现了一些离群点。

#地下室面积平方英尺
var = 'TotalBsmtSF'
data = pd.concat([df_train['SalePrice'], df_train[var]], axis=1)
data.plot.scatter(x=var, y='SalePrice', ylim=(0,800000));

在这里插入图片描述

#整体材料和饰面质量
var = 'OverallQual'
data = pd.concat([df_train['SalePrice'], df_train[var]], axis=1)
f, ax = plt.subplots(figsize=(8, 6))
fig = sns.boxplot(x=var, y="SalePrice", data=data)
fig.axis(ymin=0, ymax=800000);

在这里插入图片描述

#原施工日期
var = 'YearBuilt'
data = pd.concat([df_train['SalePrice'], df_train[var]], axis=1)
f, ax = plt.subplots(figsize=(16, 8))
fig = sns.boxplot(x=var, y="SalePrice", data=data)
fig.axis(ymin=0, ymax=800000);
plt.xticks(rotation=90);

在这里插入图片描述
分析:除了建造年代越近,价格越贵的因素外,历史因素也是影响价格的一个重要原因。

var = 'Neighborhood'
data = pd.concat([df_train['SalePrice'], df_train[var]], axis=1)
f, ax = plt.subplots(figsize=(8, 6))
fig = sns.boxplot(x=var, y="SalePrice", data=data)
#fig.axis(ymin=0, ymax=800000);
plt.xticks(rotation=90);

在这里插入图片描述

选出与价格因素最相近的10个特征,观察它们的相关性。

k = 10 
corrmat = df_train.corr()
cols = corrmat.nlargest(k, 'SalePrice')['SalePrice'].index
cm = np.corrcoef(df_t
  • 9
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值