房屋价格预测

房屋价格预测建模

最近在kaggle上面看到一个预测房屋价格的项目,这里是通过随机森林建立模型的过程,全部的数据文件已经上传到百度网盘:链接:https://pan.baidu.com/s/1WMTWkAc9J4R7T5zuihshdw 密码:mkxd

  • 导入模块 : 导入所需要的模块
  • 研究变量的情况 : 研究变量的情况,为数据清洗和变换做好准备
  • 数据清洗 : 在研究变量的基础上进行数据清洗
  • 建立模型 : 完成数据建模
  • 评估模型 : 最终评估模型质量
## 1.1 导入模块
# 导入一些数据分析和数据挖掘常用的包
import numpy as np
import pandas as pd
import os
import seaborn as sns
import matplotlib.pyplot as plt
from statsmodels.stats.outliers_influence import variance_inflation_factor
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
## 1.2 研究变量的情况 导入包之后加载一下数据集,查看一下数据的基础情况,再考虑下一步的处理
# 加载一下数据,并打印部分数据,查看一下数据的情况
data_train = pd.read_csv("~/train.csv")
data_test = pd.read_csv("~/test.csv")
print(data_train.head())
print(data_test.head())
  查看数据的列名和每列的数据格式,方便后面对数据进行数据清洗
# 查看数据的列名和每列的数据格式,方便后面对数据进行处理
data_train.columns
# data_tarin.info
data_train_dtypes = data_train.dtypes
print(data_train_dtypes)
  对因变量进行具体情况具体分析,主要查看因变量的统计情况,包含偏度和峰度等。

峰度:峰度(Kurtosis)是描述某变量所有取值分布形态陡缓程度的统计量。

它是和正态分布相比较的。

  • Kurtosis=0 与正态分布的陡缓程度相同。

  • Kurtosis>0 比正态分布的高峰更加陡峭——尖顶峰

  • Kurtosis<0 比正态分布的高峰来得平台——平顶峰计算公式:β = M_4 /σ^4 偏度:

偏度:偏度(Skewness)是描述某变量取值分布对称性的统计量。

  • Skewness=0 分布形态与正态分布偏度相同
  • Skewness>0 正偏差数值较大,为正偏或右偏。长尾巴拖在右边。
  • Skewness<0 负偏差数值较大,为负偏或左偏。长尾巴拖在左边。 计算公式:
    S= (X^ - M_0)/δ Skewness 越大,分布形态偏移程度越大。
# 描述统计因变量的基础情况
print(data_train['SalePrice'].describe())
# 查看因变量数值情况
print(data_train['SalePrice'].value_counts())
# 查看因变量价格的情况,进行基础分析
sns.distplot(data_train['SalePrice'])
plt.show()

# 对房屋价格金额的数值图形化,查看一下
sns.set(style="darkgrid")
titanic = pd.DataFrame(data_train['SalePrice'].value_counts())
titanic.columns = ['SalePrice_count']
ax = sns.countplot(x="SalePrice_count", data=titanic)
plt.show()
# 从房屋价格的正态分布情况,查看房屋价格的峰度和偏度情况
print('房屋价格偏度:%f' % (data_train['SalePrice'].skew()))
print('房屋价格峰度:%f' % (data_train['SalePrice'].kurt()))
  分析数据中的缺失值情况,如果超过阈值15%,则删除这个变量,其他变量根据类别或者是数值型变量进行填充。
  具体得到的情况如下:

有缺失的对应的变量名称
* PoolQC Pool quality 游泳池质量
* MiscFeature Miscellaneous feature not covered in other categories 其他杂项,例如网球场、第二车库等
* Alley Type of alley access to property 胡同小路,是碎石铺就的还是其他等等
* Fence Fence quality 护栏质量
* FireplaceQu Fireplace quality 壁炉的质量
* LotFrontage Linear feet of street connected to property 街道情况
* GarageFinish Interior finish of the garage 车库完成情况
* GarageQual Garage quality 车库质量
* GarageType Garage location 车库的位置
* GarageYrBlt Year garage was built 车库的建筑年龄
* GarageCond Garage condition 车库的条件
* BsmtExposure Refers to walkout or garden level walls 花园的墙壁情况
* BsmtFinType2 Rating of basement finished area (if multiple types) 地下室的完工面积
* BsmtQual Evaluates the height of the basement 地下室的高度
* BsmtCond Evaluates the general condition of the basement 地下室的质量情况
* BsmtFinType1 Rating of basement finished area 地下室完工面积
* MasVnrType Masonry veneer type 表层砌体类型
* MasVnrArea Masonry veneer area in square feet 砖石镶面面积平方英尺
* Electrical Electrical system 电气系统

# 在进行图形分析之前,先分析一下数据中缺失值的情况
miss_data = data_train.isnull().sum().sort_values(ascending=False)  # 缺失值数量
total = data_train.isnull().count()  # 总数量
miss_data_tmp = miss_data / total.sort_values(ascending=False)  # 缺失值占比
# 添加百分号


def precent(X):
    X = '%.2f%%' % (X * 100)
    return X
miss_precent = miss_data_tmp.map(precent)
# 根据缺失值占比倒序排序
miss_data_precent = pd.concat([total, miss_precent, miss_data_tmp], axis=1, keys=[
                              'total', 'Percent', 'Percent_tmp']).sort_values(by='Percent_tmp', ascending=False)
# 有缺失值的变量打印出来
print(miss_data_precent[miss_data_precent[
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值