diff --git a/src/Class_Mod/Ap.py b/src/Class_Mod/Ap.py new file mode 100644 index 0000000000000000000000000000000000000000..2084d2563ba70720c0dad371d066b11f4ba2d5c9 --- /dev/null +++ b/src/Class_Mod/Ap.py @@ -0,0 +1,16 @@ +from Packages import * + +class AP: + def __init__(self, X): + ## input matrix + self.__x = np.array(X) + + # Fit PCA model + self.M = AffinityPropagation(damping=0.5, max_iter=200, convergence_iter=15, copy=True, preference=None, + affinity='euclidean', verbose=False, random_state=None) + self.M.fit(self.__x) + self.yp = self.M.predict(self.__x)+1 + @property + def fit_optimal_(self): + clu = [f'cluster#{i}' for i in self.yp] + return self.__x, clu, self.M.cluster_centers_ \ No newline at end of file diff --git a/src/Class_Mod/__init__.py b/src/Class_Mod/__init__.py index 7c978eaa95e1831c19a48bbf7d39737534a38d0b..540a09349398300160773edb419b0bf9f1dec2c9 100644 --- a/src/Class_Mod/__init__.py +++ b/src/Class_Mod/__init__.py @@ -13,4 +13,5 @@ from .DxReader import DxRead, read_dx from .HDBSCAN_Clustering import Hdbscan from .SK_PLSR_ import PlsR from .PLSR_Preprocess import PlsProcess -from .NMF_ import Nmf \ No newline at end of file +from .NMF_ import Nmf +from .Ap import AP \ No newline at end of file diff --git a/src/Modules.py b/src/Modules.py index 436e30d579f3a6222bcbce80d753de3161ac7a5a..6ac6f120363b153e98c293139c7166f0f8f4b2dc 100644 --- a/src/Modules.py +++ b/src/Modules.py @@ -1,5 +1,5 @@ from Packages import * -from Class_Mod import PlsR, LinearPCA, Umap, find_col_index, PinardPlsr, Nmf +from Class_Mod import PlsR, LinearPCA, Umap, find_col_index, PinardPlsr, Nmf, AP from Class_Mod import LWPLSR, list_files, metrics, TpeIpls, reg_plot, resid_plot, Sk_Kmeans, DxRead, Hdbscan, read_dx, PlsProcess from Class_Mod.DATA_HANDLING import * from Class_Mod.Miscellaneous import prediction, download_results, plot_spectra, local_css diff --git a/src/Packages.py b/src/Packages.py index fd98471d80df3eb82c6aa7ffd3dd18b8fda9d76d..131385146d58e4d179258e26bca85f150a462ab7 100644 --- a/src/Packages.py +++ b/src/Packages.py @@ -19,7 +19,7 @@ from umap.umap_ import UMAP from sklearn.decomposition import PCA, NMF # Clustering -from sklearn.cluster import KMeans, HDBSCAN +from sklearn.cluster import KMeans, HDBSCAN,AffinityPropagation from scipy.spatial.distance import euclidean, cdist from scipy.sparse.csgraph import minimum_spanning_tree from scipy.sparse import csgraph @@ -36,7 +36,6 @@ from sklearn.pipeline import Pipeline, FeatureUnion from sklearn.compose import TransformedTargetRegressor from sklearn.metrics import mean_absolute_error, mean_squared_error, mean_absolute_percentage_error, r2_score from sklearn.cross_decomposition import PLSRegression - ## Images and plots from PIL import Image import plotly.express as px diff --git a/src/pages/1-samples_selection.py b/src/pages/1-samples_selection.py index 77a8863c53e3eafee9799ce2b05cfdf1e6c4454c..de03b98e62d2866f40650c73da0120eba4377694 100644 --- a/src/pages/1-samples_selection.py +++ b/src/pages/1-samples_selection.py @@ -157,6 +157,11 @@ if not t.empty: non_clustered = np.where(labels == -1) labels[non_clustered] = 1000 labels = labels.tolist() + + elif clus_method == cluster_methods[3]: + cl_model = AP(X=tcr) + data, labels, clu_centers = cl_model.fit_optimal_ + ###### 3- Samples selection using the reduced data preentation ###### selec_strategy = ['center','random']