matrix-based CF(基于矩阵分解的协同过滤算法)

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
matrix_based CF
"""


import numpy as np
import pandas as pd


class CFmatrix(object):
    def __init__(self, num_feature, num_recommendation):
        self.num_feature = num_feature
        self.num_recommendation = num_recommendation

    def get_matrix_feature(self, data_beha):
        data_beha = np.array(data_beha)
        [num_user, num_item] = data_beha.shape
        self.num_feature = min([self.num_feature, num_user, num_item])
        u, sigma, v = np.linalg.svd(data_beha)
        u0, sigma0, v0 = u[:, :self.num_feature], sigma[:self.num_feature], v[:self.num_feature, :]
        sigma0 = np.diag(np.sqrt(sigma0))
        return np.dot(u0, sigma0), np.dot(sigma0, v0)

    def get_att_item_to_user(self, data_beha, user_index, item_index):
        user_fea, item_fea = self.get_matrix_feature(data_beha=data_beha)
        user_fea_i = user_fea[user_index,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值