Java实现最大最小值归一化
时间: 2023-08-01 12:14:06 浏览: 83
最大最小值归一化是一种数据预处理方法,它将数据缩放到指定的范围内,通常是[0,1]。Java中可以使用如下代码实现最大最小值归一化:
```java
public class MinMaxScaler {
private double min;
private double max;
public MinMaxScaler(double min, double max) {
this.min = min;
this.max = max;
}
public double[] fitTransform(double[] data) {
double[] normalizedData = new double[data.length];
double range = max - min;
double maxVal = Double.MIN_VALUE;
double minVal = Double.MAX_VALUE;
for (double val : data) {
if (val > maxVal) {
maxVal = val;
}
if (val < minVal) {
minVal = val;
}
}
for (int i = 0; i < data.length; i++) {
normalizedData[i] = (data[i] - minVal) / (maxVal - minVal) * range + min;
}
return normalizedData;
}
}
```
在这个类中,`min`和`max`分别表示归一化后的最小值和最大值。`fitTransform`方法接受一个double类型的数组作为输入,返回一个归一化后的double类型数组。
首先,我们遍历输入数组,找到最大值和最小值。然后,对于输入数组中的每个值,将其归一化到指定的范围内,最后返回归一化后的数组。
你可以使用以下代码测试这个类:
```java
public static void main(String[] args) {
double[] data = {1, 2, 3, 4, 5};
MinMaxScaler scaler = new MinMaxScaler(0, 1);
double[] normalizedData = scaler.fitTransform(data);
for (double val : normalizedData) {
System.out.print(val + " ");
}
}
```
输出应该为:
```
0.0 0.25 0.5 0.75 1.0
```
阅读全文