def get_one_user_recom(): user = '******' alpha = 0.6 graph = read.get_graph_from_data('../data/ratings.txt') iter_num = 100 recom_result = personal_rank(graph, user, alpha, iter_num, 100) return recom_result
def get_one_user_by_mat(): """ give one fix user by mat """ user = "******" alpha = 0.8 graph = read.get_graph_from_data("../data/ratings.csv") recom_result = personal_rank_matrix(graph, user, alpha, 100) return recom_result
def get_user_recom_mat(): user = "******" alpha = 0.8 graph = read.get_graph_from_data( os.path.dirname( os.path.dirname(os.path.dirname(os.path.dirname(__file__)))) + "\\recommender\\data\\ml-latest-small\\ratings.csv") recom_result = personal_rank_mat(graph, user, alpha, 100) return recom_result
def get_one_user_recom(): """ give one fix_user recom result """ user = "******" alpha = 0.8 graph = read.get_graph_from_data("../data/ratings.csv") iter_num = 100 recom_result = personal_rank(graph, user, alpha, iter_num, 100) return recom_result """
def get_one_user_recom(): user = "******" alpha = 0.7 graph = read.get_graph_from_data("../data/ratings.csv") iter_num = 100 recom_result = personal_rank(graph, user, alpha, iter_num, 100) # item_info = read.get_item_info("../data/movies.csv") # for itemId in graph[user]: # pure_itemId = itemId.split("_")[1] # print(item_info[pure_itemId]) # print("-" * 100) # for itemId in recom_result: # pure_itemId = itemId.split("_")[1] # print(item_info[pure_itemId]) # print(recom_result[itemId]) return recom_result
def get_one_user_recom(): """ give fixed_user recom result """ user = "******" alpha = 0.8 graph = read.get_graph_from_data("../data/ratings.dat") iter_num = 100 recom_result = personal_rank(graph, user, alpha, iter_num, 100) item_info = read.get_item_info("../data/movies.dat") for itemid in graph[user]: pure_itemid = itemid.split("_")[1] print(item_info[pure_itemid]) print("----------") for itemid in recom_result: pure_itemid = itemid.split("_")[1] print(item_info[pure_itemid], recom_result[itemid])
def get_one_user_recom(): """ give one fix_user recom result :return: """ user = "******" alpha = 0.6 graph = read.get_graph_from_data("../data/rating.txt") iter_num = 100 recom_result = personal_rank(graph, user, alpha, iter_num) item_info = read.get_item_info("../data/movies.txt") for itemid in graph[user]: pure_itemid = itemid.split("_")[1] print(item_info[pure_itemid]) print("result---") for itemid in recom_result: pure_itemid = itemid.split("_")[1] print(item_info[pure_itemid]) print(recom_result[itemid]) return recom_result
def get_user_recom(): # user = "******" # alpha = 0.6 # graph = read.get_graph_from_data(os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(__file__)))) + "\\recommender\\data\\log.txt") # print(personal_rank(graph, user, alpha, 10, 10)) user = "******" alpha = 0.8 graph = read.get_graph_from_data( os.path.dirname( os.path.dirname(os.path.dirname(os.path.dirname(__file__)))) + "\\recommender\\data\\ml-latest-small\\ratings.csv") recom_result = personal_rank(graph, user, alpha, 100, 100) # item_info = read.get_item_info(os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(__file__)))) + "\\recommender\\data\\ml-latest-small\\movies.csv") # for itemid, value in graph[user].items(): # print(item_info[itemid.split("_")[1]]) # print("-"*30) # for itemid, value in recom_result.items(): # print(item_info[itemid.split("_")[1]]) # print(value) return recom_result
def get_one_user_recom_matrix(): user = "******" alpha = 0.7 graph = read.get_graph_from_data("../data/ratings.csv") recom_result = personal_rank_matrix(graph, user, alpha, 100) return recom_result
""" get E-alpha*m_mat.T Args: m_mat: vertex: total item and user point alpha: the prob for random walking Return: a sparse """ total_len = len(vertex) row = [] col = [] data = [] for index in range(total_len): row.append(index) col.append(index) data.append(1) row = np.array(row) col = np.array(col) data = np.array(data) eye_t = coo_matrix((data, (row, col)), shape=(total_len, total_len)) return eye_t.tocsr() - alpha * m_mat.tocsr().transpose() if __name__ == "__main__": graph = read.get_graph_from_data("../data/log.txt") m, vertex, address_dict = graph_to_m(graph) # print(address_dict) # print(m.todense()) # print(mat_all_point(m, vertex, 0.8))
第二步,根据M矩阵得到单位矩阵E 减去 α*M矩阵的转置 get E - alpha*m_mat.T :param m_mat: :param vertex: total user item nodes :param alpha: the prob for random walk :return: a sparse matrix """ total_len = len(vertex) rows = [] cols = [] values = [] # 初始化单位矩阵E,这也是一个稀疏矩阵,只有对角线上的元素为1 for i in range(total_len): rows.append(i) cols.append(i) values.append(1) rows = np.array(rows) cols = np.array(cols) values = np.array(values) E = coo_matrix((values, (rows, cols)), shape=(total_len, total_len)) # 使用csr格式,这种格式可以使得运算变得快一些 return E.tocsr() - alpha * m_mat.tocsr().transpose() if __name__ == '__main__': graph = read.get_graph_from_data("../data/log.csv") m, vertex, address_dict = graph_to_matrix(graph) # print(address_dict) # print(m.todense()) print(maxtrix_all_nodes(m, vertex, alpha=0.8).todense())
def get_one_user_by_matrix(): user = '******' alpha = 0.8 graph = read.get_graph_from_data('../data/ratings.txt') recom_result = personal_rank_matrix(graph, user, alpha, 100) return recom_result
''' get E-alpha*m_mat.T,矩阵公司逆里边的部分 :param m_mat: 上面函数得出的m :param vertex:所有顶点 :param alpha: :return: a sparse稀疏矩阵 ''' total_len = len(vertex) row = [] col = [] data = [] for index in range(total_len): row.append(index) col.append(index) data.append(1) row = np.array(row) col = np.array(col) data = np.array(data) eye_t = coo_matrix((data, (row, col)), shape=(total_len, total_len)) #print(eye_t.todense()) #sys.exit() return eye_t.tocsr() - alpha * m_mat.tocsr().transpose() if __name__ == '__main__': graph = read.get_graph_from_data('../data/log.txt') m, vertex, address_dict = graph_to_m(graph) #print(mat_all_point(m,vertex,0.8)) mat_all_point(m, vertex, 0.8)