实战七:kaggle实战之房价预测

本文介绍了在kaggle上进行房价预测的实战过程,包括数据加载、数据平滑处理、特征工程(如处理缺失值、类别型数据独热编码)、模型训练(如岭回归、随机森林、Stacking集成、Bagging、Adaboost、XgBoost)等步骤,并通过评估指标选择最佳模型。
摘要由CSDN通过智能技术生成

案例背景

       要求一个购房者描述心目中的好房子,他们可能不会从地下室的高度或者与铁路的远近开始说起。这个训练赛的数据集证明,价格谈判比卧室或栅栏数量更重要。数据集中共有79个解释性变量描述了住宅的每一个方面,比赛要求是对每个房子的最终价格进行预测。

第一步:导入基本的模块,并加载数据。

       首先引用numpy、pandas等必要模块,然后通过pandas的read_csv函数读入训练数据和测试数据。一般来说,数据集中的Id那一栏没有什么用,我们可以将其作为索引,之后检索起来也方便一些。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# index_col=0  将第0列作为行索引
train_df = pd.read_csv('D:\PyCharm\PycharmProjects\机器学习 七月!\kaggle_house_price/train.csv', index_col=0)
test_df = pd.read_csv('D:\PyCharm\PycharmProjects\机器学习 七月!\kaggle_house_price/test.csv', index_col=0)
print(train_df.head())
print(train_df.shape)

    

第二步:数据平滑及合并

由于是对房屋价格进行预测,所以我们要注意价格的分布。通过下面的图片可以发现,房屋价格集中在200000附近的区间,这是一个比较偏的分布。为了使我们最后的更加精确,我们需要对价格进行平滑。这里我们使用log(price+1)来进行数据的平滑,可以看出,进行平滑之后的价格比较符合正态分布。log1p(x) 就是log(x+1)。  这里我们将数据进行了平滑,最后的预测结果就需要expm1()。 也就是将预测结果变为真实的房价数。   log1p反运算就是expm1()。

 kaggle平台提供了两张表,一张是带标签的数据(训练数据), 一张是不带标签的数据(测试数据)。接下来,我想做的就是将带有标签数据的标签列删除,它也就变成不带标签的数据。在将测试数据与其进行合并。这么做主要是为了统一进行数据预处理的时候更加方便。等所有的需要的预处理进行完之后,我们再把他们分隔开。

prices = pd.DataFrame({'price': train_df['SalePrice'], 'log(price+1)': np.log1p(train_df['SalePrice'])})
prices.hist()  # 画图 看一下标签是否平滑
plt.show()

y_train = np.log1p(train_df.pop('SalePrice'))  # 将原来的标签删除 剩下log(price+1)列的数据
all_df = pd.concat((train_df, test_df), axis=0)  # 将train_df, test_df合并

第三步:特征工程(处理缺失值等)

数据集合并之后,我们就可以对整个数据集进行处理了。首先我们要注意变量的类型。比如,MSSub

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值