예제 #1
0
 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)
예제 #2
0
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
예제 #3
0
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
예제 #4
0
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
예제 #5
0
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)