建一个网站首先要怎么做,永久免费网站建设方案,传奇服务器网站如何建设,wordpress 角色 菜单#x1f935;♂️ 个人主页#xff1a;艾派森的个人主页 ✍#x1f3fb;作者简介#xff1a;Python学习者 #x1f40b; 希望大家多多支持#xff0c;我们一起进步#xff01;#x1f604; 如果文章对你有帮助的话#xff0c; 欢迎评论 #x1f4ac;点赞#x1f4… ♂️ 个人主页艾派森的个人主页 ✍作者简介Python学习者 希望大家多多支持我们一起进步 如果文章对你有帮助的话 欢迎评论 点赞 收藏 加关注 目录
1.项目背景
2.项目简介
2.1项目说明
2.2数据说明
2.3技术工具
3.算法原理
4.项目实施步骤
4.1理解数据
4.2数据预处理
4.3探索性数据分析
4.4特征工程
4.5模型构建
4.6模型评估
5.实验总结
源代码 1.项目背景 随着城市化进程的加速空气质量问题日益受到人们的关注。北京市作为中国的首都其空气质量状况更是备受瞩目。为了更好地了解和预测北京市的空气质量本实验旨在基于决策树算法构建一个空气质量预测模型。 通过构建这个模型我们期望能够为相关部门提供科学依据以便更有效地制定空气质量改善策略。同时公众也可以通过这个模型了解未来空气质量趋势提前做好防护措施。为了构建这个模型我们将收集北京市过去一段时间内的空气质量数据包括但不限于PM2.5、PM10、NO2、SO2等主要污染物的浓度。此外我们还将收集可能影响空气质量的多种因素如气象条件温度、湿度、风速、风向等、地理位置、季节变化等。
2.项目简介
2.1项目说明 通过分析这些数据我们将利用决策树算法建立预测模型。决策树算法具有直观易懂、分类效果好等优点适合用于此类预测问题。我们将采用适当的方法对模型进行训练和优化以提高预测精度。最终我们将评估模型的预测效果并探讨其在实际应用中的可行性和潜在价值。希望通过本实验能为北京市的空气质量改善工作提供一定的支持。
2.2数据说明 原始数据共有2155条9个特征变量部分数据如下图 2.3技术工具
Python版本:3.9
代码编辑器jupyter notebook
3.算法原理 决策树( Decision Tree) 又称为判定树是数据挖掘技术中的一种重要的分类与回归方法它是一种以树结构包括二叉树和多叉树形式来表达的预测分析模型。其每个非叶节点表示一个特征属性上的测试每个分支代表这个特征属性在某个值域上的输出而每个叶节点存放一个类别。一般一棵决策树包含一个根节点若干个内部结点和若干个叶结点。叶结点对应于决策结果其他每个结点对应于一个属性测试。每个结点包含的样本集合根据属性测试的结果划分到子结点中根结点包含样本全集从根结点到每个叶结点的路径对应了一个判定的测试序列。决策树学习的目的是产生一棵泛化能力强即处理未见示例强的决策树。使用决策树进行决策的过程就是从根节点开始测试待分类项中相应的特征属性并按照其值选择输出分支直到到达叶子节点将叶子节点存放的类别作为决策结果。
决策树的构建
特征选择选取有较强分类能力的特征。
决策树生成典型的算法有 ID3 和 C4.5 它们生成决策树过程相似 ID3 是采用信息增益作为特征选择度量 而 C4.5 采用信息增益比率。
决策树剪枝剪枝原因是决策树生成算法生成的树对训练数据的预测很准确 但是对于未知数据分类很差 这就产生了过拟合的现象。涉及算法有CART算法。
决策树的划分选择
熵物理意义是体系混乱程度的度量。
信息熵表示事物不确定性的度量标准可以根据数学中的概率计算出现的概率就大出现的机会就多不确定性就小信息熵小。
决策树的剪枝
剪枝顾名思义就是给决策树 去掉 一些判断分支同时在剩下的树结构下仍然能得到不错的结果。之所以进行剪枝是为了防止或减少 过拟合现象 的发生是决策树具有更好的泛化能力。
具体做法去掉过于细分的叶节点使其回退到父节点甚至更高的节点然后将父节点或更高的叶节点改为新的叶节点。
剪枝的两种方法
预剪枝在决策树构造时就进行剪枝。在决策树构造过程中对节点进行评估如果对其划分并不能再验证集中提高准确性那么该节点就不要继续王下划分。这时就会把当前节点作为叶节点。
后剪枝在生成决策树之后再剪枝。通常会从决策树的叶节点开始逐层向上对每个节点进行评估。如果剪掉该节点带来的验证集中准确性差别不大或有明显提升则可以对它进行剪枝用叶子节点来代填该节点。
注意决策树的生成只考虑局部最优相对地决策树的剪枝则考虑全局最优。
4.项目实施步骤
4.1理解数据
# 导入第三方库
import warnings
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
sns.set(fontSimHei)
warnings.filterwarnings(ignore)
# 读取数据
df pd.read_excel(北京市空气质量数据.xlsx)
df.head() # 查看数据前五行 4.2数据预处理 4.3探索性数据分析
plt.scatter(datadf,xAQI,yPM2.5) # 做出AQI和PM2.5的散点图
plt.show() y df[质量等级].value_counts().values # 获取数值
labels df[质量等级].value_counts().index # 获取标签
plt.pie(y,labelslabels, # 设置饼图标签autopct%.2f%%, # 格式化输出百分比)
plt.title(空气质量等级)
plt.show() sns.countplot(df[质量等级]) # 条形图
plt.show() times df[日期]
y1 df[AQI]
y2 df[PM2.5]
plt.figure(figsize(20,8))
plt.plot(times,y1,labelAQI) # 画出AQI的折线图
plt.plot(times,y2,labelPM2.5)# 画出PM2.5的折线图
plt.legend(fontsize20)
plt.show() # 相关系数热力图
sns.heatmap(df.corr(),vmax1,annotTrue,linewidths0.5,cbarFalse,cmapYlGnBu,annot_kws{fontsize:14})
plt.title(各个因素之间的相关系数,fontsize16)
plt.show() 4.4特征工程
编码处理
# 对目标变量-质量等级进行编码处理
df[质量等级].replace({优:0,良:1,轻度污染:2,中度污染:3,严重污染:4,重度污染:5},inplaceTrue)
准备建模数据即目标变量和特征变量然后拆分数据集为训练集和测试集
from sklearn.model_selection import train_test_split
# 准备数据
X df.drop([质量等级,日期],axis1) # 选择特征变量
y df[质量等级]
# 划分数据集其中测试集比例为0.2
X_train,X_test,y_train,y_test train_test_split(X,y,test_size0.2,random_state42)
print(训练集大小:,X_train.shape[0])
print(测试集大小:,X_test.shape[0]) 4.5模型构建
# 构建逻辑回归模型
from sklearn.linear_model import LogisticRegression
lr LogisticRegression()
lr.fit(X_train,y_train)
print(逻辑回归模型准确率,lr.score(X_test,y_test)) # 构建KNN模型
from sklearn.neighbors import KNeighborsClassifier
knn KNeighborsClassifier()
knn.fit(X_train,y_train)
print(KNN模型准确率,knn.score(X_test,y_test)) # 构建决策树模型
from sklearn.tree import DecisionTreeClassifier
tree DecisionTreeClassifier()
tree.fit(X_train,y_train)
print(决策树模型准确率,tree.score(X_test,y_test)) 通过对比模型准确率可以发现决策树模型效果最好准确率100%
4.6模型评估
from sklearn.metrics import f1_score,r2_score,confusion_matrix,classification_report,auc,roc_curve
# 模型评估
y_pred tree.predict(X_test)
print(模型的R方值,r2_score(y_test,y_pred))
print(模型混淆矩阵:,\n,confusion_matrix(y_test,y_pred))
print(模型分类报告:,\n,classification_report(y_test,y_pred)) 5.实验总结 通过基于决策树算法构建的北京市空气质量预测模型的实验研究我们在多方面取得了显著的进展。首先我们成功地整合了来自气象、环保、交通等多个领域的大量数据形成了一个全面而综合的空气质量分析框架。 在模型构建过程中决策树算法展现出了出色的性能。其对于非线性关系的适应性以及对多源数据的高效整合使得我们能够更准确地预测未来空气质量的变化趋势。模型的可解释性和直观性使得我们能够深入理解各个因素对空气质量的影响为决策者提供了有力的支持。 此外我们的研究不仅在理论上取得了显著成果同时也具有广泛的实际应用价值。通过对未来空气质量的精准预测政府和环保机构可以更有效地制定应对措施从而最大限度地降低污染对居民健康的潜在威胁。这种精准的环境管理有望推动城市可持续发展改善居民生活质量。 综上所述本次实验不仅在空气质量预测领域取得了实质性的进展而且为将数据驱动的方法应用于环境科学领域提供了有力的范例。我们的研究不仅为北京市的空气质量管理提供了有力的支持同时也为其他城市和地区的环境科学研究提供了宝贵的经验和启示。
心得与体会
通过这次Python项目实战我学到了许多新的知识这是一个让我把书本上的理论知识运用于实践中的好机会。原先学的时候感叹学的资料太难懂此刻想来有些其实并不难关键在于理解。
在这次实战中还锻炼了我其他方面的潜力提高了我的综合素质。首先它锻炼了我做项目的潜力提高了独立思考问题、自我动手操作的潜力在工作的过程中复习了以前学习过的知识并掌握了一些应用知识的技巧等
在此次实战中我还学会了下面几点工作学习心态
1继续学习不断提升理论涵养。在信息时代学习是不断地汲取新信息获得事业进步的动力。作为一名青年学子更就应把学习作为持续工作用心性的重要途径。走上工作岗位后我会用心响应单位号召结合工作实际不断学习理论、业务知识和社会知识用先进的理论武装头脑用精良的业务知识提升潜力以广博的社会知识拓展视野。
2努力实践自觉进行主角转化。只有将理论付诸于实践才能实现理论自身的价值也只有将理论付诸于实践才能使理论得以检验。同样一个人的价值也是透过实践活动来实现的也只有透过实践才能锻炼人的品质彰显人的意志。
3提高工作用心性和主动性。实习是开端也是结束。展此刻自我面前的是一片任自我驰骋的沃土也分明感受到了沉甸甸的职责。在今后的工作和生活中我将继续学习深入实践不断提升自我努力创造业绩继续创造更多的价值。
这次Python实战不仅仅使我学到了知识丰富了经验。也帮忙我缩小了实践和理论的差距。在未来的工作中我会把学到的理论知识和实践经验不断的应用到实际工作中为实现理想而努力。
源代码
# 导入第三方库
import warnings
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
sns.set(fontSimHei)
warnings.filterwarnings(ignore)
# 读取数据
df pd.read_excel(北京市空气质量数据.xlsx)
df.head() # 查看数据前五行
df.shape # 查看数据大小
df.info() # 查看数据基本信息
df.describe() # 查看数值型变量的描述性统计
df.dropna(inplaceTrue) # 删除缺失值
df.drop_duplicates(inplaceTrue) # 删除重复值
df[质量等级].value_counts() # 查看目标变量-质量等级的数据情况
df df[df[质量等级]!无] # 剔除质量等级为“无”的数据
df[质量等级].value_counts()
plt.scatter(datadf,xAQI,yPM2.5) # 做出AQI和PM2.5的散点图
plt.show()
y df[质量等级].value_counts().values # 获取数值
labels df[质量等级].value_counts().index # 获取标签
plt.pie(y,labelslabels, # 设置饼图标签autopct%.2f%%, # 格式化输出百分比)
plt.title(空气质量等级)
plt.show()
sns.countplot(df[质量等级]) # 条形图
plt.show()
times df[日期]
y1 df[AQI]
y2 df[PM2.5]
plt.figure(figsize(20,8))
plt.plot(times,y1,labelAQI) # 画出AQI的折线图
plt.plot(times,y2,labelPM2.5)# 画出PM2.5的折线图
plt.legend(fontsize20)
plt.show()
# 相关系数热力图
sns.heatmap(df.corr(),vmax1,annotTrue,linewidths0.5,cbarFalse,cmapYlGnBu,annot_kws{fontsize:14})
plt.title(各个因素之间的相关系数,fontsize16)
plt.show()
# 对目标变量-质量等级进行编码处理
df[质量等级].replace({优:0,良:1,轻度污染:2,中度污染:3,严重污染:4,重度污染:5},inplaceTrue)
from sklearn.model_selection import train_test_split
# 准备数据
X df.drop([质量等级,日期],axis1) # 选择特征变量
y df[质量等级]
# 划分数据集其中测试集比例为0.2
X_train,X_test,y_train,y_test train_test_split(X,y,test_size0.2,random_state42)
print(训练集大小:,X_train.shape[0])
print(测试集大小:,X_test.shape[0])
# 构建逻辑回归模型
from sklearn.linear_model import LogisticRegression
lr LogisticRegression()
lr.fit(X_train,y_train)
print(逻辑回归模型准确率,lr.score(X_test,y_test))
# 构建KNN模型
from sklearn.neighbors import KNeighborsClassifier
knn KNeighborsClassifier()
knn.fit(X_train,y_train)
print(KNN模型准确率,knn.score(X_test,y_test))
# 构建决策树模型
from sklearn.tree import DecisionTreeClassifier
tree DecisionTreeClassifier()
tree.fit(X_train,y_train)
print(决策树模型准确率,tree.score(X_test,y_test))
from sklearn.metrics import f1_score,r2_score,confusion_matrix,classification_report,auc,roc_curve
# 模型评估
y_pred tree.predict(X_test)
print(模型的R方值,r2_score(y_test,y_pred))
print(模型混淆矩阵:,\n,confusion_matrix(y_test,y_pred))
print(模型分类报告:,\n,classification_report(y_test,y_pred))