机器学习 加利福尼亚房价预测

news2024/11/26 16:38:27

学习目标:

提示:导入包

例如:

import pandas as pd
import numpy as np

from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import KFold, train_test_split
from sklearn.metrics import mean_squared_error as mse

from xgboost import XGBRegressor
from lightgbm import LGBMRegressor

from folium import Map
from folium.plugins import HeatMap

import matplotlib.pyplot as plt
%matplotlib inline
%config InlineBackend.figure_format = 'retina'

import seaborn as sns
sns.set_style('whitegrid')

!pip install -q flaml
import flaml

!pip install -q autogluon
from autogluon.tabular import TabularPredictor

数据:

提示:这里可以添加要学的内容

df_train = pd.read_csv('/kaggle/input/playground-series-s3e1/train.csv', index_col=0)
df_test = pd.read_csv('/kaggle/input/playground-series-s3e1/test.csv', index_col=0)
features, target = df_train.columns[:-1], df_train.columns[-1]

特征构造

original = fetch_california_housing()
assert original['feature_names'] == list(features)
assert original['target_names'][0] == target

df_original = pd.DataFrame(original['data'], columns=features)
df_original[target] = original['target']

EDA:

提示:Missing values

df_train.isna().sum()

查看分布

ncols = 3
nrows = np.ceil(len(df_train.columns)/ncols).astype(int)
cols = df_train.corrwith(df_train[target]).abs().sort_values(ascending=False)
fig, axs = plt.subplots(ncols=ncols, nrows=nrows, figsize=(10,nrows*2))

for idx, (c, corr) in enumerate(cols.items()):
    row = idx // ncols
    col = idx % ncols
    sns.histplot(df_train, x=c, ax=axs[row, col])
    axs[row,col].set_xlabel(f'{c}, corr = {corr:.3f}')
plt.tight_layout()

在这里插入图片描述
Some observations:

House value is capped
MedInc has the highest correlation with house value
Look at the data on a map
Credit: https://www.kaggle.com/code/jcaliz/ps-s03e01-a-complete-eda

heat_data = [[row['Latitude'],row['Longitude']] for _, row in df_train.iterrows()]
heat_map = Map(df_train[['Latitude', 'Longitude']].mean(axis=0), zoom_start=6) 
HeatMap(heat_data, radius=10).add_to(heat_map)
heat_map

在这里插入图片描述

Compare with original data:

提示:这里统计学习计划的总量

例如:

df_train['source'] = 'train'
df_test['source'] = 'test'
df_original['source'] = 'original'
df_mixed = pd.concat([df_train, df_test, df_original])
fig, axs = plt.subplots(ncols=ncols, nrows=nrows, figsize=(15,nrows*2))

for idx, (c, corr) in enumerate(cols.items()):
    row = idx // ncols
    col = idx % ncols
    sns.boxplot(data=df_mixed, x=c, y='source', ax=axs[row, col])
plt.tight_layout()

在这里插入图片描述

Baseline with gradient boosting

X_train, y_train = df_train[features].values, df_train[target].values
X_test = df_test[features].values
oof = np.zeros(len(df_train))
models = []

for fold, (idx_tr, idx_vl) in enumerate(cv.split(X_train)):
    X_tr, y_tr = X_train[idx_tr], y_train[idx_tr]
    X_vl, y_vl = X_train[idx_vl], y_train[idx_vl]
    model = LGBMRegressor()
    model.fit(X_tr, y_tr)
    oof[idx_vl] = model.predict(X_vl)
    models.append(model)
    
    r = mse(y_vl, oof[idx_vl], squared=False)
    print(f'Fold {fold} rmse: {r:.4}')

print(f'OOF rmse: {mse(y_train, oof, squared=False):.4}')

Fold 0 rmse: 0.5708
Fold 1 rmse: 0.5685
Fold 2 rmse: 0.5595
Fold 3 rmse: 0.5704
Fold 4 rmse: 0.5764
OOF rmse: 0.5692

Adding original data

df_combined = pd.concat([df_train, df_original]).drop(columns=['source'])
X_train, y_train = df_combined[features].values, df_combined[target].values
oof = np.zeros(len(X_train))
models = []

for fold, (idx_tr, idx_vl) in enumerate(cv.split(X_train)):
    X_tr, y_tr = X_train[idx_tr], y_train[idx_tr]
    X_vl, y_vl = X_train[idx_vl], y_train[idx_vl]
    model = LGBMRegressor()
    model.fit(X_tr, y_tr)
    oof[idx_vl] = model.predict(X_vl)
    models.append(model)
    
    r = mse(y_vl, oof[idx_vl], squared=False)
    print(f'Fold {fold} rmse: {r:.4}')

print(f'OOF rmse: {mse(y_train, oof, squared=False):.4}')

Fold 0 rmse: 0.53
Fold 1 rmse: 0.5367
Fold 2 rmse: 0.5385
Fold 3 rmse: 0.5372
Fold 4 rmse: 0.5411
OOF rmse: 0.5367

参考文章:https://www.kaggle.com/code/phongnguyen1/s03e01-original-data-boost-automl

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/137239.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【阶段二】Python数据分析Pandas工具使用02篇:数据读取:文本文件读取、电子表格读取与数据预处理:数据概览与清洗

本篇的思维导图: 数据读取:文本文件读取 对于csv后缀的文本文件,可以使用pandas模块中的read_csv函数进行读取。 所需要的数据文件如下百度云盘链接: 链接:https://pan.baidu.com/s/1Zj-uTt_wdRcmDt3aumZ2nA 提取码:z2e8 代码

CSRF攻防基础讲解

CSRF攻击 Cross-site request forgery跨站请求伪造 场景模拟 在用户登录某个网站后,看到某篇文章高兴之余,挥手打字,突然有人发来一个链接,登录者打开链接后什么都没有操作或者只是好奇的点击了某个按钮,在原登录网…

猿客栈后台管理系统日志记录

目录 一、用户权限设置 前端逻辑 后端逻辑 二、登录界面逻辑 1、账号密码登录实现 前端逻辑 在Cookie中存储token的方法 在Cookie中存储和获取的token方法 后端逻辑 生成token工具类 2、手机号登录 前台逻辑 后台逻辑 补充:实现点击发送验证码120s倒计…

ThinkPHP 之 SQLI审计分析(二)

说明 该文章来源于同事lu2ker转载至此处,更多文章可参考:https://github.com/lu2ker/ 文章目录说明0x00 测试代码做了什么?0x01 分析调用0x02 漏洞点的发现、构造、利用0x03 总结Time:9-3影响版本:ThinkPHP5.0.10 Pa…

详细介绍chrony服务器

chrony服务器 硬件时间:BIOS里面;关机后依然运行,主板电池为它供电;RTC时钟 系统时间:开机后,软件启动读取硬件时钟,之后独立运行 Chrony 的配置文件是/etc/chrony.conf chronyd服务器端 ch…

【目标检测】Mask rcnn代码实现Pytorch版,适用30系列显卡!(测试版)

目录:Mask rcnn代码实现Pytorch版一、环境二、mmdetection环境搭建三、测试四、结果展示为什么选择使用Pytorch版本?因为本人换电脑了,显卡升级为30系列,而30系列显卡的 CUDA 版本要求是 11.x。一、环境 cudatoolkit …

MYSQL之两阶段提交和组提交(数据一致性)

我们在MySQL 的日志中详细的介绍了undo log、redo log、binlog这三个日志和所用到的一些缓存知识,那么下面我们分析一下更新语句执行过程,它们是怎么变化的呢?下面我们直接给答案吧。假如我们修改一行主键索引(id)为1的…

电力系统激励型需求响应+自适应多群体优化算法(Python实现)

目录 ​编辑 0 前言 1 激励型DR和价格型DR 2 激励型DR模型 3 Python代码实现 4 自适应多群体优化算法(AMPO) 5 Python代码实现 0 前言 风、光等清洁能源因具有环保、资源丰富等优点而受到电力行业的重视,电力行业开始大力发展清洁能源发电。同时…

MySQL详解,库和表的基础操作

目录 前言 一、预备知识 1、服务器,数据库,表关系 2、SQL分类 3、连接服务器 二、库的操作 1、创建数据库 2、查看字符集和校验规则 2.1 查看系统默认字符集以及校验规则 2.2 查看数据库支持的字符集和字符集校验规则 3、操纵数据库 3.1查看…

ros tf坐标

参考: 讲解:https://www.bilibili.com/video/BV1zt411G7Vn/?p18&vd_source3a1ad336af3eaae4fcced56c75d309d1ROS程序:https://gitee.com/guyuehome/ros_21_tutorials/tree/master/learning_tfROS2程序:https://gitee.com/gu…

公司企业兔年祝福元旦祝福贺卡邀请函模板!

能群发的贺卡邀请函如何制作?想制作一个专属的祝福贺卡邀请函有什么方法?下面跟着小编的乔拓云工具教程!教你如何使用这个工具在线就能轻松搞定设计需求,不仅有海量模板供你使用,还能一键生成链接轻松转发!…

利用vue-cli创建vue3工程

需注意:想创建vue3工程,对vue-cli版本有要求,必须确保vue-cli在4.5.0以上 目录 1、查看vue-cli版本 2、创建工程 3、启动 1、查看vue-cli版本 vue --version(小写v) vue --version或者 vue -V(大写v&…

深入分析Java中finalize方法的作用和底层原理

finalize方法是什么 finalize方法是Object的protected方法,Object的子类们可以覆盖该方法以实现资源清理工作,GC在首次回收对象之前调用该方法。 finalize方法与C的析构函数的区别 finalize方法与C中的析构函数不是对应的,C中的析构函数调…

(小程序)后台交互-首页

目录 一、小程序首页动态数据加载 1.数据库准备 2.后台准备 ① pom.xml ② 配置数据源 ③ 整合mybatis ④ 代码生成 ⑤ mybatis-generator 二、准备前端的首页的数据 1、Promise 2.封装request 3.会议展示 三、通过wxs将首页动态数据优化 一、小程序首页动态数据加…

Git命令版(powernode)

Git命令版(powernode) 目录Git命令版(powernode)1.添加文件相关命令案例实操小结:2.工作区和暂存区2.1 名词解释。2.1.1 工作区(Working Directory)2.1.2 版本库(Repository&#xf…

数据结构之双向链表

双向链表与单向链表较为类似,单向链表有一个指针域,用来指向后继结点,而双向链表有两个指针域,分别用来指向前驱结点和后继结点。玩双向链表时一定要从单向链表的思维中跳出来,否则在操作双向链表时就会出现各种问题。…

【Python百日进阶-数据分析】Day144 - plotly箱线图:go.box()实例

文章目录4.2 go.Box 箱线图4.2.1 基本箱线图4.2.2 基本水平箱线图4.2.3 显示基础数据的箱线图4.2.4 修改计算四分位数的算法4.2.5 带有预先计算的四分位数的箱线图4.2.6 彩色箱线图4.2.7 箱线图样式均值和标准差4.2.8 造型异常值4.2.9 分组箱线图4.2.10 分组水平箱线图4.2.11 彩…

一起学习用Verilog在FPGA上实现CNN----(四)池化层设计

1 池化层设计 自顶而下分析池化层的设计过程 1.1 Average Pool Multi Layer 图为该项目的平均池化层,其包含一个AvgPoolSingle单元,模块的输入为图像特征矩阵,输出为池化后的特征矩阵 图片来自附带的技术文档《Hardware Documentation》 …

Java开发学习(三十六)----SpringBoot三种配置文件解析

一、 配置文件格式 我们现在启动服务器默认的端口号是 8080,访问路径可以书写为 http://localhost:8080/books/1 在线上环境我们还是希望将端口号改为 80,这样在访问的时候就可以不写端口号了,如下 http://localhost/books/1 而 SpringB…

电脑屏录软件,这3款良心软件,分享给你

现在很多人会使用电脑屏录软件,有些用来记录游戏中的精彩操作,有些用来记录在线教学课程,有些用来记录在线视频会议。现在有各种各样的电脑屏录软件。选择一个好的电脑屏录软件是非常重要的。电脑屏录软件哪个好?下面小编分享3款良…