Example #1
0
    y_values1 = []
    y_values2 = []
    y_values3 = []

    # data, axis_users, axis_pois, check_data = init_data(region, filter_count, train_percent)
    data, axis_users, axis_pois, check_data = init_data_by_user(
        tuple([0, 3, 4, 5, 30]), filter_count, train_percent)
    user_num = len(axis_users)
    poi_num = len(axis_pois)

    init_tensor = [[[
        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)]
    transition_tensor = inreducible_tensor(mtt(data, user_num, poi_num),
                                           user_num, time_num, poi_num, alpha)
    res1, iterator_values1 = tensor_three_mode_product(transition_tensor,
                                                       init_tensor)

    order = 1
    while order <= settings.ITERATOR_NUMBER:
        x_values.append(order)
        y_values1.append(iterator_values1[order])
        order += 1

    label = "" + str(((settings.TIME_SLICE * user_num * poi_num)**2))
    pylab.plot(x_values,
               y_values1,
               'rs',
               linewidth=1,
               linestyle="-",
               label=label)
Example #2
0
    while train_percent < 1:
        data, axis_users, axis_pois, check_data = init_data(
            region, filter_count, train_percent)
        user_num = len(axis_users)
        time_num = settings.TIME_SLICE
        poi_num = len(axis_pois)

        transition_tensor = inreducible_tensor(mtt(data, user_num,
                                                   poi_num), user_num,
                                               time_num, poi_num, alpha)
        # equal_all_sum_one: equal
        init_tensor1 = [[[
            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)]

        res1, iterator_values = tensor_three_mode_product(
            transition_tensor, init_tensor1)
        # print res

        check_tensor = get_check_tensor(check_data, user_num, time_num,
                                        poi_num)

        residual1 = delta_tensor_norm(res1, check_tensor)

        tensor_stream_res = tensor_stream(data, user_num, poi_num, 10)
        print "张量流长度:" + str(len(tensor_stream_res))

        # def dta(new_tensor, rank, variance_matrix_list=None, alpha=None):
        #     return reconstruct_tensor, new_variance_matrix_list

        reconstruct_tensor = None
        variance_matrix_list = None
Example #3
0
    train_percent = 0.95
    alpha = 0.95

    x_values = []
    y_values1 = []
    y_values2 = []
    y_values3 = []

    # data, axis_users, axis_pois, check_data = init_data(region, filter_count, train_percent)
    data, axis_users, axis_pois, check_data = init_data_by_user(tuple([0, 3, 4, 5, 30]), filter_count, train_percent)
    user_num = len(axis_users)
    poi_num = len(axis_pois)

    init_tensor = [[[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)]
    transition_tensor = inreducible_tensor(mtt(data, user_num, poi_num), user_num, time_num, poi_num, alpha)
    res1, iterator_values1 = tensor_three_mode_product(transition_tensor, init_tensor)

    order = 1
    while order <= settings.ITERATOR_NUMBER:
        x_values.append(order)
        y_values1.append(iterator_values1[order])
        order += 1

    label = ""+str(((settings.TIME_SLICE*user_num*poi_num)**2))
    pylab.plot(x_values, y_values1, 'rs', linewidth=1, linestyle="-", label=label)


    data, axis_users, axis_pois, check_data = init_data_by_user(tuple([0, 3, 4]), filter_count, train_percent)
    user_num = len(axis_users)
    poi_num = len(axis_pois)
Example #4
0
    temp_tensor = [[[random.choice([0, 1, 1000]) for i in range(poi_num)] for j in range(time_num)] for k in range(user_num)]
    temp_tensor = three_tensor_hadarmard(1/three_order_tensor_first_norm(temp_tensor), temp_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"

    temp_tensor1 = temp_tensor[:]
    temp_tensor2 = temp_tensor[:]
    temp_tensor3 = temp_tensor[:]
    temp_tensor4 = temp_tensor[:]

    res1, iterator_values1 = tensor_three_mode_product(transition_tensor, temp_tensor1)
    res2, iterator_values2 = tensor_three_mode_product(transition_tensor2, temp_tensor2)
    # res3, iterator_values3 = shifted_tensor_three_mode_product(transition_tensor3, temp_tensor3, alpha_shift)
    res4, iterator_values4 = shifted_tensor_three_mode_product(transition_tensor3, temp_tensor4, 0, shifted=False)

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

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

    # print analysis_eigen_tensor(res3, "user")
Example #5
0
                    for j in range(time_num)] for k in range(user_num)]
    temp_tensor = three_tensor_hadarmard(
        1 / three_order_tensor_first_norm(temp_tensor), temp_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"

    temp_tensor1 = temp_tensor[:]
    temp_tensor2 = temp_tensor[:]
    temp_tensor3 = temp_tensor[:]
    temp_tensor4 = temp_tensor[:]

    res1, iterator_values1 = tensor_three_mode_product(transition_tensor,
                                                       temp_tensor1)
    res2, iterator_values2 = tensor_three_mode_product(transition_tensor2,
                                                       temp_tensor2)
    # res3, iterator_values3 = shifted_tensor_three_mode_product(transition_tensor3, temp_tensor3, alpha_shift)
    res4, iterator_values4 = shifted_tensor_three_mode_product(
        transition_tensor3, temp_tensor4, 0, shifted=False)

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

    print analysis_eigen_tensor(res2, "user")
    print analysis_eigen_tensor(res2, "time")
    print analysis_eigen_tensor(res2, "poi")
    print "\n"
Example #6
0
    y_values1 = []
    y_values2 = []
    y_values3 = []
    y_values4 = []

    order = 1
    while alpha >= 0.2:
        data, axis_users, axis_pois, check_data = init_data(region, filter_count, train_percent)
        user_num = len(axis_users)
        poi_num = len(axis_pois)

        transition_tensor = inreducible_tensor(mtt(data, user_num, poi_num), user_num, time_num, poi_num, alpha)

        # equal_all_sum_one: equal
        init_tensor = [[[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)]
        res, iterator_values = tensor_three_mode_product(transition_tensor, init_tensor)

        values.append(iterator_values)
        alpha -= 0.2

    print values
    # print values.keys()
    value1 = values[0]
    value2 = values[1]
    value3 = values[2]
    value4 = values[3]
    for index in range(1, settings.ITERATOR_NUMBER+1):
        x_values.append(index)
        y_values1.append(math.log10(value1[index]))
        y_values2.append(math.log10(value2[index]))
        y_values3.append(math.log10(value3[index]))
    poi_num = len(axis_pois)
    transition_tensor = mtt(data, user_num, poi_num)

    # equal_all_sum_one: equal
    init_tensor1 = [
        [[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)
    ]

    # random_all_sum_one
    temp_tensor = [[[random.random() for i in range(poi_num)] for j in range(time_num)] for k in range(user_num)]
    init_tensor2 = three_tensor_hadarmard(1 / three_order_tensor_first_norm(temp_tensor), temp_tensor)

    # user_slice_sum_one
    init_tensor3 = [
        [[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)
    ]

    res1, iterator__values1 = tensor_three_mode_product(transition_tensor, init_tensor1)
    print res1
    print sparsity(res1)

    x, y, z = numpy.mgrid[0:user_num, 0:time_num, 0:poi_num]
    # val = numpy.random.random(z.shape)

    print x.shape, y.shape, z.shape
    # Plot and show in mayavi2
    # pts = mlab.points3d(x, y, z, res1, scale_factor=0.4, transparent=False)
    # mlab.show()
Example #8
0
    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"

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

    print analysis_eigen_tensor(res3, "user")