一. 数据观察
又是一道Kaggle的经典题目。首先观察一下数据:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn import ensemble, tree, linear_model
from sklearn.ensemble import RandomForestRegressor
%matplotlib inline
train_data = pd.read_csv('train.csv')
test_data = pd.read_csv('test.csv')
train_data.shape,test_data.shape
训练集中共有1460个样本以及81个特征,而测试集中有1459个样本80个特征(因为SalePrices是需要预测的)。
首先我们将测试集中的房价单独提取出来,作为一会儿模型训练中的因变量:
train_y = train_data.pop('SalePrice')
y_plot = sns.distplot(train_y)
顺便看一看y的分布曲线:

很明显,数据是右斜的,为了使数据的呈现方式接近我们所希望的前提假设,从而更好的进行统计推断,将数据log化,得到:
train_y = np.log(train_y)
y_plot = sns.distplot(train_y)

此时因变量基本呈正态分布。
由于特征实在太多,我们选用其中几个对房价进行观察
1.YearBuilt和SalePrice的关系
var = 'YearBuilt'
data = pd.concat([train_y_skewed, train_data[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);

可以看出在最近三十年内建的房子的

本文介绍了Kaggle房价预测的完整流程,包括数据观察、数据清洗、特征工程和模型建立。通过对数据进行log转换处理偏斜分布,删除不重要特征,填充或删除缺失值,进行特征编码和数值变量标准化。采用ElasticNet模型,通过交叉验证找到最佳参数。同时,结合随机森林进行模型融合,最终得到28%的预测准确率。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



