2024-03-29 02:08:44 发布
网友
我正在研究概率矩阵分解。我想将评分矩阵分为训练和验证。我看到的代码不是随机样本
我一直在想怎么做
为了一个简单的例子,原始矩阵R是(10,10)。我在寻找一个列矩阵,它是a(10,10),但只有,比方说,70%的随机抽样矩阵R的值,其他的都是0。验证矩阵也为(10,10),但剩余30%的值为0
这里的关键是保持矩阵的大小相同
有人知道怎么做吗
编辑: 仔细想想:如果你做元素加法,TrainingMatrix+ValidationMatrix=Matrix R
我的解决方案。如果有更简单/更快的方法,请告诉我
import copy #Figuring out Matrix Sampling np.random.seed(3) training_percent = .7 R = np.arange(100).reshape(10,10) print("R:") print(R) #Get the indexes of the non-zero elements non_zero_is,non_zero_js = np.nonzero(R) #Randomly sample the indexes sampled_indexes_of_non_zeros = np.random.choice(len(i), int(np.floor(training_percent * len(i))), replace=False) #Training Mask training_mask = np.zeros(R.shape,dtype=bool) for position in sampled_indexes_of_non_zeros: training_mask[non_zero_is[position],non_zero_js[position]] = True #Training Matrix training_matrix = R.copy() training_matrix[~training_mask] = 0 print("\ntraining_martix:") print(training_matrix) #Validation Matrix validation_matrix = R.copy() validation_matrix[training_mask] = 0 print("\nvalidation_martix:") print(validation_matrix)
我的解决方案。如果有更简单/更快的方法,请告诉我
相关问题 更多 >
编程相关推荐