研究论文关于火灾的烟雾探测

普拉萨梅什·加德卡尔

探索所有模型以选择最佳模型。

一、介绍:

        烟雾探测器检测烟雾并触发警报以提醒他人。通常,它们存在于办公室、家庭、工厂等。通常,烟雾探测器分为两类:

  1. Photoelectric Smoke Detector- 设备检测光强度,如果低于设定的阈值,则生成警报,因为烟雾会导致灰尘颗粒和烟雾导致光强度降低。
  2. Ionization Smoke Detector- 这种类型的探测器配备了一个电子电路,可以测量电流差,并在超过某个阈值时提醒用户。由于烟雾和管道颗粒导致离子不能自由移动,电路中的电流将减少。

        使用提供的数据集,我们的目标是开发一个人工智能模型,如果检测到烟雾,可以准确地发出警报。我们的目标是根据其准确性比较许多分类模型,例如 KNN、逻辑回归等,直观地表示它们,并从中选择最好的。

数据是从这里获取的。

二、导入所需库 

#Importing all essential libraries
import numpy as np
import pandas as pd
import seaborn as sns
from plotly.subplots import make_subplots
import matplotlib.pyplot as plt
import plotly.express as px
import missingno as msnofrom sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler#Importing Models
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression,SGDClassifier
from sklearn.ensemble import RandomForestClassifier,GradientBoostingClassifier,AdaBoostClassifier
from sklearn.ensemble import BaggingClassifier
from sklearn.svm import SVC
from sklearn.naive_bayes import GaussianNB
from sklearn.dummy import DummyClassifier
from sklearn.tree import ExtraTreeClassifier from sklearn.metrics import accuracy_score
import timeimport warnings
warnings.filterwarnings('ignore')

三、数据探索

3.1 特征分布

  1. UTC - The time when the experiment was performed.
  2. Temperature - Temperature of Surroundings. Measured in Celsius
  3. Humidity - The air humidity during the experiment.
  4. TVOC - Total Volatile Organic Compounds. Measured in ppb (parts per billion)
  5. eCo2 - CO2 equivalent concentration. Measured in ppm (parts per million)
  6. Raw H2 - The amount of Raw Hydrogen present in the surroundings.
  7. Raw Ethanol- 周围环境中存在的生乙醇量。
  8. Pressure-气压。以 hPa 为单位测量
  9. PM1.0- 直径小于1.0微米的颗粒物。
  10. PM2.5- 直径小于2.5微米的颗粒物。
  11. NC0.5- 直径小于0.5微米的颗粒物的浓度。
  12. NC1.0- 直径小于1.0微米的颗粒物的浓度。
  13. NC2.5- 直径小于2.5微米的颗粒物的浓度。
  14. CNT- 简单计数。
  15. Fire Alarm-(现实)如果发生火灾,则值为1,否则为0。
data = pd.read_csv('../input/smoke-detection-dataset/smoke_detection_iot.csv',index_col = False)
data.head()

数据前五行(来源:作者)

data.shape

data.describe().T.sort_values(ascending = 0,by = "mean").\
style.background_gradient(cmap = "BuGn")\
.bar(subset = ["std"], color ="red").bar(subset = ["mean"], color ="blue")

描述数据(来源:作者)

#Getting all the unique values in each feature
features = data.columns
for feature in features:print(f"{feature} ---> {data[feature].nunique()}")

所有变量的唯一值(来源:作者)

3.2 空值分布:

data.isna().sum()

空值计数(来源:作者)

msno.matrix(data)

空值可视化(来源:作者)

3.3 数据清理:

        数据集中没有缺失值,这使我们能够更有效地分析数据并构建准确的预测模型。

        如果数据集包含缺失值,请参考以下链接,帮助您进行数据清洗:

  1. 开始使用 Kaggle(英语:Kaggle)
  2. 极客的极客

        尽管有些功能是无用的,并且会妨碍我们的模型。这些是:

  1. UTC- 它仅指示实验进行的时间,因此不会影响结果。
  2. Unnamed :0- 这只是索引。
  3. CNT- 这是计数(类似于索引)。

        由于这些属性是无用的,我们将删除它们。

del_features = ['Unnamed: 0','UTC','CNT']
for feature in del_features:data = data.drop(feature,axis = 1)
data.head()

删除不需要的功能(来源:作者)

3.4 ⭐重要观察 

  • 数据中总共有行和列。6236016
  • 数据不包含任何缺失值。
  • 我们删除 、 属性,因为它们对我们毫无用处。UTCUnnamed 0:CNT
  • 完成所有修改后,我们总共拥有将对其执行 EDA 的属性。13
  • 总共有 (62360 x 13) 个观测值。810680

四、探索性数据分析 

4.1 使用目标变量进行特征分析 

sns.set_style("whitegrid")
sns.histplot(data['Fire Alarm'])

Histogram of Frequency (Source: Author)

plt.figure(figsize = (6,6))
sns.kdeplot(data = data,x = 'TVOC[ppb]')

Probability Density Function (Source: Author)

4.2 HeatMap :

plt.figure(figsize = (12,12))
sns.heatmap(data.corr(),annot = True,cmap = 'GnBu')

热图(来源:作者)

4.3 ⭐重要观察:

  • 考虑到相关性很高,我们可以这么说,并且相关性很高。>=0.65PressureHumidity
  • 所有 和 彼此之间具有很高的相关性。PM'sNC's
  • 的均值和中位数之间的差值非常高。这告诉我们存在许多异常值。TVOCPM'sNC's
  • 和 是分类中非常重要的属性,因为目标变量的均值和中位数之间的差异非常大。TVOCPM'sNC's

五、建模 

5.1 数据预处理 

X = data.copy()
X.drop('Fire Alarm',axis = 1,inplace = True)
y = data['Fire Alarm']X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,random_state=0)
ss = StandardScaler()
X_train = ss.fit_transform(X_train)
X_test = ss.transform(X_test)

5.2 模型实现:

models = [KNeighborsClassifier(),SGDClassifier(),LogisticRegression(),RandomForestClassifier(),
GradientBoostingClassifier(),AdaBoostClassifier(),BaggingClassifier(),
SVC(),GaussianNB(),DummyClassifier(),ExtraTreeClassifier()]
Name = []
Accuracy = []
Time_Taken = []
for model in models:Name.append(type(model).__name__)begin = time.time()model.fit(X_train,y_train)prediction = model.predict(X_test)end = time.time()accuracyScore = accuracy_score(prediction,y_test)Accuracy.append(accuracyScore)Time_Taken.append(end-begin)
Dict = {'Name':Name,'Accuracy':Accuracy,'Time Taken':Time_Taken}
model_df = pd.DataFrame(Dict)
model_df

Accuracy and Time Taken (Source: Author)

5.3 Accuracy vs Model:

model_df.sort_values(by = 'Accuracy',ascending = False,inplace = True)
fig = px.line(model_df, x="Name", y="Accuracy", title='Accuracy VS Model')
fig.show()

Accuracy Vs Model (Source: Author)

5.4 Time Taken vs Model:

model_df.sort_values(by = 'Time Taken',ascending = False,inplace = True)
fig = px.line(model_df, x="Name", y="Time Taken", title='Time Taken VS Model')
fig.show()

所用时间与模型(来源:作者)

六、结论 

        作为上述分析的结果,我们可以看到ExtraTreeClassifier需要更少的训练和执行时间,并提供最高级别的准确性。

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

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

相关文章

Go微服务实践 - Rpc核心概念理解

概述 从0研究一下Golang已经Golang的微服务生态体系,Golang的微服务首先要从Rpc开始,在升级到Grpc,详细介绍这些技术点都在解决什么技术问题。 Rpc Rpc (Remote Procedure Call) 远程过程调用,简单的理解是一个节点请求另一个节…

LeetCode150道面试经典题--最后一个单词的长度(简单)

1.题目 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 2.示例 3.思路 通过对字符串的反转,转为数组开始遍历&#xff0c…

网络安全进阶学习第十五课——Oracle SQL注入

文章目录 一、Oracle数据库介绍二、Oracle和MySQL的语法差异:三、Oracle的数据库结构四、Oracle的重点系统表五、Oracle权限分类1、系统权限2、实体权限3、管理角色 六、oracle常用信息查询方法七、联合查询注入1、order by 猜字段数量2、查数据库版本和用户名3、查…

解析Python面向对象:从小白到面向对象大师的蜕变之路

文章目录 一 类和对象的概念二 类的认识2.1 类的定义和使用语法2.2 成员变量和成员方法 三 类和对象3.1 类和对象的关系3.2 构造方法3.3 魔术方法概述(内置类方法)3.4 内置方法详解 四 面向对象三大特性4.1 封装4.1.1 封装的理解4.1.2 私有成员变量和方法…

Kafka3.4 SASL/kerberos/ACL 证以及 SSL 加密连接

Kafka3.4 SASL/kerberos ACL 证以及 SSL 加密连接 序 前面我们使用 kafka3.3.1 on zookeeper 的模式进行多网段监听的 kafka 集群,顺便搭建起 kafkaui 后发现一些问题,我们 kafka 集群没有连接认证,万一谁知道了我们的 kafka 连接地址&…

java连接sqlserver细节处理

这个文章记录一下java连接sqlserver细节处理 &#xff0c;有其他的细节可以评论。 首先是 驱动 driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriverpom文件 将mysql的改成这个 <!-- 数据库驱动 --><dependency><groupId>com.microsoft.sqlserve…

[国产MCU]-BL602开发实例-定时器

定时器 文章目录 定时器1、BL602定时器介绍2、定时器驱动API介绍3、定时器使用实例3.1 单次计时3.2 持续计时通用定时器,用于定时,当时间到达我们所设置的定时时间会产生定时中断,可以用来完成定时任务。本文将详细介绍如何使用BL602的定时器功能。 1、BL602定时器介绍 BL6…

牛奶产业链的工业“链主品牌”利乐是如何诞生的?

瑞典的利乐公司&#xff0c;一个在乳品产业链中占据重要地位的“链主品牌”&#xff0c;通过提供创新的包装材料和解决方案&#xff0c;在全球范围内占据了显著的市场份额。利乐从不生产一滴奶&#xff0c;却赚取了中国乳业 75%的利润&#xff0c;一年创收超过 800 亿人民币。在…

bash: make: command not found

make之后报错信息如下&#xff1a;cd 对应的文件路径后 make 发现报错&#xff1a;bash: make: command not found 这个原因可能是没有安装make工具,也可能是安装了make之后,没有将make的文件路径添加到系统环境变量中 有没有安装make,可以使用Search Everything搜索是否有make…

数据结构-1

1.2 线性结构树状结构网状结构&#xff08;表 数 图&#xff09; 数据&#xff1a;数值型 非数值型 1.2.3数据类型和抽象数据类型 1.3抽象数据类型 概念小结&#xff1a; 线性表: 如果在独立函数实现的 .c 文件中需要包含 stdlib.h 头文件&#xff0c;而主函数也需要包含 st…

2023年市面上最受欢迎的工程项目管理软件推荐

随着科技的发展和工程项目的复杂性增加&#xff0c;工程项目管理软件成为了现代项目管理中不可或缺的工具。这些软件可以帮助团队更好地协调、组织和执行工程项目&#xff0c;并提高项目的效率和成功率。本文结合了不同的产品测评网站&#xff0c;总结了以下四款备受好评的工程…

ARTS 挑战打卡的第7天 --- Ubuntu中的WindTerm如何设置成中文,并且关闭shell中Tab键声音(Tips)

前言 &#xff08;1&#xff09;Windterm是一个非常优秀的终端神器。关于他的下载我就不多说了&#xff0c;网上很多。今天我就分享一个国内目前没有找到的这方面的资料——Ubuntu中的WindTerm如何设置成中文&#xff0c;并且关闭shell中Tab键声音。 将WindTerm设置成中文 &…