处理 PEMS-SF 数据集时,我们可以使用 Python 的 pandas 库来处理数据特征。以下是处理数据特征和添加静态特征的步骤:

  1. 导入数据集:使用 pandas 的 read_csv 函数导入 PEMS-SF 数据集中的 csv 文件,例如 V_228.csv。
import pandas as pd

df = pd.read_csv('V_228.csv')
  1. 整理数据:对于 PEMS-SF 数据集中的每个 csv 文件,我们需要将数据按时间顺序排序,并将时间戳转换为 datetime 格式。还可以根据需要删除不必要的列。
df = df.sort_values('Timestamp')
df['Timestamp'] = pd.to_datetime(df['Timestamp'], format='%Y-%m-%d %H:%M:%S')
df = df.drop(columns=['Station_ID'])
  1. 添加静态特征:PEMS-SF 数据集中缺少一些静态特征,例如天气、节假日等。我们可以使用其他数据源来添加这些特征。例如,我们可以使用 NOAA 的 API 获取天气数据,使用 Google 日历 API 获取节假日数据。
import requests
import json
import datetime

# 获取天气数据
def get_weather_data(date):
    url = 'https://www.ncdc.noaa.gov/cdo-web/api/v2/data'
    headers = {'token': 'YOUR_TOKEN_HERE'}
    params = {
        'datasetid': 'GHCND',
        'locationid': 'CITY:US060013',
        'startdate': date.strftime('%Y-%m-%d'),
        'enddate': date.strftime('%Y-%m-%d'),
        'units': 'metric',
        'datatypeid': ['TMAX', 'TMIN']
    }
    response = requests.get(url, headers=headers, params=params)
    data = json.loads(response.text)
    return data['results']

# 获取节假日数据
def get_holiday_data(date):
    url = 'https://www.googleapis.com/calendar/v3/calendars/en.usa%23holiday%40group.v.calendar.google.com/events'
    params = {
        'key': 'YOUR_API_KEY_HERE',
        'timeMin': date.strftime('%Y-%m-%dT00:00:00Z'),
        'timeMax': date.strftime('%Y-%m-%dT23:59:59Z')
    }
    response = requests.get(url, params=params)
    data = json.loads(response.text)
    return data['items']

# 添加天气和节假日特征
def add_static_features(df):
    df['Date'] = df['Timestamp'].dt.date
    df['Weather_Tmax'] = df['Date'].apply(lambda x: get_weather_data(x)[0]['value'] / 10.0)
    df['Weather_Tmin'] = df['Date'].apply(lambda x: get_weather_data(x)[1]['value'] / 10.0)
    df['Holiday'] = df['Date'].apply(lambda x: len(get_holiday_data(x)) > 0)
    df = df.drop(columns=['Date'])
    return df

df = add_static_features(df)

在以上代码中,我们使用了 NOAA 的 API 和 Google 日历 API 来获取天气和节假日数据。我们定义了三个函数来获取数据,分别是 get_weather_data、get_holiday_data 和 add_static_features。get_weather_data 函数获取指定日期的最高和最低气温数据,get_holiday_data 函数获取指定日期的节假日数据,add_static_features 函数将获取到的天气和节假日数据添加到数据集中。

  1. 添加动态特征:PEMS-SF 数据集中已经包含了一些动态特征,例如车流量和车速。我们可以根据需要添加其他动态特征。例如,我们可以添加每小时的平均车速、车流量和车道数。
# 添加动态特征
def add_dynamic_features(df):
    df['Hour'] = df['Timestamp'].dt.hour
    df['Minute'] = df['Timestamp'].dt.minute
    df['Speed_Avg_Hourly'] = df.groupby(['Hour'])['Speed'].transform('mean')
    df['Volume_Hourly'] = df.groupby(['Hour'])['Volume'].transform('sum')
    df['Lanes'] = df.groupby(['Hour'])['Lane'].transform('max')
    df = df.drop(columns=['Hour', 'Minute'])
    return df

df = add_dynamic_features(df)

在以上代码中,我们使用了 pandas 的 groupby 函数来计算每小时的平均车速、车流量和车道数,然后将这些特征添加到数据集中。

  1. 保存数据集:最后,我们可以使用 pandas 的 to_csv 函数将处理后的数据集保存为 csv 文件。
df.to_csv('V_228_processed.csv', index=False)

通过以上步骤,我们可以处理 PEMS-SF 数据集中的特征,并添加静态特征。虽然我们在此示例中使用了 NOAA 的 API 和 Google 日历 API 来获取天气和节假日数据,但您也可以使用其他数据源来添加静态特征。

PEMS-SF 数据集处理指南:特征工程与静态特征添加

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

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