基于排名的指标结果
- class RankBasedMetricResults(data: Mapping[MetricKeyType | str, float])[来源]
基础类:
MetricResults[RankBasedMetricKey]计算指标的结果。
初始化结果包装器。
属性摘要
方法总结
create_random([random_state])创建用于测试的随机结果。
from_ranks(metrics, rank_and_candidates)从给定的排名/候选集中创建基于排名的指标结果。
获取基于排名的指标键。
属性文档
- 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:
- classmethod from_ranks(metrics: Iterable[RankBasedMetric], rank_and_candidates: Iterable[RankPack]) RankBasedMetricResults[来源]
从给定的排名/候选集中创建基于排名的指标结果。
- Parameters:
metrics (Iterable[RankBasedMetric])
rank_and_candidates (Iterable[RankPack])
- Return type:
- classmethod key_from_string(s: str | None) RankBasedMetricKey[source]
获取基于排名的指标键。
关键输入被理解为由点分隔的组合
侧面(“head”、“tail”或“both”之一)。大多数出版物仅报告“both”。如果未给出,则假定为“both”。
排名类型(“optimistic”、“pessimistic”、“realistic”之一)。如果未给出,则默认为“realistic”。
- 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')