推荐算法-协同过滤代码问题汇总

1.DataFrame
DataFrame是python中panda库里的方法,用法如下:

users = [“User1”,“User2”,“User3”,“User4”,“User5”]items = [“Item A”,“Item B”,“Item C”,“Item D”,“Item E”]# 用户购买记录数据集datasets = [ [1,0,1,1,0], [1,0,0,1,1], [1,0,1,0,0], [0,1,0,1,1], [1,1,1,0,1],]import pandas as pd
df = pd.DataFrame(datasets, columns=items, index=users)print(df)

运行结果是这样的:

由上我们可以看出DataFrame是一种表格型数据结构,它含有一组有序的列,每列可以是不同的值。DataFrame既有行索引,也有列索引
其中行索引是index,列索引是columns
问题一:

from sklearn.metrics import jaccard_similarity_score

无法引用jaccard_similarity_score
可能的问题:库的版本不统一

解决 : 版本更新问题,以后调用杰卡德函数直接使用一下的调用代码

from sklearn.metrics import jaccard_score

问题二:
报错代码:

pairwise_distances(df, metric="jaccard")

错误:AttributeError: ‘DataFrame’ object has no attribute ‘dtype’
错误原因:scikit-learn从0.20.1不再自动修改numpy语法。所以需要养成更加规范的书写习惯解决
以上代码更正为:

pairwise_distances(df.values, metric="jaccard")`

问题三:
报错代码:

rs_result -= set(df.ix[user].replace(0,np.nan).dropna().index)

错误:AttributeError: ‘DataFrame’ object has no attribute ‘dtype’
报错原因:在pandas的1.0.0版本开始,移除了Series.ix and DataFrame.ix 方法。
解决:使用DataFrame的loc方法或者iloc方法进行替换
拓展:pandas:ix 、loc 、 iloc区别、.at、.iat和.get_value
借鉴链接:
https://blog.csdn.net/HHG20171226/article/details/101567357

你可能感兴趣的:(数据库)