scipy.special.xlogy#
- scipy.special.xlogy(x, y, out=None) = <ufunc 'xlogy'>#
計算
x*log(y)
,使得當x = 0
時結果為 0。- 參數:
- xarray_like
乘數
- yarray_like
引數
- outndarray, optional
函數結果的可選輸出陣列
- 返回:
- z純量或 ndarray
計算出的 x*log(y)
註解
計算中使用的 log 函數為自然對數。
在版本 0.13.0 中新增。
範例
我們可以使用此函數來計算二元邏輯損失,也稱為二元交叉熵。此損失函數用於二元分類問題,定義如下
\[L = 1/n * \sum_{i=0}^n -(y_i*log(y\_pred_i) + (1-y_i)*log(1-y\_pred_i))\]我們可以將參數 x 和 y 分別定義為 y 和 y_pred。y 是實際標籤的陣列,在此處可以是 0 或 1。y_pred 是相對於正類別 (1) 的預測機率陣列。
>>> import numpy as np >>> from scipy.special import xlogy >>> y = np.array([0, 1, 0, 1, 1, 0]) >>> y_pred = np.array([0.3, 0.8, 0.4, 0.7, 0.9, 0.2]) >>> n = len(y) >>> loss = -(xlogy(y, y_pred) + xlogy(1 - y, 1 - y_pred)).sum() >>> loss /= n >>> loss 0.29597052165495025
損失越低通常越好,因為它表示預測與實際標籤相似。在此範例中,由於我們的預測機率接近實際標籤,因此我們獲得的總體損失是相當低且適當的。