Example #1
0
        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
        for tensor_data in tensor_stream_res[:-2]:
            # print "data:", sparsity(tensor_data)
            reconstruct_tensor, variance_matrix_list = dta(
                tensor.tensor(numpy.array(tensor_data)), (4, 2, 200),
                variance_matrix_list)
            # print sparsity(reconstruct_tensor.totensor().tondarray().tolist())
Example #2
0
            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)]
        # user_slice_sum_one: equal
        init_tensor2 = [[[1 / (poi_num * time_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)
        res2, iterator_values2 = tensor_three_mode_product(
            transition_tensor, init_tensor2)

        # print res

        check_tensor = get_check_tensor(check_data, user_num, time_num,
                                        poi_num)
        residual1 = delta_tensor_norm(res1, check_tensor)
        residual2 = delta_tensor_norm(res2, check_tensor)

        x_values.append(train_percent)
        y_values1.append(residual1)
        y_values2.append(residual2)
        train_percent += 0.1

    pylab.plot(x_values,
               y_values1,
               'rs',
               linewidth=1,
               linestyle="-",
               label=u"整体")
    pylab.plot(x_values,
               y_values2,
Example #3
0
        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
        for tensor_data in tensor_stream_res[:-2]:
            # print "data:", sparsity(tensor_data)
            reconstruct_tensor, variance_matrix_list = dta(
                tensor.tensor(numpy.array(tensor_data)), (4, 2, 200), variance_matrix_list
            )
            # print sparsity(reconstruct_tensor.totensor().tondarray().tolist())
    poi_num = len(axis_pois)

    # print data

    tensor_stream_res = tensor_stream(data, user_num, poi_num, 2)
    print 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
    for tensor_data in tensor_stream_res:
        # print "data:", sparsity(tensor_data)
        reconstruct_tensor, variance_matrix_list = dta(tensor.tensor(numpy.array(tensor_data)), (4, 2, 10), variance_matrix_list)
        # print sparsity(reconstruct_tensor.totensor().tondarray().tolist())

    res = reconstruct_tensor.totensor().tondarray().tolist()
    # print res
    print "最终张量:", sparsity(res)

    nor_res = dta_normalize_tensor(res, user_num, time_num, poi_num)
    check_tensor = get_check_tensor(check_data, user_num, time_num, poi_num)
    # print check_tensor
    residual = delta_tensor_norm(nor_res, check_tensor)

    print residual
    print nor_res
    print check_data
    print sparsity(check_tensor)
    print validate_eigen_tensor(nor_res), validate_eigen_tensor(check_tensor)
    # print data

    tensor_stream_res = tensor_stream(data, user_num, poi_num, 2)
    print 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
    for tensor_data in tensor_stream_res:
        # print "data:", sparsity(tensor_data)
        reconstruct_tensor, variance_matrix_list = dta(
            tensor.tensor(numpy.array(tensor_data)), (4, 2, 10),
            variance_matrix_list)
        # print sparsity(reconstruct_tensor.totensor().tondarray().tolist())

    res = reconstruct_tensor.totensor().tondarray().tolist()
    # print res
    print "最终张量:", sparsity(res)

    nor_res = dta_normalize_tensor(res, user_num, time_num, poi_num)
    check_tensor = get_check_tensor(check_data, user_num, time_num, poi_num)
    # print check_tensor
    residual = delta_tensor_norm(nor_res, check_tensor)

    print residual
    print nor_res
    print check_data
    print sparsity(check_tensor)
    print validate_eigen_tensor(nor_res), validate_eigen_tensor(check_tensor)
Example #6
0
        user_num = len(axis_users)
        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)]
        # user_slice_sum_one: equal
        init_tensor2 = [[[1/(poi_num * time_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)
        res2, iterator_values2 = tensor_three_mode_product(transition_tensor, init_tensor2)

        # print res

        check_tensor = get_check_tensor(check_data, user_num, time_num, poi_num)
        residual1 = delta_tensor_norm(res1, check_tensor)
        residual2 = delta_tensor_norm(res2, check_tensor)

        x_values.append(train_percent)
        y_values1.append(residual1)
        y_values2.append(residual2)
        train_percent += 0.1

    pylab.plot(x_values, y_values1, 'rs', linewidth=1, linestyle="-", label=u"整体")
    pylab.plot(x_values, y_values2, 'bs', linewidth=1, linestyle="-", label=u"用户")
    pylab.xlabel(u"训练集比重")
    pylab.ylabel(u"准确率")
    pylab.title(u"训练集比重与准确率的关系")
    pylab.legend(loc='center right')
    pylab.show()