最近验证自己模型鲁棒性,写了向交互矩阵随机添加噪声的代码
# 生成噪声矩阵
# 假设user_item_matrix是你的用户项目交互矩阵
user_item_matrix = trnMat#读取的矩阵,coo矩阵形式
# 获取非零元素的坐标
nonzero_indices = list(zip(user_item_matrix.row, user_item_matrix.col))
# 计算要添加的噪声数目
num_nonzero_elements = len(nonzero_indices)
noise_percentage = 0.10
num_noise_elements = int(noise_percentage * num_nonzero_elements)
# 生成正态分布的噪声值
mean = 0.0 # 正态分布的均值
std_dev = 1.0 # 正态分布的标准差
noise = np.random.normal(loc=mean, scale=std_dev, size=num_noise_elements)
# 随机选择要添加噪声的非零元素
chosen_indices = np.random.choice(num_nonzero_elements, size=num_noise_elements, replace=False)
# 将噪声添加到矩阵中
for i in range(num_noise_elements):
row, col = nonzero_indices[chosen_indices[i]]
user_item_matrix.data[chosen_indices[i]] += noise[i]
trnMat = user_item_matrix#最后赋值回你读取的矩阵