房价预测(完整版)

该博客探讨了房价预测问题,包括数据预处理(如数据合并、正则化、变量转换、缺失值处理)、特征工程(One-Hot编码)以及不同模型的运用,如Linear Regression、Random Forest、Bagging、Boosting(Adaboost+Ridge)和XGBoost。通过实验发现,XGBoost在5层深度时,预测误差最低,达到0.127。
摘要由CSDN通过智能技术生成
  • 题目描述:依据一个房子的全方位信息,包括面积,地段,环境,等等预测出房子的价格
    题目详情
  • 题目解答:
    首先进行数据的预处理;
#数据的读取
import numpy as np
import pandas as pd
#一般来说源数据的index那一栏没什么用,我们可以用来作为我们pandas dataframe的index。这样之后要是检索起来也省事儿。
train_df = pd.read_csv('../input/train.csv', index_col=0)
test_df = pd.read_csv('../input/test.csv', index_col=0)
train_df.head()

这里写图片描述

结合数据描述以及以上输出结果可以大致得出哪些数据需要人为处理一下,题目分别给出了训练集和测试集,这里我们为了方便统一处理,先将二者数据合并,等所有的需要的预处理进行完之后,我们再把他们分隔开。需注意的是SalePrice作为我们的训练目标,只会出现在训练集中,不会在测试集中(要不然你测试什么?)。所以,我们先把SalePrice这一列给拿出来,不让它碍事儿。

prices = pd.DataFrame({
  "price":train_df["SalePrice"], "log(price + 1)":np.log1p(train_df["SalePrice"])})
prices.hist()

这里写图片描述
可见,price本身并不平滑。为了我们分类器的学习更加准确,我们会首先把price给“平滑化”(正态化)这里我们使用log1p, 也就是 log(x+1),避免了复值的问题。
如果我们这里把数据都给平滑化了,那么最后算结果的时候,要记得把预测到的平滑数据给变回去。

#将训练目标单独拿出
#y_train则是SalePrice那一列
y_train = np.log1p(train_df.pop('SalePrice'))
#把剩下的部分合并起来
all_df = pd.concat((train_df, test_df), axis=0)
all_df.shape
y_train.head()

下面进行变量转化,把不方便处理或不一致的数据给统一了,首先,我们注意到,MSSubClass 的值其实应该是一个分类型的,但是Pandas是不会懂这些事儿的。使用时,这类数字符号会被默认记成数字。我们需要把它变回成string

all_df['MSSubClass'].dtypes
all_df[
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值