import os import keras import numpy as np from keras.applications.imagenet_utils import decode_predictions from classification_models.keras import Classifiers class StockPredictor: RESOURCE_PATH = None stock2Vector = None def __init__(self): return def getDataset(self, df): VECTOR_SIZE = 299 TOTAL_X, TOTAL_Y = [], [] for key in df: if key == "date": continue elif key == "label": TOTAL_Y.append(df[key].tolist()) else: TOTAL_X.append(df[key].tolist()) SIZE_WIDTH = len(TOTAL_X[0]) SIZE_HEIGHT = len(TOTAL_X) X = [] for i in range(VECTOR_SIZE, SIZE_WIDTH): temp_X, temp_Y = np.zeros((VECTOR_SIZE, VECTOR_SIZE)), np.zeros(0) for j in range(SIZE_HEIGHT): temp_X[j][0:VECTOR_SIZE] = TOTAL_X[j][i - VECTOR_SIZE:i] temp_X = np.stack([temp_X, temp_X, temp_X], axis=-1) X.append(temp_X) X = np.asarray(X[len(X)-1]) return X def predict(self, df, minmax_df, isRealTime=False): X = self.getDataset(df) # build model n_classes = 3 Inceptionresnetv2, preprocess_input = Classifiers.get('inceptionresnetv2') X = preprocess_input(X) base_model = Inceptionresnetv2(input_shape=(299, 299, 3), include_top=False) model = keras.models.Model(inputs=[base_model.input]) checkpoint_filename = os.path.join(self.RESOURCE_PATH, "model", "stock.ckpt") model.load_weights(checkpoint_filename) y = model.predict(X) # result print(decode_predictions(y)) return