用python+sklearn机器学习实现天气预报 数据
项目地址
系列教程
机器学习参考篇: python+sklearn+kaggle机器学习
用python+sklearn(机器学习)实现天气预报数据 数据
用python+sklearn(机器学习)实现天气预报 准备
用python+sklearn(机器学习)实现天气预报 模型和使用
勘误表
- 感谢"Gbilibili"的提醒,下面url代码生成片段
应从
# 爬取数据链接
url = "http://www.meteomanz.com/sy2?l=1&cou=2250&ind=59287&d1=" +
str(week_ago.day).zfill(2) +
"&m1=" + str(week_ago.month).zfill(2) +
"&y1=" + str(week_ago.month) +
"&d2=" + str(week_pre.day - years[0]).zfill(2) +
"&m2=" + str(week_pre.month).zfill(2) +
"&y2=" + str(week_pre.year - years[1])
改成
# 爬取数据链接
url = "http://www.meteomanz.com/sy2?l=1&cou=2250&ind=59287&d1=" +
str(week_ago.day).zfill(2) +
"&m1=" + str( week_ago.month).zfill(2) +
"&y1=" + str(week_ago.year - years[0]) +
"&d2=" + str(week_pre.day).zfill(2) +
"&m2=" + str(week_pre.month).zfill(2) +
"&y2=" + str(week_pre.year - years[1])
- 感谢@L-Zzxnn的提醒,代码已添加负温度支持,最新代码请以github上为准
0.前言
在上一篇教程里我们已经知道了数据来源网页的规则,所以这一篇就讲数据如何用爬虫获取和机器学习的数据预处理阶段
1.爬虫
爬虫这方面可以参考我之前的一篇文章
a.确认要被爬取的网页网址
首先我们主要要爬取去年今日的半个月前到去年今日,而根据上一篇我们得出的网址规则,我们可以得到(PS:真正的链接里是没有换行的)
http://www.meteomanz.com/sy2?l=1&cou=2250&ind=59287
&d1=去年今日的半个月前的日
&m1=去年今日的半个月前的月份
&y1=去年年份
&d2=今天的日期的日
&m2=今天的日期的月份
&y2=今年年份
而为什么是取去年和时间要半个月呢?因为去年的天气环境相比于前年或者更久之前是和我们现在的天气条件更相似的,可以减少误差,半个月而不是一个星期是因为使用多的数据量可以减少误差,不是一个月而是因为网站的限制,而且在实验中也会增加少量的误差。所以最终取用了去年和半个月的时间。
如果我们是只测今天这一次上面的网址就可以人工填写,但是如果我们要做不用人工填就要用datetime
这个python库
如下:
import datetime as DT
# 取现在日期
today = DT.datetime.now()
# 取b[0]天前日期
week_ago = (today - DT.timedelta(days=b[0])).date()
# b[1]天后
week_pre = (today + DT.timedelta(days=b[1])).date()
我们传入b = [-15 0]
,就可以获取上个半月的日期在week_ago
里,今天的日期在week_pre
里
所以,可以用这一行构建需要的网址
# 爬取数据链接
url = "http://www.meteomanz.com/sy2?l=1&cou=2250&ind=59287&d1=" +
str(week_ago.day).zfill(2) +
"&m1=" + str( week_ago.month).zfill(2) +
"&y1=" + str(week_ago.year - years[0]) +
"&d2=" + str(week_pre.day).zfill(2) +
"&m2=" + str(week_pre.month).