normalize function
Normalize features to 0-1 range (Min-Max normalization)
Implementation
List<Float64List> normalize(List<Float64List> X) {
if (X.isEmpty) return [];
final numFeatures = X[0].length;
final minVals = Float64List(numFeatures);
final maxVals = Float64List(numFeatures);
// Initialize min/max
for (int j = 0; j < numFeatures; j++) {
minVals[j] = double.infinity;
maxVals[j] = double.negativeInfinity;
}
// Find min and max for each feature
for (final row in X) {
for (int j = 0; j < numFeatures; j++) {
minVals[j] = min(minVals[j], row[j]);
maxVals[j] = max(maxVals[j], row[j]);
}
}
// Normalize each sample
return X.map((row) {
final normRow = Float64List(numFeatures);
for (int j = 0; j < numFeatures; j++) {
final range = maxVals[j] - minVals[j];
normRow[j] = range == 0 ? 0.0 : (row[j] - minVals[j]) / range;
}
return normRow;
}).toList();
}