处理 PEMS-SF 数据集并添加静态特征的步骤如下:

  1. 导入数据

使用 Pandas 库读取 PEMS-SF 数据集中的 .mat 文件,转换成 DataFrame 格式,方便后续数据处理和特征添加。

import pandas as pd
import scipy.io as sio

data = sio.loadmat('PEMS-SF/data.mat')
speed_data = pd.DataFrame(data['data'])
  1. 整理数据

根据数据集的特点,需要进行一些数据整理工作。首先,将数据集中的每个时间戳(1分钟)的数据按照日期和小时进行分组。然后,将每个小时中的 60 个数据点求平均值作为该小时的平均速度,最后合并到整个数据集中。

speed_data.columns = [f'sensor_{i}' for i in range(1, 325)]
speed_data.index = pd.date_range(start='2017-01-01 00:00:00', periods=len(speed_data), freq='min')

speed_data_hourly = speed_data.groupby([speed_data.index.date, speed_data.index.hour]).mean()
speed_data_hourly.index.names = ['date', 'hour']

speed_data_hourly.reset_index(inplace=True)
speed_data_hourly['datetime'] = pd.to_datetime(speed_data_hourly['date'].astype(str) + ' ' + speed_data_hourly['hour'].astype(str) + ':00:00')
speed_data_hourly.set_index('datetime', inplace=True)

speed_data_hourly.drop(['date', 'hour'], axis=1, inplace=True)

  1. 添加静态特征

PEMS-SF 数据集中没有静态特征,如天气、节假日等,这些特征可以从其他数据源中获取。例如,可以从气象局的网站上爬取天气数据,从政府官方网站上获取节假日信息等。在这里,我们以下载的一个公开数据集为例,假设已经将其存储为 weather.csv 文件。

weather_data = pd.read_csv('weather.csv')
weather_data['datetime'] = pd.to_datetime(weather_data['datetime'])

merged_data = pd.merge(speed_data_hourly, weather_data, on='datetime', how='left')
merged_data.fillna(method='ffill', inplace=True)

  1. 特征工程

在添加了静态特征之后,可以对数据集进行特征工程,如添加时间特征、移动平均等。在这里,我们以添加每个传感器前一小时的平均速度作为特征为例。

merged_data['hourly_avg_speed'] = merged_data.mean(axis=1)

for i in range(1, 325):
    merged_data[f'sensor_{i}_prev_hour_avg_speed'] = merged_data[f'sensor_{i}'].rolling(window=60, min_periods=1).mean().shift(1)

merged_data.dropna(inplace=True)

通过以上步骤,我们可以处理 PEMS-SF 数据集并添加静态特征,方便后续的建模和分析。

PEMS-SF 数据集处理及静态特征添加指南 (Python 示例)

原文地址: https://www.cveoy.top/t/topic/myir 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录