Skip to content

Commit

Permalink
updated code in attempt to fix pca problem
Browse files Browse the repository at this point in the history
  • Loading branch information
Ramana-Raja committed Mar 2, 2025
1 parent b9a9744 commit 5b7cfe6
Showing 1 changed file with 14 additions and 9 deletions.
23 changes: 14 additions & 9 deletions aeon/clustering/feature_based/_r_cluster.py
Original file line number Diff line number Diff line change
Expand Up @@ -418,30 +418,35 @@ 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(
self.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(
self.estimator = KMeans(
n_clusters=self.n_clusters,
random_state=self.random_state,
n_init=self.n_init,
)
self.__estimator.fit(transformed_data_pca)
self.labels_ = self.__estimator.labels_
self.estimator.fit(transformed_data_pca)
self.labels_ = self.estimator.labels_

def _predict(self, X, y=None) -> np.ndarray:
parameters = self._get_parameterised_data(X)

transformed_data = self._get_transformed_data(X=X, parameters=parameters)

X_std = self.scaler.fit_transform(transformed_data)
pca = PCA(n_components=self.__optimal_dimensions, random_state=self.random_state)
if (self.optimal_dimensions > max(1, min(X_std.shape[0], X_std.shape[1]))):
raise ValueError(
f"optimal dimensions={self.optimal_dimensions} must be between 0 and "
f"min(n_samples, n_features)={min(X_std.shape[0], X_std.shape[1])}"
)
pca = PCA(n_components=self.optimal_dimensions, random_state=self.random_state)
transformed_data_pca = pca.fit_transform(X_std)

return self.__estimator.predict(transformed_data_pca)
return self.estimator.predict(transformed_data_pca)

def _fit_predict(self, X, y=None) -> np.ndarray:
parameters = self._get_parameterised_data(X)
Expand All @@ -457,13 +462,13 @@ def _fit_predict(self, X, y=None) -> np.ndarray:
)
pca = PCA(n_components=optimal_dimensions, random_state=self.random_state)
transformed_data_pca = pca.fit_transform(X_std)
self.__estimator = KMeans(
self.estimator = KMeans(
n_clusters=self.n_clusters,
random_state=self.random_state,
n_init=self.n_init,
)
Y = self.__estimator.fit_predict(transformed_data_pca)
self.labels_ = self.__estimator.labels_
Y = self.estimator.fit_predict(transformed_data_pca)
self.labels_ = self.estimator.labels_
return Y

@classmethod
Expand Down

0 comments on commit 5b7cfe6

Please sign in to comment.