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 шт):
Но тем не менее отвечу. Первым делом нужно смотреть, что у вас получается в результате предсказания. А получается у вас массив 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
уже понимает как в в колонке разместить.