@@ -1168,10 +1168,12 @@ cdef class BestSplitter(Splitter):
1168
1168
samples[partition_end] = samples[p]
1169
1169
samples[p] = tmp
1170
1170
1171
- # Respect invariant for constant features
1171
+ # Respect invariant for constant features: the original order of
1172
+ # element in features[:n_known_constants] must be preserved for sibling
1173
+ # and child nodes
1172
1174
memcpy(features, constant_features, sizeof(SIZE_t) * n_known_constants)
1173
1175
1174
- # Copy constant features
1176
+ # Copy newly found constant features
1175
1177
memcpy(constant_features + n_known_constants,
1176
1178
features + n_known_constants,
1177
1179
sizeof(SIZE_t) * n_found_constants)
@@ -1474,10 +1476,12 @@ cdef class RandomSplitter(Splitter):
1474
1476
samples[partition_end] = samples[p]
1475
1477
samples[p] = tmp
1476
1478
1477
- # Respect invariant for constant features
1479
+ # Respect invariant for constant features: the original order of
1480
+ # element in features[:n_known_constants] must be preserved for sibling
1481
+ # and child nodes
1478
1482
memcpy(features, constant_features, sizeof(SIZE_t) * n_known_constants)
1479
1483
1480
- # Copy constant features
1484
+ # Copy newly found constant features
1481
1485
memcpy(constant_features + n_known_constants,
1482
1486
features + n_known_constants,
1483
1487
sizeof(SIZE_t) * n_found_constants)
@@ -1714,10 +1718,12 @@ cdef class PresortBestSplitter(Splitter):
1714
1718
for p in range (start, end):
1715
1719
sample_mask[samples[p]] = 0
1716
1720
1717
- # Respect invariant for constant features
1721
+ # Respect invariant for constant features: the original order of
1722
+ # element in features[:n_known_constants] must be preserved for sibling
1723
+ # and child nodes
1718
1724
memcpy(features, constant_features, sizeof(SIZE_t) * n_known_constants)
1719
1725
1720
- # Copy constant features
1726
+ # Copy newly found constant features
1721
1727
memcpy(constant_features + n_known_constants,
1722
1728
features + n_known_constants,
1723
1729
sizeof(SIZE_t) * n_found_constants)
0 commit comments