基于xgboost的波士顿房价预测kaggle实战

简介: xgboost中文叫做极致梯度提升模型,官方文档链接:https://xgboost.readthedocs.io/en/latest/tutorials/model.html2018年8月24日笔记这是作者在波士顿房价预测项目的第3篇文章,在查看此篇文章之前,请确保已经阅读前2篇文章。

xgboost中文叫做极致梯度提升模型,官方文档链接:https://xgboost.readthedocs.io/en/latest/tutorials/model.html

2018年8月24日笔记
这是作者在波士顿房价预测项目的第3篇文章,在查看此篇文章之前,请确保已经阅读前2篇文章。
第2篇文章链接:https://www.jianshu.com/p/f34f22258a0a

0.打开jupyter notebook

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

1.准备数据

kaggle网站波士顿房价项目链接:https://www.kaggle.com/c/boston-housing
网页内容如下图所示:

img_c18b36623a7f6e2c1247f0b3fa65a627.png
image.png

查看项目评分标准,如下图所示:


img_81b514ddb55f5f169f733509cfb7e27a.png
image.png

从上图我们可以看出,该项目使用RMSE指标评估。
RMSE是root mean square error的简写,中文叫做均方根误差。
上图中的公式有错误,正确应该如下图所示:


img_d5b8401ae992cce6e06279101c9b0ab5.png
image.png

2.作者的最高分

波士顿房价预测项目是2016年的项目,现在已经结束。
所以读者可以先熟悉提交答案的流程,作者提供自己的最高分文件。
提交文件下载链接: https://pan.baidu.com/s/1DxSEuysjOLCVuNlnw41-oQ 密码: b8jm
提交结果如下图所示:

img_2f65de4004460b2052dd14f111dfdd74.png
image.png

从上图的结果可以看到,作者的最高分有3.02分,可以排到第5名。
后面的章节讲述提升模型回归效果,即降低RMSE的过程。

3.下载数据集

如下图所示,下载红色箭头标示的3个文件。
下载完成后,就可以开始编程。


img_f52ad667385a16f56a6e9b4c4e5accc4.png
image.png

4.加载数据集

train.csv文件中的表格有15个字段,第1个字段是ID,最后1个字段是预测目标值。
用df.iloc[:,1:-1]取除了第1个字段和最后1个字段的其他字段。

import pandas as pd

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],
    'black' : [0, 100, 350, 450],
    'lstat' : [0, 5, 10, 20, 40]
    }
    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

df = pd.read_csv('train.csv')
field_df = df.iloc[:,1:-1]
feature_df = dataProcessing(field_df)

根据网上的资料显示,有部分异常值的预测目标值为50。
清除异常值,代码如下:

X = feature_df
y = df['medv'].values
print(X.shape)
X = X[y!=50]
y = y[y!=50]
print(X.shape)

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

(333, 61)
(322, 61)

5.模型训练

from xgboost import XGBRegressor
from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import ShuffleSplit


xgb_model = XGBRegressor(nthread=7)
cv_split = ShuffleSplit(n_splits=6, train_size=0.7, test_size=0.2)
grid_params = dict(
    max_depth = [4, 5, 6, 7],
    learning_rate = np.linspace(0.03, 0.3, 10),
    n_estimators = [100, 200]
)
grid = GridSearchCV(xgb_model, grid_params, cv=cv_split, scoring='neg_mean_squared_error')
grid.fit(X, y)

查看模型的最优参数和最优rmse指标,代码如下:

print(grid_model.best_params_)
print('rmse:', (-grid_model.best_score_) ** 0.5)

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

{'learning_rate': 0.03, 'max_depth': 6, 'n_estimators': 200}
rmse: 2.885408101511587

利用训练好的结果,对测试集做回归预测,代码如下:

predict_df = pd.read_csv('test.csv')
predict_X = dataProcessing(predict_df.iloc[:,1:]).values
predict_y = grid_model.predict(predict_X)
save_df = pd.DataFrame({
    'ID' : predict_df.ID,
    'medv' : predict_y
})
save_df.to_csv('xgb_boston_submission1.csv', index=False)

6.提交作答文件

点击下图红色箭头标示处,界面如下图所示。
分为2步:1.上传作答文件;2.对此次作答做简单的描述。

img_e35ef8218a3b56f66f48265927ff6f01.png
image.png

作者的作答文件命名为 xgb_boston_submission1.csv,如下图所示。
重新运行的提交分数为3.10,分数略有下降,但是仍能进入前5。
img_97de26ca8714b1277b4aea971f3fd260.png
image.png

目录
相关文章
|
机器学习/深度学习 Python
深度学习篇之数据集划分方法-附代码python详细注释
深度学习篇之数据集划分方法-附代码python详细注释
深度学习篇之数据集划分方法-附代码python详细注释
|
10月前
|
人工智能 JSON 测试技术
AI智能体开发实战:从提示工程转向上下文工程的完整指南
曾被热捧的提示工程正逐渐退潮,本文揭示其局限性,并提出“上下文工程”新范式:通过结构化提示、精准上下文管理、工具调用与统一状态,构建可扩展、可恢复、生产级的智能体工作流,推动AI系统迈向工程化与可控化。
1054 9
AI智能体开发实战:从提示工程转向上下文工程的完整指南
|
11月前
|
人工智能 监控 搜索推荐
使用LangGraph从零构建多智能体AI系统:实现智能协作的完整指南
本文将通过构建AI研究助手的完整案例,展示如何使用LangGraph框架实现这种架构转变,从理论基础到具体实现,帮助你掌握下一代AI系统的构建方法。
2162 12
使用LangGraph从零构建多智能体AI系统:实现智能协作的完整指南
|
机器学习/深度学习 人工智能 自然语言处理
面向认知智能的AI推理体系:理论基础与工程实践
本文深入探讨了AI推理从“感知智能”迈向“认知智能”的理论框架与技术突破。文章分析了符号推理、神经推理及混合推理的优劣势,指出了多跳推理、因果推理和可解释性等挑战。同时,结合大语言模型、ReAct架构和知识增强推理等前沿技术,展示了AI推理在代码实现中的应用。未来,认知图谱、推理驱动的智能体、边缘推理优化及人机协同将成为重要方向,推动AI向通用人工智能(AGI)迈进。
1691 60
面向认知智能的AI推理体系:理论基础与工程实践
|
9月前
|
前端开发 Java 微服务
《深入理解Spring》:Spring、Spring MVC与Spring Boot的深度解析
Spring Framework是Java生态的基石,提供IoC、AOP等核心功能;Spring MVC基于其构建,实现Web层MVC架构;Spring Boot则通过自动配置和内嵌服务器,极大简化了开发与部署。三者层层演进,Spring Boot并非替代,而是对前者的高效封装与增强,适用于微服务与快速开发,而深入理解Spring Framework有助于更好驾驭整体技术栈。
|
存储 传感器 监控
未来城市的智慧交通系统
智慧交通系统是未来城市发展的重要组成部分,通过整合物联网、大数据和人工智能技术,实现交通的智能化管理。本文探讨了智慧交通系统的关键技术、架构及其在实际应用中的案例,并展望了未来的发展趋势。
|
11月前
|
数据采集 存储 监控
初识LightRAG:轻量级知识图谱框架指南
LightRAG创新融合知识图谱与向量检索,显著提升检索精度和可解释性。该框架轻量高效,支持多模态数据处理,提供简洁API便于快速集成。通过结构化关系补充分散语义,有效解决传统RAG系统的关系缺失与语义模糊问题。
|
11月前
|
人工智能 自然语言处理 Linux
如何获取 OpenAI API 密钥
本教程详细介绍如何注册 OpenAI 账户、获取 API 密钥并部署 GPT-4 模型。内容涵盖访问官网、登录注册、创建密钥、配置 Python 环境及调用 API 的完整流程,并提供示例代码帮助开发者快速上手。
|
存储 虚拟化 Windows
想要掌握Hyper-V如何安装,首先需要确保你的操作系统版本满足Hyper-V的安装要求
Hyper-V的安装需确保操作系统版本和硬件满足要求。硬件上,64位处理器需支持SLAT及虚拟化技术(如VT-x或AMD-V),至少4GB RAM和充足存储空间;BIOS/UEFI中启用虚拟化技术和DEP。软件方面,需Windows 10 Pro及以上或Windows Server 2016/2019及以上,并保持系统更新。安装步骤包括检查系统要求、启用Hyper-V功能、配置并创建虚拟机,最后安装操作系统。注意备份数据及网络适配器配置。
|
传感器 监控 自动驾驶
智能交通系统:构建未来城市交通的神经中枢####
本文旨在探讨智能交通系统(ITS)的核心技术、应用现状及未来发展趋势。通过分析ITS如何利用先进的信息技术、数据通信传输技术、电子感知技术等,实现交通管理的智能化、自动化,从而提升交通效率、保障交通安全、减少环境污染。文章还展望了ITS在自动驾驶、车路协同等领域的应用前景,为构建未来智慧城市提供有力支撑。 ####