Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中数据集的规范化_Java_Double_Cluster Computing_Normalization - Fatal编程技术网

Java中数据集的规范化

Java中数据集的规范化,java,double,cluster-computing,normalization,Java,Double,Cluster Computing,Normalization,我正在做一个聚类程序,有一个double数据集,我需要对其进行规范化,以确保每个double(变量)具有相同的影响 我希望使用最小-最大规范化,其中每个变量的最小值和最大值都是确定的,但我不确定如何在Java数据集上实现这一点。有人有什么建议吗?给出了一个范围标准化 构造函数获取输入和规范化数据的高值和低值 /** * Construct the normalization utility, allow the normalization range to be specified.

我正在做一个聚类程序,有一个double数据集,我需要对其进行规范化,以确保每个double(变量)具有相同的影响

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

给出了一个范围标准化

构造函数获取输入和规范化数据的高值和低值

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

要查找数据集的最小值和最大值,请使用以下问题的一个答案:。

您可以很好地使用apache.commons.math3库中的statutils.normalize方法

请参阅以下文档

Gradle依赖关系如下

implementation 'org.apache.commons:commons-math3:3.6.1'
Maven依赖

<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-math3 -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-math3</artifactId>
    <version>3.6.1</version>
</dependency>

org.apache.commons
commons-math3
3.6.1
范例

     public static void main(String[] args) {
            double[] arr = new double[]{900.68, 900.63, 900.74, 900.59, 900.49, 900.65, 900.81, 900.82, 901.03, 900.74, 900.66, 900.49, 900.52, 900.63, 900.45};
            double normArr[] = StatUtils.normalize(arr);
            for (int i = 0; i < normArr.length; i++) {
                System.out.print(normArr[i] + ", ");
            }
}
publicstaticvoidmain(字符串[]args){
double[]arr=新的double[]{900.68900.63900.74900.59900.49900.65900.81900.82901.03900.74900.66900.49900.52900.63900.45};
双重标准化[]=身高标准化(arr);
对于(int i=0;i

这将打印出以下值:0.117878856446848383、-0.20956189238965656、0.5108071126989968、-0.47151425787616885、-1.1263951715931941、-0.07857096464004、0.9692237523003934、1.034711843672766、2.4099617624777、0.5108071126989968、-0.013097618274772323、-1.1263951715931941、-0.92308978783856、,-1.3883475370797065

您可以在此处添加任何示例代码吗?就目前而言,你的问题太模糊了,无法回答。谢谢你@OrtomalaLokni,它帮助了我out@OrtomalaLokni-我知道已经有一段时间没有回答了,但我不明白如何获得normalizeHigh和normalizeLow并将其用于归一化?当然,只有在你正常化之后,你才会知道这些值?谢谢。您必须自己定义这些值,默认情况下您会选择0和1,但根据您的应用程序,您可以选择不同的值。