[kaggle]房屋价格:先进的回归技术 预测

比赛描述

地址:https://www.kaggle.com/c/house-prices-advanced-regression-techniques

了解背景:

  • 当购房者描述他们的梦想中的房子,他们可不会从地下室天花板的高度或与东西方铁路的距离开始描述。比赛的数据集证明,与价格的影响相比,卧室或白色栅栏的数量更具影响力。

这里有79个解释变量(几乎)描述了爱荷华州埃姆斯市住宅的方方面面。

预测指标:

  • 预测1459个房屋的最终价格。
  • 分数:均方根误差
  • 含有 Id ,SalePrice的数据。该文件应具有标题行。

预览数据:

在这里插入图片描述

数据预处理

导入库:

import warnings
import pandas as pd
import pandas_profiling
import numpy as np
import seaborn as sns
from scipy import stats
from scipy.stats import skew
from scipy.stats import norm
import matplotlib
import matplotlib.pyplot as plt
warnings.filterwarnings('ignore')

观察数据:

# 导入数据
train_data = pd.read_csv('../house-prices-advanced-regression-techniques/train.csv')
test_data = pd.read_csv('../house-prices-advanced-regression-techniques/test.csv')

train_data.info()
train_data.describe()
##固定模块可视化数值间的关系
pandas_profiling.ProfileReport(train_data).to_file('./example.html')

!!!!!!!!!!!!!!!!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

去除异常/无关的值————————————————
# 装修质量,居住面积,建造年限,地下室面积与售价关系
sns.pairplot(x_vars=['OverallQual', 'GrLivArea', 'YearBuilt', 'TotalBsmtSF'], y_vars=['SalePrice'], data=train_data,
             dropna=True)
# 去除离群点,异常点
train_data.drop(train_data[(train_data['OverallQual'] < 5) & (train_data['SalePrice'] > 200000)].index, inplace=True)
train_data.drop(train_data[(train_data['GrLivArea'] > 4000) & (train_data['SalePrice'] < 300000)].index, inplace=True)
train_data.reset_index(drop=True, inplace=True)  # 引索重制


在这里插入图片描述

查看目标变量SalePrice模型:skewness=1.56
在这里插入图片描述

# log正态
train_data['SalePrice'] = np.log(train_data['SalePrice'])

sns.distplot(train_data['SalePrice'][train_data['SalePrice'].notnull()],
             label='skewness:%.2f' % (train_data['SalePrice'].skew())).legend(loc='best')
# 合并训练数据,测试数据
df = train_data.append(test_data, ignore_index=True)
## 删除Id,SalePrice列
df.drop(['Id'], axis=1, inplace=True)
df.drop(['SalePrice'], axis=1, inplace=True)
df.describe()
df.shape

在这里插入图片描述

缺失值处理————————————————
# 查看缺失值
df.isnull().sum().sort_values(ascending=False)
# 影响较小且缺失数量多的,None填充
cols1 = ['PoolQC', 'MiscFeature', 'Alley', 'Fence', 'FireplaceQu', 'GarageQual', 'GarageCond', 'GarageFinish',
         'GarageYrBlt', 'GarageType', 'BsmtExposure', 'BsmtCond', 'BsmtQual', 'BsmtFinType2', 'BsmtFinType1',
         'MasVnrType']
for col in cols1:
    df[col].fillna('None', inplace=True)
# 房屋无配置物品,用0填充
cols2 = ['BsmtUnfSF', 'TotalBsmtSF', 'BsmtFinSF2', 'BsmtFinSF1', 'BsmtFullBath', 'BsmtHalfBath', \
         'MasVnrArea', 'GarageCars', 'GarageArea', 'GarageYrBlt']
for col in cols2:
    df[col].fillna(0, inplace=True)
# 缺失值的数量较少,用众数填充
cols3 = ['MSZoning', 'BsmtFullBath', 'BsmtHalfBath', 'Utilities', 'Functional', 'Electrical', 'KitchenQual', 'SaleType',
         'Exterior1st', '
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值