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

2023-10-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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习 加利福尼亚房价预测 的相关文章

随机推荐

  • 华为OD机试真题- 篮球比赛-2023年OD统一考试(B卷)

    题目描述 篮球 5V5 比赛中 每个球员拥有一个战斗力 每个队伍的所有球员战斗力之和为该队伍的总体战斗力 现有10个球员准备分为两队进行训练赛 教练希望2个队伍的战斗力差值能够尽可能的小 以达到最佳训练效果 给出10个球员的战斗力 如果你是
  • 学习STM32 SPI学习与应用

    认识一下SPI SPI的全称是 Serial Peripheral Interface 意为串行外围接口 SPI接口主要应用在EEPROM FLASH 实时时钟 AD转换器 还有数字信号处理器和数字信号解码器之间 SPI是一种高速的 全双工
  • 中大型企业选择云服务器还是传统服务器自建机房成本核算

    中大型企业自建机房还是选择阿里云服务器或腾讯云服务器 企业上云是趋势 大型企业自己购买服务器自建机房还是使用云服务器更省钱 自建机房一次性投入 但是云服务器每年都需要续费 云服务器吧从机房部署 容灾备份 安全可靠 运维及成本等方面来全方位对
  • Flask学习笔记(十三)数据库基本操作

    数据库基本操作 在Flask SQLAlchemy中 插入 修改 删除操作 均由数据库会话管理 会话用db session表示 在准备把数据写入数据库前 要先将数据添加到会话中然后调用commit 方法提交会话 数据库会话是为了保证数据的一
  • vue项目中自动拉取更新Iconfont(阿里巴巴图标库)

    在vue项目中使用 iconfont图标库 网上的栗子很多 这边就随手给一个 点这里 上面的解决了 那我就很苦恼 我每次添加 或删除 或更新图标库 需要重新下载 自己手动去覆盖吗 我是拒绝的 so 自动覆盖就很有必要了 贴一下我的iconf
  • Linux通过Nginx部署Vue项目

    Vue Springboot前后端项目分离开发 我们在部署的时候就需要将两者分开来部署 vue部署 由于我们是通过Linux nginx的方式来部署vue 因此在你的linux中需要安装nginx nginx的安装方式不多说 直接解压ngi
  • 网络安全期末复习

    前言 本文用于网络安全课期末复习资料 都是从老师上课讲的ppt和课本总结的 可能不太全 后面有一部分习题 填空和简答 如果需要word版可以找我要 目录 知识点 信息安全属性 网络防御模型 密码体制 数字证书与公钥基础设施 PKI 防火墙
  • 油盐微服务——声明式服务调用Feign

    文章目录 Feign快速入门 参数绑定 继承特性 Ribbon配置 Hystrix配置 对于前面的Ribbon和Hystrix的介绍 Spring Cloud Feign基于Netflix Feign实现 封装整合了以上两个工具 来简化开发
  • Apache mod_wsgi模块简介

    Apache HTTP服务器的mod wsgi扩展模块 实现了Python WSGI标准 可以支持任何兼容Python WSGI标准的Python应用 出于安全的考虑 建议使用mod wsgi 3 5及以后的版本 最新版本是2017年1月发
  • [C/C++]内存管理,对内存进行操作

    目录 一 内存结构 二 内存拷贝函数 三 栈空间与堆空间 四 变量的四种存储类型 五 函数返回值使用指针 六 常见错误总结 个人主页 北 海 CSDN新晋作者 欢迎 点赞 评论 收藏 收录专栏 C C 希望作者的文章能对你有所帮助 有不足的
  • Python写2048小游戏全部代码及所用图片

    鉴于有很多朋友要图片 把整个项目上传了 自行去取吧 资源地址 https download csdn net download qq 44651842 20009590 游戏效果 游戏用到的图片 数字图片都是90像素的正方形 游戏代码 20
  • python外星人入侵添加音效_Python 项目实践一(外星人入侵)第一篇

    python断断续续的学了一段实践 基础课程终于看完了 现在跟着做三个小项目 第一个是外星人入侵的小游戏 一 Pygame pygame 是一组功能强大而有趣的模块 可用于管理图形 动画乃至声音 让你轻松的开发出想要的游戏 二 安装Pyga
  • sqlite的事务和锁,很透彻的讲解 【转】

    原文 sqlite的事务和锁 http 3y uu456 com bp 877d38906bec097sf46se240 1 html 事务 事务定义了一组SQL命令的边界 这组命令或者作为一个整体被全部执行 或者都不执行 事务的典型实例是
  • 概念题3

    SaaS的意思是软件服务化 Software as a Service Windows上的共享文件传输使用哪个端口137 138 139 445 我国PCM数字设备间的传输接口码型是HDB3 调制解调的目的是 MVC全名是Model Vie
  • 基于SSM的在线考试系统

    全网粉丝20W csdn特邀作者 博客专家 CSDN新星计划导师 java领域优质创作者 博客之星 掘金 华为云 阿里云 InfoQ等平台优质作者 专注于Java技术领域和毕业项目实战 文末获取项目下载方式 一 项目背景介绍 在线考试借助于
  • 全网最详细,Fiddler抓包实战 - 网页浏览器https请求(超详细)

    目录 导读 前言 一 Python编程入门到精通 二 接口自动化项目实战 三 Web自动化项目实战 四 App自动化项目实战 五 一线大厂简历 六 测试开发DevOps体系 七 常用自动化测试工具 八 JMeter性能测试 九 总结 尾部小
  • Qt-D指针和Q指针及使用

    阅读Qt的源代码的时候 我们经常看Q D Q Q Q DECLARE PRIVATE Q DECLARE PUBLIC这几个宏 这几个宏是干什么用的呢 其实这几个宏就是实现D指针和Q指针的宏 D指针在Qt的源码中大量使用 根本目的在于解决二
  • Cocoapods方式导入OC库和swift库

    Cocoapods 是 iOS 应用的包管理程序 它简化了第三方库的导入并且将帮你处理库之间的依赖 在这个教程中 我们将会使用 cocoa pods 导入 Alamofire swift库 和AFNetworking OC库 这两个个第三方
  • Spring Cache详解

    第一节 Spring Cache介绍 1 Spring Cache 简介 从3 1开始 Spring引入了对Cache的支持 其使用方法和原理都类似于Spring对事务管理的支持 Spring Cache是作用在方法上的 其核心思想是这样的
  • 机器学习 加利福尼亚房价预测

    学习目标 提示 导入包 例如 import pandas as pd import numpy as np from sklearn datasets import fetch california housing from sklearn