У меня есть данные о трафике, и я хочу предсказать количество транспортных средств на следующий час, показав модели следующие входные данные: количество транспортных средств за этот час и значение средней скорости за этот час. Вот мой код:
dataset=pd.read_csv('/content/final - Sayfa5.csv',delimiter=',')
dataset=dataset[[ 'MINIMUM_SPEED', 'MAXIMUM_SPEED', 'AVERAGE_SPEED','NUMBER_OF_VEHICLES','1_LAG_NO_VEHICLES']]
X = np.array(dataset.iloc[:,1:4])
L = len(dataset)
Y = np.array([dataset.iloc[:,4]])
Y= Y[:,0:L]
Y = np.transpose(Y)
#scaling with MinMaxScaler
scaler = MinMaxScaler()
scaler.fit(X)
X = scaler.transform(X)
scaler.fit(Y)
Y = scaler.transform(Y)
print(X,Y)
X_train , X_test, Y_train, Y_test = train_test_split(X,Y,test_size=0.3)
from sklearn.neural_network import MLPRegressor
from sklearn.metrics import mean_squared_error
mlp = MLPRegressor(activation='logistic')
mlp.fit(X_train,Y_train)
predictions = mlp.predict(X_test)
predictions1=mlp.predict(X_train)
print("mse_test :" ,mean_squared_error(Y_test,predictions), "mse_train :",mean_squared_error(Y_train,predictions1))
Я получил хорошие значения mse, такие как mse_test: 0,005467816018933008 mse_train: 0,005072774796622158
Но меня смущают два момента:
Должен ли я масштабировать значения y, я прочитал так много блогов, написанных, что не следует масштабировать Ys, а только масштабировать X_train и X_test. Но я получил такие плохие оценки по mse, как 49, 50, 100 или даже больше.
Как я могу получить прогнозы на будущее, но не масштабированные значения. Например я написал:
Xnew=[[ 80 , 40 , 47],
[ 80 , 30, 81],
[ 80 , 33, 115]]
Xnew = scaler.transform(Xnew)
print("prediction for that input is" , mlp.predict(Xnew))
Но я получил масштабированные значения, такие как: прогноз для этого ввода равен [0.08533431 0.1402755 0.19497315]
Так должно было быть [81,115,102]
.
dataset.iloc[3]
- person TiTo   schedule 18.12.2020