Skip to content

Latest commit

 

History

History
195 lines (139 loc) · 6.95 KB

README-ch.md

File metadata and controls

195 lines (139 loc) · 6.95 KB

es ch

CLASSIX: 快速且可解释的聚类算法

发布 !pypi Static Badge Anaconda-Server Badge codecov License: MIT azure Conda Platforms 下载状态 下载量 文档状态 DOI

CLASSIX 是一种快速、内存高效、且可解释的聚类算法。主要特点如下:

  • 高效处理任意形状的低维和高维数据
  • 能够检测并处理数据中的异常值
  • 提供聚类的文本和可视化解释
  • 附带论文中的所有实验均可完全复现
  • 支持 Cython 加速编译

CLASSIXCLustering by Aggregation with Sorting-based Indexing 和解释性 (X for explainability) 的组合词。


安装方法

您可以通过 PIP(推荐)或 Conda 安装 CLASSIX

PyPI conda-forge
PyPI 版本 conda-forge 版本
NumPy<=1.26.4: pip install classixclustering
NumPy>2: pip install classixclustering --no-cache-dir
conda install -c conda-forge classixclustering

我们推荐使用命令 pip install classixclustering --no-cache-dir 安装。


语言支持 依赖库支持
Python NumPy SciPy PandasMatplotlib

快速开始

以下示例展示如何使用 CLASSIX 对内置的演示数据集进行聚类:

import classix

data, labels = classix.loadData('Covid3MC')
# 或者您可以生成高斯数据以快速体验:
# from sklearn.datasets import make_blobs
# data, labels = make_blobs(n_samples=1000, centers=3, n_features=2, random_state=0)

# 使用 CLASSIX
clx = classix.CLASSIX(radius=0.2, minPts=500, verbose=0)
clx.fit(data)
print(clx.labels_) # 输出聚类标签

此外,您可以在模型训练后通过 predict() 方法对样本外数据进行聚类,例如 clx.predict(data.iloc[:1000])。


特性亮点

CLASSIX 提供以下主要功能:

  1. 灵活的参数调整

    • radiusminPts 可自定义,用于调节聚类结果的颗粒度。
    • 适用于高维和低维数据。
  2. 异常值检测

    • 自动识别并处理数据集中的异常值。
  3. 高性能

    • 使用 Cython 优化,实现快速的运行时间。
  4. 可解释性

    • 聚类结果提供文本描述和可视化。
  5. 代码可复现性

    • 附带的实验和案例完全可复现。

使用案例

1. 聚类低维数据

以下示例展示了 CLASSIX 对 2D 数据的聚类效果:

import classix
import numpy as np
import matplotlib.pyplot as plt

from sklearn.datasets import make_moons
data, _ = make_moons(n_samples=1000, noise=0.05)

clx = classix.CLASSIX(radius=0.15, minPts=10, verbose=0)
clx.fit(data)

# 可视化结果
plt.scatter(data[:, 0], data[:, 1], c=clx.labels_, cmap='viridis', s=5)
plt.show()

2. 聚类高维数据

以下示例展示了 CLASSIX 对高维数据的聚类能力:

from sklearn.datasets import make_blobs
data, labels = make_blobs(n_samples=5000, centers=5, n_features=20, random_state=0)

clx = classix.CLASSIX(radius=10, minPts=100, verbose=1)
clx.fit(data)
print(clx.labels_)

3. 检测异常值

CLASSIX 提供了异常值检测功能:

from sklearn.datasets import make_blobs
data, _ = make_blobs(n_samples=500, centers=3, n_features=2, random_state=0)

# 添加一些异常值
np.random.seed(0)
outliers = np.random.uniform(low=-10, high=10, size=(50, 2))
data_with_outliers = np.vstack([data, outliers])

clx = classix.CLASSIX(radius=0.5, minPts=10, verbose=1)
clx.fit(data_with_outliers)

# 标记异常值 (-1 表示异常值)
print(clx.labels_)

贡献方式

欢迎社区用户贡献代码和提交问题。以下是参与方式:

克隆仓库:
git clone https://github.com/nla-group/classix.git
cd classix

创建虚拟环境并安装依赖项:

python -m venv env
source env/bin/activate  # Windows: env\Scripts\activate
pip install .

运行测试:

pytest tests/

我们期待您的参与!请阅读 贡献指南 以了解更多信息。 文档和支持

如果您有任何疑问或建议,请通过以下方式联系我们:

在 GitHub Issues 提交问题。
通过电子邮件与我们联系:stefan.guettel@manchester.ac.uk。

引用

如果您在研究中使用了 CLASSIX,请引用以下论文:

@article{classix2023,
  title={CLASSIX: A Fast and Interpretable Clustering Algorithm},
  author={NLA Group},
  journal={Journal of Machine Learning Research},
  year={2023},
  volume={24},
  pages={1--25},
  doi={10.5281/zenodo.10257432}
}