基于统计检验与随机森林分析不同天气类型的影响因素

news2025/1/9 2:10:15

1.项目背景

本项目使用了一个人工合成的天气数据集,模拟了雨天、晴天、多云和雪天四种类型,在分析过程中,对数据进行了异常值处理,并通过描述性统计对数据进行了初步探索,接着,使用Kruskal-Wallis检验、Dunn检验和卡方检验分析了温度、湿度、风速、降水量、气压、紫外线指数、能见度、云量、季节和地点等特征对天气类型的影响,最终,构建了随机森林模型进行预测,并生成了模型的重要特征图,该项目适用于初学者学习如何进行全面的数据分析和机器学习模型构建。

2.数据说明

列名中文解释单位备注
Temperature温度摄氏度气温的测量值
Humidity湿度%空气中水蒸气的含量
Wind Speed风速km/h风的速度
Precipitation (%)降水量%降水强度或降水量分布
Cloud Cover云量-天空中云的覆盖程度,文字描述
Atmospheric Pressure气压hPa大气压力
UV Index紫外线指数-表示紫外线强度的指数
Season季节-数据采集的季节
Visibility (km)能见度km可见距离的测量值
Location地点-数据采集地点,如内陆、山区等
Weather Type天气类型-如晴天、雨天等

3.Python库导入及数据读取

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import scipy.stats as stats
import scikit_posthocs as sp
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report,confusion_matrix
data = pd.read_csv('/home/mw/input/07292689/weather_classification_data.csv')

4.数据预览及预处理

查看数据信息:

查看重复值:

0

查看分类特征的唯一值:

Cloud Cover:
['partly cloudy' 'clear' 'overcast' 'cloudy']
--------------------------------------------------
Season:
['Winter' 'Spring' 'Summer' 'Autumn']
--------------------------------------------------
Location:
['inland' 'mountain' 'coastal']
--------------------------------------------------
Weather Type:
['Rainy' 'Cloudy' 'Sunny' 'Snowy']
--------------------------------------------------

通过绘制箱线图查看数值型特征是否存在异常值:

  1. 温度的异常值存在大量超出常识的温度,由于没有查到一个准确的最高值,有的说“海尔湖曾经记录下了世界上最高的气温,达到了一惊人的70.7摄氏度”,也有的说“1913年7月10日,死亡谷出现了极端温度,达到了56.7摄氏度(134华氏度),因此成为历史上有记录以来温度最高的世界上最热的地方。”,这里以超过60摄氏度认定为异常值,需要进行处理。

  2. 湿度百分比和降水量百分比,由于数值存在超过100%的值,认为超过100%的值为异常值,需要进行处理。

  3. 风速的高值可能是由于台风、龙卷风等极端天气事件,故不处理。

  4. 大气压力的异常值可能由于高海拔地区或气象现象(如低气压系统)引起。

  5. 能见度低可能是由于雾霾、雨雪等天气现象,这些异常值在特定条件下是正常的,故不处理。

通过计算异常值数量,发现: 温度超过60°C的数据量:207,占比1.57%。 湿度百分比超过100%的数据量:416,占比3.15%。 降雨量百分比超过100%的数据量:392,占比2.97%。

异常值占比很小,这里可以直接删除,或者将其赋值为100%,为了保持数据集的一致性和准确性,这里选择直接删除,可以避免它们对分析结果或模型训练产生负面影响。

清洗后的数据样本还剩12360条。

5.描述性分析

  • 温度:温度数据集中在较合理的范围内(主要在0°C到40°C),极端高温(>60°C)的数据已被清理。整体分布稍微左偏,说明较低温度的情况较多。

  • 湿度:湿度分布在合理范围内(20%到100%),中位数和平均值接近,说明数据分布相对对称。

  • 风速:数据集中在较低的风速范围内(0-20 km/h),极端高风速事件少见,数据左偏,低风速情况更为常见。

  • 降水量:降水量分布较均匀,中位数为54%,反映了各种天气条件下的降水概率。

  • 大气压力:大气压力主要集中在标准范围(990-1020 hPa),数据分布正常,没有明显的异常值。

  • 紫外线指数:紫外线指数大多较低,极端高指数的情况罕见,表明大部分时间的紫外线风险较低。

  • 能见度:能见度数据大多集中在5 km左右,反映了多数情况下的中等能见度条件。

  • 云量:多云(overcast)在数据集中出现频率较高。

  • 季节分布:冬季数据最多,可能是数据采集季节或地区气候特征的反映。

  • 地点分布:主要来自山区和内陆地区,这可能影响天气类型和其他气象特征的分布。

  • 天气类型:分布比较均匀,没有单一类别占据绝对优势。

6.统计检验探究影响天气类型的主要因素

6.1KW检验

由于所有的p值远小于通常的显著性水平0.05,可以认为不同天气类型之间的温度、湿度、 风速、降水量、气压、 紫外线指数和能见度均值存在显著差异,这意味着这些特征对天气类型的影响是显著的,不同类型的天气在这些特征上有显著不同,接下来进行事后检验,来确定哪些组之间存在显著差异。

6.2Dunn检验

根据温度的Dunn检验结果,各天气类型之间的显著性差异如下:

  • 多云和雨天之间的温度差异不显著。

  • 雪天与其他所有天气类型之间的温度差异显著。

  • 晴天与其他所有天气类型之间的温度差异显著。

根据湿度的Dunn检验结果,各天气类型之间的显著性差异如下:

  • 多云与其他所有天气类型之间的湿度差异显著。

  • 雨天与雪天之间的湿度差异不显著,这表明两者在湿度方面没有显著的区别。

  • 雨天和晴天、雪天和晴天之间的湿度差异显著。

根据风速的Dunn检验结果,各天气类型之间的显著性差异如下:

  • 所有天气类型之间的风速差异都非常显著。这表明风速是区分不同天气类型的一个重要特征。

根据降水量百分比的Dunn检验结果,各天气类型之间的显著性差异如下:

  • 多云与其他所有天气类型之间的降水量差异显著。

  • 晴天与其他所有天气类型之间的降水量差异显著。

  • 雨天和雪天之间的降水量差异不显著,表明这两种天气类型在降水量方面的相似性。

根据大气压力的Dunn检验结果,各天气类型之间的大气压力显著性差异如下:

  • 所有天气类型之间的大气压力差异都非常显著。每种天气类型在大气压力上的显著差异,可能与天气系统(如高压系统和低压系统)在不同天气条件下的形成和影响有关。

根据紫外线指数的Dunn检验结果,各天气类型之间的紫外线指数显著性差异如下:

  • 所有天气类型之间的紫外线指数差异显著。这表明不同的天气条件显著影响紫外线指数,反映了紫外线强度随天气变化的显著差异。

  • 晴天的紫外线指数显著高于其他天气类型,这是因为晴天通常紫外线辐射最强,而多云、雨天和雪天的云层或降水通常减少紫外线的到达量。

根据能见度的Dunn检验结果,各天气类型之间的能见度显著性差异如下:

  • 多云天气与其他类型之间的能见度差异显著。

  • 雨天和雪天之间能见度差异不显著,这可能是因为两者通常都有较低的能见度。

  • 晴天通常能见度较高,这与其他天气类型形成显著差异。

6.3卡方检验

通过卡方检验得知:云量、季节和地点这三个变量与天气类型之间都有显著的统计关联。

7.随机森林

进行标签编码后的数据对应关系:

随机森林模型评估指标

随机森林模型评估指标

随机森林模型的预测准确率很高,并且通过特征度分析,发现影响模型的主要因素有:温度、湿度、紫外线指数、能见度、大气压力。

8.结论

本项目对数据进行了异常值处理,并通过描述性统计初步探索了数据特征,使用Kruskal-Wallis检验、Dunn检验以及卡方检验,探讨了影响天气类型的主要因素,最终,构建了随机森林模型进行预测,并生成了模型的重要特征图。结果如下:

  1. 描述性统计:

    • 温度:温度数据集中在合理范围内(主要在0°C至40°C),已清理掉极端高温数据(>60°C)。整体分布略显左偏,表明较低温度的情况更多。

    • 湿度:湿度数据分布在合理范围内(20%至100%),中位数与平均值接近,说明数据分布相对对称。

    • 风速:风速数据集中在较低范围内(0-20 km/h),极端高风速事件少见,数据左偏,低风速情况更为常见。

    • 降水量:降水量分布较均匀,中位数为54%,反映了各种天气条件下的降水概率。

    • 大气压力:大气压力主要集中在标准范围内(990-1020 hPa),数据分布正常,没有明显的异常值。

    • 紫外线指数:紫外线指数大多较低,极端高指数情况罕见,表明大部分时间紫外线风险较低。

    • 能见度:能见度数据大多集中在5公里左右,反映了多数情况下的中等能见度条件。

    • 云量:多云(overcast)在数据集中出现频率较高。

    • 季节分布:冬季数据最多,可能反映了数据采集的季节性或地区气候特征。

    • 地点分布:数据主要来自山区和内陆地区,可能影响天气类型和其他气象特征的分布。

    • 天气类型:各类别分布较均匀,无单一类别占绝对优势。

  2. 统计检验: 结果表明,不同天气类型在温度、湿度、风速、降水量、气压、紫外线指数、能见度、云量、季节和地点均值上存在显著差异,这意味着这些特征对天气类型的影响显著。

  3. 模型预测: 随机森林模型的预测准确率较高,达到91%。特征重要性分析显示,影响模型预测的主要因素包括温度、湿度、紫外线指数、能见度和大气压力。

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

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

相关文章

Flutter连接iPad报错Developer Mode

Flutter连接iPad报错Developer Mode To use 黑色iPad for development, enable Developer Mode in Settings → Privacy & Security.根据错误提示,在ipad中的“安全性”中没有“开发者模型”选项。 打开安全模式步骤: 需要打开Xcode,连接iPad, 在iPad中点击“…

app逆向抓包技巧:ROOT检测绕过

本篇博客旨在记录学习过程,不可用于商用等其它途径 场景 某监管app查壳发现使用了 《梆梆企业版》 加固,想尝试使用frida-dexdump脱壳,打开app发现提示下图样式,由于进不去界面,我们直接脱壳无法保证能获取到完整的 …

虚拟机windows server创建域

目录 准备工作 一、新建域控制器 二、提升为域控制器添加新林 三、新建组织单位(OU),用户 四、将计算机加域 五、在域控中管理计算机 六、在域控中配置组策略 七、域内计算机验证组策略配置 准备工作 安装域前,如果有DNS…

Golang | Leetcode Golang题解之第310题最小高度树

题目: 题解: func findMinHeightTrees(n int, edges [][]int) []int {if n 1 {return []int{0}}g : make([][]int, n)deg : make([]int, n)for _, e : range edges {x, y : e[0], e[1]g[x] append(g[x], y)g[y] append(g[y], x)deg[x]deg[y]}q : []i…

二百五十二、OceanBase——Linux上安装OceanBase数据库(二)

一、目的 在OBD页面上部署OceanBase数据库时发现,需要把新用户也要配置ssh免密登录 二、前提 root用户已经设置免密登录 三、配置步骤 1 切换到新用户obadmin [roothurys23 ~]# su obadmin 2 执行命令生成秘钥文件 [obadminhurys23 oceanbase]$ ssh-keygen …

限免下载:715页 | 2024民营企业数字化转型典型案例集

一、前言 数字化转型不仅仅是技术的更新换代,它涉及到企业运营模式、组织架构、企业文化等多个层面的深刻变革。通过数字化,企业能够更好地理解市场动态,提升决策效率,优化客户体验,并最终实现业务增长和价值创造。 …

不可错过的2024翻译工具合集,提升沟通效率必备

如果你想要提升外文阅读能力,但是有没什么外语基础怎么办。现在有不少翻译工具可以实现整份文件进行翻译,让这些工具在日常生活和学习中发挥作用。 1.福昕在线翻译 链接直达:https://fanyi.pdf365.cn/doc 这个工具有齐全的翻译功能。可以…

利用SSE打造极简web聊天室

在B/S场景中,通常我们前端主动访问后端可以使用axios,效果很理想,而后端要访问前端则不能这样操作了,可以考虑SSE、websocket和gRPC等方式,实时和性能均有保障。 下面给出一个简单的例子,后端是nodeexpress…

体验教程:通义灵码陪你备战求职季

本场景将带大家体验在技术面试准备场景下,如何通过使用阿里云通义灵码实现高效的编程算法题练习 、代码优化、技术知识查询等工作,帮助开发者提升实战能力,更加从容地应对面试挑战。主要包括: 1、模拟题练习:精心挑选…

Python基础教程(二)字符串和函数

6.字符串 6.1 字符串的表示方式 6.1.1 普通字符串 普通字符串指用单引号()或双引号(”")括起来的字符串。例如:Hello或"Hello" >>> Hello Hello >>> "Hello" Hello >>> s\u0048\u0065\u006c\u006c\u006f >>> …

Oracle19c数据库system密码锁定

一、在oracle 19c数据库中,cdb中system用户被锁定,locked 二、所在的pdb中的system用户状态是正常的,但不可用,连接的时候提示账号已锁定 三、解决 在cdb中将system用户解锁。 alter user system account unlock;

LeetCode面试150——45跳跃游戏II

题目难度:中等 默认优化目标:最小化平均时间复杂度。 Python默认为Python3。 目录 1 题目描述 2 题目解析 3 算法原理及代码实现 3.1 反向查找 3.2 正向查找 参考文献 1 题目描述 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]…

使用 Java 8 的 BiPredicate 和 Stream API 进行数据过滤和分组

在本文中,我们将学习如何使用 Java 8 的 BiPredicate 和 Stream API 来进行数据过滤和分组。我们将通过一个具体的例子来演示这一过程,例子中包含学生成绩的筛选和基于考试时间段的分组。 案例介绍 我们有两个实体类:StudentScore 和 ExamT…

满客宝智慧食堂系统 selectUserByOrgId 未授权访问漏洞复现

0x01 产品简介 满客宝智慧食堂系统由正奇晟业(北京)科技有限公司开发,旨在通过科技手段提升食堂的服务水平和就餐体验。该系统支持多种食堂就餐形式,如自选餐、自助餐、档口就餐、预订取餐等,满足不同场景下的餐饮需求…

从理论到实践网络编程模型:(BIO、NIO、AIO)同步与异步模型的原理与应用 (四)

我是写Java的就用Java及所需要的基础来写的本篇文章,其他语言的讲解和应用暂时也不会,欢迎大佬在评论区指导,给出其他语言的讲解分析与应用 Java数据传输字符流和字节流 java.io 是 Java 编程语言中的一个包,主要用于输入和输出&…

Linux 和 Unix 的关系

Linux 和 Unix 的关系 2.2.1unix 是怎么来的 2.2.2Linux 是怎么来的 GNU计划的另一个目的是构建自由的软件文化,以支持以无条件自由软件和开放源码程序这种文化理念为核心的一整套系统,来推动软件在世界范围内的普及及发展。其中包括支持点(推…

java开发环境搭建基础之2----开发工具eclipse在windows的安装

一.背景 公司安排了带徒弟任务,写点基础的环境搭建这些吧。搭建基础开发环境,主要是jdk、eclipse、git、maven、mysql。后续再考虑编写jenkins、nexus、docker、1panel等CI/CD环境搭建。本次主要内容是eclipse的下载安装及运行。我的开发环境&#xff0c…

Linux内核(4)——Linux设备文件open函数从应用到内核全过程解析

学习并整理了下open等系统调用,从用户态如何调用到内核态的全过程。 1.Linux内核目录总览 2.Linux文件系统与设备驱动关系 这是在Linux设备驱动开发详解里找的两张图,内容很形象。 当用户程序通过系统调用陷入内核态时,会先经过VFS&#xf…

Hive3:表操作常用语句-内部表、外部表

一、内部表 1、基本介绍 (CREATE TABLE table_name ......) 未被external关键字修饰的即是内部表, 即普通表。 内部表又称管理表,内部表数据存储的位置由hive.metastore.warehouse.dir参数决定(默认:/user/hive/ware…