Python环境下如何测量以正负符号匹配为核心的时间序列预测准确率
符号方向匹配维度的时间序列预测准确率实现
该场景对应的评估指标为符号准确率,评估过程完全不需要考量预测值与实际值的绝对偏差大小,仅逐样本判断二者正负方向是否一致,可直接基于Python的pandas工具链完成落地,实现逻辑完全匹配你设定的样本判定规则:
逐样本判定逻辑落地
- 基础判定规则:对每一条时间序列样本,分别提取预测值、对应实际值的符号属性,二者符号完全一致时标记为1(预测正确),符号不一致时标记为0(预测错误)。
- 符号提取简化实现:不需要手写正负判断的冗余条件分支,直接调用numpy内置的
np.sign()函数即可完成统一规则的符号提取:该函数对正值返回1、负值返回-1、0值返回0,完全覆盖符号判定的所有场景。 - 边界场景适配:如果样本集合中存在值为0的记录,由于0本身没有明确的正负方向,建议提前根据业务规则决定是将这类样本从评估集合中单独剔除,还是按业务要求判定为正确/错误,避免无意义的判定偏差。
可直接复用的Python实现代码
import pandas as pd import numpy as np # 替换为自有数据集:确保DataFrame存在预测值列pred、对应时间点的实际值列actual df = pd.DataFrame({ "pred": [-2, 3, 0.7, -1.3, 4.2], "actual": [-1.1, -2.4, 1.2, -0.6, 3.8] }) # 逐行计算对错标记,写入DataFrame的对应列 df["is_correct"] = (np.sign(df["pred"]) == np.sign(df["actual"])).astype(int) # 计算整体符号维度的预测准确率 sign_accuracy = df["is_correct"].mean()
以上示例代码运行后,is_correct列的逐行结果为[1, 0, 1, 1, 1],对应整体准确率为80%,完全匹配你设定的样本对错判定规则。
实现注意事项
- 整个评估流程不需要引入MAE、MSE、RMSE这类基于绝对数值偏差的评估指标,这类指标的计算结果和当前的评估目标无关联。
- 如果是滚动输出预测值的时间序列场景,只需要保证预测值和实际值按时间索引一一匹配,就可以直接用上述方法计算任意时段内的符号预测准确率,不需要做额外的时序对齐调整。
内容的提问来源于stack exchange,提问作者Mr_Nerdypants
相关产品推荐
相关产品推荐

