Some collaborative filtering algorithm demo:
- Item-based CF
- Matrix Factorization (ALS)
- word2vec
brew install pip3
pip3 install numpy
pip3 install gensim
➜ CFDemo git:(master) python3 cf.py
基于用户的协同过滤推荐
用户:andy
喜欢:['霍乱时期的爱情']
相似用户:[(0.3333333333333333, 'ray'), (0.3333333333333333, 'david'), (0.3333333333333333, 'ann')]
推荐:[('迟到的间隔年', 2), ('从0到1', 1), ('活着', 1), ('百年孤独', 1), ('枪炮、病菌与钢铁:人类社会的命运', 1)]
用户:jim
喜欢:['迟到的间隔年', '背包十年:我的职业是旅行']
相似用户:[(0.3333333333333333, 'michale'), (0.25, 'ray'), (0.25, 'ann')]
推荐:[('霍乱时期的爱情', 2), ('寻路中国:从乡村到工厂的自驾之旅', 1), ('活着', 1), ('枪炮、病菌与钢铁:人类社会的命运', 1)]
用户:joel
喜欢:['人类简史:从动物到上帝', '中国历代政治得失', '失控', '巨人的陨落:世纪三部曲']
相似用户:[(0.16666666666666666, 'jack')]
推荐:[('创业维艰', 1), ('浪潮之巅', 1)]
用户:david
喜欢:['霍乱时期的爱情', '百年孤独', '从0到1']
相似用户:[(0.3333333333333333, 'andy'), (0.2, 'ray'), (0.2, 'ann')]
推荐:[('迟到的间隔年', 2), ('活着', 1), ('枪炮、病菌与钢铁:人类社会的命运', 1)]
用户:ray
喜欢:['霍乱时期的爱情', '迟到的间隔年', '枪炮、病菌与钢铁:人类社会的命运']
相似用户:[(0.5, 'ann'), (0.3333333333333333, 'andy'), (0.25, 'jim'), (0.2, 'david')]
推荐:[('从0到1', 1), ('百年孤独', 1), ('背包十年:我的职业是旅行', 1), ('活着', 1)]
用户:michale
喜欢:['寻路中国:从乡村到工厂的自驾之旅', '背包十年:我的职业是旅行']
相似用户:[(0.3333333333333333, 'jim')]
推荐:[('迟到的间隔年', 1)]
用户:ann
喜欢:['霍乱时期的爱情', '迟到的间隔年', '活着']
相似用户:[(0.5, 'ray'), (0.3333333333333333, 'andy'), (0.25, 'jim'), (0.2, 'david')]
推荐:[('从0到1', 1), ('百年孤独', 1), ('背包十年:我的职业是旅行', 1), ('枪炮、病菌与钢铁:人类社会的命运', 1)]
用户:jack
喜欢:['创业维艰', '失控', '浪潮之巅']
相似用户:[(0.16666666666666666, 'joel')]
推荐:[('人类简史:从动物到上帝', 1), ('巨人的陨落:世纪三部曲', 1), ('中国历代政治得失', 1)]
基于书籍的协同过滤推荐
根据 从0到1 推荐:
百年孤独 1.000000
霍乱时期的爱情 0.250000
根据 迟到的间隔年 推荐:
霍乱时期的爱情 0.400000
活着 0.333333
枪炮、病菌与钢铁:人类社会的命运 0.333333
背包十年:我的职业是旅行 0.250000
根据 霍乱时期的爱情 推荐:
迟到的间隔年 0.400000
百年孤独 0.250000
活着 0.250000
枪炮、病菌与钢铁:人类社会的命运 0.250000
从0到1 0.250000
根据 百年孤独 推荐:
从0到1 1.000000
霍乱时期的爱情 0.250000
根据 中国历代政治得失 推荐:
巨人的陨落:世纪三部曲 1.000000
人类简史:从动物到上帝 1.000000
失控 0.500000
根据 巨人的陨落:世纪三部曲 推荐:
人类简史:从动物到上帝 1.000000
中国历代政治得失 1.000000
失控 0.500000
根据 寻路中国:从乡村到工厂的自驾之旅 推荐:
背包十年:我的职业是旅行 0.500000
根据 失控 推荐:
浪潮之巅 0.500000
巨人的陨落:世纪三部曲 0.500000
创业维艰 0.500000
人类简史:从动物到上帝 0.500000
中国历代政治得失 0.500000
根据 浪潮之巅 推荐:
创业维艰 1.000000
失控 0.500000
根据 活着 推荐:
迟到的间隔年 0.333333
霍乱时期的爱情 0.250000
根据 人类简史:从动物到上帝 推荐:
巨人的陨落:世纪三部曲 1.000000
中国历代政治得失 1.000000
失控 0.500000
根据 创业维艰 推荐:
浪潮之巅 1.000000
失控 0.500000
根据 背包十年:我的职业是旅行 推荐:
寻路中国:从乡村到工厂的自驾之旅 0.500000
迟到的间隔年 0.250000
根据 枪炮、病菌与钢铁:人类社会的命运 推荐:
迟到的间隔年 0.333333
霍乱时期的爱情 0.250000
➜ CFDemo git:(master) ✗ python3 matrix_factorization.py
[[ 1. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 1. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 1. 0. 0. 1.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 1. 0.]
[ 0. 0. 0. 0. 0. 1. 1. 0. 0. 1. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 1. 0. 1. 0. 0. 1. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0.]
[ 0. 1. 0. 1. 0. 0. 0. 1. 0. 0. 1. 0. 0. 0.]]
['从0到1', '人类简史:从动物到上帝', '寻路中国:从乡村到工厂的自驾之旅', '中国历代政治得失', '枪炮、病菌与钢铁:人类社会的命运', '活着', '霍乱时期的爱情', '巨人的陨落:世纪三部曲', '浪潮之巅', '迟到的间隔年', '失控', '百年孤独', '背包十年:我的职业是旅行', '创业维艰']
['david', 'jack', 'jim', 'ann', 'ray', 'andy', 'michale', 'joel']
======= 用户矩阵 ========
david [ 0.83821978 0.67504514]
jack [ 0.7301199 0.7786698]
jim [ 0.99092523 0.54686868]
ann [ 0.69017405 0.77860467]
ray [ 0.81875941 0.6949482 ]
andy [ 0.88999345 0.62954112]
michale [ 0.71954616 0.7469942 ]
joel [ 0.71514722 0.84212803]
======= 物品矩阵 ========
从0到1 [ 1.00970553 0.20106905]
人类简史:从动物到上帝 [ 0.66846312 0.53815877]
寻路中国:从乡村到工厂的自驾之旅 [ 0.83653201 0.49769333]
中国历代政治得失 [ 0.342655 0.86138845]
枪炮、病菌与钢铁:人类社会的命运 [ 0.96514058 0.26385684]
活着 [ 1.07895301 0.29015911]
霍乱时期的爱情 [ 0.42207883 0.93594765]
巨人的陨落:世纪三部曲 [ 0.51821512 0.75187852]
浪潮之巅 [ 0.58062918 0.6265629 ]
迟到的间隔年 [ 0.59466993 0.7380648 ]
失控 [ 0.49668886 0.80655972]
百年孤独 [ 0.4941525 0.86616188]
背包十年:我的职业是旅行 [ 0.48849358 0.88923844]
创业维艰 [ 0.84041045 0.53489977]
======= Matrix Factorization 推荐结果 ========
david 活着 1.10027025426
jim 从0到1 1.11050104667
jim 寻路中国:从乡村到工厂的自驾之旅 1.10111356072
jim 枪炮、病菌与钢铁:人类社会的命运 1.10067718672
jim 活着 1.22784068608
jim 创业维艰 1.12530385366
andy 活着 1.14292820666
➜ CFDemo git:(master) python3 word2vec.py
基于书籍的 word2vec 协同过滤推荐
根据 背包十年:我的职业是旅行 推荐:
迟到的间隔年 0.22
人类简史:从动物到上帝 0.11
失控 0.09
枪炮、病菌与钢铁:人类社会的命运 0.09
浪潮之巅 0.07
霍乱时期的爱情 0.07
中国历代政治得失 0.06
寻路中国:从乡村到工厂的自驾之旅 0.05
巨人的陨落:世纪三部曲 0.03
活着 0.03
根据 枪炮、病菌与钢铁:人类社会的命运 推荐:
百年孤独 0.20
迟到的间隔年 0.16
中国历代政治得失 0.09
背包十年:我的职业是旅行 0.09
失控 0.06
巨人的陨落:世纪三部曲 0.06
创业维艰 -0.02
活着 -0.03
浪潮之巅 -0.03
从0到1 -0.09
根据 从0到1 推荐:
百年孤独 0.08
浪潮之巅 0.06
中国历代政治得失 0.03
寻路中国:从乡村到工厂的自驾之旅 0.03
创业维艰 -0.03
迟到的间隔年 -0.07
失控 -0.07
巨人的陨落:世纪三部曲 -0.07
霍乱时期的爱情 -0.08
背包十年:我的职业是旅行 -0.09
根据 寻路中国:从乡村到工厂的自驾之旅 推荐:
活着 0.14
背包十年:我的职业是旅行 0.05
人类简史:从动物到上帝 0.03
从0到1 0.03
霍乱时期的爱情 0.03
创业维艰 -0.03
中国历代政治得失 -0.03
百年孤独 -0.07
浪潮之巅 -0.10
迟到的间隔年 -0.10
根据 霍乱时期的爱情 推荐:
人类简史:从动物到上帝 0.20
巨人的陨落:世纪三部曲 0.17
中国历代政治得失 0.07
背包十年:我的职业是旅行 0.07
寻路中国:从乡村到工厂的自驾之旅 0.03
活着 0.02
失控 -0.01
创业维艰 -0.07
从0到1 -0.08
浪潮之巅 -0.10
根据 创业维艰 推荐:
浪潮之巅 0.14
活着 0.11
中国历代政治得失 0.01
巨人的陨落:世纪三部曲 -0.01
百年孤独 -0.02
枪炮、病菌与钢铁:人类社会的命运 -0.02
迟到的间隔年 -0.03
从0到1 -0.03
寻路中国:从乡村到工厂的自驾之旅 -0.03
失控 -0.05
根据 中国历代政治得失 推荐:
活着 0.19
枪炮、病菌与钢铁:人类社会的命运 0.09
霍乱时期的爱情 0.07
失控 0.06
背包十年:我的职业是旅行 0.06
百年孤独 0.04
迟到的间隔年 0.04
从0到1 0.03
创业维艰 0.01
巨人的陨落:世纪三部曲 -0.01
根据 巨人的陨落:世纪三部曲 推荐:
人类简史:从动物到上帝 0.17
霍乱时期的爱情 0.17
浪潮之巅 0.13
迟到的间隔年 0.07
枪炮、病菌与钢铁:人类社会的命运 0.06
背包十年:我的职业是旅行 0.03
失控 0.01
创业维艰 -0.01
中国历代政治得失 -0.01
从0到1 -0.07
根据 失控 推荐:
背包十年:我的职业是旅行 0.09
迟到的间隔年 0.07
中国历代政治得失 0.06
枪炮、病菌与钢铁:人类社会的命运 0.06
浪潮之巅 0.03
人类简史:从动物到上帝 0.02
巨人的陨落:世纪三部曲 0.01
霍乱时期的爱情 -0.01
百年孤独 -0.04
创业维艰 -0.05
根据 人类简史:从动物到上帝 推荐:
霍乱时期的爱情 0.20
巨人的陨落:世纪三部曲 0.17
背包十年:我的职业是旅行 0.11
寻路中国:从乡村到工厂的自驾之旅 0.03
失控 0.02
浪潮之巅 -0.01
迟到的间隔年 -0.05
百年孤独 -0.07
中国历代政治得失 -0.09
从0到1 -0.09
根据 活着 推荐:
中国历代政治得失 0.19
寻路中国:从乡村到工厂的自驾之旅 0.14
创业维艰 0.11
背包十年:我的职业是旅行 0.03
霍乱时期的爱情 0.02
浪潮之巅 0.02
枪炮、病菌与钢铁:人类社会的命运 -0.03
迟到的间隔年 -0.05
失控 -0.05
百年孤独 -0.07
根据 浪潮之巅 推荐:
创业维艰 0.14
巨人的陨落:世纪三部曲 0.13
背包十年:我的职业是旅行 0.07
从0到1 0.06
失控 0.03
活着 0.02
人类简史:从动物到上帝 -0.01
枪炮、病菌与钢铁:人类社会的命运 -0.03
中国历代政治得失 -0.08
百年孤独 -0.09
根据 迟到的间隔年 推荐:
背包十年:我的职业是旅行 0.22
枪炮、病菌与钢铁:人类社会的命运 0.16
百年孤独 0.10
失控 0.07
巨人的陨落:世纪三部曲 0.07
中国历代政治得失 0.04
创业维艰 -0.03
活着 -0.05
人类简史:从动物到上帝 -0.05
从0到1 -0.07
根据 百年孤独 推荐:
枪炮、病菌与钢铁:人类社会的命运 0.20
迟到的间隔年 0.10
从0到1 0.08
中国历代政治得失 0.04
创业维艰 -0.02
失控 -0.04
寻路中国:从乡村到工厂的自驾之旅 -0.07
活着 -0.07
人类简史:从动物到上帝 -0.07
浪潮之巅 -0.09