@Override
    public List<Double> untransform(List<Double> in) {
        if (in.size() != inputMins.size()) {
            throw new MLException(String.format(
                    "Unexpected in-vector size. Expected: %d, Got: %d", inputMins.size(), in.size()));
        }
        List<Double> out = new ArrayList<Double>();
        for (int i = 0; i < in.size(); i++) {
            if (inputMins.get(i) == Matrix.UNKNOWN_VALUE) {
                out.add(in.get(i));
            } else {
                if (in.get(i) == Matrix.UNKNOWN_VALUE) {
                    out.add(Matrix.UNKNOWN_VALUE);
                } else {
                    double val = in.get(i) * (inputMaxs.get(i) - inputMins.get(i)) + inputMins.get(i);
                    out.add(val);
                }
            }
        }
        return out;
    }