从助推器 predict() 函数预测 class 标签
Predict class label from booster predict() function
我有一个二进制分类问题,在 Python 中使用默认参数很好地解决了这个问题(训练和测试准确度在 90% 左右)。我的项目范围是在 Python 中训练一些“模型”,这些模型稍后可以在我正在编写的 R 库中重复使用。这是现在通过助推器 bst.save() 和 bst.load() 完成的。到目前为止,还不错。
我可以在 Python 中保存助推器,然后在 R 中重新加载。问题是,在 Python 中,我有 predict_proba() R 中缺少的函数!
所以很自然地,我尝试了 predict() 函数,它现在只给我 0.8 以上的数字?我到底应该用这个做什么?如何从 predict() 的结果中获取预测标签(0 或 1)?我只想有一个数组,其中包含 R.bst.predict(booster, data) 方法中传递的数据的预测 0 或 1。
当然,我意识到我可能遗漏了一些重要的东西。这就是我向您寻求帮助的原因。
第一张图,predict() 中的绘制结果与第二张图中的 predict_proba() 相比。
在 Python 中训练模型时,最初,您必须将 objective='multi:softprob', num_class=2
放入模型定义中。这将为助推器中的每个 class 提供一个概率。换句话说,请在此处从文档中查看:
multi:softprob 和softmax一样,但是输出一个ndata * nclass的向量,可以进一步reshape为ndata, nclass矩阵。结果包含属于每个 class.
的每个数据点的预测概率
当然,在R中使用Python中训练的模型时,不要忘记以与Python中相同的格式(相同的顺序,...)传递数据。当您使用助推器 class 时,SKLearn 界面中存在的许多助手都丢失了,因此没有仔细检查您是否以相同的顺序传递列和所有内容。我只是按字母顺序排列列。某种语言(例如 C)并在“测试”模型时在 R 中重新排序
我有一个二进制分类问题,在 Python 中使用默认参数很好地解决了这个问题(训练和测试准确度在 90% 左右)。我的项目范围是在 Python 中训练一些“模型”,这些模型稍后可以在我正在编写的 R 库中重复使用。这是现在通过助推器 bst.save() 和 bst.load() 完成的。到目前为止,还不错。
我可以在 Python 中保存助推器,然后在 R 中重新加载。问题是,在 Python 中,我有 predict_proba() R 中缺少的函数!
所以很自然地,我尝试了 predict() 函数,它现在只给我 0.8 以上的数字?我到底应该用这个做什么?如何从 predict() 的结果中获取预测标签(0 或 1)?我只想有一个数组,其中包含 R.bst.predict(booster, data) 方法中传递的数据的预测 0 或 1。
当然,我意识到我可能遗漏了一些重要的东西。这就是我向您寻求帮助的原因。
第一张图,predict() 中的绘制结果与第二张图中的 predict_proba() 相比。
在 Python 中训练模型时,最初,您必须将 objective='multi:softprob', num_class=2
放入模型定义中。这将为助推器中的每个 class 提供一个概率。换句话说,请在此处从文档中查看:
multi:softprob 和softmax一样,但是输出一个ndata * nclass的向量,可以进一步reshape为ndata, nclass矩阵。结果包含属于每个 class.
的每个数据点的预测概率当然,在R中使用Python中训练的模型时,不要忘记以与Python中相同的格式(相同的顺序,...)传递数据。当您使用助推器 class 时,SKLearn 界面中存在的许多助手都丢失了,因此没有仔细检查您是否以相同的顺序传递列和所有内容。我只是按字母顺序排列列。某种语言(例如 C)并在“测试”模型时在 R 中重新排序