算法基类

surprise.prediction_algorithms.algo_base 模块定义了基类 AlgoBase,所有预测算法都必须继承自该基类。

class surprise.prediction_algorithms.algo_base.AlgoBase(**kwargs)[source]

定义预测算法基本行为的抽象类。

关键字参数:

baseline_options (dict, optional) – 如果算法需要计算基准估计值,则使用 baseline_options 参数配置它们的计算方式。有关用法,请参见基准估计配置

compute_baselines()[source]

计算用户和项目的基准。

基准的计算方式取决于算法创建时传递的 bsl_options 参数(参见基准估计配置)。

此方法仅与使用Pearson baseline similarityBaselineOnly 算法相关。

返回:

一个元组 (bu, bi),即用户和项目的基准。

compute_similarities()[source]

构建相似度矩阵。

相似度矩阵的计算方式取决于算法创建时传递的 sim_options 参数(参见相似度测量配置)。

此方法仅与使用相似度测量算法相关,例如k-NN 算法

返回:

相似度矩阵。

default_prediction()[source]

在调用 predict() 期间抛出 PredictionImpossible 异常时使用。默认情况下,返回所有评分的全局平均值(可在子类中覆盖)。

返回:

训练集中所有评分的平均值。

返回类型:

(float)

fit(trainset)[source]

在给定的训练集上训练算法。

此方法被每个派生类调用,作为训练算法的第一个基本步骤。它主要只是初始化一些内部结构并设置 self.trainset 属性。

参数:

trainset (Trainset) – 训练集,由 folds 方法返回。

返回:

self

get_neighbors(iid, k)[source]

返回 iidk 个最近邻居,iid 是用户或项目的内部 ID,具体取决于 sim_optionsuser_based 字段(参见相似度测量配置)。

由于相似度是基于相似度测量计算的,因此此方法仅与使用相似度测量算法相关,例如k-NN 算法

有关用法示例,请参见常见问题

参数:
  • iid (int) – 我们想要最近邻居的用户(或项目)的(内部)ID。参见此说明

  • k (int) – 要检索的邻居数量。

返回:

iid 最接近的 k 个用户(或项目)的(内部)ID 列表。

predict(uid, iid, r_ui=None, clip=True, verbose=False)[source]

计算给定用户和项目的评分预测值。

predict 方法将原始 ID 转换为内部 ID,然后调用在每个派生类中定义的 estimate 方法。如果预测不可能(例如,因为用户和/或项目未知),则根据 default_prediction() 设置预测值。

参数:
  • uid – 用户的(原始)ID。参见此说明

  • iid – 项目的(原始)ID。参见此说明

  • r_ui (float) – 真实评分 \(r_{ui}\)。可选,默认值为 None

  • clip (bool) – 是否将估计值裁剪到评分范围。例如,如果评分范围是 \([1, 5]\),而 \(\hat{r}_{ui}\)\(5.5\),则 \(\hat{r}_{ui}\) 被设置为 \(5\)。如果 \(\hat{r}_{ui} < 1\),则同样处理。默认值为 True

  • verbose (bool) – 是否打印预测详情。默认值为 False。

返回:

一个 Prediction 对象,包含

  • (原始)用户 ID uid

  • (原始)项目 ID iid

  • 真实评分 r_ui (\(r_{ui}\))。

  • 估计评分 (\(\hat{r}_{ui}\))。

  • 关于预测的一些额外细节,可能对后续分析有用。

test(testset, verbose=False)[source]

在给定的测试集上测试算法,即估计给定测试集中的所有评分。

参数:
返回:

一个 Prediction 对象列表,包含所有估计的评分。