normalizeData function

List<List<double>> normalizeData(
  1. List<List<double>> data
)

Normalizes numeric data to 0–1 scale.

Implementation

List<List<double>> normalizeData(List<List<double>> data) {
  if (data.isEmpty) return data;

  final numCols = data.first.length;
  final minVals = List<double>.filled(numCols, double.infinity);
  final maxVals = List<double>.filled(numCols, double.negativeInfinity);

  for (var row in data) {
    for (var i = 0; i < numCols; i++) {
      minVals[i] = row[i] < minVals[i] ? row[i] : minVals[i];
      maxVals[i] = row[i] > maxVals[i] ? row[i] : maxVals[i];
    }
  }

  return data.map((row) {
    return List.generate(numCols, (i) {
      final range = maxVals[i] - minVals[i];
      return range == 0 ? 0.0 : (row[i] - minVals[i]) / range;
    });
  }).toList();
}