2015-06-06 64 views
1

我正在研究一个聚类程序,并且有一个我需要进行标准化的双精度数据集,以确保每个double(变量)具有相同的影响力。在Java中规范化数据集

我想使用min-max规范化,其中每个变量的最小值和最大值都已确定,但我不确定如何在Java数据集中实现这一点。有没有人有什么建议?

+0

有没有你可以在这里添加的任何示例代码?就目前而言,你的问题有点太模糊,无法回答。 –

回答

4

Encog Project wiki给出了范围归一化的utility class

构造函数将输入和归一化数据的高值和低值。

/** 
    * Construct the normalization utility, allow the normalization range to be specified. 
    * @param dataHigh The high value for the input data. 
    * @param dataLow The low value for the input data. 
    * @param dataHigh The high value for the normalized data. 
    * @param dataLow The low value for the normalized data. 
    */ 
    public NormUtil(double dataHigh, double dataLow, double normalizedHigh, double normalizedLow) { 
     this.dataHigh = dataHigh; 
     this.dataLow = dataLow; 
     this.normalizedHigh = normalizedHigh; 
     this.normalizedLow = normalizedLow; 

然后,您可以对样本使用normalize方法。

/** 
* Normalize x. 
* @param x The value to be normalized. 
* @return The result of the normalization. 
*/ 
public double normalize(double x) { 
    return ((x - dataLow) 
      /(dataHigh - dataLow)) 
      * (normalizedHigh - normalizedLow) + normalizedLow; 
} 

要找到最低和最高的数据集,用这个问题的一个答案:Finding the max/min value in an array of primitives using Java

+0

谢谢@OrtomalaLokni,它帮了我很多 –

+0

@OrtomalaLokni - 我知道它已经有一段时间了,但我不明白你如何获得normalizeHigh和normalizeLow并将其用于正常化?当你正常化后,你只会知道这些数值吗?谢谢。 – RegUser

+0

你必须自己定义这些值,默认情况下你会选择0和1,但取决于你的应用程序,你可以选择不同的值。 –