如何为测试数据添加20%噪声?关于np.random用法的疑问
测试数据添加20%噪声的实现分析
方式一的正确性
方式一完全满足你的核心需求:
x_test_noise = x_test * np.random.uniform(0.8, 1.2, size=x_test.shape)
np.random.uniform(0.8, 1.2, size=x_test.shape)会生成一个和x_test形状完全一致的数组,数组里的每个元素都是从0.8到1.2的均匀分布中独立抽取的随机数。和x_test相乘时,NumPy会执行逐元素乘法,也就是说x_test里的每一个值,都会被乘以一个独一无二的随机数。
方式二的问题
方式二不仅无法实现需求,还存在逻辑冗余:
x_test_noise=pd.DataFrame() for i in range (len(x_test)): for j in range(len(x_test.columns)): x_test_noise=x_test*np.random.uniform(0.8,1.2)
- 每次调用
np.random.uniform(0.8,1.2)(不带size参数)只会生成单个标量随机数 - 两层循环里反复执行
x_test_noise=x_test*这个标量,最终所有元素都会被最后一次循环生成的那个随机数相乘,前面的循环操作完全是重复无效的。
结论
直接使用方式一即可,它高效且精准地实现了“每个值乘以不同随机数”的需求;方式二逻辑错误,没有任何使用价值。
内容的提问来源于stack exchange,提问作者Magnifex
相关产品推荐
相关产品推荐

