【发布时间】:2017-12-06 10:04:21
【问题描述】:
我想要做的是通过将一个表中的评级列与另一个表中的评级列进行比较来生成相似度百分比。
但是,这需要限制在一个表中的 id 与另一个表中的 id 匹配、针对特定用户并且两个表的评级列中存在评级的情况。
例如,table1 有以下列和数据:
id | rate (out of 10)
=====================
1 | 8
2 | 10
3 | 5
4 | 4
5 | 0
6 | 9
7 | 8
而table2有以下列和数据:
movid | userid | rating (out of 10)
================================
1 | 3 | 6
2 | 2 | 10
3 | 1 | 4
4 | 3 | 7
5 | 3 | 6
6 | 4 | 8
7 | 3 | 5
假设我想使用 'userid' = 3 的任何行,并将其从 table2 中的“评级”与 中的“率”列进行比较table1 其中 'rate' > 0 和两个表中的 id/movid 具有相同的编号。
使用上面的示例,要比较的结果应限于:
id | rate
=====================
1 | 8
4 | 4
7 | 8
movid | userid | rating
================================
1 | 3 | 6
4 | 3 | 7
7 | 3 | 5
尽管用户 ID 3 在 table2 中对 movid 5 有评分,但在 table1 中对 id 5 的评分为 0(无评分) ,所以它不会比较那些。
这将比较每个 id/movid 的评分,然后将其计入总体总数。由于评分数字是基于满分 10 分,我猜测确定相似度百分比的最佳方法是取每个 id/movid 之间的差异,然后从 10 中减去它以获得百分比数字。
对于 id/movid 1,table1 中的 'rate' 为 8,table2 中的 'rating'是 6。这些数字之间的差是 2。我们从 10 中减去 2,得到 id/movid 1 的 80% 相似度分数。
每次比较都需要这样做,然后将它们加在一起。
所以根据我的计算,id/movid 1、4 和 7 的相似度得分加起来为 73%(四舍五入,不带小数)。
这个总百分比金额是我想要达到的最终结果。谁能帮我吗?为了让它发挥作用,我拔掉了所有的头发,现在我已经秃了。
【问题讨论】: