Source code for Orange.projection.lda
import sklearn.discriminant_analysis as skl_da
from Orange.projection import SklProjector, DomainProjection
__all__ = ["LDA"]
class LDAModel(DomainProjection):
var_prefix = "LD"
[docs]
class LDA(SklProjector):
__wraps__ = skl_da.LinearDiscriminantAnalysis
name = "LDA"
supports_sparse = False
def __init__(self, solver="svd", shrinkage=None, priors=None,
n_components=None, store_covariance=False, tol=1e-4,
preprocessors=None):
super().__init__(preprocessors=preprocessors)
self.params = vars()
def fit(self, X, Y=None):
params = self.params.copy()
if params["n_components"] is not None:
params["n_components"] = min(min(X.shape), params["n_components"])
proj = self.__wraps__(**params)
proj = proj.fit(X, Y)
proj.components_ = proj.scalings_.T[:params["n_components"]]
return LDAModel(proj, self.domain, len(proj.components_))