Ошибка данных на графике (проблемы с данными, не соответствующие графику) - PullRequest
0 голосов
/ 31 января 2020

Не могли бы вы взглянуть на проблему ниже?

1) Чтобы создать прогнозную модель, я разделил данные на 2 набора данных, 70% обучающих наборов и 30% тестовых наборов, используя train_test_split. , И чтобы обеспечить вывод данных с течением времени, когда они отображаются в виде графика, я установил для 'shuffle' значение 'false'.

2) Я подогнал модель по данным поезда и хотел посмотреть на график прогнозируемого результата, который получается из данных испытаний.

3) Для наблюдения за 120-часовыми данными диапазон данных устанавливается равным 120 часам, и результаты этого графика показаны ниже.

Не могли бы вы увидеть, в чем проблема? Кроме того, если я хочу наблюдать диапазон ваших данных от 24 часов до 72 часов, будет ли уместным подход установить их на [24:72]?

import math
import pandas as pd

import numpy as np
import os
import matplotlib.pyplot as plt

from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

train_data = pd.read_csv("./input_YG.csv")

nCar = train_data.shape[0]
nVar = train_data.shape[1]

print(nCar, nVar)

    feature_columns = list(train_data.columns.difference(['Output_Act']))

X = train_data[feature_columns]
y = train_data['Output_Act']

train_x , test_x, train_y, test_y = train_test_split(X, y, test_size = 0.2, random_state = 42, shuffle = False)
print(train_x.shape, test_x.shape, train_y.shape, test_y.shape) 

import matplotlib.pyplot as plt

from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error, r2_score
from math import sqrt
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import mean_squared_error

## sample : 10 max_depth : 5

reg1 = RandomForestRegressor(random_state=1, n_estimators=10, max_depth=5)
reg1_model = reg1.fit(train_x, train_y)
predict1 = reg1_model.predict(test_x) # 학습된 의사결정나무 모형으로 평가 데이터 예측
print("RMSE: {}".format(sqrt(mean_squared_error(predict1, test_y)))) # RMSE 결과
print("MAE: {}".format(mean_absolute_error(predict1, test_y)))

## sample : 100 max_depth : 5

reg2 = RandomForestRegressor(random_state=1, n_estimators=100, max_depth=5)
reg2_model = reg2.fit(train_x, train_y)
predict2 = reg2_model.predict(test_x) # 학습된 의사결정나무 모형으로 평가 데이터 예측
print("RMSE: {}".format(sqrt(mean_squared_error(predict2, test_y)))) # RMSE 결과
print("MAE: {}".format(mean_absolute_error(predict2, test_y)))

## sample : 500 max_depth : 5

reg3 = RandomForestRegressor(random_state=1, n_estimators=500, max_depth=5)
reg3_model = reg3.fit(train_x, train_y)
predict3 = reg3_model.predict(test_x) # 학습된 의사결정나무 모형으로 평가 데이터 예측
print("RMSE: {}".format(sqrt(mean_squared_error(predict3, test_y)))) # RMSE 결과
print("MAE: {}".format(mean_absolute_error(predict3, test_y)))

x = test_x['Hour'][:120]
at = reg1_model.predict(test_x)[:120]
bt = reg2_model.predict(test_x)[:120]
ct = reg3_model.predict(test_x)[:120]
yt = test_y[:120]

plt.figure()

plt.plot(x, yt, 'b', label='Measured Value', linewidth=2)
plt.plot(x, at, 'y', label='RandomForestRegressor_10_5')
plt.plot(x, bt, 'g', label='RandomForestRegressor_100_5')
plt.plot(x, ct, 'k', label='RandomForestRegressor_500_5')
plt.tick_params(axis='x', which='both', bottom=False, top=False,
                labelbottom=False)
plt.ylabel('Output_Act')
plt.xlabel('Date')
plt.legend(loc="best")
plt.title('Comparison between measured values and forecasted value')
plt.show()

введите описание изображения здесь

введите описание изображения здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...