随机扰动

 在做算法时,有时数据量太少,训练得到的结果不准确,此时可以对数据进行随机扰动进行扩容,即对数据进行一个范围的上下浮动,以增加数据量,来提高算法的鲁棒性,代码如下:

//随机扰动的默认值

private static final int NUM = 10;

private static final double MIN_RANGE = -0.1;

private static final double MAX_RANGE = 0.1;

/**
 * 随机扰动,为原始数据扩容
 * @param inArr 输入数据
 * @param num 扩容的倍数,如果为null或小于1,则使用默认值
 * @param minRange 扰动的最小值,如-0.1,表示原始数据下浮10%,如果为null则使用默认值
 * @param maxRange 扰动的最大值,如0.1,表示原始数据上浮10%,如果为null则使用默认值
 * @return
 */
public double[][] randomRaoDong(double[][] inArr, Integer num, Double minRange, Double maxRange){
    num = (num==null||num<=0) ? NUM : num;
    Double temp = maxRange;
    maxRange = (maxRange==null||minRange>=maxRange) ? MAX_RANGE : maxRange;
    minRange = (minRange==null||minRange>=temp) ? MIN_RANGE : minRange;

    double[][] inResult = new double[inArr.length*num][];
    int a = 0;
    for(int i=0;i<inArr.length;i++){
        int b = num;
        while(b > 0){
            double[] tempD = new double[inArr[i].length];
            for(int j=0;j<inArr[i].length;j++){
                double rate = Double.parseDouble(String.format("%.5f", (Math.random()*(maxRange - minRange) + minRange)));
                tempD[j] = inArr[i][j] * (1 + rate);
            }

            inResult[a] = tempD;
            a++;
            b--;
        }
    }

    return inResult;
}

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值