コード例 #1
0
def test(data, lookBack, epoch, lr, batchSize, method, modelPath):

    # 归一化数据
    scaler = MinMaxScaler(feature_range=(0, 1))
    dataset = scaler.fit_transform(data)

    # 分割序列为样本, 支持RNN或者普通样本形式
    trainData, testData = divideTrainTest(dataset)

    flag = True
    trainX, trainY = createSamples(trainData, lookBack, RNN=flag)
    testX, testY = createSamples(testData, lookBack, RNN=flag)
    print("testX shape:", testX.shape)
    print("testy shape:", testY.shape)
    print("trainX shape:", trainX.shape)
    print("trainy shape:", trainY.shape)

    train(trainX,
          trainY,
          epoch=epoch,
          lr=lr,
          batchSize=batchSize,
          modelPath=modelPath,
          lookBack=lookBack,
          method=method)

    testPred = predict(testX, MODEL_PATH)
    trainPred = predict(trainX, MODEL_PATH)
    print("testPred shape:", testPred.shape)
    print("trainPred shape:", trainPred.shape)

    testPred = scaler.inverse_transform(testPred)
    testY = scaler.inverse_transform(testY)

    MAE = eval.calcMAE(testY, testPred)
    print("test MAE", MAE)
    MRSE = eval.calcRMSE(testY, testPred)
    print("test RMSE", MRSE)
    # MAPE = eval.calcMAPE(testY, testPred)
    # print("test MAPE", MAPE)
    SMAPE = eval.calcSMAPE(testY, testPred)
    print("test SMAPE", SMAPE)

    return trainPred, testPred, MAE, MRSE, SMAPE
コード例 #2
0
def testSVM(data, lookBack):

    scaler = MinMaxScaler(feature_range=(0, 1))
    dataset = scaler.fit_transform(data)

    # 分割序列为样本
    trainData, testData = divideTrainTest(dataset)

    flag = False
    trainX, trainY = createSamples(trainData, lookBack, RNN=flag)
    testX, testY = createSamples(testData, lookBack, RNN=flag)
    print("testX shape:", testX.shape)
    print("testy shape:", testY.shape)
    print("trainX shape:", trainX.shape)
    print("trainy shape:", trainY.shape)

    model = trainSVM(trainX, trainY)

    testPred = predictSVM(testX, model)
    trainPred = predictSVM(trainX, model)
    print("testPred shape:", testPred.shape)
    print("trainPred shape:", trainPred.shape)

    testPred = scaler.inverse_transform(testPred)
    testY = scaler.inverse_transform(testY)

    MAE = eval.calcMAE(testY, testPred)
    print("test MAE", MAE)
    MRSE = eval.calcRMSE(testY, testPred)
    print("test RMSE", MRSE)
    # MAPE = eval.calcMAPE(testY, testPred)
    # print("test MAPE", MAPE)
    SMAPE = eval.calcSMAPE(testY, testPred)
    print("test SMAPE", SMAPE)

    return trainPred, testPred, MAE, MRSE, SMAPE
コード例 #3
0
def FCD_Train(ts, dataset, freq, lookBack, batchSize, epoch, lr, method):

    # 序列分解
    #ts.index = pd.date_range(start='19960318',periods=len(ts), freq='Q')
    trend, seasonal, residual = seasonDecompose(ts, freq)
    print("fcd decompose is finised!")
    print("trend shape is", trend.shape)
    print("season shape is", seasonal.shape)
    print("residual shape is", residual.shape)

    # 分别预测

    MODEL_PATH = "../model/ResRNN_model.pkl"
    # trainPred, testPred, MAE, MRSE, SMAPE = test(data=dataset, lookBack=lag, epoch=epoch,
    #                                              batchSize=batchSize, method=method, modelPath=MODEL_PATH)
    trTrain, trTest, MAE1, MRSE1, SMAPE1 = test(trend,
                                                lookBack,
                                                epoch,
                                                lr,
                                                batchSize,
                                                method=method,
                                                modelPath=MODEL_PATH)
    resTrain, resTest, MAE2, MRSE2, SMAPE2 = test(residual,
                                                  lookBack,
                                                  epoch,
                                                  lr,
                                                  batchSize,
                                                  method=method,
                                                  modelPath=MODEL_PATH)
    # trTrain, trTest, MAE1, MRSE1, SMAPE1= RNNFORECAST.RNNforecasting(trend, lookBack=resWin, epoch=30, unit=unit,
    #                                                                     varFlag=True, minLen=20, maxLen=lag, step=4,
    #                                                                     hiddenNum=100)
    # resTrain, resTest, MAE2, MRSE2, SMAPE2 = RNNFORECAST.RNNforecasting(residual, lookBack=resWin, epoch=30, unit=unit,
    #                                                                     varFlag=True, minLen=20, maxLen=lag, step=4, hiddenNum=100)

    trTrain = trTrain.reshape(-1)
    trTest = trTest.reshape(-1)
    resTrain = resTrain.reshape(-1)
    resTest = resTest.reshape(-1)

    print("trTrain shape is", trTrain.shape)
    print("resTrain shape is", resTrain.shape)

    # '''
    # 数据对齐
    trendPred, resPred = align(trTrain, trTest, lookBack, resTrain, resTest,
                               lookBack)

    print("trendPred shape is", trendPred.shape)
    print("resPred shape is", resPred.shape)

    # 获取最终预测结果
    finalPred = trendPred + seasonal + resPred

    trainPred = trTrain + seasonal[lookBack:lookBack +
                                   trTrain.shape[0]] + resTrain
    testPred = trTest + seasonal[2 * lookBack + resTrain.shape[0]:] + resTest

    # 获得ground-truth数据
    data = dataset[freq // 2:-(freq // 2)]
    trainY = data[lookBack:lookBack + trTrain.shape[0]]
    testY = data[2 * lookBack + resTrain.shape[0]:]
    print(trainY.shape)
    print(testY.shape)
    print(trainPred.shape)
    print(testPred.shape)

    # 评估指标
    MAE = eval.calcMAE(trainY, trainPred)
    print("train MAE", MAE)
    MRSE = eval.calcRMSE(trainY, trainPred)
    print("train MRSE", MRSE)
    MAPE = eval.calcMAPE(trainY, trainPred)
    print("train MAPE", MAPE)
    MAE = eval.calcMAE(testY, testPred)
    print("test MAE", MAE)
    MRSE = eval.calcRMSE(testY, testPred)
    print("test RMSE", MRSE)
    MAPE = eval.calcMAPE(testY, testPred)
    print("test MAPE", MAPE)
    SMAPE = eval.calcSMAPE(testY, testPred)
    print("test SMAPE", SMAPE)

    # plt.plot(data)
    # plt.plot(finalPred)
    # plt.show()
    # '''
    return trainPred, testPred, MAE, MRSE, SMAPE
コード例 #4
0
def FCD_Train_SVM(ts, dataset, freq, lookBack):

    # 序列分解
    #ts.index = pd.date_range(start='19960318',periods=len(ts), freq='Q')
    trend, seasonal, residual = seasonDecompose(ts, freq)
    print("fcd decompose is finised!")
    print("trend shape is", trend.shape)
    print("season shape is", seasonal.shape)
    print("residual shape is", residual.shape)

    # 分别预测

    trTrain, trTest, MAE1, MRSE1, SMAPE1 = testSVM(trend, lookBack)
    resTrain, resTest, MAE2, MRSE2, SMAPE2 = testSVM(residual, lookBack)

    trTrain = trTrain.reshape(-1)
    trTest = trTest.reshape(-1)
    resTrain = resTrain.reshape(-1)
    resTest = resTest.reshape(-1)

    print("trTrain shape is", trTrain.shape)
    print("resTrain shape is", resTrain.shape)

    # 数据对齐
    trendPred, resPred = align(trTrain, trTest, lookBack, resTrain, resTest,
                               lookBack)

    print("trendPred shape is", trendPred.shape)
    print("resPred shape is", resPred.shape)

    # 获取最终预测结果
    finalPred = trendPred + seasonal + resPred

    trainPred = trTrain + seasonal[lookBack:lookBack +
                                   trTrain.shape[0]] + resTrain
    testPred = trTest + seasonal[2 * lookBack + resTrain.shape[0]:] + resTest

    # 获得ground-truth数据
    data = dataset[freq // 2:-(freq // 2)]
    trainY = data[lookBack:lookBack + trTrain.shape[0]]
    testY = data[2 * lookBack + resTrain.shape[0]:]
    print(trainY.shape)
    print(testY.shape)
    print(trainPred.shape)
    print(testPred.shape)

    # 评估指标
    MAE = eval.calcMAE(trainY, trainPred)
    print("train MAE", MAE)
    MRSE = eval.calcRMSE(trainY, trainPred)
    print("train MRSE", MRSE)
    MAPE = eval.calcMAPE(trainY, trainPred)
    print("train MAPE", MAPE)
    MAE = eval.calcMAE(testY, testPred)
    print("test MAE", MAE)
    MRSE = eval.calcRMSE(testY, testPred)
    print("test RMSE", MRSE)
    MAPE = eval.calcMAPE(testY, testPred)
    print("test MAPE", MAPE)
    SMAPE = eval.calcSMAPE(testY, testPred)
    print("test SMAPE", SMAPE)

    # plt.plot(data)
    # plt.plot(finalPred)
    # plt.show()
    # '''
    return trainPred, testPred, MAE, MRSE, SMAPE
コード例 #5
0
        # print(order.bic_min_order)
            #model = ARIMA(history, order=(3, 2, 1))
        model = pf.ARIMA(data=np.array(history), ar=4, ma=4, family=pf.Normal())
        model.fit(method="MLE")

        output = model.predict(1, intervals=False)

        yhat = output.values[0][0]

        predictions.append(yhat)
        obs = test[t]
        history.append(obs)
        realTestY.append(obs)
        print('predicted=%f, expected=%f' % (yhat, obs))

    realTestY = np.array(test)
    predictions = np.array(predictions).reshape(-1)
    #print(realTestY)
    print(predictions)
    MAE = eval.calcMAE(realTestY,predictions)
    RMSE = eval.calcRMSE(realTestY,predictions)
    MAPE = eval.calcSMAPE(realTestY,predictions)
    print ('Test MAE: %.8f' % MAE)
    print ('Test RMSE: %.8f' % RMSE)
    print ('Test MAPE: %.8f' % MAPE)


    # plot
    # pyplot.plot(test)
    # pyplot.plot(predictions, color='red')
    # pyplot.show()