赞
踩
在做算法时,有时数据量太少,训练得到的结果不准确,此时可以对数据进行随机扰动进行扩容,即对数据进行一个范围的上下浮动,以增加数据量,来提高算法的鲁棒性,代码如下:
//随机扰动的默认值
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;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。