我已经为这个问题苦苦挣扎了好几天,并在谷歌上搜索了很多,最后,感谢 lejlot 的发帖,我解决了你所提到的问题。
我很生气,没有人在标准化 X(目标函数)之后写出如何预测任意数的方法(顺便说一句,你不应该标准化 y。起初我很困惑,因为每个人都似乎很困惑并且写错了。)
我会在下面放一个您可以轻松参考的代码。
from sklearn.neural_network import MLPClassifier, MLPRegressor
from sklearn.preprocessing import StandardScaler
from numpy import *
X = array([ [0], [1],[2],[3],[4],[5],[6],[7] ])
y = 2*array([ [0], [1],[2],[3],[4],[5],[6],[7] ])
scaler = StandardScaler()
X_train = scaler.fit_transform(X)
print(X_train)
model = MLPRegressor(hidden_layer_sizes=(3 ), activation='logistic', solver='lbfgs', alpha=0.0001, batch_size ="auto",
learning_rate= 'constant', learning_rate_init=0.001, power_t=0.5, max_iter=2000, shuffle=True, random_state=None,
tol=0.0001, verbose=True, warm_start=False, momentum=0.9, nesterovs_momentum=True, early_stopping=False,
validation_fraction=0.1, beta_1=0.9, beta_2=0.999, epsilon=1e-08)
model.fit(X_train, y)
# YOU CAN SEE I DIDN't STANDARDIZE y BUT ONLY X.
# Testing
# load scaler
scaled_instances = scaler.transform(array([ [1],[2] ]))
print(scaled_instances)
s = model.predict( scaled_instances )
print(s)
我测试了几个数字并显示了正确的值。
lejlot 发布的信息非常有用,在训练时保存了“缩放器”。
多亏了这个功能,无论我们使用什么数字来“预测”,这个保存的缩放器都会缩放我们将用来预测未知输出的输入数字。