一个用于测量硬度分类的数据中心AI库。
项目描述
Datagnosis
一个用于测量硬度分类的数据中心AI库。
特性
请注意:datagnosis不处理缺失数据,因此必须先进行填充。可以使用HyperImpute来完成此操作。
🚀 安装
可以使用以下方式从PyPI安装库
$ pip install datagnosis
或从源代码安装,使用
$ pip install .
其他库扩展
- 安装支持单元测试的库
pip install datagnosis[testing]
💥 示例用法
# Load iris dataset from sklearn and create DataHandler object
from sklearn.datasets import load_iris
from datagnosis.plugins.core.datahandler import DataHandler
X, y = load_iris(return_X_y=True, as_frame=True)
datahander = DataHandler(X, y, batch_size=32)
# Create model an parameters
from datagnosis.plugins.core.models.simple_mlp import SimpleMLP
import torch
model = SimpleMLP()
# creating our optimizer and loss function object
learning_rate = 0.01
criterion = torch.nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(),lr=learning_rate)
# Get a plugin and fit it
hcm = Plugins().get(
"vog",
model=model,
criterion=criterion,
optimizer=optimizer,
lr=learning_rate,
epochs=10,
num_classes=3,
logging_interval=1,
)
hcm.fit(
datahandler=datahander,
use_caches_if_exist=True,
)
# Plot the resulting scores
hcm.plot_scores(axis=1, plot_type="scatter")
🔑 方法
Datagnosis基于D-CAT,这是一个来自van der Schaar实验室的硬度表征方法基准测试框架。
有关以下方法的基准测试,请参阅https://github.com/seedatnabeel/D-CAT。
通用方法
方法 | 类型 | 描述 | 分数 | 参考 |
---|---|---|---|---|
边际面积下(AUM) | 通用 | 根据分类器的边际对数据示例进行表征,即正确类别的logit值与下一类的差值。 | 硬 - 低分数。 | AUM论文 |
有信心学习 | 通用 | 有信心学习估计噪声标签和真实标签的联合分布,表征数据为容易和难以误标记。 | 硬 - 低分数 | 有信心学习论文 |
置信度同意 | 通用 | 同意度衡量的是对同一示例预测的一致性。 | 硬 - 低分数 | 置信度同意论文 |
数据智能 | 通用 | 数据-IQ计算随机不确定性(随机性)和置信度,以将数据分类为简单、模糊和困难示例。 | 困难 - 低置信度分数。高随机不确定性分数定义模糊 | 数据-IQ 论文 |
数据映射 | 通用 | 数据映射专注于测量变异性(认识不确定性)和置信度,以将数据分类为简单、模糊和困难示例。 | 困难 - 低置信度分数。高认识不确定性分数定义模糊 | 数据-映射论文 |
梯度归一化(GraNd) | 通用 | GraNd通过测量梯度范数来表征数据。 | 困难 - 高分数 | GraNd 论文 |
误差L2范数(EL2N) | 通用 | EL2N通过计算训练中的误差L2范数来表征数据,以用于计算目的。 | 困难 - 高分数 | EL2N 论文 |
遗忘 | 通用 | 遗忘分数通过分析示例在训练过程中的转换来分析。即,一个样本在一个epoch中正确学习的时间然后被遗忘。 | 困难 - 高分数 | 遗忘 论文 |
大损失 | 通用 | 大损失根据样本级别的损失幅度来表征数据。 | 困难 - 高分数 | 大损失 论文 |
典型性 | 通用 | 典型性通过计算样本到类质心的潜在空间聚类距离作为表征数据的度量。 | 困难 - 高分数 | 典型性 论文 |
梯度方差(VOG) | 通用 | VoG(梯度方差)估计每个样本在训练过程中的梯度方差 | 困难 - 高分数 | VOG 论文 |
由局部敏感性和困难性指导的主动学习(ALLSH) | 图像 | ALLSH通过计算原始样本和增强样本之间的softmax输出的KL散度来表征数据。 | 困难 - 高分数 | ALLSH 论文 |
通用类型插件可用于表格或图像数据。图像类型插件仅适用于图像。
🔨 测试
使用以下命令安装测试依赖项
pip install .[testing]
可以使用以下命令执行测试
pytest -vvvsx tests/ --durations=50
为datagnosis做贡献
我们希望使为datagnosis做贡献尽可能简单和透明。我们希望与尽可能多的人合作。
开发安装
首先创建一个新的环境。建议您使用conda。可以按照以下步骤操作
conda create -n your-datagnosis-env python=3.11
conda activate your-datagnosis-env
Python版本,3.8,3.9,3.10,3.11都是兼容的,但最好使用您能得到的最新版本,因为某些模型可能不支持旧版本的Python。
要获取包含所有必要依赖项的开发安装(用于linting,测试,自动格式化,pre-commit等),请运行以下命令
git clone https://github.com/vanderschaarlab/datagnosis.git
cd datagnosis
pip install -e .[testing]
请通过运行以下命令检查是否正确安装了仓库的pre-commit
pre-commit run --all
这检查了您是否已正确设置以贡献,这样您将匹配项目中其余部分的代码风格。这将在下面更详细地介绍。
⌨️ 我们的开发流程
🏂 代码风格
我们相信,保持一致的代码风格至关重要。因此,datagnosis对贡献的代码施加了某些规则,如果不符合这些规则,则自动化测试将无法通过。通过这些测试是合并贡献的要求。然而,我们将遵守这种代码风格变得尽可能简单。首先,在上一步设置开发环境时安装了所有必要的库,以生成与datagnosis的代码风格兼容的代码。其次,这些库都由pre-commit触发,因此一旦您设置好了,您就不需要做任何事情。当您运行git commit
时,任何简单的更改都将自动运行,其他所需更改将在stdout中解释给您,以便您进行修复。
datagnosis使用black和flake8代码格式化器来强制执行代码库中的常见代码风格。不应需要任何其他配置(有关高级用法,请参阅black文档)。
此外,datagnosis 使用 isort 对导入项进行字母排序并分隔成部分。
❕类型提示
datagnosis 完全使用 python 3.7+ 的 类型提示。这由 mypy 强制执行,它是一个静态类型检查器。
↩️ 提交请求
我们积极欢迎您的提交请求。
- 从
main
分支创建您的分支。 - 如果您已添加需要测试的代码,请以与仓库中已有的测试相同的风格添加测试。
- 如果您已更改 API,请在 PR 中记录 API 更改。
- 确保测试套件通过。
- 确保您的代码通过 pre-commit,这是提交和推送所必需的,如果您已正确安装 pre-commit,它包含在测试额外中。
🔶 问题
我们使用 GitHub 问题来跟踪公开的 bugs。请确保您的描述清晰,并且有足够的说明以便能够重现问题。
📜 许可证
通过向 datagnosis 贡献,您同意您的贡献将根据此源树根目录中的 LICENSE 文件进行许可。因此,您应该确保如果引入了任何依赖项,它们也受一个许可协议的约束,该协议允许代码由项目使用,并且与项目根目录中的许可协议兼容。
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分发
构建分发
散列 对于 datagnosis-0.0.3-py3-none-macosx_10_14_x86_64.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | 64568158bc1ea92178eca124a06669b9324a0e5f2b08bb5b1aab4aa0b84860d5 |
|
MD5 | d22a02daf951c1a8119b1de5cb40fe8f |
|
BLAKE2b-256 | 5814948b20e1c48e6452c74fc1bdafcfeae7752970aee215fa843c7d37392f51 |