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)
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
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)
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")
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"
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()
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")