Keras - запись прогноза в эксель

Допустим, есть таблица эксель, в которой столбец А - input, а столбец В - output нейронной сети. Мне нужно, чтобы обученная сеть записала в столбец С исходного файла эксель рассчитанный ей прогноз по значениям в столбце А. Но вместо прогноза Питон дает ошибку. Что я делаю не так? Или прогнозы надо писать в новый файл?

import pandas as pd
import numpy as np
import tensorflow
from tensorflow import keras
from keras.models import Sequential
from keras.layers import Dense


df=pd.read_excel('/content/test.xlsx')
input_data=np.asarray(df.iloc[:,0].values.tolist())

x=input_data.reshape(29,1)
y=np.asarray(df.iloc[:,1].values.tolist())

model = Sequential()

model.add(Dense(20, activation='relu'))
model.compile(loss='mse', optimizer=keras.optimizers.Adam(0.1), metrics=['mae'])

 # Fit the model
model.fit(x, y, epochs=5, batch_size=1)

df['C']=model.predict(x)

Ответы (1 шт):

Автор решения: CrazyElf

Но тем не менее отвечу. Первым делом нужно смотреть, что у вас получается в результате предсказания. А получается у вас массив 29x20, который Pandas не понимает, как записать в колонку датафрейма. Ему нужно просто 29 значений, тогда он сможет его в ваш датафрейм записать. А для этого нужно добавить выходной слой размерности 1 в вашу модель:

model.add(Dense(20, activation='relu'))
model.add(Dense(1, activation='relu')) # <- добавили слой
model.compile(loss='mse', optimizer=keras.optimizers.Adam(0.1), metrics=['mae'])

Теперь на выходе будет массив 29x1, который Pandas уже понимает как в в колонке разместить.

→ Ссылка