我有一个从中scikit-learn训练的 GradientBoostingRegressor。之后,我显然想知道这个模型有多好。因此,在非缩放数据集上,我将只使用mean_squared_errorscikit 中的函数,它会输出一个有意义的值(关于数据集)。
现在,我使用 scikit 缩放(/转换)我的数据集中的目标QuantileTransformer(output_distribution='uniform')。目标现在在 0 - 1 之间缩放。这在训练等期间很好。
训练模型后,我运行以下代码来获取一些指标:
test_pred = gb.predict(X_test)
mse_test = mean_squared_error(y_test, test_pred)
print("RMSE on Test:", np.sqrt(mse_test))
print("MSE on Test:", mse_test)
mae_test = mean_absolute_error(y_test, test_pred)
print("MAE on Test:", mae_test)
因为目标值是按比例缩放的,所以输出类似于:
RMSE on Test: 0.23563730007705744
MSE on Test: 0.05552493718760521
MAE on Test: 0.19235478752773819
我假设我可以通过将QuantileTransformer.inverse_transform函数应用于输出来获得“实际的”非缩放指标。
所以我得到了:
RMSE on Test: 2231.21330222
MSE on Test: 807.28588575
MAE on Test: 1888.23406628
这对我来说似乎不太正确。通常,RMSE 会小于 MSE,但事实并非如此。如果您得到 (MSE) 值的 sqrt 低于 1。此外,MAE 应该可能小于 MSE。
我的问题是,您如何解释这些按比例缩放的指标值?inverse_transform 输出是否正确?如何获得指标的正确、非缩放值?
我很感激这方面的一些帮助。
谢谢。
编辑:这QuantileTransformer只是一个例子。这个问题也适用MinMaxScaler于一般的缩放器和其他缩放器。