平均絕對百分比誤差#
- sklearn.metrics.mean_absolute_percentage_error(y_true, y_pred, *, sample_weight=None, multioutput='uniform_average')[原始碼]#
平均絕對百分比誤差(MAPE)回歸損失。
請注意,我們未使用常見的「百分比」定義:範圍 [0, 100] 中的百分比會除以 100 轉換為範圍 [0, 1] 中的相對值。因此,200% 的誤差對應於 2 的相對誤差。
請參閱使用者指南以了解更多資訊。
於 0.24 版新增。
- 參數:
- y_true形狀為 (n_samples,) 或 (n_samples, n_outputs) 的類數組
真實(正確)的目標值。
- y_pred形狀為 (n_samples,) 或 (n_samples, n_outputs) 的類數組
估計的目標值。
- sample_weight形狀為 (n_samples,) 的類數組,預設值為 None
樣本權重。
- multioutput{'raw_values', 'uniform_average'} 或類數組
定義多個輸出值的聚合方式。類數組值定義用於平均誤差的權重。如果輸入為列表,則形狀必須為 (n_outputs,)。
- 「raw_values」
在多輸出輸入的情況下,返回完整的誤差集。
- 「uniform_average」
所有輸出的誤差均以均勻權重進行平均。
- 返回:
- loss浮點數或浮點數的 ndarray
如果 multioutput 為「raw_values」,則會分別返回每個輸出的平均絕對百分比誤差。如果 multioutput 為「uniform_average」或權重 ndarray,則會返回所有輸出誤差的加權平均值。
MAPE 輸出為非負浮點數。最佳值為 0.0。但請注意,糟糕的預測可能會導致任意大的 MAPE 值,特別是當某些
y_true
值非常接近零時。請注意,當y_true
為零時,我們會返回一個很大的值,而不是inf
。
範例
>>> from sklearn.metrics import mean_absolute_percentage_error >>> y_true = [3, -0.5, 2, 7] >>> y_pred = [2.5, 0.0, 2, 8] >>> mean_absolute_percentage_error(y_true, y_pred) 0.3273... >>> y_true = [[0.5, 1], [-1, 1], [7, -6]] >>> y_pred = [[0, 2], [-1, 2], [8, -5]] >>> mean_absolute_percentage_error(y_true, y_pred) 0.5515... >>> mean_absolute_percentage_error(y_true, y_pred, multioutput=[0.3, 0.7]) 0.6198... >>> # the value when some element of the y_true is zero is arbitrarily high because >>> # of the division by epsilon >>> y_true = [1., 0., 2.4, 7.] >>> y_pred = [1.2, 0.1, 2.4, 8.] >>> mean_absolute_percentage_error(y_true, y_pred) 112589990684262.48