spatialRF

官网:Easy Spatial Modeling with Random Forest • spatialRF (blasbenito.github.io)

spatialRF是一种在考虑空间自相关的前提下,利用随机森林对空间数据进行回归并解释的R包。

数据要求

参数命名

data:训练集,data frame。

dependent.variable.name:因变量(y)的列名。

predictor.variable.names:所有自变量(x)的列名。

xy:每个实例的坐标(一行一个坐标),按照 x、y 的顺序命名的 2 列,数据类型可以是 data frame 或 matrix。

distance.matrix:data中各个实例之间的距离,一个矩阵,矩阵的长宽皆为实例数量(行数)。

distance.thresholds:需要计算空间自相关的距离,一个向量。单位与distance.matrix相同。向量包含多个距离阈值,之后会根据每个距离阈值计算 Moran I。

数据探索

① 数据分布初探

通过 plot_training_df 函数来绘制每个x与y的散点图,初步判断每个x与y的大致关系,比如正相关、负相关、相关是否显著......

② 空间自相关性(spatial autocorrelation)

通过 plot_training_df_moran 函数来绘制每个变量的空间自相关性,变量包括y和每个x。此函数用 Moran's I 来衡量空间自相关性,且该函数默认当p值大于等于0.05时视作该变量在给定距离阈值下的空间自相关性不显著。

③ 多重共线性(multicollinearity)

通过 auto_corauto_vif 两个函数来检查 x 的多重共线性。

auto_cor 使用双变量R方来度量多重共线性,auto_vif 使用方差膨胀因子来度量多重共线性。

用户可以通过参数preference.order来定义变量的偏好顺序(这个参数不是必须的,没有偏好可以不写。设置这个参数是为了引入专业知识来调控变量的选择。)

代码示例:

preference.order <- c(  # 定义变量的偏好顺序,最重要的在最前面"variable_1","variable_2","variable_3")predictor.variable.names <- spatialRF::auto_cor(x = dataframe[, predictor.variable.names],   # dataframe为整个数据集,包含y和所有x。cor.threshold = 0.75,  # 默认值preference.order = preference.order  # 如果没有偏好,就删掉这一行
) %>% spatialRF::auto_vif(vif.threshold = 5,  # 默认值preference.order = preference.order)predictor.variable.names$selected.variables  # 查看所有被选择的变量(去除多重共线性之后剩下的变量)

输出示例:

## [auto_cor()]: Removed variables: variable_2

## [auto_vif()]: Variables are not collinear.

特征工程

这其实是个比较宏大的问题,不过spatialRF给出一个懒人函数:the_feature_engineer,这个函数会对所有最重要的x之间的组合进行测试,输出最重要的一些组合。

个人觉得特征工程最好还是结合专业知识进行。

拟合与预测

① 原始的随机森林(non-spatial Random Forest )

随机森林感觉没啥好说的,网上教程一搜一大把。。

代码示例:

# 模型拟合
model.non.spatial <- spatialRF::rf(data = dataframe,  # 你的数据集,必须包含y和所有模型需要使用的x。dependent.variable.name = dependent.variable.name,  # y的名称(列名)predictor.variable.names = predictor.variable.names,  # 所有模型需要使用的x的名称(如果进行了多重共线性处理、特征工程等操作,这里的x会和读取的不一样)# distance.matrix、distance.thresholds、xy这三个参数,在non-spatial RF的拟合过程并不会用到。但是后续对结果的分析会用到(比如计算模型残差的自相关系数)distance.matrix = distance.matrix,distance.thresholds = distance.thresholds,xy = xy,seed = random.seed,verbose = FALSE  # 默认是True。当该参数是True时,会显示函数运行中的信息和图表。
)# 模型应用:把上面拟合好的模型用到一个新的数据集上
predicted <- stats::predict(object = model.non.spatial,data = new_dataframe,  # 新的数据集,必须包含之前拟合时用到的所有的xtype = "response")$predictions

② 空间随机森林(spatial Random Forest)

该R包的核心。说是在随机森林中考虑了变量的空间自相关性,但我没找到模型具体是怎么考虑的说明。不过从后分析图表上可以看到,spatialRF 输出结果的残差的空间自相关性 确实比 non-spatialRF 小了不少。这个图表下一节“结果分析”会说。

代码示例:

model.spatial <- spatialRF::rf_spatial(model = model.non.spatial,method = "mem.moran.sequential",verbose = FALSE,seed = random.seed)

从代码可以看出,spatialRF是基于non-spatialRF建立的。

结果分析

① 模型拟合的残差(Residuals)

non_spatial_residuals <- model.non.spatial$residuals  # non-spatialRF输出结果的残差(可以理解成预测值和真实值之间的误差)spatialRF::plot_residuals_diagnostics(  # 绘制一大波有关残差的图表model.non.spatial,verbose = FALSE)spatialRF::plot_moran(  # 绘制莫兰指数(Moran's I),上面那个函数包含了这个图。model.non.spatial, verbose = FALSE)

一大波残差图大概长这样:最上面的图是正态性检验,中图显示残差和拟合值之间的关系,下图就是大家喜闻乐见的 Moran's I 图。

② 特征的重要性

(a) 全局重要性

non_spatial_variable_importances <- model.non.spatial$variable.importancespatialRF::plot_importance(  # 绘制特征重要性图model.non.spatial,verbose = FALSE,scaled.importance = TRUE  # 对特征重要性进行归一化处理。非必选项。)

我的理解是,变量重要性(variable importance)表示当某个变量被剔除时,模型误差的增加。

(b) 局部重要性

分析x对每个实例(每一行)的重要性;即针对每个实例,都会有一套所有x的重要性。

local_importances <- spatialRF::get_importance_local(model.non.spatial)# 显示local_importances 的一些行和一些列
kableExtra::kbl(round(local.importance[1:10, 1:5], 0),  # 1~10行,1~5列format = "html"
) %>%kableExtra::kable_paper("hover", full_width = F)

ps:其实我漏了一个调参没讲。因为我用这个包的应用场景不需要调参O(∩_∩)O哈哈~日后如果用到了会补充。(希望永远不要再碰R了,我爱python!!!)

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

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

相关文章

基于SpringBoot的房屋租赁管理系统

文章目录 项目介绍主要功能截图&#xff1a;部分代码展示设计总结项目获取方式 &#x1f345; 作者主页&#xff1a;超级无敌暴龙战士塔塔开 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &…

WorkPlus Meet打造高质量的视频会议体验,助力实时远程协作

在全球化的商业环境中&#xff0c;远程协作和在线会议成为了企业高效工作的关键。作为一款高质量的视频会议软件&#xff0c;WorkPlus Meet以其卓越的性能和创新的功能&#xff0c;成为企业实时远程协作的首选。 WorkPlus Meet打造了高质量的视频会议体验&#xff0c;为企业提供…

书生·浦语大模型趣味 Demo笔记及作业

文章目录 笔记作业基础作业&#xff1a;进阶作业&#xff1a; 笔记 书生浦语大模型InternLM-Chat-7B 智能对话 Demo&#xff1a;https://blog.csdn.net/m0_49289284/article/details/135412067书生浦语大模型Lagent 智能体工具调用 Demo&#xff1a;https://blog.csdn.net/m0_…

雾天条件下 SLS 融合网络的三维目标检测

论文地址&#xff1a;3D Object Detection with SLS-Fusion Network in Foggy Weather Conditions 论文代码&#xff1a;https://github.com/maiminh1996/SLS-Fusion 论文摘要 摄像头或激光雷达&#xff08;光检测和测距&#xff09;等传感器的作用对于自动驾驶汽车的环境意识…

vue项目中的录屏插件recordrtc且带声音

vue项目中的录屏插件recordrtc且带声音 一、效果图二、安装插件三、直接上代码 一、效果图 其中窗口录屏不带声音&#xff0c;chrome标签和整个屏幕的录屏是带声音的 二、安装插件 npm i recordrtc 三、直接上代码 <template><div class"record-page">…

react-router-domV6.21.1版本结合ant design mobile的TabBar标签栏和Popup弹出层实现移动端路由配置

react-router-demo react-router-dom在V6版本之后更换了很多的API名称&#xff0c;在ant design mobile的TabBar配置中还是之前的旧版本&#xff0c;比如使用了switch组件等。我们在这里使用新版本的react-router-dom进行react移动端的配置 首先使用npm下载最新版的react-rout…

MYSQL双主节点–更换ip

MYSQL双主节点–更换ip 一、更换双主节点ip 1.停止mysql服务 #安装了supervisor supervisorctl stop mysql #未安装 systemctl stop mysqld2.修改网卡配置信息 注&#xff1a;ens33是网卡名称&#xff0c;可能网卡不叫ens33 vi /etc/sysconfig/network-scripts/ifcfg-ens333…

Mybatis入门源码二:sql执行

后面开始分析sql执行的源码流程也就是这一部分 一、factory.openSession() 重点关注configuration.newExecutor这个方法&#xff0c;获取事务处理器比较简单&#xff0c;就是获取一个jdbc的事务管理器。 这个方法通过传入的执行器类型来创建不同的执行器&#xff0c;有simp…

CNN——ResNet

深度残差网络&#xff08;Deep residual network, ResNet&#xff09;的提出是CNN图像史上的一件里程碑事件&#xff0c;并且让深度学习真正可以继续做下去&#xff0c;斩获2016 CVPR Best Paper。此外ResNet的作者都是中国人&#xff0c;一作何恺明。ResNet被提出以后很多的网…

Vue3+Pinia实现持久化动态主题切换

PC端主题切换大家都用过&#xff0c;下面用Vue3Pinia实现一下这个过程; 【源码地址】 1、准备工作 npm install pinia npm install pinia-plugin-persist2、基础配置 // main.js import { createApp } from vue import App from ./App.vue import bootstrap from "../bo…

红日靶场 4

靶场配置 ​ 733 x 668899 x 819 ​ ​ 733 x 6161466 x 1232 ​ ​ 733 x 6261449 x 1237 ​ ​ 733 x 6301450 x 1247 ​ IP 地址分配&#xff1a; Win7: 192.168.183.133(内网)Ubuntu: 192.168.183.134(内网) 192.168.120.137(外网)DC: 192.168.183.130(内网)Kali…

Python综合数据分析_根据订单求RFM值

文章目录 0.导入数据1.数据可视化2.数据清洗3.特征工程4.构建User用户表5.求R值6.求F值7.求M值 0.导入数据 import pandas as pd #导入Pandas df_sales pd.read_csv(订单.csv) #载入数据 df_sales.head() #显示头几行数据 1.数据可视化 import matplotlib.pyplot as plt #导…

js逆向第13例:猿人学第6题js混淆-回溯赛

文章目录 m是加密字符串怎么来的?浏览器环境检测本地运行的js代码任务六:采集全部5页的彩票数据,计算全部中奖的总金额(包含一、二、三等奖) 此题总体难度低于第5题,老规矩还是查看控制台请求地址https://match.yuanrenxue.cn/api/match/6?m=rPRDgpbV3Wd%252FyPfURQAkxK…

使用Vite创建vue3工程

介绍 使用Vite构建工具&#xff0c;创建Vue3工程 示例 第一步&#xff1a;执行创建项目的命令&#xff0c;study-front-vue3是项目名称 npm init vite-app study-front-vue3第二步&#xff1a;进入项目文件夹&#xff0c;执行命令&#xff0c;安装模块 cd study-front-vue…

使用qtquick调用python程序,pytorch

一. 内容简介 使用qtquick调用python程序 二. 软件环境 2.1vsCode 2.2Anaconda version: conda 22.9.0 2.3pytorch 安装pytorch(http://t.csdnimg.cn/GVP23) 2.4QT 5.14.1 新版QT6.4,&#xff0c;6.5在线安装经常失败&#xff0c;而5.9版本又无法编译64位程序&#xf…

程序员为什么不能一次把功能写好,是因为他不想吗

引言 交流一下为什么他做的功能这么多Bug 大家好&#xff0c;最近看到一个有趣的问题&#xff1a; 程序员为什么要不能一次性写好&#xff0c;需要一直改Bug&#xff1f; 在我看来&#xff0c;程序员也是人&#xff0c;并非机器。 拿这个问题去质问程序员&#xff0c;答案无…

Java学习,一文掌握Java之SpringBoot框架学习文集(3)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

【网络】网络层协议ARP和IP协议转发流程

目录 一、IP概述 1.1 IP简介 1.2 IP协议 二、IP地址与硬件地址 三、地址解析协议ARP 3.1 ARP协议简介 3.2 ARP工作流程 3.3 ARP的四种典型情况 四、IP协议的转发流 一、IP概述 1.1 IP简介 IP地址&#xff08;Internet Protocol Address&#xff09;是指互联网协议地址…

[VUE]1-创建vue工程

目录 基于脚手架创建前端工程 1、环境要求 2、操作过程 3、工程结构 4、启动前端服务 &#x1f343;作者介绍&#xff1a;双非本科大三网络工程专业在读&#xff0c;阿里云专家博主&#xff0c;专注于Java领域学习&#xff0c;擅长web应用开发、数据结构和算法&#xff0c…

如何写html邮件 —— 参考主流outook、gmail、qq邮箱渲染邮件过程

文章目录 ⭐前言⭐outlook渲染邮件⭐gmail邮箱渲染邮件⭐qq邮箱渲染邮件 ⭐编写html邮件&#x1f496;table表格的属性&#x1f496;文本&#x1f496;图片&#x1f496;按钮&#x1f496;背景图片 ⭐总结⭐结束 ⭐前言 大家好&#xff0c;我是yma16&#xff0c;本文分享关于 …