Tabnet 分类器预测返回 0 和 1 值

Posted

技术标签:

【中文标题】Tabnet 分类器预测返回 0 和 1 值【英文标题】:Tabnet Classifier predictions returning 0 and 1 values 【发布时间】:2022-01-16 22:19:47 【问题描述】:

我正在尝试使用 tabnet 构建分类模型。我想输出 0 和 1 的概率(即 0 和 1 之间的值)。我成功地训练了模型,但预测函数只返回 0 和 1,我不知道如何检查概率。你能帮我吗?这是我正在使用的代码:

clf = TabNetClassifier(
                optimizer_fn=torch.optim.Adam,
                optimizer_params=dict(lr=0.001),
                scheduler_params="step_size":50,
                                    "gamma":0.9,
                scheduler_fn=torch.optim.lr_scheduler.StepLR,
                mask_type='sparsemax',
                seed = 7
                )
MAX_EPOCHS = 1000
BATCH_SIZE = int(4096*4)
VIRTUAL_BATCH_SIZE = int(256*4)

hist = clf.fit(
    X_train=X_train.values, y_train=y_train.values,
    eval_set=[
        # (X_train.values, y_train.values), 
        (X_valid.values, y_valid.values)
    ],
    eval_name=[
        'valid'
    ],
    eval_metric=['accuracy','auc'],
    max_epochs=MAX_EPOCHS, 
    patience=15,
    batch_size=BATCH_SIZE, 
    virtual_batch_size=VIRTUAL_BATCH_SIZE,
    num_workers=0,
    weights=1,
    drop_last=False,
)

predictions = clf.predict(X_test)

【问题讨论】:

【参考方案1】:

不是 100% 肯定,但如果类似于 sklearn 应该只是:

predictions = clf.predict_proba(X_test)

【讨论】:

这确实奏效了山姆。非常感谢!因缺少 TabNet 文档而苦苦挣扎。 没问题,我自己快速查看了文档,我觉得奇怪的是它没有显示可用的方法,所以只是一个幸运的猜测!我认为关键是“TabNet 现在与 scikit 兼容,训练 TabNetClassifier 或 TabNetRegressor 真的很容易。”这意味着它应该继承自 scikit 分类器并使用与这些分类器相同的语法。

以上是关于Tabnet 分类器预测返回 0 和 1 值的主要内容,如果未能解决你的问题,请参考以下文章

Peter教你谈情说AI | 06朴素贝叶斯分类器

朴素贝叶斯和多类分类器返回整数。数据团队说他们应该是概率

Svm 预测 Scikit Learn 中的默认值

支持向量机

随机森林的混合预测器类型

在 R 中编写自定义分类器并预测函数