其他分享
首页 > 其他分享> > MLOps极致细节:14. Azure ML案例:数据集预处理

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

作者:互联网

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