大家好,我是微学AI,最近天气真的是多变啊,忽冷忽热,今天再次给大家带来天气的话题,机器学习实战5-天气预测系列,我们将探讨一个城市的气象数据集,并利用机器学习来预测该城市的天气状况。该数据集包含年平均温度和湿度等信息。
一、准备工作
首先,我们需要了解一下数据集中包含哪些信息。原始数据集可能包含多个变量,但我们主要关注年平均温度和湿度这两个因素对天气状况的影响。年平均温度和湿度可以很好地反映该城市的气候状况,因此它们是预测天气状况的重要变量。我们会对数据集中的各种字段进行分析。
在数据预处理和分析完成之后,我们可以使用各种机器学习算法进行预测。这些算法可以分为有监督学习和无监督学习。有监督学习算法需要使用标记数据集进行训练,以生成预测模型。常用的有监督学习算法包括线性回归、决策树、随机森林、向量机分类模型(SVC算法)等。无监督学习算法则不需要标记数据集,而是通过发现数据集中的潜在规律进行预测。常用的无监督学习算法包括聚类、降维等。本文采用向量机分类模型进行分类预测。
二、代码实践
1.数据导入
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
plt.rcParams['font.sans-serif']=['SimHei']
df = pd.read_csv('weather_dataset.csv')
labels = pd.read_csv('weather_labels.csv')
我们将导入数据,数据的获取链接:链接:https://pan.baidu.com/s/1lxdjR5-URwYPWzRkSYizVg?pwd=ave6
提取码:ave6
数据样例:
DATE MONTH BASEL_cloud_cover BASEL_humidity BASEL_pressure BASEL_global_radiation BASEL_precipitation BASEL_sunshine BASEL_temp_mean BASEL_temp_min BASEL_temp_max BUDAPEST_cloud_cover BUDAPEST_humidity BUDAPEST_pressure
20000101 1 8 0.89 1.0286 0.2 0.03 0 2.9 1.6 3.9 3 0.92 1.0268
20000102 1 8 0.87 1.0318 0.25 0 0 3.6 2.7 4.8 8 0.94 1.0297
20000103 1 5 0.81 1.0314 0.5 0 3.7 2.2 0.1 4.8 6 0.95 1.0295
20000104 1 7 0.79 1.0262 0.63 0.35 6.9 3.9 0.5 7.5 8 0.94 1.0252
20000105 1 5 0.9 1.0246 0.51 0.07 3.7 6 3.8 8.6 5 0.88 1.0235
20000106 1 3 0.85 1.0244 0.56 0 5.7 4.2 1.9 6.9 5 0.89 1.026
20000107 1 8 0.84 1.0267 0.2 0 0 4.7 1.8 6.2 8 1 1.0299
20000108 1 4 0.79 1.0248 0.54 0 4.3 5.6 4.1 8.4 8 0.97 1.0302
20000109 1 8 0.88 1.0243 0.11 0.65 0 4.6 3.8 5.7 8 0.95 1.0289
20000110 1 8 0.91 1.0337 0.06 0.09 0 2.4 1.4 3.8 6 0.89 1.0323
20000111 1 8 0.88 1.0373 0.06 0 0 3.2 2.6 3.9 7 0.86 1.0381
20000112 1 8 0.77 1.0319 0.1 0 0 2.4 0.8 3 6 0.78 1.0378
2.2000年的温度变化图
df_budapest = pd.concat([df.iloc[:,:2],df.iloc[:,11:19]],axis=1)
df_budapest['DATE'] = pd.to_datetime(df_budapest['DATE'],format='%Y%m%d')
def mean_for_mth(feature):
mean = []
for x in range(12):
mean.append(
float("{:.2f}".format(df_budapest[df_budapest['MONTH'] == (x+1)][feature].mean())))
return mean
df_budapest.drop(['MONTH'],axis=1).describe()
#sns.set(style="darkgrid")
plt.figure(figsize=(12,6))
plt.plot(df_budapest['DATE'][:365],df_budapest['BUDAPEST_temp_mean'][:365])
plt.title('2000年的温度变化图')
plt.xlabel('DATE')
plt.ylabel('DEGREE')
plt.show()
3.布达佩斯(匈牙利首都)年平均温度
months = ['Jan', 'Febr', 'Mar', 'Apr', 'May', 'Jun', 'Jul',
'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
mean_temp = mean_for_mth('BUDAPEST_temp_mean')
plt.figure(figsize=(12,6))
bar = plt.bar(x = months,height = mean_temp, width = 0.8, color=['thistle','mediumaquamarine', 'orange'])
plt.xticks(rotation = 45)
plt.xlabel('MONTHS')
plt.ylabel('DEGREES')
plt.title('布达佩斯(匈牙利首都)年平均温度')
plt.bar_label(bar)
plt.show()
4.布达佩斯(匈牙利首都)的年平均湿度
mean_temp = mean_for_mth('BUDAPEST_humidity')
plt.figure(figsize=(12,6))
bar = plt.bar(x = months, height = mean_temp, width = 0.8, color=['thistle','mediumaquamarine', 'orange'])
plt.xticks(rotation = 45)
plt.xlabel('MONTHS')
plt.ylabel('HUMIDITY')
plt.title('布达佩斯(匈牙利首都)的年平均湿度')
plt.bar_label(bar)
plt.show()
5.各指标的分布次数图
fig, axs = plt.subplots(2, 2, figsize=(12,8))
fig.suptitle('各指标的分布次数图')
sns.histplot(data = df_budapest, x ='BUDAPEST_pressure', ax=axs[0,0], color='red', kde=True)
sns.histplot(data = df_budapest, x ='BUDAPEST_humidity', ax=axs[0,1], color='orange', kde=True)
sns.histplot(data = df_budapest, x ='BUDAPEST_temp_mean', ax=axs[1,0], kde=True)
sns.histplot(data = df_budapest, x ='BUDAPEST_global_radiation', ax=axs[1,1], color='green', kde=True)
plt.show()
6. 分析天气标签提供一些基本的数据探索和采样策略
针对数据进行了一些数据探索和取样,具体包括以下步骤:
1.统计 天气标签(labels)的数量分布并使用 seaborn 绘制了计数图;
2.计算天气标签(labels)为真和为假的百分比;
3.将 天气标签转换为整数,并使用 seaborn 绘制了标签(labels)与温度的关系;
4.统计了过采样后的天气标签(labels)的数量分布并使用 seaborn 绘制了计数图;
5.绘制了数据集的特征之间的相关性热图。
labels_budapest = labels['BUDAPEST_BBQ_weather']
sns.set(style="darkgrid")
plt.figure(figsize=(12,6))
sns.countplot(x = labels_budapest).set(title='Labels for BUDAPEST')
true_val = len(labels_budapest[labels_budapest == True])
false_val = len(labels_budapest[labels_budapest == False])
print('Precent of True values: {0:.2f}%'.format(true_val/(true_val+false_val)*100))
print('Precent of False values: {0:.2f}%'.format(false_val/(true_val+false_val)*100))
labels_budapest = labels_budapest.astype(int)
plt.figure(figsize=(12,6))
sns.set(style="darkgrid")
sns.boxplot(y = df_budapest['BUDAPEST_temp_mean'], x = labels_budapest).set(title='Relation between the temperature and the bbq weather')
labels_budapest = labels_budapest.astype(int)
df_budapest = df_budapest.drop(['DATE'],axis=1)
from imblearn.over_sampling import RandomOverSampler
oversample = RandomOverSampler()
ovrspl_X, ovrspl_y = oversample.fit_resample(df_budapest, labels_budapest)
labels_budapest = labels['BUDAPEST_BBQ_weather']
sns.set(style="darkgrid")
plt.figure(figsize=(12,6))
sns.countplot(x = ovrspl_y).set(title='Oversampled Labels for BUDAPEST')
true_val = len(ovrspl_y[ovrspl_y == 1])
false_val = len(ovrspl_y[ovrspl_y == 0])
print('Precent of True values: {0:.1f}%'.format(true_val/(true_val+false_val)*100))
print('Precent of False values: {0:.1f}%'.format(false_val/(true_val+false_val)*100))
plt.figure(figsize=(12,6))
sns.set(style="darkgrid")
sns.heatmap(df_budapest.corr(),annot=True,cmap='coolwarm').set(title='Correlation between features')
plt.show()
7. 基于SVC模型的机器学习预测天气分类
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
norm_X = scaler.fit_transform(ovrspl_X)
norm_X = pd.DataFrame(norm_X, columns=df_budapest.columns)
norm_X.describe()
from sklearn.model_selection import train_test_split
# Splitting dataset on training and testing datasets
X_train, X_test, y_train, y_test = train_test_split(ovrspl_X,ovrspl_y, test_size = 0.3, random_state = 42)
print('Training set: ' + str(len(X_train)))
print('Testing set: ' + str(len(X_test)))
from sklearn.svm import SVC
model = SVC(verbose=True, kernel = 'linear', random_state = 0)
model.fit(X_train,y_train)
y_predict = model.predict(X_test)
from sklearn.metrics import classification_report, confusion_matrix, accuracy_score
print('Classification report--------------------------------')
print(classification_report(y_test,y_predict))
sns.heatmap(confusion_matrix(y_test,y_predict), annot=True, fmt='g').set(title='Confusion Matrix')
print('Model accuracy is: {0:.2f}%'.format(accuracy_score(y_test, y_predict)*100))
运行结果:
Training set: 3235
Testing set: 1387
[LibSVM]................................*...............................*................................................*
optimization finished, #iter = 110434
obj = -581.485644, rho = -4.010761
nSV = 647, nBSV = 635
Total nSV = 647
Classification report--------------------------------
precision recall f1-score support
0 0.98 0.91 0.95 712
1 0.92 0.98 0.95 675
accuracy 0.95 1387
macro avg 0.95 0.95 0.95 1387
weighted avg 0.95 0.95 0.95 1387
Model accuracy is: 94.66%
文章结束,欢迎大家咨询与合作。
文章知识点与官方知识档案匹配,可进一步学习相关知识
算法技能树首页概览58049 人正在系统学习中
关注博主即可阅读全文
微学AI
关注
22
201
22
专栏目录
天气/气象相关公开数据集
weixin_56831217的博客
4755
全球天气/气候/气象公开数据集
Python数据分析与机器学习实战
06-09
Python数据分析与机器学习实战教程,该课程精心挑选真实的数据集为案例,通过python数据科学库numpy,pandas,matplot结合机器学习库scikit-learn完成一些列的机器学习案例。课程以实战为基础,所有课时都结合代码演示...
22 条评论
qq_18664761
热评
请问true和false代表什么呢?
写评论
Sklearn机器学习——预测明天是否会下雨_检测下雨的算法
2-6
考虑到大家渴 望学习真实数据上的预处理的需求,以及SVM需要在比较规则的数据集上来表现的特性,我为大家准备了这个 Kaggle上下载的,未经过预处理的澳大利亚天气数据集。我们的目标是在这个数据集上来预测明天是否会下雨。 1.1 案例目的 这个...
使用机器学习预测天气(第三部分神经网络)_基于神经网络的天气识别机器...
2-4
线性回归模型非常有效,并且可以被用于数值化(比如分类)、预测(比如预测天气)。线性回归算法也比较与局限性,它要求数据之间具有线性关系。 针对于非线性关系的场景,数据挖掘和机器学习有数不清的算法来处理。近些年最火的要数神经网络...
天气分类数据集共9000个样本
04-15
利用cnn模型训练最好结果达到96.3%。 大小:训练集共7180张,测试集共808张 种类:class_ = ['cloudy', 'dew', 'fogsmog', 'frost', 'glaze', 'hail', 'lightning', 'rain', 'rainbow', 'rime', 'sandstorm', 'shine', 'snow', 'sunrise'] 训练集:data/train_data 测试集:data/test_data
神经网络预测天气的气温数据集
03-15
神经网络预测天气的气温数据集,包括了:year,moth,day,week分别表示的具体的时间;temp_2:前天的最高温度值;temp_1:昨天的最高温度值;average:在历史中,每年这一天的平均最高温度值;actual:这就是我们的标签值了,当天的真实最高温度;friend:这列用不到暂不用管
基于TensorFlow 实战案例:气温预测(附 Python 完整代码和数据集)
2-9
kernel_initializer='random_normal',kernel_regularizer=tf.keras.regularizers.l2(0.01)))# 输出层设置为1,即输出一个预测结果
机器学习-Sklearn-11(支持向量机SVM-SVC真实数据案例:预测明天是否会下 ...
2-8
#11、SVC真实数据案例:预测明天是否会下雨#这个案例的核心目的,是通过巧妙的预处理和特征工程来向大家展示,在现实数据集上我们往往如何做数据预处理,或者我们都有哪些预处理的方式和思路。预测天气是一个非常非常困难的主题,因为影响天气的...
python天气数据分析与处理,python天气数据分析论文
nannannanmu的博客
55
大家早好、午好、晚好吖 ❤ ~欢迎光临本文章前几天的长沙,白天大太阳,晚上下暴雨一点也琢磨不透天气老人家它的想法顺便哔哔一点生活小插曲:前几天的时候,我出门,家里的几扇窗户开着在透气等我十一点回到家,我的客厅和厨房进了一地的水太让人伤心了,好啦,话不多说!让我们进入正题吧用python对天气数据进行采集,并作可视化图表。
【关于时间序列的ML】项目 5 :用机器学习预测天气
sikh_0529的博客
4573
在我们可以对我们的机器学习模型做出和评估任何预测以预测天气之前,我们需要建立一个基线,一个我们希望用我们的模型击败的合理指标。在将我们的 wrangle 函数调用到我们的 global_temp 数据帧之后,我们现在可以看到我们的 global_temp 数据帧的一个新的清理版本,没有缺失值。数据准备的具体步骤将取决于所使用的模型和收集的数据,但需要进行一定数量的数据处理。首先,我们需要一些数据,我用来通过机器学习预测天气的数据是从世界上最负盛名的研究型大学之一创建的,我们将假设数据集中的数据是真实的。
AI气象大模型最新总结 ! 揭秘智能天气预测的新纪元
2-7
除此之外,还有一些新兴的AI气象模型如前NASA科学家创立的初创公司开发的Zeus AI,专注于短期预测,以及谷歌研究和谷歌DeepMind开发的最新模型MetNet-3,它提供高分辨率的短期天气预测。这些模型利用最新的人工智能和机器学习技术,显著提升了气象...
机器学习入门 --- 基于随机森林的气温预测(一)使用随机森林算法完成基 ...
2-9
观察数据量与特征个数对结果影响 在保证算法一致的前提下, 加大数据个数,观察结果变换。重新考虑特征工程,引入新特征后观察结果走势。 对随机森林算法进行调参,找到最合适的参数 掌握机器学习中两种经典调参方法,对当前模型进行调节 ...
神经网络算法及对未来一月的天气状况预测
m0_73485263的博客
1819
随着我国计算机与互联网技术的不断发展,我国各大行业智能化的进程得以不断的加快,特别是在进入2019年以后,我国气象监测行业的发展正在逐渐向外国的最好的产品靠拢,使得我国各个行业中的测量技术得到了不错的改进。计算机软件技术与网络技术的发展使得,越来越多基于计算机技术与网络技术的软件系统得以被应用到我们的日常生活和工作中去。
python天气气象数据爬取分析可视化系统(源码+文档)计算机毕业设计
q_3375686806的博客
563
python天气气象数据爬取分析可视化系统(源码+文档)计算机毕业设计
机器学习sklearn-支持向量机实例(预测天气)_支持向量机预测实例-CSDN博 ...
2-4
在现实中,我们会先分训练集和测试集,再开始进行数据预处理。这是由于,测试集在现实中往往是不可获得的,或者被假设为是不可获得的,我们不希望我们建模的任何过程受到测试集数据的影响,否则的话,就相当于提前告诉了模型一部分预测的答案...
项目分享:机器学习天气数据分析与预测系统_气象数据分析 机器学习-CSDN...
1-23
并构建机器学习聚类算法实现对天气数据的预测分析。 2. 功能组成 基于机器学习的天气数据分析与预测系统的功能组成如下图所示: 3. 热门城市天气数据获取 天气数据主要包括:天气状况、气温、风力风向、AQI指数等,本项目利用 python 编写网络...
19个可用的天气和气候数据集
风起于青萍之末,折秀于林
5667
多个国家的气象和气候以及天气数据集
基于机器学习的天气数据分析与预测系统
热门推荐
Python极客之家
2万+
本项目利用网络爬虫技术从某天气预报网站抓取某一城市的历史天气数据,构建天气数据分析与预测系统,实现对天气状况、最高气温、最低气温、风力和风向等维度的可视化分析和横向纵向比较, 并构建机器学习聚类算法实现对天气数据的预测分析。...
计算机毕业设计:基于python机器学习的全国气象数据采集预测可视化系统 预测模型+爬虫(包含文档+源码+部署教程)
q_3375686806的博客
2930
计算机毕业设计:基于python机器学习的全国气象数据采集预测可视化系统 预测模型+爬虫(包含文档+源码+部署教程)
Pytorch实战——气温预测(基础)附完整代码
HengHengZo的博客
1605
各个参数的设置是根据前面的特征数量来进行确定,我们要进行128个神经元的设计,需要凑一个14*128的矩阵给weights,同理,最后预测结果为一个结果,所以我们要将weights2设置为128*1.在数据集当中,很明显数据集是大大小小的,有一些数值非常大,一些数值非常小,这个时候需要对其进行归一化,将所有数值按照权重、影响占比等缩放在(0,1)的范围当中。首先要进行权重的初始化,来为后面的学习打下基础,切记需要将每一次迭代后的梯度进行清零,否则将会一直累加,影响结果。此时可看到,时间数据都存在于一起。
毕业设计项目,Python课程设计项目:基于python机器学习的天气预测及可视化,采用随机森林算法+pyecharts实现
06-21
天气预测和天气可视化是一个基于python机器学习(ml)的长春地区的天气预报项目,它实现了天气数据的爬取,预测和可视化。 项目结构如下: * 天气数据的来源 GetData文件使用python爬虫技术,爬取长春和全国的天气信息数据 爬取网站:http://tianqi.2345.com/wea_history/54161.htm ProcessDate文件对爬取的天气数据进行了预处理 几个CSV文件保存的是爬取后并经过处理的数据 * 天气数据的预测 GetModel文件通过训练预测模型来预测长春近一周的天气,该文件利用Joblib将模型保存到本地 Main文件是项目主文件,通过运行该文件即可运行整个项目,该文件前部分获取保存到本地的预测模型来进行预测,并将预测结果打印到控制台 * 天气数据的可视化 Main文件后部分实现了天气数据的可视化 项目利用了pyecharts框架来实现绘图功能,实现天气的可视化 1. pyecharts是基于Echart图表的一个类库,而Echart是百度开源的一个可视化JavaScript库。 2. pyecharts主要基于
机器学习实战案例-基于回归算法(Lasso、Ridge)对波士顿房屋租赁价格进行预测
05-09
本资源包含实用机器学习中的回归算法,对波士顿房价租赁价格数据进行预测的源码建模及可视化分析过程。包含程序源码及训练数据文件。 波士顿房价数据集统计的是20世纪70年代中期波士顿郊区房价的中位数,统计了城镇...
Python数据分析与机器学习实战课程
02-11
Python数据分析与机器学习实战课程,全套14.17G,仅有免密视频,课程目录: 01 人工智能入门指南 02 科学计算库-numpy 03 数据分析处理库-Pandas 04 可视化库-Matplotlib 05 机器学习入门算法实战-K近邻 06 线性回归...
python机器学习和数据分析
01-06
Python数据分析与机器学习实战教程,该课程精心挑选真实的数据集为案例,通过python数据科学库numpy,pandas,matplot结合机器学习库scikit-learn完成一些列的机器学习案例。课程以实战为基础,所有课时都结合代码演示...
Python项目开发实战_机器学习-从看似混乱的数据中找出规律_编程案例实例详解课程教程.pdf
05-02
人工智能学科已经成为当今科技的主流。Python 语言之所以能被成为人工智能第一语言,原因在于,其内部封装了大量调用简单、功能强大的库。...(2)训练模型并实现可视化; (3)评估模型; (4)保存模型,并应用模型。
【机器学习300问】22、什么是超参数优化?常见超参数优化方法有哪些?
qq_39780701的博客
1007
什么是超参数优化?常见超参数优化方法有哪些?为什么要进行超参数优化?
【机器学习300问】23、什么是主动学习?
最新发布
qq_39780701的博客
1155
什么是主动学习?主动学习的过程?常见的样本选择策略?
python数据分析与机器学习实战源码下载
06-21
### 回答1: Python数据分析与机器学习实战是一本非常优秀的书籍,内容既广泛又深入,适合初学者和有一定