PaddleTS metrics 用户指南
Metric 介绍
评估指标(Metric)用来衡量一个模型的效果, 一般是通过计算模型的预测结果和真实结果之间的某种差距.
与损失函数类似, 不同的任务场景会选择不同的评估指标评估模型的效果, 例如 MAE(Mean Absolute Error) 和 MSE(Mean squared error) 常用于回归任务. PaddleTS库内置了常用的评估指标, 同时也支持开发者自定义评估指标.
代码示例
以MSE为例. 已知模型预测数据的TSDataset和相对应的真实数据TSDataset, 使用方式如下所示:
from paddlets import TSDataset
from paddlets.metrics import MSE
"""Note: Both y_true and y_score are pd.DataFrame.
"""
mse = MSE()
tsdataset_true = TSDataset.load_from_dataframe(y_true)
tsdataset_score = TSDataset.load_from_dataframe(y_score)
result = mse(tsdataset_true, tsdataset_score)
自定义评估指标Metric
实现自定义评估指标只需以下几个步骤:
创建一个继承自paddlets.metric.base.Metric的类.
设置 _NAME(metric名称)和_MAXIMIZE(优化方向)两个类成员.
在类的构造函数中初始化必须的参数.
根据指标具体的计算逻辑实现metric_fn方法.
代码示例
以MSE为例, 实现细节如下所示:
from paddlets.metrics.base import Metric
import sklearn.metrics as metrics
class MSE(Metric):
"""
1. Inherited from paddlets.metric.Metric.
2. Set two class members, _NAME(metric name) and _MAXIMIZE(optimization direction).
"""
_NAME = "mse"
_MAXIMIZE = False
def __init__(
self,
mode: str = "normal"
):
"""3. Initialize the required parameter in __init__.
"""
super(MSE, self).__init__(mode)
@ensure_2d
def metric_fn(
self,
y_true: np.ndarray,
y_score: np.ndarray
) -> float:
"""4. Implement the metric_fn method according to computation logic.
"""
return metrics.mean_squared_error(y_true, y_score)