【问题标题】:Using similarities.cosine (with dataset) of SurPRISE package python使用 SurPRISE 包 python 的similarities.cosine (with dataset)
【发布时间】:2017-12-06 10:11:05
【问题描述】:

简报:

我正在使用 Movielens 100k Dataset 推荐电影。到目前为止,我已经完成了。

  1. 值的排序

    df_sorted_values = df.sort_values(['UserID', 'MovieID']) print type(df_sorted_values)

  2. 使用 NaN 值打印矩阵

    df_matrix = df.pivot_table(values='Rating', index='UserID', columns='MovieID')

  3. 对其进行了5折CV

    reader = Reader(line_format="user item rating", sep='\t', rating_scale=(1,5)) df = Dataset.load_from_file('ml-100k/u.data', reader=reader) df.split(n_folds=5)

  4. 我已经使用 SVD 评估了数据集

    perf = evaluate(SVD(),df,measures=['RMSE','MAE']) print_perf(perf)

  5. 这里我需要使用相同包 (Surprise) 提供的使用相似性算法,它写为 surprise.cosine 来预测缺失值。这表明它需要 (*args,**kwargs) 参数,但我对实际传递的内容一无所知。

  6. 生成相似性后,我需要用现在预测的替换 NaN 值打印矩阵,稍后将用于推荐

附注我对来自 CRAB、RECSYS、PANDAS 和 GRAPHLAB 的不同解决方案持开放态度,前提是它们也可以在步骤 1 到 4 上解决

我过去的参考资料是:

  1. This 手动,但没有显示参数是如何传递的 也不是例子
  2. This 和哪个没有太大区别 首先

【问题讨论】:

    标签: python pandas sklearn-pandas graphlab


    【解决方案1】:

    虽然计算 2 个向量之间的余弦相似度非常容易(1-np.dot(a,b)/(np.linalg.norm(a)*np.linalg.norm(b)) 怎么样

    如果您不想自己实现它,我建议您使用 Scipy

    from scipy.spatial.distance import cosine

    【讨论】:

    • 我看不出它对像电影镜头 100k 这样的大型数据集有什么帮助,但我现在在同一个包中找到了相反的方法。非常感谢您在这里的回复。
    • 如果您能阐明如何在应用算法后将数据集导出到 Surprise 包中,那将很有帮助!
    【解决方案2】:

    这些相似性函数是如这些文档:Using prediction algorithmsFAQThe algorithm base class - compute_similarities基于Knn的allos。他们不应该像你想要的那样使用。

    如果您选择使用SVD算法The algorithm base class - predict,则可能希望使用预测功能:

    # Build an algorithm, and train it.
    algo = SVD()
    algo.train(trainset)
    uid = str(196)  # raw user id  
    iid = str(302)  # raw item id  
    # get a prediction for specific users and items.
    pred = algo.predict(uid, iid)
    

    【讨论】:

      猜你喜欢
      • 2022-10-04
      • 1970-01-01
      • 2021-04-17
      • 1970-01-01
      • 2021-03-24
      • 1970-01-01
      • 2018-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多