使用sklearn MLPRegressor每次迭代获取损失值(MAE)

时间:2018-08-02 09:07:32

标签: python python-3.x scikit-learn neural-network artificial-intelligence

我想在训练过程中使用MSE检查我的损失值,如何在每次迭代时使用MSE提取损失值?。谢谢。

from sklearn.neural_network import MLPRegressor 
from sklearn.metrics import mean_absolute_error

dataset = open_dataset("forex.csv")

dataset_vector = [float(i[-1]) for i in dataset]
normalized_dataset_vector = normalize_vector(dataset_vector)
training_vector, validation_vector, testing_vector = split_dataset(training_size, validation_size, testing_size, normalized_dataset_vector)
training_features = get_features(training_vector)
training_fact = get_fact(training_vector)
validation_features = get_features(validation_vector)
validation_fact = get_fact(validation_vector)
model = MLPRegressor(activation=activation, alpha=alpha, hidden_layer_sizes=(neural_net_structure[1],), max_iter=number_of_iteration, random_state=seed)
model.fit(training_features, training_fact)
pred = model.predict(training_features)
err = mean_absolute_error(pred, validation_fact)
print(err)

1 个答案:

答案 0 :(得分:0)

没有Keras中的回调对象,因此您必须遍历拟合过程才能在每次迭代中获取它。像下面这样的东西将为您工作

from sklearn.neural_network import MLPClassifier
from sklearn.metrics import mean_absolute_error

# create some toy data
X = np.random.random((100, 5))
y = np.random.choice([0, 1], 100)

max_iter = 500

mlp = MLPClassifier(hidden_layer_sizes=(10, 10, 10), max_iter=max_iter)

errors = []
for i in range(max_iter):
    mlp.partial_fit(X, y, classes=[0, 1])
    pred = mlp.predict(X)
    errors.append(mean_absolute_error(y, pred))

此刻会抛出一个烦人的DeprecationWarning,但这可以忽略。使用此方法的唯一问题是,您必须手动跟踪模型是否收敛。如果要使用神经网络,我个人建议使用Keras而不是sklearn