通用反集群
项目描述
反集群
用于解决反集群问题的通用 Python 库。虽然聚类算法会在一个簇内实现高相似度,而在簇之间实现低相似度,但反聚类算法会实现相反的效果;即最小化集群内的相似性并最大化集群之间的相似性。目前,在这个库中实现了一些算法:
- 使用 BIP 公式的精确方法。
- 枚举交换启发式。
- 模拟退火启发式。
请记住,反集群是一个计算困难的问题,即使对于小实例大小也可能运行缓慢。在对 Iris 数据集(150 个数据点)进行反聚类时,当前的 ILP 没有在合理的时间内完成。
前两种方法的实施如以下论文所述:
Papenberg, M., & Klau, GW (2021)。使用反聚类将数据集划分为等效部分。心理方法,26(2),161-174。内政部。预印本
论文附有 R 编程语言库:anticlust。
与antilust R 包不同,这个库目前只有一个目标函数。在这个库中,目标将最大化簇内距离:数值列的欧几里德距离和分类列的汉明距离。
用例
在软件测试中,反聚类可用于在 AB 测试中生成测试组和控制组。示例:您有一个拥有许多用户的网上商店。网上商店正在积极开发中,您将推出一项新功能。此功能应针对尽可能多的不同用户进行测试,而无需针对整个用户群进行测试。为此,您可以创建用户群的最大多样性子集以进行测试(A 组)。其余用户(B 组)将不会测试此功能。为了划分用户群,您可以使用反聚类算法。A 组和 B 组应尽可能相似,以便有可靠的比较基础,但在 A(和 B)组内部,元素应尽可能不同。
这只是一个用例,可能还有更多。
安装
反集群包在PyPI上可用。要安装它,请运行以下命令:
pip install anti-clustering
该包目前支持 Python 3.8 及更高版本。
用法
该算法的输入是一个 Pandas 数据帧,每一行代表一个数据点。输出是相同的数据帧,带有一个包含整数编码集群标签的额外列。下面是一个基于 Iris 数据集的示例:
from anti_clustering import ExactClusterEditingAntiClustering
from sklearn import datasets
import pandas as pd
iris_data = datasets.load_iris(as_frame=True)
iris_df = pd.DataFrame(data=iris_data.data, columns=iris_data.feature_names)
algorithm = ExactClusterEditingAntiClustering()
df = algorithm.run(
df=iris_df,
numerical_columns=list(iris_df.columns),
categorical_columns=None,
num_groups=2,
destination_column='Cluster'
)
贡献
如果您有任何建议或发现错误,请随时打开问题。如果您实施了新算法或知道如何调整现有算法;非常感谢 PR。
执照
该库在 Apache 2.0 许可下获得许可。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
anti_clustering -0.2.1-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | af5191f542a763cb5df73b3279d0c27566ec5a919f551b8a741279716223ea88 |
|
| MD5 | 236941571da48c197baf983ed3926ef1 |
|
| 布莱克2-256 | b876ff19bc30c2127bf9af4e33d6218079ee144b9abe8be82faa1218c82d79f6 |