#!/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,
matrix-based CF(基于矩阵分解的协同过滤算法)
最新推荐文章于 2023-07-25 19:59:29 发布