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),
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 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
# 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,
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)