PEMS-SF 数据集处理指南:特征添加与静态数据整合
处理 PEMS-SF 数据集的一般步骤如下:
- 读取数据集的 .mat 文件并转换为 DataFrame 格式
- 对数据进行清洗和预处理,例如去除缺失值和异常值
- 对时间戳进行处理,例如提取小时、星期几等信息作为特征
- 根据需要添加静态特征,例如天气、节假日等
- 根据需要对特征进行归一化或标准化
下面是一个简单的示例代码,其中假设我们已经将 PEMS-SF 数据集的 .mat 文件转换为了 DataFrame 格式。
import pandas as pd
import numpy as np
# 读取数据集
df = pd.read_csv('PEMS-SF.csv')
# 清洗数据
df = df.dropna() # 去除缺失值
df = df[df['speed'] > 0] # 去除速度为0的异常值
# 处理时间戳
df['timestamp'] = pd.to_datetime(df['timestamp'])
df['hour'] = df['timestamp'].dt.hour # 提取小时作为特征
df['weekday'] = df['timestamp'].dt.weekday # 提取星期几作为特征
# 添加静态特征
weather_df = pd.read_csv('weather.csv') # 读取天气数据
holiday_df = pd.read_csv('holiday.csv') # 读取节假日数据
df = pd.merge(df, weather_df, on='timestamp', how='left') # 合并天气数据
df = pd.merge(df, holiday_df, on='timestamp', how='left') # 合并节假日数据
# 归一化特征
df['speed_norm'] = (df['speed'] - df['speed'].min()) / (df['speed'].max() - df['speed'].min())
df['volume_norm'] = (df['volume'] - df['volume'].min()) / (df['volume'].max() - df['volume'].min())
# 选择特征和目标变量
features = ['hour', 'weekday', 'temperature', 'wind_speed', 'is_holiday']
target = 'speed_norm'
X = df[features]
y = df[target]
其中,我们假设已经有了天气和节假日等静态特征的 csv 文件,可以通过 pd.read_csv() 方法读取。在添加静态特征时,使用 pd.merge() 方法将静态特征和 PEMS-SF 数据集按照时间戳合并。在归一化特征时,我们使用了最小-最大归一化方法将速度和流量特征归一化到 [0,1] 范围内。最后,我们选择了小时、星期几、温度、风速和是否节假日等特征,以及速度归一化后的值作为目标变量。
原文地址: https://www.cveoy.top/t/topic/myiW 著作权归作者所有。请勿转载和采集!