def mtt(data, user_num, poi_num, zero_adjustment=True):
    print "共有" + str(user_num) + "个用户"
    for key in data.keys():
        print "用户" + str(key) + "序列为" + str(data[key])

    correlation_matrix = get_correlation_matrix(data, user_num)
    nor_cor_matrix = normalize(correlation_matrix)
    print "归一化相关系数矩阵: ", nor_cor_matrix

    transition_tensor = build_six_order_transition_tensor(data, poi_num, nor_cor_matrix, zero_adjustment)
    print "转移张量非零元素占比:", sparsity(transition_tensor)
    print "转移张量是否满足随机性:", check_six_order_transition_tensor(transition_tensor)

    return transition_tensor
def mtt(data, user_num, poi_num, zero_adjustment=True):
    print "共有" + str(user_num) + "个用户"
    for key in data.keys():
        print "用户" + str(key) + "序列为" + str(data[key])

    correlation_matrix = get_correlation_matrix(data, user_num)
    nor_cor_matrix = normalize(correlation_matrix)
    print "归一化相关系数矩阵: ", nor_cor_matrix

    transition_tensor = build_six_order_transition_tensor(
        data, poi_num, nor_cor_matrix, zero_adjustment)
    print "转移张量非零元素占比:", sparsity(transition_tensor)
    print "转移张量是否满足随机性:", check_six_order_transition_tensor(transition_tensor)

    return transition_tensor
Esempio n. 3
0
    #
    # print analysis_eigen_tensor(res1)
    # print analysis_eigen_tensor(res2)
    # print analysis_eigen_tensor(res3)

    temp_tensor_all_equal = [[[1/(poi_num * time_num * user_num) for i in range(poi_num)] for j in range(time_num)] for k in range(user_num)]

    temp_tensor = [[[random.choice([0, 1, 2, 3, 4]) for i in range(poi_num)] for j in range(time_num)] for k in range(user_num)]
    temp_tensor_all_ramdom = three_tensor_hadarmard(1/three_order_tensor_first_norm(temp_tensor), temp_tensor)

    temp_tensor_user_equal = [[[1/(poi_num * time_num) for i in range(poi_num)] for j in range(time_num)] for k in range(user_num)]

    temp_tensor = [[[random.choice([0, 1, 2, 3, 4]) for i in range(poi_num)] for j in range(time_num)] for k in range(user_num)]
    temp_tensor_user_ramdom = user_slice_sum_one(temp_tensor)

    print check_six_order_transition_tensor(transition_tensor)
    # print "初始张量性质:\n"
    # print analysis_eigen_tensor(temp_tensor, "user")
    # print analysis_eigen_tensor(temp_tensor, "time")
    # print analysis_eigen_tensor(temp_tensor, "poi")
    # print "\n"

    res1, iterator_values1 = tensor_three_mode_product(transition_tensor, temp_tensor_all_equal)
    res2, iterator_values2 = tensor_three_mode_product(transition_tensor, temp_tensor_all_ramdom)
    res3, iterator_values3 = tensor_three_mode_product(transition_tensor, temp_tensor_user_equal)
    res4, iterator_values4 = tensor_three_mode_product(transition_tensor, temp_tensor_user_ramdom)

    print analysis_eigen_tensor(res1, "user")
    print analysis_eigen_tensor(res1, "time")
    print analysis_eigen_tensor(res1, "poi")
    print "\n"