ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

MLOps极致细节:14. Azure ML案例:数据集预处理

2022-03-21 09:07:06  阅读:272  来源: 互联网

标签:虚拟环境 14 数据 df ML Weather Azure csv conditions


MLOps极致细节:14. Azure ML案例:数据集预处理

这一章节我们将介绍我们在Azure ML案例中所使用的数据集,并且对其进行一些预处理,包括填补空缺,编码,添加特征等。


文章目录


1 搭建虚拟环境

(我们将代码从gitee上clone下来。)

首先,我们在Windows的平台下安装Anaconda3。具体的安装步骤此处略过,参见Anaconda的官方文档。

安装完后,新建虚拟环境。使用conda create -n [your_env_name] python=X.X(3.6)命令创建python版本为X.X、名字为your_env_name的虚拟环境。根据Install the Azure Machine Learning SDK for Python描述,如果是要安装azureml-core,最好对应的python版本是3.6或者3.7。

安装完默认的依赖后,我们进入虚拟环境:conda activate [your_env_name]。注意,如果需要退出,则输入conda deactivate。另外,如果Terminal没有成功切换到虚拟环境,可以尝试conda init powershell,然后重启terminal。

然后,我们在虚拟环境中下载好相关依赖:pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

requirements.txt文件包括:

mlflow==1.23.1
azureml-sdk==1.39.0
pandas==1.1.5
matplotlib==3.3.4
seaborn==0.11.2
scikit-learn==1.0.2

这里,azureml-sdk指的是Azure机器学习SDK

2 数据集预处理

这里我们所使用的数据集存放于Dataset文件夹下:weather_dataset_raw.csv。我们的目标是通过搭建一个ML模型来至少提前4小时预测当地的天气是否有雨。

数据包括:

在这里插入图片描述

以下为每一列的名称和格式

S_No                        int64
Timestamp                  object
Location                   object
Temperature_C             float64
Apparent_Temperature_C    float64
Humidity                  float64
Wind_speed_kmph           float64
Wind_bearing_degrees        int64
Visibility_km             float64
Pressure_millibars        float64
Weather_conditions         object

2.1 填补空缺:tf.fillna

在查看数据的过程中,我们发现,Weather_conditions这一列有一些是空着的,所以,我们这里先将空白或者na的值改为上一行的值。

if df.isnull().values.any():
    df['Weather_conditions'].fillna(method='ffill',inplace=True,axis=0)

除此之外,Timestamp列为object 格式,需要更改为DateTime格式 :

df['Timestamp'] = pd.to_datetime(df['Timestamp'])

2.2 编码:LabelEncoder

另外由于我们的目标是预测天气是否有雨,所以原来的标签:rain, snow, clear,可以变为rain, no_rain:

print("Collect labels of Weather_conditions column with frequencies: {0}".format(df.Weather_conditions.value_counts()))
df["Weather_conditions"].replace({"snow": "no_rain", "clear": "no_rain"}, inplace=True)

然后我们对其编码,rain, no_rain分别对应0和1:

le = LabelEncoder()
y = df['Weather_conditions']
y = le.fit_transform(y)

并且我们新加一列currentWeather,并且我们将Weather_conditions这一列删除:

y = pd.DataFrame(data=y, columns=["currentWeather"])
df = pd.concat([df, y], axis=1)
df.drop(['Weather_conditions'],axis=1,inplace=True)

2.3 新增特征

因为我们的任务是预测未来4小时的天气状况(是否有雨),因此我们通过将currentWeather移动四行创建了一个名为futureWeather的新特征,需要注意的是,导入的数据每行记录的时间间隔为一小时。

df['featureWeather'] = df.currentWeather.shift(4, axis = 0) 
df.dropna(inplace=True)
df['featureWeather'] = df['featureWeather'].apply(np.int64)

2.4 特征的相关性

我们可以通过皮尔逊相关系数来观察特征之间的相关性:

corrMatrix = df.corr()
sn.heatmap(corrMatrix, annot=True)
plt.show()

在这里插入图片描述

比如,从上图来看,我们发现,Temperature_CApparent_Temperature_C的相关性高达0.99,那么我们就不用把Apparent_Temperature_C放进模型里面。另外,S_No指的是index值,所以我们也不用将其放入模型。

df.drop(['S_No', 'Apparent_Temperature_C'],axis=1,inplace=True)

最后,我们将处理完的数据保存:

df.to_csv('Dataset/weather_dataset_processed.csv',index=False)

2.5 生成训练数据集以及验证数据集

经过了上述的数据预处理步骤,最后我们需要将现有数据分为训练数据集以及验证数据集,然后保存到本地。

# 我们将处理完的数据分为训练数据集以及验证数据集
dfTrn = df.iloc[:int(8/10*df.shape[0])]
dfVal = df.drop(dfTrn.index)
# 将两个数据集保存到本地
dfTrn.to_csv('Dataset/training_data.csv',index=False)
dfVal.to_csv('Dataset/validation_data.csv',index=False)

标签:虚拟环境,14,数据,df,ML,Weather,Azure,csv,conditions
来源: https://blog.csdn.net/m0_67392273/article/details/123626746

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有