Clarify the behavior of invalid categorical value handling. (#7529)
This commit is contained in:
@@ -9,16 +9,16 @@
|
||||
namespace xgboost {
|
||||
namespace predictor {
|
||||
template <bool has_missing, bool has_categorical>
|
||||
inline XGBOOST_DEVICE bst_node_t
|
||||
GetNextNode(const RegTree::Node &node, const bst_node_t nid, float fvalue,
|
||||
bool is_missing, RegTree::CategoricalSplitMatrix const &cats) {
|
||||
inline XGBOOST_DEVICE bst_node_t GetNextNode(const RegTree::Node &node, const bst_node_t nid,
|
||||
float fvalue, bool is_missing,
|
||||
RegTree::CategoricalSplitMatrix const &cats) {
|
||||
if (has_missing && is_missing) {
|
||||
return node.DefaultChild();
|
||||
} else {
|
||||
if (has_categorical && common::IsCat(cats.split_type, nid)) {
|
||||
auto node_categories = cats.categories.subspan(cats.node_ptr[nid].beg,
|
||||
cats.node_ptr[nid].size);
|
||||
return Decision(node_categories, common::AsCat(fvalue))
|
||||
auto node_categories =
|
||||
cats.categories.subspan(cats.node_ptr[nid].beg, cats.node_ptr[nid].size);
|
||||
return common::Decision<true>(node_categories, fvalue, node.DefaultLeft())
|
||||
? node.LeftChild()
|
||||
: node.RightChild();
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user