基于xgboost+GridSearchCV的波士顿房价预测

xgboost中文叫做极致梯度提升模型,官方文档链接:https://xgboost.readthedocs.io/en/latest/tutorials/model.html
GridSearchCV中文叫做交叉验证网格搜索,是sklearn库中用来搜索模型最优参数的常用方法。

2018年8月23日笔记
sklearn官方英文用户使用指南:https://sklearn.org/user_guide.html
sklearn翻译中文用户使用指南:http://sklearn.apachecn.org/cn/0.19.0/user_guide.html

0.打开jupyter notebook

不知道怎么打开jupyter notebook的朋友请查看我的入门指南文章:https://www.jianshu.com/p/bb0812a70246

1.准备数据

阅读此篇文章的基础是已经阅读了作者的上一篇文章《基于LinearRegression的波士顿房价预测》。
文章链接:https://www.jianshu.com/p/f828eae005a1

加载数据集中的预测目标值。

from sklearn.datasets import load_boston

y = load_boston().target

如果阅读过上一篇文章,读者应该知道特征提取后的数据处理主要是对数据进行分箱,从而产生新的字段。
将数据处理的过程封装成函数,代码如下:

def dataProcessing(df):
    field_cut = {
    'CRIM' : [0,10,20, 100],
    'ZN' : [-1, 5, 18, 20, 40, 80, 86, 100], 
    'INDUS' : [-1, 7, 15, 23, 40],
    'NOX' : [0, 0.51, 0.6, 0.7, 0.8, 1],
    'RM' : [0, 4, 5, 6, 7, 8, 9],
    'AGE' : [0, 60, 80, 100],
    'DIS' : [0, 2, 6, 14],
    'RAD' : [0, 5, 10, 25],
    'TAX' : [0, 200, 400, 500, 800],
    'PTRATIO' : [0, 14, 20, 23],
    'B' : [0, 100, 350, 450],
    'LSTAT' : [0, 5, 10, 20, 40]
    }
    df = df[load_boston().feature_names].copy()
    cut_df = pd.DataFrame()
    for field in field_cut.keys():
        cut_series = pd.cut(df[field], field_cut[field], right=True)
        onehot_df = pd.get_dummies(cut_series, prefix=field)
        cut_df = pd.concat([cut_df, onehot_df], axis=1)
    new_df = pd.concat([df, cut_df], axis=1)
    return new_df

调用函数dataProcessing形成新的特征矩阵,代码如下:

import pandas as pd

df = pd.DataFrame(load_boston().data, columns=load_boston().feature_names)
new_df = dataProcessing(df)
print(new_df.columns)
new_df.head()

上面一段代码的运行结果如下图所示:


10345471-dec8bb5f6e3b77a5.png
提取特征后的特征矩阵.png

将特征处理后的特征矩阵赋值给变量X,代码如下:

X = new_df.values

2.清除异常值

波士顿房价预测是kaggle网站上2016年的比赛。
网上有资料显示有部分预测目标异常值为50,所以我们删除具有此异常值的样本。
代码如下:

X = new_df.values
y = load_boston().target
print(X.shape)
X = X[y!=50]
y = y[y!=50]
print(X.shape)

上面一段代码的运行结果如下图所示:


10345471-880929f303805af6.png
image.png

从上图中可以看出,特征矩阵X的行数由506变成了490。

3.决策树回归模型

使用决策树回归模型做回归预测,并使用交叉验证查看模型得分。
调用sklearn.tree库的DecisionTreeRegressor方法实例化模型对象。
调用sklearn.model_selection库的KFold方法实例化交叉验证对象。
调用sklearn.model_selection库的cross_val_scor

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值