@classmethod
def from_splits(cls, train_data, test_data, val_data=None, fmt='UIR',
    rating_threshold=1.0, exclude_unknowns=False, seed=None, verbose=False,
    **kwargs):
    """Constructing evaluation method given data.

        Parameters
        ----------
        train_data: array-like
            Training data

        test_data: array-like
            Test data

        val_data: array-like, optional, default: None
            Validation data

        fmt: str, default: 'UIR'
            Format of the input data. Currently, we are supporting:

            'UIR': User, Item, Rating
            'UIRT': User, Item, Rating, Timestamp

        rating_threshold: float, default: 1.0
            Threshold to decide positive or negative preferences.

        exclude_unknowns: bool, default: False
            Whether to exclude unknown users/items in evaluation.

        seed: int, optional, default: None
            Random seed for reproduce the splitting.

        verbose: bool, default: False
            The verbosity flag.

        Returns
        -------
        method: :obj:`<cornac.eval_methods.BaseMethod>`
            Evaluation method object.

        """
    method = cls(fmt=fmt, rating_threshold=rating_threshold,
        exclude_unknowns=exclude_unknowns, seed=seed, verbose=verbose, **kwargs
        )
    return method.build(train_data=train_data, test_data=test_data,
        val_data=val_data)
