def predict(self, X, break_ties="random", return_probs=False, **kwargs):
        """Predicts int labels for an input X on all tasks

        Args:
            X: The input for the predict_proba method
            break_ties: A tie-breaking policy
            return_probs: Return the predicted probabilities as well

        Returns:
            Y_p: A t-length list of n-dim np.ndarrays of predictions in [1, K_t]
            [Optionally: Y_s: A t-length list of [n, K_t] np.ndarrays of
                predicted probabilities]
        """
        Y_s = self.predict_proba(X, **kwargs)
        self._check(Y_s, typ=list)
        self._check(Y_s[0], typ=np.ndarray)

        Y_p = []
        for Y_ts in Y_s:
            Y_tp = self._break_ties(Y_ts, break_ties)
            Y_p.append(Y_tp.astype(np.int))

        if return_probs:
            return Y_p, Y_s
        else:
            return Y_p
Predicts int labels for an input X on all tasks

        Args:
            X: The input for the predict_proba method
            break_ties: A tie-breaking policy
            return_probs: Return the predicted probabilities as well

        Returns:
            Y_p: A t-length list of n-dim np.ndarrays of predictions in [1, K_t]
            [Optionally: Y_s: A t-length list of [n, K_t] np.ndarrays of
                predicted probabilities]