python - 使用 sklearn MLPRegressor 获取每次迭代的损失值 (MAE)
问题描述
我想在训练过程中使用 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)
解决方案
没有像 in 这样的回调对象,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
推荐阅读
- oracle-apex - Oracle Apex 自定义用户帐户
- binding - WPF 将 ObservableCollection 绑定到 AutoCompleteItemsSource
- python - 在python中查找散列元组列表中元素的快速方法
- python - 可视化 CNN
- oauth-2.0 - 当一个简单的流氓客户端无论如何都可以窃取密码时,Oauth 中客户端密码的目的是什么?
- google-cloud-platform - 如何将谷歌云扳手数据导入本地模拟器环境?
- qt - 我想通过 QTcpSocket 访问调制解调器/路由器
- python - 加载的 keras 模型没有预测方法
- oracle - 如何在 SQLDEVELOPER EC2 WINDOWS 中使用数据泵
- xbrl - 如何从财务报表数据集中提取合并的经营报表?