# Fit model for each part
for part in range(0, n_parts):
    train_start_i = int(part * samp_per_part)
    test_start_i = int(train_start_i + samp_per_part * ratio_train_validate)
    test_end_i = int(train_start_i + samp_per_part)
    training_input[part] = input_data[train_start_i:test_start_i, :]
    training_output[part] = output_data[train_start_i:test_start_i, :]
    validation_input[part] = input_data[test_start_i:test_end_i, :]
    validation_output[part] = output_data[test_start_i:test_end_i, :]

    lm[part] = model.LinearRegressionModel()
    # TODO use and select the new features
    lm[part].set_feature_vector([
        features.LinearX1(),
        features.LinearX2(),
        features.LinearX3(),
        features.LinearX4(),
        features.SquareX1(),
        features.SquareX2(),
        features.SquareX3(),
        features.SquareX4(),
        features.ExpX1(),
        features.ExpX2(),
        features.ExpX3(),
        features.ExpX4(),
        features.LogX1(),
        features.LogX2(),
        features.LogX3(),
        features.LogX4(),
        features.SinX1(),
        features.SinX2(),