def get_model(method, n=None, n_neighbors=None, max_iter=None, random_state=None, n_jobs=None, method_args=None): model = None kwargs = {} if method_args is not None: for arg_pair in method_args: arg_par = arg_pair.split('=') kwargs[arg_pair[0].trim()] = arg_pair[1].trim() if method == 'ICA': model = FastICA(whiten=True, **kwargs) elif method == 'ICAexp': model = FastICA(whiten=True, fun='exp', **kwargs) elif method == 'ICAcube': model = FastICA(whiten=True, fun='cube', **kwargs) elif method == 'PCA': model = PCA() elif method == 'SPCA': model = SparsePCA() if n_jobs is not None: model.n_jobs = n_jobs elif method == 'NMF': model = NMF(solver='cd') elif method == 'ISO': model = Isomap() elif method == 'KPCA': model = KernelPCA(kernel='rbf', fit_inverse_transform=False, gamma=1, alpha=0.0001) elif method == 'FA': #model = FactorAnalysis(svd_method='lapack') #(tol=0.0001, iterated_power=4) model = FactorAnalysis(tol=0.0001, iterated_power=4) elif method == 'DL': model = DictionaryLearning(split_sign=True, fit_algorithm='cd', alpha=1) if n_jobs is not None: model.n_jobs = n_jobs if n is not None: model.n_components = n if max_iter is not None: model.max_iter = max_iter if random_state is not None: model.random_state = random_state if n_neighbors is not None: model.n_neighbors = n_neighbors return model