#python #pandas #dataframe #machine-learning
Вопрос:
У меня есть два набора данных. Первый — это данные о трафике. Столбцы представляют узлы (местоположения датчиков трафика), а индекс-это время. Значения внутри — это соответствующие значения пространственно-временной скорости. Выглядит примерно так:
In [1]: speed_matrix
Out[1]:
Time node1 node2 node3
2015-01-01 00:00:00 55 45 60
2015-01-01 00:10:00 57 48 58
2015-01-01 00:20:00 56 50 60
Второй набор данных-это данные о погоде, в которых указаны время и погодные условия. Выглядит так:
In [2]: weather_data
Out[2]:
Time temperature humidity windspeed
2015-01-01 00:00:00 10 71 0.0
2015-01-01 00:10:00 10 71 0.0
2015-01-01 00:20:00 11 70 0.0
Я использую эти наборы данных для прогнозирования трафика с помощью класса GraphConvolutionalLSTM отсюда (а также классов PrepareDataset, TestModel и TrainModel).
Я хочу каким-то образом объединить два набора данных и проверить, может ли прогнозирование трафика с помощью дополнительных данных о погоде повысить точность прогнозов. Модель, которую я использую для прогнозирования, отлично работает для speed_matrix, но я не знаю, как добавить данные о погоде. Должен ли я каким-то образом объединить наборы данных в один набор данных? Или внести изменения в модель?
Я попытался просто объединить два кадра данных, как это:
In [3]: merged data
Out[3]:
Time node1 node2 node3 temperature humidity windspeed
2015-01-01 00:00:00 55 45 60 10 71 0.0
2015-01-01 00:10:00 57 48 58 10 71 0.0
2015-01-01 00:20:00 56 50 60 11 70 0.0
Но при запуске кода я получаю ошибку:
RuntimeError: mat1 and mat2 shapes cannot be multiplied (40x331 and 323x323)
Я не уверен, что такое mat1 и mat2 в точности.
Комментарии:
1. Это может быть лучшим вопросом для науки о данных
Ответ №1:
Просто соедините 2 фрейма данных. Они будут выровнены на основе индексов:
merged_data = speed_matrix.join(weather_data)
Ответ №2:
слияние-это ключ здесь:
import pandas
dfinal = speed_matrix.merge(weather_data, on="Time", how = 'inner')