From ba2e7d2c1001acbb27d4aa2f2190858d4b4189fd Mon Sep 17 00:00:00 2001 From: Ramana-Raja Date: Sun, 2 Mar 2025 20:26:47 +0530 Subject: [PATCH] fixed pca problem --- aeon/clustering/feature_based/_r_cluster.py | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/aeon/clustering/feature_based/_r_cluster.py b/aeon/clustering/feature_based/_r_cluster.py index 73e92f38cb..e16bbab99f 100644 --- a/aeon/clustering/feature_based/_r_cluster.py +++ b/aeon/clustering/feature_based/_r_cluster.py @@ -417,12 +417,10 @@ def _fit(self, X, y=None): pca = PCA().fit(X_std) optimal_dimensions = np.argmax(pca.explained_variance_ratio_ < 0.01) - self.optimal_dimensions = max( - 1, min(optimal_dimensions, X_std.shape[0], X_std.shape[1]) - ) - self.x_test = X - pca = PCA(n_components=optimal_dimensions, random_state=self.random_state) - transformed_data_pca = pca.fit_transform(X_std) + self.pca = PCA(n_components=optimal_dimensions, random_state=self.random_state) + self.pca.fit(X_std) + transformed_data_pca = self.pca.transform(X_std) + self.estimator = KMeans( n_clusters=self.n_clusters, random_state=self.random_state, @@ -436,12 +434,7 @@ def _predict(self, X, y=None) -> np.ndarray: transformed_data = self._get_transformed_data(X=X, parameters=parameters) X_std = self.scaler.fit_transform(transformed_data) - if self.optimal_dimensions > max(1, min(X_std.shape[0], X_std.shape[1])): - raise ValueError( - f"fitted x={self.x_test} must be between 0 and " f"sample x ={X}" - ) - pca = PCA(n_components=self.optimal_dimensions, random_state=self.random_state) - transformed_data_pca = pca.fit_transform(X_std) + transformed_data_pca = self.pca.transform(X_std) return self.estimator.predict(transformed_data_pca) @@ -454,9 +447,6 @@ def _fit_predict(self, X, y=None) -> np.ndarray: pca = PCA().fit(X_std) optimal_dimensions = np.argmax(pca.explained_variance_ratio_ < 0.01) - optimal_dimensions = max( - 1, min(optimal_dimensions, X_std.shape[0], X_std.shape[1]) - ) pca = PCA(n_components=optimal_dimensions, random_state=self.random_state) transformed_data_pca = pca.fit_transform(X_std) self.estimator = KMeans(