def run(self, period, mlName): print("starting prediction for "+period+" days"+ " with "+mlName) dataFrame = getDatafromDb(period) print(dataFrame) myframe = dataFrame.copy() dataFrame = processDbDataForLrTestInput(dataFrame) X_test, y_test = prepareData(dataFrame[['CpuUsage']], lag_start=3, lag_end=25) print("y_test") print(y_test) #print(y_test.timebucket) if(mlName == "LR"): predictedData = linearRegression(X_test) elif(mlName == "RF"): predictedData = randomForest(X_test) elif (mlName == "ARIMA"): dataFrame = getDatafromDb(-1) dataFrame = processDbDataForLrTestInput(dataFrame) X_train, y_train = prepareData(dataFrame[['CpuUsage']], lag_start=3, lag_end=25) history = [x for x in y_train] predictedData = arimaPrediction(y_test, history) else: print("Invalid Model"+ mlName) return # write into promql writeDataToDb(mlName, myframe['timebucket'], myframe['CpuUsage'], predictedData) print("predicted") print(predictedData) print(mlName + " Model completed prediction for "+ period)
def buildRandomForestMNodel(): dataFrame = getDatafromDb(-1) dataFrame = processDbDataForLrTestInput(dataFrame) X_train, y_train = prepareData(dataFrame[['CpuUsage']], lag_start=3, lag_end=25) model = RandomForestRegressor() model.fit(X_train, y_train) return model
def buildLinearRegressionModel(): dataFrame = getDatafromDb(-1) dataFrame = processDbDataForLrTestInput(dataFrame) X_train, y_train = prepareData(dataFrame[['CpuUsage']], lag_start=3, lag_end=25) model = LinearRegression() model.fit(X_train, y_train) return model
def buildArimaModel(): dataFrame = getDatafromDb(-1) dataFrame = processDbDataForLrTestInput(dataFrame) X_train, y_train = prepareData(dataFrame[['CpuUsage']], lag_start=3, lag_end=25) history = [x for x in y_train] model = ARIMA(history, order=(5, 1, 0)) #for t in range(len(y_train)): # model = ARIMA(history, order=(5, 1, 0)) # model_fit = model.fit(disp=0) # output = model_fit.forecast() # yhat = output[0] # predictions.append(yhat[0]) # obs = y_train[t] # history.append(obs) # print('predicted=%f, expected=%f' % (yhat, obs)) return model
def randomForest(xtest): pickleModel = settings.ML_RF_MODEL pickle_in = open(pickleModel, "rb") loadData = pickle.load(pickle_in) dataset = loadData.predict(xtest) return dataset def arimaPrediction(ytest, history): pickleModel = settings.ML_ARIMA_MODEL pickle_in = open(pickleModel, "rb") loadData = pickle.load(pickle_in) print(loadData) predictions = list() print(len(history)) for t in range(len(ytest)): model = ARIMA(history, order=(5,1,0)) model_fit = model.fit(disp=0) output = model_fit.forecast() yhat = output[0] predictions.append(yhat[0]) obs = ytest[t] history.append(obs) print('predicted=%f, expected=%f' % (yhat, obs)) return predictions if __name__ == "__main__": dataFrame = getDatafromDb() #predicted_data = linearRegression(xtest) print(dataFrame)