在MovieLens数据集上用SVD进行评分预测

这篇博客介绍了如何参考Yehuda Koren的论文,在MovieLens数据集上训练SVD模型进行评分预测。经过41次迭代,最终得到的RMSE大约为0.922,表现一般,作者计划后续进行优化。
摘要由CSDN通过智能技术生成

参考了Yehuda Koren 08年的论文Factorization Meets the Neighborhood: a Multifaceted Collaborative Filtering Model

代码如下:

'''
Version:1.0
Created on 2014-02-25
@Author:Dior
'''

import random
import math
import cPickle as pickle

class SVD():
    def __init__(self,allfile,trainfile,testfile,factorNum=10):
        #all data file
        self.allfile=allfile
        #training set file
        self.trainfile=trainfile
        #testing set file
        self.testfile=testfile
        #get factor number
        self.factorNum=factorNum
        #get user number
        self.userNum=self.getUserNum()
        #get item number
        self.itemNum=self.getItemNum()
        #learning rate
        self.learningRate=0.01
        #the regularization lambda
        self.regularization=0.05
        #initialize the model and parameters
        self.initModel()
    #get user number function
    def getUserNum(self):
        file=self.allfile
        cnt=0
        userSet=set()
        for line in open(file):
            user=line.split('\t')[0].strip()
            if user not in userSet:
                userSet.add(user)
                cnt+=1
        return cnt
    #get item number function
    def getItemNum(self):
        file=self.allfile
        cnt=0
        itemSet=set()
        for line in open(file):
            item=line.split('\t')[1].strip()
            if item not in itemSe
  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值