'Accessing corresponding timeSeries data after Support Vector Regression

I am trying to train my data for forecasting by support vector regression. I exclude time series before doing regression because time is not an input. But I need time data in plotting and should be in order. When it comes to plotting, I am having a problem with getting actual data time index values. I need actual corresponding time series for y_test and y_pred. When I tried to get original datetime index, plotting is not correct and not in the date order corresponding with the y series.

The output should be time(in order such as from 01/01/2021 to 31/12/2021) vs y_pred and y_test.

Here is my dataset: https://github.com/ozgurylc/Dataset

    import matplotlib.pyplot as plt
    import numpy as np
    import pandas as pd
    from sklearn import svm
    from sklearn.model_selection import train_test_split
    from sklearn.preprocessing import StandardScaler

    dataset = pd.read_csv('Combined_MET_PV_data.csv')
    # takes necessary columns
    df = dataset[['referenceTime', 'dew_point_temp', 'air_temp', 'relative_humidity',
             'irradiance', 'wind_speed', 'wind_category',
             'hour_harmonic', 'AC_Power_IV2']]   
    print(df)
    X = df.iloc[:, :-1].values  # does not take Power
    y = df.iloc[:, -1].values  # only takes Power
    print(X)
    print(y)
    print(X.shape, y.shape)
    y = np.reshape(y, (-1,1))
    print(y.shape)


    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42)
    print("Train Shape: {} {} \nTest Shape: {} {}".format(X_train.shape, y_train.shape, 
    X_test.shape, y_test.shape))
    X_train = X_train[:, 1:] # excludes referenceTime from X_train
    X_test1 = X_test[:, 1:] #excludes referenceTime fron X_test
    print(X_test[:, 0].tolist()) # this keeps referenceTime
    print(X_test)

Here is where regression is done:

    # scaling
    sc_X = StandardScaler()
    X_train = sc_X.fit_transform(X_train)
    X_test1 = sc_X.transform(X_test1)

    sc_y = StandardScaler()
    y_train = sc_y.fit_transform(y_train)
    y_test = sc_y.transform(y_test)

    y_train = y_train.reshape((-1,))
    svr_linear = svm.SVR(kernel='rbf')
    svr_linear.fit(X_train, y_train)
    print(svr_linear.score(X_test1, y_test))
    y_pred = svr_linear.predict(X_test1)
    print(y_pred)
    # in the following code X_test[:,0] where time index is kept. 
    plot_1 = plt.plot(X_test[:, 0], y_test, color='red', linewidth=2)
    plot_2 = plt.plot(X_test[:, 0], y_pred, color='blue', linewidth=2, linestyle='--')
    plt.show()



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source