Fits the given model to the data and labels provided.
        
        Parameters:
        -----------
        X : matrix, shape (n_samples, n_features)
        The samples, the train data.

        y : vector, shape (n_samples,)
        The target labels.
        
        Returns:
        --------
        self : instance of the model itself (`self`)

def fit(self, X, y):
        """Fits the given model to the data and labels provided.
        
        Parameters:
        -----------
        X : matrix, shape (n_samples, n_features)
        The samples, the train data.

        y : vector, shape (n_samples,)
        The target labels.
        
        Returns:
        --------
        self : instance of the model itself (`self`)
        
        """

        X = np.array(X, dtype=np.float32)
        y = np.array(y, dtype=np.float32)
        assert X.shape[0] == y.shape[0]

        return X, y