[原博文](https://blog.csdn.net/qqzhuimengren/article/details/78345891)一些说明

原博文一些说明:

1、程序为py3()

2、题外话

17年那会刚学了python及协同过滤,边先做了个最简单的测试程序,没考虑效率等问题,核心是:实现算法即可。后来做了一些优化、以及ubcf、ibcf、slope-one等相关算法的程序,但由于多种原因一直未能整理更新,近期也不会更吧。。。

3、当时的整个思路:

3.1 写个.py文件:

将rating数据随机分成了training和test;

因为通常需要五折交叉试验,所以没运行一次都可以生成不同的(train,test)数据集

3.2 关于该class CF的进一步说明

里面其实已经很多注解了,特别要注意每个函数传入传出的数据格式

否则肯定是跑不起来的

  • D:/d/201709train.txt及test的数据格式和rating的数据格式一样

  • formatRate函数将train、test转化 userDict或者itemDict

  • 即每个人看了哪些电影及评分

    {userid1:[(movieId1,rating),movieId2,rating),...]
     userid2:[(movieId1,rating),movieId2,rating),...]
     .
     .
    }
    
  • itemDict的格式也是类似,只是key是movieId

  • 之所以转化成itemDict和MoveDict是因为后续运算过程中在进行相关运算时直接进行读取就可以

    (self.train_data, self.test_data) = (ratings[0], ratings[1])  # [UserID::MovieID::Rating::Timestamp]
    #传个class的数据是嵌套列表
    [
        [UserID::MovieID::Rating::Timestamp]
        [UserID::MovieID::Rating::Timestamp]
        ...
    ]
    
  • formatuserDict函数就是依次把目标用户和other用户的数据转成向量,读取的是userDict;数据格式是

    [	[目标用户评分,other用户评分]
        [0.2, 1],
        [0, 0.4],
        [0.2, 0]
        ...
    ]
    
3.3 start3函数的调用顺序
  1. 读入原始数据(movies和ratings),传给demo

  2. 计算准确率、召回率:demo.getPrecision() 其内部调用

    • 调用getRecommand,处理train和test数据,返回推荐列表、共同评分用户集
    • 计算precision和recall
  3. 简单方法计算预测评分:foreCast

计算Mae值:cal_Mae方法

4、最后

  • 先补充这些吧,
  • 很感谢那些联系我的伙伴们。另外,很抱歉,没能给你们更多的帮助
  • 一个是python,一个是算法本身,一个是数据。如果没有比较了解,一些疑问我真的不知该怎么回答。

作者:akufire

邮箱:1467288927@qq.com
本文由博客一文多发平台 OpenWrite 发布!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PythonJavaC++go

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值