Объединение двух разных наборов данных для машинного обучения

#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')