基于排名的评估器
- class RankBasedEvaluator(filtered: bool = True, metrics: str | X | type[X] | None | Sequence[str | X | type[X] | None] = None, metrics_kwargs: Mapping[str, Any] | None | Sequence[Mapping[str, Any] | None] = None, add_defaults: bool = True, clear_on_finalize: bool = True, **kwargs)[source]
基础类:
Evaluator[RankBasedMetricKey]基于排名的KGE模型评估器。
初始化基于排名的评估器。
- Parameters:
filtered (bool) – 是否使用过滤评估协议。如果启用,将另一个真实三元组排在当前考虑的三元组之上不会降低分数。
metrics (OneOrManyHintOrType) – 要计算的基于排名的指标
metrics_kwargs (OneOrManyOptionalKwargs) – 额外的关键字参数
add_defaults (bool) – 是否添加所有默认指标,除了由metrics / metrics_kwargs指定的指标。
clear_on_finalize (bool) –
是否在finalize调用时清除缓冲区
警告
禁用此选项可能会导致在使用管道时出现内存泄漏和错误结果
kwargs – 传递给基类的额外关键字参数。
方法总结
clear()清除缓冲区和中间结果。
finalize()计算最终结果,并清除缓冲区。
finalize_multi([n_boot, seed])从
finalize()引导。finalize_with_confidence([estimator, ci, ...])通过自举法进行置信度估计以最终确定结果。
process_scores_(hrt_batch, target, scores[, ...])处理一批三元组及其为所有实体计算的分数。
方法文档
- finalize() RankBasedMetricResults[来源]
计算最终结果,并清除缓冲区。
- Return type:
- finalize_multi(n_boot: int = 1000, seed: int = 42) Mapping[str, Sequence[float]][source]
从
finalize()引导。
- finalize_with_confidence(estimator: str | ~typing.Callable[[~collections.abc.Sequence[float]], float] = <function median>, ci: int | str | ~typing.Callable[[~collections.abc.Sequence[float]], float] = 90, n_boot: int = 1000, seed: int = 42) Mapping[str, tuple[float, float]][source]
通过自举法进行置信度估计以最终确定结果。
首先训练一个模型(这里,仅为一个周期)
>>> from pykeen.pipeline import pipeline >>> result = pipeline(dataset="nations", model="rotate", training_kwargs=dict(num_epochs=1))
创建一个评估器,将clear_on_finalize设置为False,例如通过
>>> from pykeen.evaluation import evaluator_resolver >>> evaluator = evaluator_resolver.make("rankbased", clear_on_finalize=False)
评估一次,这次忽略结果
>>> evaluator.evaluate(model=result.model, mapped_triples=result.training.mapped_triples)
现在,调用 finalize_with_confidence 以获取指标的估计值以及置信区间
>>> evaluator.finalize_with_confidence(n_boot=10)