基于排名的评估器

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[, ...])

处理一批三元组及其为所有实体计算的分数。

方法文档

clear() None[来源]

清除缓冲区和中间结果。

Return type:

finalize() RankBasedMetricResults[来源]

计算最终结果,并清除缓冲区。

Return type:

RankBasedMetricResults

finalize_multi(n_boot: int = 1000, seed: int = 42) Mapping[str, Sequence[float]][source]

finalize()引导。

Parameters:
  • n_boot (int) – 重采样的步骤数

  • seed (int) – 随机种子。

Returns:

一个从指标名称到值列表的扁平字典

Return type:

Mapping[str, Sequence[float]]

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)
Parameters:
Returns:

从指标名称到(中心趋势,置信度)对的字典

Return type:

Mapping[str, tuple[float, float]]

process_scores_(hrt_batch: Tensor, target: Literal['head', 'relation', 'tail'], scores: Tensor, true_scores: Tensor | None = None, dense_positive_mask: Tensor | None = None) None[来源]

处理一批三元组及其为所有实体计算的分数。

Parameters:
  • hrt_batch (Tensor) – 形状: (batch_size, 3)

  • target (Literal['head', 'relation', 'tail']) – 预测目标

  • scores (Tensor) – 形状: (batch_size, num_entities)

  • true_scores (Tensor | None) – 形状: (batch_size, 1)

  • dense_positive_mask (Tensor | None) – 形状: (batch_size, num_entities) 一个可选的二进制(0/1)张量,表示其他真实实体。

Return type: