我正在研究一个聚类程序,并且有一个我需要进行标准化的双精度数据集,以确保每个double(变量)具有相同的影响力。在Java中规范化数据集
我想使用min-max规范化,其中每个变量的最小值和最大值都已确定,但我不确定如何在Java数据集中实现这一点。有没有人有什么建议?
我正在研究一个聚类程序,并且有一个我需要进行标准化的双精度数据集,以确保每个double(变量)具有相同的影响力。在Java中规范化数据集
我想使用min-max规范化,其中每个变量的最小值和最大值都已确定,但我不确定如何在Java数据集中实现这一点。有没有人有什么建议?
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。
谢谢@OrtomalaLokni,它帮了我很多 –
@OrtomalaLokni - 我知道它已经有一段时间了,但我不明白你如何获得normalizeHigh和normalizeLow并将其用于正常化?当你正常化后,你只会知道这些数值吗?谢谢。 – RegUser
你必须自己定义这些值,默认情况下你会选择0和1,但取决于你的应用程序,你可以选择不同的值。 –
有没有你可以在这里添加的任何示例代码?就目前而言,你的问题有点太模糊,无法回答。 –