def error_compoute(y_pred_upper, y_pred_lower, y_tes, alpha): # Ravel for ease of computation y_pred_upper = y_pred_upper.ravel() y_pred_lower = y_pred_lower.ravel() y_tes = y_tes.ravel() # Find out of bound indices for WS idx_oobl = np.where((y_tes < y_pred_lower))[0] # 低于下限 # idx_oolu = np.where((y_tes >= y_pred_lower & y_tes <= y_pred_upper))[0] # 介于上下限之间 idx_oobu = np.where((y_tes > y_pred_upper))[0] # 高于上限 picp = np.sum((y_tes > y_pred_lower) & (y_tes <= y_pred_upper)) / len(y_tes) * 100 ace = picp - (1 - alpha) * 100 pinaw = np.sum(y_pred_upper - y_pred_lower) / (np.max(y_tes) - np.min(y_tes)) / len(y_tes) ws = np.sum(np.sum(-2 * alpha * (y_pred_upper - y_pred_lower)) + np.sum(-4 * (y_pred_lower[idx_oobl] - y_tes[idx_oobl])) + np.sum(-4 * (y_tes[idx_oobu] - y_pred_upper[idx_oobu]))) / len(y_tes) print("PICP: {:.4f}%".format(picp)) print("ACE: {:.4f}".format(ace)) print("PINAW: {:.4f}".format(pinaw)) print("WS: {:.4f}".format(ws))
时间: 2024-04-11 20:29:34 浏览: 173
这段代码定义了一个名为 `error_compute()` 的函数,用于计算预测结果的误差指标。函数接受以下参数:
- `y_pred_upper`:预测结果的上限值
- `y_pred_lower`:预测结果的下限值
- `y_tes`:真实的目标值
- `alpha`:置信水平
首先,通过 `ravel()` 函数对输入的数组进行展平操作,以便于后续计算。然后,根据真实目标值和上下限值,找到超出边界的索引。其中,`idx_oobl` 存储低于下限的索引,`idx_oobu` 存储高于上限的索引。
接下来,通过计算 `(y_tes > y_pred_lower) & (y_tes <= y_pred_upper)` 来确定落在上下限之间的样本数量,并将其除以样本总数得到覆盖概率(PICP)。ACE 是覆盖概率与置信水平之差。
PINAW 是上下限范围的平均宽度与真实目标值范围的比值。
最后,计算 WS(预测误差分数),其中包括覆盖范围内的损失和超出范围的损失。
函数会打印出 PICP、ACE、PINAW 和 WS 的值。
请注意,函数中有一行被注释掉了,即 `idx_oolu` 的计算,可能是因为没有在后续计算中使用到。
相关问题
def mean_absolute_percentage_error(y_true, y_pred): y_true,y_pred = np.array(y_true).ravel(),np.array(y_pred).ravel() return 1-np.mean(np.abs((y_true - y_pred) / y_true)) from sklearn.metrics import mean_absolute_error
这段代码中定义了一个计算平均绝对百分比误差(MAPE)的函数mean_absolute_percentage_error,并使用了numpy和sklearn.metrics库。其中,y_true表示真实值,y_pred表示预测值,np.array将它们转换为一维数组,ravel()函数将多维数组压缩成一维数组。函数返回的是1减去平均绝对百分比误差的值。同时,代码中还导入了sklearn.metrics库中的另一个函数mean_absolute_error,用于计算平均绝对误差(MAE)。
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score def measure_error(y_true, y_pred, label): return pd.Series({'accuracy':accuracy_score(y_true, y_pred), 'precision': precision_score(y_true, y_pred), 'recall': recall_score(y_true, y_pred), 'f1': f1_score(y_true, y_pred)}, name=label)这段代码的意思是什么
这段代码定义了一个名为 `measure_error` 的函数,该函数接受三个参数 `y_true`,`y_pred` 和 `label`。其中,`y_true` 是真实标签,`y_pred` 是预测标签,`label` 是一个字符串,表示该次评估的名称。
函数通过调用 `accuracy_score`、`precision_score`、`recall_score` 和 `f1_score` 函数计算了四个不同的评估指标:准确率、精确率、召回率和 F1 值。最后,函数将这些指标以一个 `pandas` 的 `Series` 对象的形式返回,并将该对象的 `name` 属性设置为 `label`,以便在后续的输出中可以清楚地看到该次评估的名称。
阅读全文