给数组中的每个数据加上噪音的方法

给数组中的每个数据加上噪音的方法:

import numpy as np

a = np.arange(10).reshape(5,2)
a
Out[83]: 
array([[0, 1],
       [2, 3],
       [4, 5],
       [6, 7],
       [8, 9]])

假设原数组如上所示,为5行2列,那么想给每个数据都加上噪音可以一行代码完成:

np.random.normal(a, err)

其中err是欲设置的噪音的方差。

具体的理解就是:

如果对于np.random.normal这个方法,如果传入的参数是数组型的,比如第一个参数是[1, 2, 3], 第二个参数是数字型,第三个参数可选,如果第三个参数也传入,则该参数就必须是数字,因为这时候生成的数组的shape是(k, 3),k就是第三个参数值,数组的每一列分别满足均值为1,2和3,方差都为4的正态分布;

而如果第一个参数传入的是(m, n)的这种,那么第三个参数是无法指定的(目前我是这么感觉的),第二个参数,也就是scale,如果也要传入数组,那么形状必须和第一个参数相同,也即(m,n),否则只能传入标量数值,生成的结果也是(m,n)的数组,相当把数组中的每个数变成以该位置原数据为均值,以第二个参数为方差的有噪音的数据,这样就实现了给所有的数据都加上噪音。

下面是一个手写数字的加噪音应用实例:

from sklearn.datasets import load_digits
digits = load_digits()


def plot_digits(data):

    fig, ax = plt.subplots(4, 10, subplot_kw=dict(xticks=[], yticks=[]),
                           gridspec_kw=dict(wspace=0.1, hspace=0.1))
    for i, axi in enumerate(ax.flat):
        axi.imshow(data[i].reshape(8, 8), cmap='binary', 
                    interpolation='nearest', vmin=0, vmax=16)
    plt.show()

"""不加噪音画图"""
plot_digits(digits.data)

"""加噪音后画图"""
noisy = np.random.normal(digits.data, 4)
plot_digits(noisy)

加噪音前画图: 

 加噪音后画图:

 

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值