Esempio n. 1
0
def set_kpca_obj(pars, data, sntype, type_number):
    """
    Set kpca object based on cross-validation results.

    input: pars, dict
           output from read_hyperpar

           data, array
           output from read_matrix

           sntype, list
           output from read_matrix

           type_number, dict
           dictionary to translate types between raw data and final
           classification
           keywords -> final classificaton elements
           values -> identifiers in raw data

    output: obj_kpca, KernelPCA obj
            tailored with cross-validation results

            spec_matrix, array
            low dimension spectroscopic matrix

            labels, list
            classes as defined in raw data files
    """
    from sklearn.decomposition import KernelPCA
    import numpy as np

    # start kpca object
    obj_kpca = KernelPCA()
    obj_kpca.eigen_solver = pars['eigen_solver']
    obj_kpca.kernel = pars['kernel']
    obj_kpca.alpha = pars['alpha']
    obj_kpca.gamma = pars['gamma']
    obj_kpca.n_components = pars['n_components']
    obj_kpca.coef0 = pars['coef0']
    obj_kpca.degree = pars['degree']
    obj_kpca.tol = pars['tol']
    obj_kpca.fit_inverse_transform = pars['fit_inverse_transform']
    obj_kpca.remove_zero_eig = pars['remove_zero_eig']
    obj_kpca.kernel_params = pars['kernel_params']
    obj_kpca.max_iter = pars['max_iter']
    spec_matrix = obj_kpca.fit_transform(data)

    # construct label vector
    labels = []
    for elem in sntype:
        for classes in type_number.keys():
            if elem in type_number[classes]:
                labels.append(classes)

    labels = np.array(labels)

    return obj_kpca, spec_matrix, labels
Esempio n. 2
0
def compute_scores(X):
    pca = PCA(svd_solver='auto')
    kpca = KernelPCA(fit_inverse_transform=True)
    ica = FastICA()
    nmf = NMF(init='nndsvda')
    pca_scores, ica_scores, nmf_scores, kpca_scores = [], [], [], []
    for n in n_components:
        pca.n_components = n
        ica.n_components = n
        nmf.n_components = n
        kpca.n_components = n
        print(n)

        Xpca = pca.inverse_transform(pca.fit_transform(Xs))
        pca_scores.append(explained_variance_score(Xs, Xpca))
        Xica = ica.inverse_transform(ica.fit_transform(Xs))
        ica_scores.append(explained_variance_score(Xs, Xica))
        Xkpca = kpca.inverse_transform(kpca.fit_transform(Xs))
        kpca_scores.append(explained_variance_score(Xs, Xkpca))

        Xnmf = nmf.inverse_transform(nmf.fit_transform(X))
        nmf_scores.append(explained_variance_score(X, Xnmf))

    return pca_scores, ica_scores, nmf_scores, kpca_scores