【问题标题】:Tabnet Classifier predictions returning 0 and 1 valuesTabnet 分类器预测返回 0 和 1 值
【发布时间】: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)

【问题讨论】:

    标签: python classification


    【解决方案1】:

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

    predictions = clf.predict_proba(X_test)
    

    【讨论】:

    • 这确实奏效了山姆。非常感谢!因缺少 TabNet 文档而苦苦挣扎。
    • 没问题,我自己快速查看了文档,我觉得奇怪的是它没有显示可用的方法,所以只是一个幸运的猜测!我认为关键是“TabNet 现在与 scikit 兼容,训练 TabNetClassifier 或 TabNetRegressor 真的很容易。”这意味着它应该继承自 scikit 分类器并使用与这些分类器相同的语法。
    猜你喜欢
    • 2016-09-02
    • 2021-09-01
    • 1970-01-01
    • 2020-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-06
    • 2018-10-15
    相关资源
    最近更新 更多