normalizeData function
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();
}