Как использовать model.predict для данных после обучения модели tenorflow? - PullRequest
0 голосов
/ 05 апреля 2020

Я следовал руководству, найденному здесь (регрессия): https://stackabuse.com/tensorflow-2-0-solving-classification-and-regression-problems/, используя этот набор данных: https://drive.google.com/file/d/1mVmGNx6cbfvRHC_DvF12ZL3wGLSHD9f_/view

и получил следующий код:

data = pd.read_csv(r'path')
X = data.iloc[:, 0:4].values
y = data.iloc[:, 4].values

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)


input_layer = Input(shape=(X.shape[1],))
dense_layer_1 = Dense(100, activation='relu')(input_layer)
dense_layer_2 = Dense(50, activation='relu')(dense_layer_1)
dense_layer_3 = Dense(25, activation='relu')(dense_layer_2)
output = Dense(1)(dense_layer_3)

model = Model(inputs=input_layer, outputs=output)
model.compile(loss="mean_squared_error" , optimizer="adam", metrics=["mean_squared_error"])


history = model.fit(X_train, y_train, batch_size=2, epochs=100, verbose=1, validation_split=0.2)


from sklearn.metrics import mean_squared_error
from math import sqrt

pred_train = model.predict(X_train)
print(np.sqrt(mean_squared_error(y_train,pred_train)))

pred = model.predict(X_test)
print(np.sqrt(mean_squared_error(y_test,pred)))

Все работает, и модель обучается, но как мне ее использовать? Я хочу ввести 4 интергера и в ответ получить прогноз. Например, возьмите массив [9, 4554, 1950, 0.634] и затем получите прогнозируемое значение. Независимо от того, что я делаю, модель не примет данные, которые я использую.

Спасибо за помощь!

1 Ответ

0 голосов
/ 05 апреля 2020

Основная проблема, с которой вы сталкиваетесь, согласно моему пониманию, заключается в измерении. Поскольку вы вставляете [9, ..., 0.634], какая из фигур (4,) означает 1D, в то время как X_test, X_train требуют, чтобы они были 2D согласно документации, у вас есть конвертировать 1D в 2D.

Как вы конвертируете

import numpy as np
X_test=[9,...,0.634]
X_test=np.array(X_test)
X_test=X_test.reshape(1,4)
model.predict(X_test)

s enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...