Data-IQ:表征表格数据中具有异质结果的子组
项目描述
Data-IQ:表征表格数据中具有异质结果的子组
此存储库包含Data-IQ的实现,这是一个“以数据为中心的AI”框架,用于表征表格数据中具有异质结果的子组。
Data-IQ研究训练动态,特别是研究固有的数据不确定性(随机不确定性),将数据示例表征为以下子组: 容易,模糊 和 困难。
Data-IQ可以使用任何迭代训练的机器学习模型来表征数据。我们提供了一个使用Data-IQ的接口,它可以与 Pytorch模型 一起使用,以及,SKLearn风格API模型,包括 XGBoost,LightGBM和CatBoost。
子组的效用扩展到各种用例。
有关更多详细信息,请阅读我们的[NeurIPS 2022论文](即将提供链接): Data-IQ:表征表格数据中具有异质结果的子组。
安装
- 克隆存储库
- 使用Python 3.7创建一个新的虚拟环境,例如
virtualenv dataiq_env
- 在venv激活后,从存储库目录运行以下命令
- 运行 Data-IQ 自带数据所需的最小要求
pip install data_iq
或从源代码中运行
pip install .
- 运行 Data-IQ 测试和教程的完整要求
pip install .[testing]
- 将 venv 连接到内核
python -m ipykernel install --user --name=dataiq_env
使用 2 行代码将 Data-IQ 集成到您的项目训练循环中!
获取 Data-IQ
- 选项 1:使用 PyPI 中的包(称为
data_iq
)进行安装
pip install data_iq
或从源代码中使用
python -m pip install -e .
- 选项 2:从
data_iq
文件夹导入
以下展示了使用神经网络(Pytorch 风格)和 XGBoost(Sklearn 风格)的两种示例。
需要添加到您的训练循环中的 Data-IQ 代码行在注释中以星号突出显示。例如 *** 注释 ***
1. 基于 Pytorch 接口的 Data-IQ 示例(神经网络)
# Import Data-IQ
# Option 1 - if package is installed
from data_iq import DataIQ_Torch
# Option 2 - import from folder
from data_iq.dataiq_class import DataIQ_Torch
# Pytorch data loader here
train_loader = DataLoader(dataset=train_data, batch_size=128, shuffle=True)
# Define Pytorch device
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
# Define Pytorch model
net = Example_NN(input_size=X_train.shape[1], nlabels=len(np.unique(y_train)))
net.to(device)
# *** Initialize Data-IQ [LINE 1] ***
dataiq = DataIQ_Torch(X=X_train, y=y_train, sparse_labels=True)
# Fit Pytorch model [Training loop]
for e in range(1, EPOCHS + 1):
net.train()
for X_batch, y_batch in train_loader:
### ADD TRAIN LOOP HERE ###
# *** CALL DATA-IQ on EPOCH END [LINE 2] ***
dataiq.on_epoch_end(net, device=device)
# *** Access metrics ***
aleatoric_uncertainty = dataiq_xgb.aleatoric
confidence = dataiq_xgb.confidence
2. 基于 Sklearn 风格接口的 Data-IQ 示例(XGBoost)
# Import Data-IQ
# Option 1 - if package is installed
from data_iq import DataIQ_SKLearn
# Option 2 - import from folder
from data_iq.dataiq_class import DataIQ_SKLearn
# Arbitrary data loader - numpy arrays
X_train, X_test, y_train, y_test = load_data()
# *** Initialize Data-IQ [LINE 1] ***
dataiq_xgb = DataIQ_SKLearn(X=X_train, y=y_train)
# Fit XGBoost
clf = xgb.XGBClassifier(n_estimators=10)
clf.fit(X_train, y_train)
for i in range(1, nest):
# *** Characterize with Data-IQ [LINE 2] ***
dataiq_xgb.on_epoch_end(clf=clf, iteration=i)
# *** Access metrics ***
aleatoric_uncertainty = dataiq_xgb.aleatoric
confidence = dataiq_xgb.confidence
入门
为了在您的数据上开始使用 Data-IQ,我们提供了两个教程笔记本来展示 Data-IQ 的使用方法。示例包括 Pytorch 风格和 SKLearn 风格(XGBoost、Catboost、LightGBM)模型。
这些笔记本可以在 /tutorial
文件夹中找到。成年开源数据集作为教程中的示例数据集提供,以方便访问。
tutorial_torch_api.ipynb
- 示例:Data-IQ 与 Pytorch 模型的集成
tutorial_sklearn_api.ipynb
- 示例:Data-IQ 与迭代训练的 SKLearn 风格模型(例如 XGBoost、LightGBM、CatBoost)的集成
Data-IQ 度量
Data-IQ 包提供各种度量标准来描述训练动态。
主要和推荐的度量标准是:随机不确定性 和 预测置信度。然而,包中也包含其他度量标准。
用于描述训练动态的不同度量标准如下,可以通过 dataiq 对象访问
- 通过
dataiq.aleatoric
获取随机不确定性 - 通过
dataiq.confidence
获取预测置信度 - 通过
dataiq.variability
获取可变性 - 通过
dataiq.entropy
获取熵 - 通过
dataiq.mi
获取互信息 - 通过
dataiq.correctness
获取训练过程中的正确性
用例
我们在笔记本中突出显示不同的 Data-IQ 用例,从理解学习动态、创建特征曲线、特征获取等,以及在不同数据模态中的使用案例,这些笔记本可以在 /use_cases
文件夹中找到。
引用
如果您使用此代码,请引用相关的论文
@inproceedings
{seedat2022dataiq,
title={Data-IQ: Characterizing subgroups with heterogeneous outcomes in tabular data},
author={Seedat, Nabeel and Crabbe, Jonathan and Bica, Ioana and van der Schaar, Mihaela},
booktitle={Advances in Neural Information Processing Systems},
year={2022}
}
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源分布
构建分布
哈希值 用于 data_iq-0.0.1-py3-none-macosx_10_14_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d57ba4a3a23a1f672402258db9771ea42b592b35be1c2b12deecea5a441c03cd |
|
MD5 | 73588be735c58baa84bcbefe5669e887 |
|
BLAKE2b-256 | 2339b8d999709c9f93a2b0e95ab5540a0126ee673f941d532f3da0d7b73ac464 |