基于排名的指标结果

class RankBasedMetricResults(data: Mapping[MetricKeyType | str, float])[来源]

基础类: MetricResults[RankBasedMetricKey]

计算指标的结果。

初始化结果包装器。

属性摘要

metrics

方法总结

create_random([random_state])

创建用于测试的随机结果。

from_ranks(metrics, rank_and_candidates)

从给定的排名/候选集中创建基于排名的指标结果。

key_from_string(s)

获取基于排名的指标键。

属性文档

Parameters:

数据 (映射[MetricKeyType, 浮点数])

metrics: ClassVar[Mapping[str, type[Metric]]] = {'adjusted_arithmetic_mean_rank': <class 'pykeen.metrics.ranking.AdjustedArithmeticMeanRank'>, 'adjusted_arithmetic_mean_rank_index': <class 'pykeen.metrics.ranking.AdjustedArithmeticMeanRankIndex'>, 'adjusted_geometric_mean_rank_index': <class 'pykeen.metrics.ranking.AdjustedGeometricMeanRankIndex'>, 'adjusted_hits_at_k': <class 'pykeen.metrics.ranking.AdjustedHitsAtK'>, 'adjusted_inverse_harmonic_mean_rank': <class 'pykeen.metrics.ranking.AdjustedInverseHarmonicMeanRank'>, 'arithmetic_mean_rank': <class 'pykeen.metrics.ranking.ArithmeticMeanRank'>, 'count': <class 'pykeen.metrics.ranking.Count'>, 'geometric_mean_rank': <class 'pykeen.metrics.ranking.GeometricMeanRank'>, 'harmonic_mean_rank': <class 'pykeen.metrics.ranking.HarmonicMeanRank'>, 'hits_at_10': <class 'pykeen.metrics.ranking.HitsAtK'>, 'inverse_arithmetic_mean_rank': <class 'pykeen.metrics.ranking.InverseArithmeticMeanRank'>, 'inverse_geometric_mean_rank': <class 'pykeen.metrics.ranking.InverseGeometricMeanRank'>, 'inverse_harmonic_mean_rank': <class 'pykeen.metrics.ranking.InverseHarmonicMeanRank'>, 'inverse_median_rank': <class 'pykeen.metrics.ranking.InverseMedianRank'>, 'median_absolute_deviation': <class 'pykeen.metrics.ranking.MedianAbsoluteDeviation'>, 'median_rank': <class 'pykeen.metrics.ranking.MedianRank'>, 'standard_deviation': <class 'pykeen.metrics.ranking.StandardDeviation'>, 'variance': <class 'pykeen.metrics.ranking.Variance'>, 'z_arithmetic_mean_rank': <class 'pykeen.metrics.ranking.ZArithmeticMeanRank'>, 'z_geometric_mean_rank': <class 'pykeen.metrics.ranking.ZGeometricMeanRank'>, 'z_hits_at_k': <class 'pykeen.metrics.ranking.ZHitsAtK'>, 'z_inverse_harmonic_mean_rank': <class 'pykeen.metrics.ranking.ZInverseHarmonicMeanRank'>}

方法文档

classmethod create_random(random_state: int | None = None) RankBasedMetricResults[source]

创建用于测试的随机结果。

Parameters:

random_state (int | None)

Return type:

RankBasedMetricResults

classmethod from_ranks(metrics: Iterable[RankBasedMetric], rank_and_candidates: Iterable[RankPack]) RankBasedMetricResults[来源]

从给定的排名/候选集中创建基于排名的指标结果。

Parameters:
Return type:

RankBasedMetricResults

classmethod key_from_string(s: str | None) RankBasedMetricKey[source]

获取基于排名的指标键。

关键输入被理解为由点分隔的组合

  1. 侧面(“head”、“tail”或“both”之一)。大多数出版物仅报告“both”。如果未给出,则假定为“both”。

  2. 排名类型(“optimistic”、“pessimistic”、“realistic”之一)。如果未给出,则默认为“realistic”。

  3. The metric name, e.g., “adjusted_mean_rank_index”, “adjusted_mean_rank”, “mean_rank, “mean_reciprocal_rank”,

    “inverse_geometric_mean_rank”,或“hits@k”,其中k默认为10,但可以替换为整数。 默认情况下,1、3、5和10是可用的。其他K值可以通过在pykeen.pipeline.pipeline()中的evaluation_kwargs中设置适当的变量或在pykeen.evaluation.RankBasedEvaluator中设置ks来计算。

一般来说,除了AMR和AMRI之外,所有指标都适用于所有边/类型的组合,而AMR和AMRI仅针对平均类型进行计算。这是因为在乐观和悲观情况下预期MR的计算仍然是一个活跃的研究领域,因此尚未有实现。

Parameters:

s (str | None) – 表示度量键的字符串

Returns:

解析后的键。

Raises:

ValueError – 如果字符串无法解析为度量键

Return type:

RankBasedMetricKey

获取平均MR

>>> RankBasedMetricResults.key_from_string('both.realistic.mean_rank')
RankBasedMetricKey(side='both', rank_type='realistic', metric='arithmetic_mean_rank')

如果你只提供一个指标名称,它假设这是用于“双方”和“现实”类型。

>>> RankBasedMetricResults.key_from_string('adjusted_mean_rank_index')
RankBasedMetricKey(side='both', rank_type='realistic', metric='adjusted_arithmetic_mean_rank_index')

如果您只指定了一部分,此函数将尽力推断正在发生的情况。

>>> RankBasedMetricResults.key_from_string('head.mean_rank')
RankBasedMetricKey(side='head', rank_type='realistic', metric='arithmetic_mean_rank')
>>> RankBasedMetricResults.key_from_string('optimistic.mean_rank')
RankBasedMetricKey(side='both', rank_type='optimistic', metric='arithmetic_mean_rank')

获取默认的 Hits @ K(其中 \(k=10\)

>>> RankBasedMetricResults.key_from_string('hits@k')
RankBasedMetricKey(side='both', rank_type='realistic', metric='hits_at_10')

获取给定的Hits @ K

>>> RankBasedMetricResults.key_from_string('hits@5')
RankBasedMetricKey(side='both', rank_type='realistic', metric='hits_at_5')