def METHOD_NAME(
    self, input_data: NDArray, voting_policy: Optional[str] = None
) -> NDArray:
    """
    Input data is expected to be a 2D array that the first layer is different input data (into the trained models)
    """
    if self.need_confidence:
        predictions = []
        for i in range(self.count):
            predictions.append(np.array(self.__get_confidence(i, input_data)))
        self.predictions = np.transpose(np.array(predictions))
    if voting_policy == "weight":
        return self.__voting_weight(self.predictions)
    elif voting_policy == "most":
        return self.__voting_most(self.predictions)
    elif voting_policy == "average":
        return self.__voting_average(self.predictions)
    elif voting_policy is None:
        return self.predictions
    else:
        raise ValueError("voting_policy must be none, weight, most, or average")