【发布时间】:2021-03-29 05:59:42
【问题描述】:
我有交通数据,我想通过向模型显示以下输入来预测下一小时的车辆数量:这一小时的车辆数量和这一小时的平均速度值。 这是我的代码:
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 值吗,我读了很多博客写的不应该缩放 Y,只缩放 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]。
【问题讨论】:
-
只是附带说明:通常滞后变量意味着查看以前的时期。当变量的命名正确时,您的 y 应该是
dataset.iloc[3] -
你说的太对了,我误会了这个概念。感谢指正
标签: python scikit-learn neural-network forecast mlp