циклическая программа для предсказания MLP Keras - PullRequest
1 голос
/ 28 марта 2019

Я (начинающий начинающий) экспериментирую с Keras в приложении данных временных рядов, в котором я создал регрессионную модель и затем сохранил ее для запуска на другом скрипте Python.

Данные временных рядовя имею дело с почасовыми данными, и я использую сохраненную модель в Keras, чтобы предсказать значение для каждого часа в наборе данных.(data = CSV-файл считывается в панды). С учетом данных временных рядов за годы имеется 8760 (часов в году) прогнозов, и в конце я пытаюсь суммировать значения прогнозов в конце.

В приведенном ниже коде я не показываю, как воссоздается архитектура модели (требование кераса для сохраненной модели), а код работает очень медленно.Этот метод кажется подходящим для прогнозов менее 200, но для 8760 код кажется слишком сложным, чтобы когда-либо его завершать.

У меня нет опыта работы с базами данных, но будет ли это лучший метод по сравнению с хранением8760 керас предсказаний в списке Python?Спасибо за любые советы, я все еще еду на кривой обучения ..

#set initial loop params & empty list to store modeled data
row_num = 0
total_estKwh = []


for i, row in data.iterrows():
    params = row.values

    if (params.ndim == 1):
        params = np.array([params])

    estimatedKwh = load_trained_model(weights_path).predict(params)

    print('Analyzing row number:', row_num)

    total_estKwh.append(estimatedKwh)

    row_num += 1


df = pd.DataFrame.from_records(total_estKwh)
total = df.sum()
totalStd = np.std(df.values)
totalMean = df.mean()

1 Ответ

1 голос
/ 28 марта 2019

Кажется, ты делаешь свою жизнь очень трудной без очевидной причины ...

Для начала вам не нужно загружать вашу модель для каждого ряда - это излишне! Вы должны определенно переместиться load_trained_model(weights_path) из цикла for, с чем-то вроде

model = load_trained_model(weights_path)  # load ONCE

и заменить соответствующую строку в цикле на

estimatedKwh = model.predict(params)

Во-вторых, снова неэффективно вызывать модель для прогнозирования построчно; предпочтительно сначала подготовить params в виде массива, а затем передать его в модель для получения пакетных прогнозов. Забудьте также оператор print ..

В общем, попробуйте это:

params_array = []

for i, row in data.iterrows():
    params = row.values

    if (params.ndim == 1):
        params = np.array([params])  # is this if really necessary??

    params_array.append(params)

params_array = np.asarray(params_array, dtype=np.float32)
total_estKwh = load_trained_model(weights_path).predict(params_array)


df = pd.DataFrame.from_records(total_estKwh)
total = df.sum()
totalStd = np.std(df.values)
totalMean = df.mean()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...