public CSVNormaliser normalize(){
		if(csvList.isEmpty()){
			System.err.println("Tried to fill blanks on empty dataset.");
			return this;
		}
		
		int numAttributes = csvList.get(0).length;
		lowestValues = new double[numAttributes];
		highestValues = new double[numAttributes];
		for(int attribute = 0; attribute < numAttributes; ++attribute){
			if(attribute == classificationIndex){
				lowestValues[attribute] = highestValues[attribute] = Double.NaN;
				continue; // skip the classification. It's not a number so shall not be messed with.
			}
			double largest = Double.MIN_VALUE;
			double lowest = Double.MAX_VALUE;

			for(String[] row : csvList){
				if(Double.parseDouble(row[attribute]) > largest){
					largest = Double.parseDouble(row[attribute]); 
				}
				if(Double.parseDouble(row[attribute]) < lowest){
					lowest = Double.parseDouble(row[attribute]); 
				}
			}
			
			// Nå som vi har største og minste, oppdaterer vi tabellen vår, og så kan vi bruke formelen normalisert(n) = (n - minste)/(største - minste)
			lowestValues[attribute] = lowest;
			highestValues[attribute] = largest;
			for(String[] row : csvList){
				row[attribute] = String.valueOf((Double.parseDouble(row[attribute]) - lowest)/(largest - lowest));
			}
		}
		return this;
	}