【问题标题】:Plot mean absolute error (MAE) in MLPRegression sklearn在 MLPRegression sklearn 中绘制平均绝对误差 (MAE)
【发布时间】:2018-12-18 17:08:44
【问题描述】:

如何在 epoch 上绘制 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)

【问题讨论】:

  • @lyand 看到我的答案并告诉我

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


【解决方案1】:

计算折叠的训练和测试误差,然后使用列表附加结果。最后,绘制结果。


执行以下操作:

from sklearn.neural_network import MLPRegressor 
from sklearn.metrics import mean_absolute_error
import numpy as np
from sklearn.model_selection import validation_curve
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
from sklearn.model_selection import KFold
np.random.seed(0)

iris = load_iris()
X, y = iris.data, iris.target

kf = KFold(n_splits=5)
list_training_error = []
list_testing_error = []

for train_index, test_index in kf.split(X):
   X_train, X_test = X[train_index], X[test_index]
   y_train, y_test = y[train_index], y[test_index]
   model = MLPRegressor()
   model.fit(X_train, y_train)
   y_train_data_pred = model.predict(X_train)
   y_test_data_pred = model.predict(X_test) 

   fold_training_error = mean_absolute_error(y_train, y_train_data_pred)        
   fold_testing_error = mean_absolute_error(y_test, y_test_data_pred)
   list_training_error.append(fold_training_error)
   list_testing_error.append(fold_testing_error)

plt.subplot(1,2,1)
plt.plot(range(1, kf.get_n_splits() + 1), np.array(list_training_error).ravel(), 'o-')
plt.xlabel('number of fold')
plt.ylabel('training error')
plt.title('Training error across folds')
plt.tight_layout()

plt.subplot(1,2,2)
plt.plot(range(1, kf.get_n_splits() + 1), np.array(list_testing_error).ravel(), 'o-')
plt.xlabel('number of fold')
plt.ylabel('testing error')
plt.title('Testing error across folds')
plt.tight_layout()
plt.show()

【讨论】:

  • 我正在使用滑动窗口和训练、验证、测试来拆分数据(不使用 kfold)
  • 这个想法是一样的。您拟合模型并进行预测。然后计算 MAE。我的回答涵盖所有情况
猜你喜欢
  • 2019-07-10
  • 2021-11-13
  • 1970-01-01
  • 2021-12-05
  • 2020-06-22
  • 2021-03-09
  • 2019-01-02
  • 2021-11-27
  • 2021-04-19
相关资源
最近更新 更多