【Python案例实战】水质安全分析及建模预测

news2024/11/18 13:57:09

一、引言

1.水资源的重要性

水是生命之源,是人类生存和发展的基础。它是生态系统中不可或缺的组成部分,对于维系地球上的生命、农业、工业、城市发展等方面都具有至关重要的作用。

2.水质安全与人类健康的关系

水质安全直接关系到人类的健康和生存。水中的污染物和有害物质可能对人体造成严重的健康危害,如肠道疾病、皮肤疾病、癌症等。因此,确保水质安全是保障人类健康的重要前提。

3.建模预测在水质安全分析中的必要性

为了应对水质安全面临的挑战,需要采取科学的方法进行水质监测和分析。而建模预测作为一种重要的分析工具,可以帮助我们更好地理解水质变化的规律和趋势,预测未来的水质状况,为水质管理和保护提供科学依据。通过建模预测,可以提前预警可能出现的污染事件,及时采取应对措施,保障水质安全。因此,建模预测在水质安全分析中具有不可替代的作用。

二、水质安全分析

1.水质标准与指标

a. 世界卫生组织(WHO)水质标准
世界卫生组织(WHO)制定了一套全球通用的水质标准,以确保人类和生态系统健康。这些标准包括对各种污染物的最大允许浓度,如重金属、有害有机物、细菌、病毒等。
b. 各国水质标准与法规
各国根据自身实际情况和需求,制定了自己的水质标准与法规。这些标准通常会参考或采纳WHO的标准,但也可能根据本国的特定环境和条件进行调整。
c. 特定污染物指标
除了上述通用指标外,针对特定环境和用途,还可能有一些特定的污染物指标。例如,针对农业灌溉的水质,可能更加关注农药残留和盐分等指标;而针对工业用水,可能更加关注pH值、硬度、悬浮物等指标。

2. 水质检测方法

a. 物理检测法
物理检测法主要通过测量水的物理性质来评估水质。例如,浊度、色度、温度、pH值等都可以通过物理方法测量。
b. 化学检测法
化学检测法涉及使用化学试剂和仪器来测量水中的化学物质。这种方法可以检测出更多的污染物,尤其是那些不能通过物理方法检测的物质。
c. 生物检测法
生物检测法利用生物体的反应来评估水质。例如,通过观察生物的生长、繁殖或死亡情况,可以判断水质的好坏。这种方法通常用于评估水体的综合质量。

3. 水质污染源分析

a. 点源污染
点源污染指的是具有明确排放源的污染,如工业废水、城市污水等。这类污染源通常具有较大的排放量,且污染物种类较为单一。
b. 面源污染
面源污染指的是没有固定排放源的污染,如农业排水、雨水冲刷等。这类污染源排放的污染物种类多、数量大,且难以控制。
c. 移动源污染
移动源污染主要指交通工具排放的废气和废水等。这类污染源具有流动性大、排放不规律等特点,对水质安全造成一定威胁。

4.水质安全风险评估

a. 暴露评估
暴露评估是指评估人们通过饮水、食物、呼吸等途径接触到的污染物量。通过了解暴露量,可以判断人体受到的健康风险。
b. 毒性评估
毒性评估是指对污染物对人体和生态系统的危害程度进行评估。通过对污染物进行毒性实验,可以了解其对人体和生态系统的潜在危害。
c. 风险特征描述
风险特征描述是对暴露评估和毒性评估的综合分析,以判断某一污染物对人体和生态系统的风险水平。根据风险水平的高低,可以制定相应的管理措施和预警方案。

三、项目准备

1.电脑配置

本机系统为Window10s,运行软件使用JupyterNote

库名 版本号
pandas 1.5.3
matplotlib 3.7.2
seaborn 2.1.0

2.数据集描述

本数据集是一个综合性的水质分析数据集,由7999条模拟数据记录组成。

数据集包括多种化学物质的浓度测量值,如铝、氨、砷、钡、镉等,以及每种化学物质的安全阈值。
这些化学物质在实际水源中的浓度通常由多种因素决定,包括环境污染、工业排放、自然矿物质含量等。

数据集中包括一列“是否安全”分类变量,用于指示水样是否满足人类消费的安全标准。这个字段是基于各化学物质浓度与其对应安全阈值的比较得出的。

本数据为模拟数据集,但在设计上参考了实际情况,通过这个数据集,你可以探索数据预处理、特征工程、模型构建和评估等多个方面。这些探索分析结论也可以为研究水质安全与公共卫生之间关系提供有价值的参考信息。

3.问题描述

预测水是否安全(二元分类问题)
使用机器学习算法(如逻辑回归、支持向量机、随机森林)来预测水是否安全。
对数据集进行训练-测试分割,使用交叉验证来评估模型性能。
分析哪些参数对水质安全性的预测最为重要。

探索化学物质含量与水质安全性之间的关联(相关性分析)
进行统计分析,如皮尔逊或斯皮尔曼相关性测试,来评估不同化学物质含量与水质是否安全之间的关联性。
使用散点图和热图来可视化这些关系。

安全与不安全水样的特性(描述性统计分析)
对安全和不安全的水样分别进行描述性统计分析,包括平均值、中位数、标准差等。
使用箱线图或小提琴图来比较不同化学物质在安全与不安全水样中的分布情况。

识别潜在的危险化学物质(异常值分析)
使用箱线图或其他可视化工具来识别各化学物质中的异常值。
分析这些异常值是否与水质不安全有关。

四、数据准备

1.导入库

import warnings
warnings.filterwarnings("ignore")

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib import font_manager
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.preprocessing import StandardScaler
from lazypredict.Supervised import LazyClassifier
from imblearn.over_sampling import SMOTE

## 加载字体
font_path = "dellarespira-regular.ttf"
font_manager.fontManager.addfont(font_path)
prop = font_manager.FontProperties(fname=font_path)

## 定义全局使用
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = prop.get_name()

plt.rcParams['axes.unicode_minus'] = False

这段代码主要进行了一些初始化和配置工作,为后续的数据处理和可视化打下了基础。首先,导入了多个库,这些库提供了数据处理、可视化和机器学习的功能。接着,通过warnings.filterwarnings(“ignore”)来忽略可能出现的警告信息。然后,加载了一个自定义的字体文件,并将其设置为matplotlib的字体,以确保绘图中的文字能以指定的字体显示。最后,设置了matplotlib的全局字体参数,确保所有图形的字体都使用这个自定义字体。

2.数据读取及预处理

#读取数据
df = pd.read_csv("data/waterQuality.csv")
df.drop_duplicates(inplace=True)
# 查看数据信息
items = [
    [
        col, 
        df[col].dtype, 
        df[col].isnull().sum(),
    ] for col in df
]
display(pd.DataFrame(data=items, columns=[
    'Attributes',
    'Data Type',
    'Total Missing',
]))

在这里插入图片描述
相当于info()函数,不过这样的好处是更加美观,可操作性更强(部分结果)

def conver_type(value):
    try:
        res =

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

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

相关文章

C# OpenCvSharp DNN Gaze Estimation

目录 介绍 效果 模型信息 项目 代码 frmMain.cs GazeEstimation.cs 下载 C# OpenCvSharp DNN Gaze Estimation 介绍 训练源码地址:https://github.com/deepinsight/insightface/tree/master/reconstruction/gaze 效果 模型信息 Inputs ----------------…

正则表达式解析与应用:深度剖析正则表达式的威力

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

pytorch机器学习各种激活函数总结(不完整学习更新中~)

pytorch各种激活函数总结 0.思维导图预览1. ReLU函数1.1 改进版ReLU6函数 2. Sigmoid函数3. Softmax函数4. Tanh函数5.(学习后更新) 0.思维导图预览 1. ReLU函数 ReLU(Rectified Linear Unit)线性整流函数 其公式为: …

常用API(String,StringBuilder,StringJoiner)

文章目录 1.API1.1API概述1.2如何使用API帮助文档 2.String类2.1String类概述2.2String类的特点2.3String类的构造方法2.4创建字符串对象两种方式的区别2.5字符串的比较2.5.1号的作用2.5.2equals方法的作用 2.6用户登录案例2.6.1案例需求2.6.2代码实现 2.7遍历字符串案例2.7.1案…

软件测试|SQL AND和OR运算符解析

简介 在SQL(Structured Query Language)中,AND和OR是两个常用的逻辑运算符。它们用于组合条件来构建复杂的查询语句,帮助我们更精确地过滤和检索数据。本文将详细介绍SQL中的AND和OR运算符,包括其语法、用法以及使用时…

数据结构学习 jz63股票的最大利润

关键词:动态规划 滚动数组优化 这题不要被动态规划吓到了,其实很简单。 用时16min 题目: 思路: 最大利润的实现办法:在最低的时候买入,在最高的时候卖出。 dp状态: dp[i]第i天如果卖出的最…

uniapp中组件库的Checkbox 复选框 的丰富使用方法

目录 #平台差异说明 #基本使用 #自定义形状 #禁用checkbox #自定义形状 #自定义颜色 #横向排列形式 #横向两端排列形式 API #Checkbox Props #CheckboxGroup Props #CheckboxGroup Event 复选框组件一般用于需要多个选择的场景,该组件功能完整&#xff…

STM32疑难杂症

1.keil的奇怪问题 创建的数组分配内存到0x10000000地址的时候,数据总是莫名其妙的出现问题,取消勾选就正常了 stm32f407内部有一个CCM内存,这部分内存只能由内核控制,任何外设都不能够进行访问。这样问题就来了,如果使用keil5进行编程时勾选了这个选项(下图),则编译的…

八、Lua脚本详解—— 超详细操作演示!

八、Lua脚本详解 —— 超详细操作演示! 八、Lua脚本详解8.1 Lua 简介8.2 Linux 系统的Lua8.2.1 Lua 下载8.2.2 Lua 安装8.2.3 Hello World 8.3 Win 系统的Lua8.4 Lua 脚本基础8.4.1 注释8.4.2 数据类型8.4.3 标识符8.4.4 运算符8.4.5 函数8.4.6 流程控制语句8.4.7 循…

2021-05-08 51单片机74HC164、74LS164、74HCT164、74HC154、74HCT154应用三极管控制继电器

74HC164、74HCT164是8位边沿触发式移位寄存器,串行输入数据,然后并行输出。数据通过两个输入端(DSA或DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接在一…

IMS SIP register消息中的Contact header field

SIP register中的Contact还要承载User Agent的能力信息。 实网下抓取的UE log如上,下面就主要看下Contact header field要包含的内容及其含义。 Contact header field设置为包括 UE IP地址或FQDN的SIP URI。 如上图contact中sip:69a5de6a-a03e-46d6-ad7a-b0d974c8f…

大创项目推荐 深度学习图像修复算法 - opencv python 机器视觉

文章目录 0 前言2 什么是图像内容填充修复3 原理分析3.1 第一步:将图像理解为一个概率分布的样本3.2 补全图像 3.3 快速生成假图像3.4 生成对抗网络(Generative Adversarial Net, GAN) 的架构3.5 使用G(z)生成伪图像 4 在Tensorflow上构建DCGANs最后 0 前言 &#…

函数式编程及应用

目录 什么是Lambdalambda表达式的类型及实现方式类型语法 常用函数式接口Customer 函数式编程在Stream中的应用总结参考资料 什么是Lambda Lambda 表达式是 JDK8 的一个新特性,可以取代大部分的匿名内部类,写出更优雅的Java代码。 Lambda 表达式描述了一…

图片剪切软件,让图片处理更加高效

随着数字技术的不断发展,图片剪切也在不断进步。从手动裁剪到自动识别,图片剪切正变得越来越简单、高效,在这里面,图片处理软件的作用是不可忽视的。 所需工具: 一个【首助编辑高手】软件 需要剪切的图片 操作步骤…

【python】魔术方法大全(一)--基础篇

如果对你有帮助,欢迎微信搜索【海哥python】关注这个互联网苟且偷生的工具人。 什么是魔术方法 所谓魔法方法,它的官方的名字实际上叫special method,是Python的一种高级语法,允许你在类中自定义函数,并绑定到类的特殊…

Weblogic安全漫谈(四)

黑名单机制必然会推动两种研究方向的发展:一是挖掘不在黑名单的新组件,是为绕过规则;二是发掘检查的盲区,是为绕过逻辑。 CVE-2020-14756 二次反序列化具有对抗检查逻辑的天生丽质,在CVE-2018-2893中就有利用字节数组…

Kubeadmin实现k8s集群:

Kubeadmin来快速搭建一个k8s集群: 二进制搭建适合大集群,50台以上的主机, 但是kubeadm更适合中小企业的业务集群 环境: Master:20.0.0.71 2核4G 或者4核8G docker kubelet kubectl flannel Node1:20.…

面试题:vue2中option API的和vue3中composition API中的数据和方法能否交互?

结论: vue2中option API中的数据和方法可以从vue3中的composition API中进行调用, 而vue3中的composition API是不可以从vue2中的数据进行调用。 原理: 因为composition API中的函数setup在页面的生命周期中要比vue2中option API中的data、…

MR实战:词频统计

文章目录 一、实战概述二、提出任务三、完成任务(一)准备数据1、在虚拟机上创建文本文件2、上传文件到HDFS指定目录 (二)实现步骤1、创建Maven项目2、添加相关依赖3、创建日志属性文件4、创建词频统计映射器类5、创建词频统计归并…

六、Spring 声明式事务

本章概要 声明式事务概念 编程式事务声明式事务Spring事务管理器 基于注解的声明式事务 准备工作基本事务控制事务属性:只读事务属性:超时时间事务属性:事务异常事务属性:事务隔离级别事务属性:事务传播行为 6.1 声…