Exemple #1
0
    def __init__(self,
                 n_components,
                 method="sklearn",
                 init="rand_orth",
                 orthogonalize=True,
                 tol=1e-5,
                 maxiter=100,
                 seed=None):

        # Model options.
        self.n_components = n_components
        self.orthogonalize = orthogonalize

        # Optimization parameters.
        self.tol = tol
        self.maxiter = maxiter
        self.seed = seed

        # Model parameters.
        self._factors = None

        # Check that optimization method is recognized.
        METHODS = ("als", "sklearn")
        if method not in METHODS:
            raise_no_method(self, method, METHODS)
        else:
            self.method = method

        # Check that initialization method is recognized.
        INITS = ("rand_orth", )
        if init not in INITS:
            raise_no_init(self, init, INITS)
        else:
            self.init = init
Exemple #2
0
    def __init__(
            self, n_components, method="em", init="rand",
            n_restarts=1, seed=None, tol=1e-5, maxiter=100):

        # Model options.
        self.n_components = n_components

        # Optimization parameters.
        self.maxiter = maxiter
        self.seed = seed
        self.tol = tol
        self.n_restarts = n_restarts

        # Model parameters.
        self._factors = None

        # Check that optimization method is recognized.
        METHODS = ("em",)
        if method not in METHODS:
            raise_no_method(self, method, METHODS)
        else:
            self.method = method

        # Check that initialization method is recognized.
        INITS = ("rand",)
        if init not in INITS:
            raise_no_init(self, init, INITS)
        else:
            self.init = init
Exemple #3
0
    def __init__(self,
                 n_components,
                 method="lloyds",
                 init="rand",
                 n_restarts=1,
                 seed=None,
                 maxiter=100,
                 verbose=False):

        # Model options.
        self.n_components = n_components
        self.verbose = verbose

        # Optimization parameters.
        self.maxiter = maxiter
        self.n_restarts = n_restarts
        self.seed = seed

        # Model parameters.
        self._factors = None

        # Check that optimization method is recognized.
        METHODS = ("lloyds", )
        if method not in METHODS:
            raise_no_method(self, method, METHODS)
        else:
            self.method = method

        # Check that initialization method is recognized.
        INITS = ("rand", "soft")
        if init not in INITS:
            raise_no_init(self, init, INITS)
        else:
            self.init = init
Exemple #4
0
    def __init__(self,
                 n_components,
                 loss,
                 method="cd",
                 init="randn",
                 tol=1e-5,
                 maxiter=100,
                 seed=None):

        # Model options.
        self.n_components = n_components
        self.loss = loss

        LOSSES = ("poisson", )
        if loss not in LOSSES:
            raise ValueError("Did not recognize 'loss' option. "
                             "Saw '{}'. Expected one of {}."
                             "".format(loss, LOSSES))

        # Determine link and inverse link functions.
        INVLINKS = {
            "poisson": np.exp,
        }
        LINKS = {"poisson": np.log}
        self._invlink = INVLINKS[loss]
        self._link = LINKS[loss]

        # Optimization parameters.
        self.tol = tol
        self.maxiter = maxiter
        self.seed = seed

        # Model parameters.
        self._factors = None

        # Check that optimization method is recognized.
        METHODS = ("cd", )
        if method not in METHODS:
            raise_no_method(self, method, METHODS)
        else:
            self.method = method

        # Check that initialization method is recognized.
        INITS = ("randn", )
        if init not in INITS:
            raise_no_init(self, init, INITS)
        else:
            self.init = init
Exemple #5
0
    def __init__(self,
                 n_components,
                 method="hals",
                 init="rand",
                 n_restarts=1,
                 tol=1e-5,
                 maxiter=100,
                 seed=None):

        # Model hyperparameters.
        self.n_components = n_components
        if n_components <= 0:
            raise ValueError("Expected n_components to be an integer >= 1.")

        # Optimization parameters.
        self.tol = tol
        self.maxiter = maxiter
        self.seed = seed
        self.n_restarts = n_restarts

        # Model parameters.
        self._factors = None

        # Check that optimization method is recognized.
        METHODS = ("hals", )
        if method not in METHODS:
            raise_no_method(self, method, METHODS)
        else:
            self.method = method

        # Check that initialization method is recognized.
        INITS = ("rand", )
        if init not in INITS:
            raise_no_init(self, init, INITS)
        else:
            self.init = init
Exemple #6
0
    def __init__(self,
                 n_components,
                 method="cd",
                 tol=1e-5,
                 maxiter=100,
                 seed=None):

        # Model options.
        self.n_components = n_components

        # Optimization parameters.
        self.tol = tol
        self.maxiter = maxiter
        self.seed = seed

        # Model parameters.
        self._factors = None

        # Check that optimization method is recognized.
        METHODS = ("cd", )
        if method not in METHODS:
            raise_no_method(self, method, METHODS)
        else:
            self.method = method