当前位置:   article > 正文

随机扰动

随机扰动

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

//随机扰动的默认值

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;
}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/287876
推荐阅读
相关标签
  

闽ICP备14008679号