# 一、项目介绍
**项目名称:天气预测和天气可视化**
天气预测和天气可视化是一个基于python机器学习(ml)的长春地区的天气预报项目,它实现了天气数据的爬取,预测和可视化。
项目结构如下:
![img](image/wps26.jpg)
* 天气数据的来源
GetData文件使用python爬虫技术,爬取长春和全国的天气信息数据
爬取网站:http://tianqi.2345.com/wea_history/54161.htm
ProcessDate文件对爬取的天气数据进行了预处理
几个CSV文件保存的是爬取后并经过处理的数据
* 天气数据的预测
GetModel文件通过训练预测模型来预测长春近一周的天气,该文件利用Joblib将模型保存到本地
Main文件是项目主文件,通过运行该文件即可运行整个项目,该文件前部分获取保存到本地的预测模型来进行预测,并将预测结果打印到控制台
* 天气数据的可视化
Main文件后部分实现了天气数据的可视化
# 二、详细介绍
本项目分为三个部分,即爬取和处理数据,数据预测(包含评价方法)和数据可视化
## 1. 爬取和处理数据
数据爬取代码:
````py
resq = requests.get(url, headers=headers, params=params)
data = resq.json()["data"]
# data frame
df = pd.read_html(data)[0]
````
即使用python爬取网站的json数据
### **数据预处理:**
获取到的天气信息包括最高温,最低温都不是int格式的数字,通过对数据截取,将部分指标的数据变换为int类型
并对缺失值进行了处理
````py
my_imputer = SimpleImputer()
imputed_X_train = pd.DataFrame(my_imputer.fit_transform(X_train))
imputed_X_valid = pd.DataFrame(my_imputer.transform(X_valid))
````
通过SimpleImputer ,可以将现实数据中缺失的值通过同一列的均值、中值、或者众数补充起来,本项目使用了SimpleImputer的fit_transform对缺失值进行填充
## 2. 数据预测和模型评价方法
预测数据采用了机器学习算法——线性回归
模型使用过程:
### A. 提取数据
````py
获取测试集、训练集、验证集
[X_train, X_valid, y_train, y_valid, X_test] = ProcessData.ProcessData()
````
其中ProcessData()函数里使用了如下语句:
````py
X_train, X_valid, y_train, y_valid = train_test_split(X, y, train_size=0.8, test_size=0.2, random_state=0)
````
train_test_split()是sklearn包的model_selection模块中提供的随机划分训练集和验证集的函数;使用train_test_split函数将完整的数据集和验证集以同等的比例分成2组不同的数据集和验证集
### B. 训练模型
选择了随机树森林模型(randomforest),然后用fit来训练模型
````py
# 随机树森林模型
model = RandomForestRegressor(random_state=0, n_estimators=1001)
# 训练模型
model.fit(X_train, y_train)
````
### C. 根据数据预测
````py
# 最终预测结果
preds = model.predict(r[1])
````
### D. **模型评价方法**
````py
# 用MAE评估
score = mean_absolute_error(y_valid, preds)
````
对于评估模型准确率的评价方法,本处使用的是MAE,也就是mean_absolute_error 平均绝对误差,就每个预测的数值离正确数值错误数值的平均数
假设:
![img](image/wps27.jpg)
平均绝对误差(Mean Absolute Error)等于:
![img](image/wps28.jpg)
范围[0,+∞),当预测值与真实值完全吻合时等于0,即完美模型;误差越大,该值越大。在本项目中:
MAE: 3.8629148629148626
![img](image/wps17.jpg)
## 3. **数据可视化**
项目利用了pyecharts框架来实现绘图功能,实现天气的可视化
1. pyecharts是基于Echart图表的一个类库,而Echart是百度开源的一个可视化JavaScript库。
2. pyecharts主要基于web浏览器进行显示,绘制的图形比较多,包括折线图、柱状图、饼图、漏斗图、地图、极坐标图等,代码量很少,而且很灵活,绘制出来的图形很美观。
导入相关的包如下:
````py
from pyecharts.charts import Bar, Grid, Line, Tab
from pyecharts.components import Table
from pyecharts.options import ComponentTitleOpts
from pyecharts.charts import Map
from pyecharts import options as opts
````
# 三、项目展示
运行main.py,运行结果如下:
![img](image/wps18.jpg)
同时会生成一个html网页,名为天气网
![img](image/wps19.jpg)
网页内容如下:
## 1. 今日长春
首页今日长春以表格形式展现了长春当日的天气信息,包括日期,最高温,最低温,天气,风力风向,空气质量指数。
![img](image/wps20.jpg)
## 2. 未来长春
以柱形图和折线图显示未来一星期长春天气的预测内容,包括最高温,最低温,空气质量指数。
![img](image/wps21.jpg)
## 3. 近一周长春
以柱形图和折线图显示最近一星期长春的气温(最高温,最低温)和空气质量指数。
![img](image/wps22.jpg)
## 4. 今日中国天气
以表格形式展现中国今日各个省的天气情况,实际显示的数据是该省的省会城市的天气信息。
![img](image/wps23.jpg)
## 5. 今日全国空气质量
以地图形式展现中国今日各个省的的空气质量指数
![img](image/wps24.jpg)
当鼠标移动到某个省上,会显示该省的空气质量:
![img](image/wps25.jpg)
# 四、存在的问题及未来改进的方向
* 存在的问题:
1. 天气信息内容少,爬取数据只包含5个指标
2. 天气预测内容少,只对最高温,最低温,空气质量指标这三个数值指标进行预测,对如天气这类文字类型没有进行处理和预测
3. 预测模型准确率不够高,评估指标MEA为3.8629148629148626,还有提升空间,尽量减少预测值和实际值的误差
4. 网页不能进行交互,如切换城市
* 对应改进方向
1. 更换爬虫目标网站,获取更多天气信息指标,如降雨量
2. 增进预测内容,提高数据多元化
3. 可以改预测模型为RGBoost或用tensorflow来提高模型的准确率,从而降低MAE
4. 可以结合html、js等前端技术来实现一个页面可以交互的网页
程序员张小妍
- 粉丝: 1w+
- 资源: 3605
最新资源
- 基于粒子群算法的电动汽车充电站和光伏最优选址和定容 关键词:选址定容 电动汽车 充电站位置 仿真平台:MATLAB 主要内容:代码主要做的是一个电动汽车充电站和分布式光伏的选址定容问题,提出了
- 伺服送料机,步进电机,伺服电机,程序,三菱,台达,中达一体机,送料机程序,PLC多段数据不同,可任意调节A段B段c段长度,并定长切断 程序能存储5段工件数据,使用调出非常方便 PLC程序有台达ES
- 考虑安全约束及热备用的电力系统机组组合研究 关键词:机组组合 直流潮流 优化调度 参考文档:店主自编文档,模型数据清晰明了 仿真平台:MATLAB+CPLEX gurobi平台 优势:代码具有一定
- 计及源-荷双重不确定性的电厂 微网日前随机优化调度系统 关键词:电厂 微网 随机优化 随机调度 源-荷双重不确定性 电厂调度 参考文档:Virtual power plant mid-ter
- 基于mpc模型预测轨迹跟踪控制,总共包含两套仿真,一套是不加入四轮侧偏角软约束,一套是加入四轮侧偏角的软约束控制,通过carsim与simulink联合仿真发现加入侧偏角软约束在进行轨迹跟踪时,能够通
- 采用下垂控制的孤岛逆变器仿真 名称:droop-controlled-converter-island 软件:Matlab R2016a 控制:下垂控制,闭环电流反馈控制,解耦电压电流环控制,见图1
- 直驱式波浪发电最大功率捕获matlab仿真 电机:直线电机 控制器:PID控制器 策略:基于RLC等效电路模型的最大功率输出 含:使用说明书+教学视频
- 西门子200smart标准程序,西门子程序模板参考,3轴控制程序,含西门子触摸屏程序,详细注释,IO表,电气原理图
- 基于西门子PLC200自动保暖供水系统,系统用于厂区饮用水,区域热水保暖,系统中大多数用于时间进行各个季节,各个时间的控制 供水区域时间的设定 可以实现在每一个阶段按照每一个流程进行不同的运行
- 西门子S7-1200四层电梯模拟程序 电梯WinCC动画程序 西门子参考学习程序 博图15或者以上可以打开 PLC:西门子S7-1200 触摸屏:KTP900 有人会问:为什么是四层电梯参考学习程序
- 整车电子电气正向开发网络架构 , 倘若您是产品经理或者项目经理又或者是技术leader,这个将帮助您梳理在整车电子电气正向开发过程中不同系统的内部架构设计及相互间的关联,涵盖整车控制系统、网联系统、驾
- dsp28335三相逆变程序,可以开环测试
- 含分布式电源的无功补偿(Matlab程序): 1.以无功补偿调节代价为目标函数,不同风光电源渗透率下,优化确定无功补偿装置出力情况(改进灰狼优化算法IGWO) 2.以网损和电压偏差为目标函数,才用分
- 整车控制器 基于MPC和滑模控制算法实现的车辆稳定性控制,建立了横摆角速度、侧向速度、前后质心侧偏角动力学模型作为预测模型,同时考虑车辆的稳定性可通过控制车辆的侧向速度维持在一定范围内保证车辆的稳定性
- COMSOL MATLAB 代码 二维随机裂隙 2维随机裂隙生成 功能:可以实现多组不同方向,不同分布规律的裂隙生成(任意组数都可以) 需要输入的参数有:每组裂隙的迹长范围、分布规律(正态分布o
- 全阶滑模无位置传感器控制仿真模型,有基本的开关函数,有饱和函数,sigmod函数等多种滑模 还有全阶滑模观测器仿真,相比传统滑模观测器消除了额外的低通滤波器,误差更小,效果堪称完美 不仅误差小
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈