项目地址

系列教程

0.前言

在上一篇教程里我们已经获取了所需要的全部数据,包括训练数据集和测试数据集,使用ProcessData()调用,所以接下来写模型的建立和预测

1.建立模型

没段代码在文章后面都会整合成一段,分段展示只是便于阅读

a.准备

引入所需要的头文件

from sklearn.ensemble import RandomForestRegressor # 随机树森林模型

import joblib # 保存模型为pkl

from sklearn.metrics import mean_absolute_error # MAE评估方法

from ProcessData import ProcessData # 取数据

选择模型

首先我们先要从模型里选择一项适合这次场景的模型,比如从决策树,随机树森林,RGB模型等等中选择,本处选用的随机树森林也就是RandomForest

选择评估方法

目前有许多的模型准确率评估方法,本处使用的是MAE,也就是mean_absolute_error 平均错误数值,就每个预测的数值离正确数值错误数值的平均数

获取数据集

这次可以从ProcessData()获取到全部的被预处理后的数据,如

# 取到数据

[X_train, X_valid, y_train, y_valid, X_test] = ProcessData()

b.建立模型

# 用XGB模型,不过用有bug

# modelX = XGBRegressor(n_estimators=1000, learning_rate=0.05, random_state=0, n_jobs=4)

# # model.fit(X_train_3, y_train_3)

# # model.fit(X_train_2, y_train_2)

# col = ["Ave_t", "Max_t", "Min_t", "Prec","SLpress", "Winddir", "Windsp", "Cloud"]

# modelX.fit(X_train, y_train,

# early_stopping_rounds=5,

# eval_set=[(X_valid, y_valid)],

# verbose=False)

# 随机树森林模型

model = RandomForestRegressor(random_state=0, n_estimators=1001)

# 训练模型

model.fit(X_train, y_train)

其中n_estimators是可自己选的,不过在多次调试后得到1001是MAE最优

c.获取模型评估结果

# 用MAE评估

score = mean_absolute_error(y_valid, preds)

d.用joblib模块保存模型

保存后的模型便于传播即可多次使用,但当前环境下的需求不大但我还是写了

# 保存模型到本地

joblib.dump(model, a)

e.封装

GetModel.py

# -*- coding: utf-8 -*-

# @Time: 2020/12/16

# @Author: Eritque arcus

# @File: GetModel.py

from sklearn.ensemble import RandomForestRegressor

import joblib

from sklearn.metrics import mean_absolute_error

from ProcessData import ProcessData

# 训练并保存模型

def GetModel(a="Model.pkl"):

"""

:param a: 模型文件名

:return:

[socre: MAE评估结果,

X_test: 预测数据集]

"""

# 取到数据

[X_train, X_valid, y_train, y_valid, X_test] = ProcessData()

# 用XGB模型,不过用有bug

# modelX = XGBRegressor(n_estimators=1000, learning_rate=0.05, random_state=0, n_jobs=4)

# # model.fit(X_train_3, y_train_3)

# # model.fit(X_train_2, y_train_2)

# col = ["Ave_t", "Max_t", "Min_t", "Prec","SLpress", "Winddir", "Windsp", "Cloud"]

# modelX.fit(X_train, y_train,

# early_stopping_rounds=5,

# eval_set=[(X_valid, y_valid)],

# verbose=False)

# 随机树森林模型

model = RandomForestRegressor(random_state=0, n_estimators=1001)

# 训练模型

model.fit(X_train, y_train)

# 预测模型,用上个星期的数据

preds = model.predict(X_valid)

# 用MAE评估

score = mean_absolute_error(y_valid, preds)

# 保存模型到本地

joblib.dump(model, a)

# 返回MAE

return [score, X_test]

2.总控

代码

这几篇文章写了零零散散好几个类,所以要写个总文件也就是启动文件串起来,然后在控制台输出

Main.py

# -*- coding: utf-8 -*-

# @Time: 2020/12/16

# @Author: Eritque arcus

# @File: Main.py

import joblib

import datetime as DT

from GetModel import GetModel

import matplotlib.pyplot as plt

# 训练并保存模型并返回MAE

r = GetModel()

print("MAE:", r[0])

# 读取保存的模型

model = joblib.load('Model.pkl')

# 最终预测结果

preds = model.predict(r[1])

# 反归一化或标准化,不过出bug了,不用

# for cols in range(0, len(preds)):

# preds[cols] = scaler.inverse_transform(preds[cols])

# sns.lineplot(data=preds)

# plt.show()

# 打印结果到控制台

print("未来7天预测")

print(preds)

all_ave_t = []

all_high_t = []

all_low_t = []

for a in range(1, 7):

today = DT.datetime.now()

time = (today + DT.timedelta(days=a)).date()

print(time.year, '/', time.month, '/', time.day,

': 平均气温', preds[a][0],

'最高气温', preds[a][1],

'最低气温', preds[a][2],

"降雨量", preds[a][3],

"风力", preds[a][4])

all_ave_t.append(preds[a][0])

all_high_t.append(preds[a][1])

all_low_t.append(preds[a][2])

temp = {"ave_t": all_ave_t, "high_t": all_high_t, "low_t": all_low_t}

# 绘画折线图

plt.plot(range(1, 7), temp["ave_t"], color="green", label="ave_t")

plt.plot(range(1, 7), temp["high_t"], color="red", label="high_t")

plt.plot(range(1, 7), temp["low_t"], color="blue", label="low_t")

plt.legend() # 显示图例

plt.ylabel("Temperature(°C)")

plt.xlabel("day")

# 显示

plt.show()

使用方法

直接用python运行pre_weather/Main.py,就会在控制台输出预测的数据

python pre_weather/Main.py

在你的python代码里用joblib导入生成的模型,然后输入你的数据进行预测

(PS: 因为模型的训练用的数据日期和你预测数据的日期有关,所以不建议直接用使用非当天训练的模型进行预测,误差可能偏大)

如以下代码(在Main.py的11行):

import joblib

# 读取保存的模型

model = joblib.load('Model.pkl')

# 最终预测结果

preds = model.predict(r[1])

其中,r[1]是预测数据

参考Main.py,自己写一个符合你需求的启动文件

3.最后效果

本系列教程到这就结束了,代码具体还要以github项目:PYWeatherReport为主,可能会在这个github项目上不定期优化更新

有问题可以在评论问问

-END-

python数据分析天气预报论文_用python+sklearn(机器学习)实现天气预报数据 模型和使用...相关推荐

  1. python数据分析相关论文_菜鸟学Python|数据分析精华文章大集合

    原标题:菜鸟学Python|数据分析精华文章大集合 这是菜鸟学Python的第123篇原创文章 Python的数据分析是我比较喜欢的一个方向,因为可以探索数据里面的秘密,加上可视乎会非常漂亮,但是里面 ...

  2. python数据分析如何学_用Python做数据分析,Numpy,Pandas,matp

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 用Python做数据分析,Numpy,Pandas,matplotlib是怎么也绕不开的三个包,我最开始学习pandas是看的<利用Python进行 ...

  3. python数据分析实验报告_使用 Python 3 进行气象数据分析

    项目简介 :本实验将对意大利北部沿海地区的气象数据进行分析与可视化.我们在实验过程中先会运用 Python 中 matplotlib 库的对数据进行图表化处理,最终在图表分析的支持下得出我们的结论. ...

  4. python数据分析与人工智能_正版 Python数据分析与可视化 微课视频版 魏伟一 李晓红 大数据与人工智能技术丛书 程序源码...

    第1章数据分析与可视化概述 1.1数据分析 1.2数据可视化 1.3数据分析与可视化常用工具 1.4为何选用Python进行数据分析与可视化 1.5Python数据分析与可视化常用类库 1.6Jupy ...

  5. 基于python的小论文_基于Python的网上论坛的实现

    摘要随着科学技术与计算机网络应用的发展,人们的生活与工作越来越智能化,简洁化,网络化.也就可以腾出更多的时间用来思考周围的事情的合理化与有效话,人们也就更加的想要追求事物的公平公正.在相互讨论与理解的 ...

  6. python房价分析论文_用Python研究了三千套房子,告诉你究竟是什么抬高了房价?...

    关于房价,一直都是全民热议的话题,毕竟不少人终其一生都在为之奋斗. 房地产的泡沫究竟有多大不得而知?今天我们抛开泡沫,回归房屋最本质的内容,来分析一下房价的影响因素究竟是什么? 1.导入数据 impo ...

  7. python数据分析实验报告_用Python处理实验数据

    开篇语 近来忙于考试以及应付专业课,基本很少写简书了.昨晚攻坚了三个学生工作的任务(妈妈的吻.好久没有这么疯狂工作了.还是很爽的哦!) 只恨这张图没有标记时间,其实已经是十二点四十多了 今天难得清静, ...

  8. python数据分析毕业论文摘要_基于python的毕业论文怎么写?

    谢邀! 基于python的在线支付网站的设计与实现,这个问题如果放在公司的话,还是一个挺大层面的东西!且听我娓娓道来~ 1.基于Python,那首先你要会Python基础 2.网站,那你要会前端,至少 ...

  9. python数据分析报告范文_利用PYTHON全自动生成分析报告

    日常工作当中,特别是金融行业当中,有不少人的工作是提取数据,分析数据,得到可视化图表,并加入自已的研究分析结论,最终生成分析报告,并且有不少报告是定期生成,存在不少重复手工劳动.本文通过一个简单实例, ...

最新文章

  1. oracle改表结构,Oracle修改表结构
  2. Smali文件添加try/catch语句,出现“invalid use of move-exception”异常
  3. 初学redux笔记,及一个最简单的redux实例
  4. Java学习笔记之log4j与commons-logging转
  5. python之三元表达式嵌套三元表达式解析
  6. 特征抽取 PCA主成分分析
  7. Java重入函数_重入函数
  8. PowerDesigner 16.5 安装图解 与 快速入门
  9. 此版本的IDM不支持该类下载,请尝试将IDM更新至最新版本。
  10. 云南昆明美容美发店务管理软件
  11. 联想HINKPAD X220安装MacOS Mojave
  12. ai人工智能让女神_人工智能可能只会让你兴奋不已
  13. 在推荐系统中衡量社交朋友兴趣相似度
  14. 动态规划(九章算法)详细学习
  15. 一次帮用户解决源码被敲诈事件
  16. iOS自定义tabBar
  17. Jst知识点个人总结
  18. Python网络爬虫全网资源汇总
  19. matlab励磁系统阶跃仿真,同步发电机励磁控制系统的仿真研究.rar
  20. ubuntu 安装软件(tar.gz / deb)

热门文章

  1. Devexpress xaf针对某个用户登录后在面板中设置导航无效的解决方法
  2. Docker系统六:Docker网络管理
  3. 交换两个整形变量的数值
  4. python set
  5. 【leetcode❤python】 9. Palindrome Number
  6. (1)dotnet开源电商系统-brnshopbrnMall 和老外开发的nopCommerce(dotnet两套电商来PK--第一篇)...
  7. SlidingMenu的使用,结合Fragment(eclipse环境)
  8. JS---捕捉URL地址,以及模仿GET方法
  9. 苹果电脑快捷键有哪些?mac系统快捷键大全详细介绍(全部)_苹果MAC_操作系统_脚本之家
  10. vue-cli 打包