A scikit-learn compatible dimensionality reduction technique that preserves point-distribution similarity through multilateration-based embedding.
This repository implements
pip install numpy scipy scikit-learn matplotlib torch kbc-clustering importnumpyasnpfromPSIDRimportPSIDRfromsklearn.datasetsimportmake_blobsimportmatplotlib.pyplotasplt# Generate sample dataX, y=make_blobs(n_samples=500, n_features=50, centers=5, random_state=42)
# Initialize and fit the reducerpsidr=PSIDR(n_components=2, k=5, random_state=42)
X_embedded=psidr.fit_transform(X)
# Visualize resultsplt.scatter(X_embedded[:, 0], X_embedded[:, 1], c=y, cmap='tab10')
plt.title("PSIDR Embedding")
plt.colorbar(label='Cluster')
plt.show()Fit the model to training data.
- Parameters:
X(array-like, shape (n_samples, n_features)),y(ignored) - Returns:
self
Transform new data to the low-dimensional space.
- Parameters:
X(array-like, shape (n_samples_new, n_features)) - Returns:
X_new(ndarray, shape (n_samples_new, n_components))
Fit the model and return the transformed training data.
- Returns:
X_new(ndarray, shape (n_samples, n_components))
If you use this method in your research, please cite:
@inproceedings{
PSIDR,
title={Dimensionality Reduction with Point-distributions Similarity Invariant},
author={Zhang, Hang and Ting, Kai Ming},
booktitle={Forty-third International Conference on Machine Learning},
year={2026},
}MIT License - see LICENSE file for details.