@@ -131,7 +131,7 @@ cdef class Tree:
131
131
# cdef public int n_outputs
132
132
133
133
# cdef public int max_n_classes
134
- # cdef public int value_stride
134
+ # cdef public Py_ssize_t value_stride
135
135
136
136
# # Parameters
137
137
# cdef public Criterion criterion
@@ -458,9 +458,9 @@ cdef class Tree:
458
458
sample_weight_ptr = < DOUBLE_t* > sample_weight.data
459
459
cdef DOUBLE_t w = 1.0
460
460
461
- cdef int X_stride = < int > X.strides[1 ] / < int > X.itemsize
462
- cdef int X_argsorted_stride = < int > X_argsorted.strides[1 ] / < int > X_argsorted.itemsize
463
- cdef int y_stride = < int > y.strides[0 ] / < int > y.itemsize
461
+ cdef Py_ssize_t X_stride = < int > X.strides[1 ] / < int > X.itemsize
462
+ cdef Py_ssize_t X_argsorted_stride = < int > X_argsorted.strides[1 ] / < int > X_argsorted.itemsize
463
+ cdef Py_ssize_t y_stride = < int > y.strides[0 ] / < int > y.itemsize
464
464
465
465
cdef int n_total_samples = y.shape[0 ]
466
466
cdef int feature
@@ -657,9 +657,9 @@ cdef class Tree:
657
657
658
658
return node_id
659
659
660
- cdef void find_split(self , DTYPE_t* X_ptr, int X_stride,
661
- int * X_argsorted_ptr, int X_argsorted_stride,
662
- DOUBLE_t* y_ptr, int y_stride,
660
+ cdef void find_split(self , DTYPE_t* X_ptr, Py_ssize_t X_stride,
661
+ int * X_argsorted_ptr, Py_ssize_t X_argsorted_stride,
662
+ DOUBLE_t* y_ptr, Py_ssize_t y_stride,
663
663
DOUBLE_t* sample_weight_ptr,
664
664
BOOL_t* sample_mask_ptr,
665
665
int n_node_samples,
@@ -691,9 +691,9 @@ cdef class Tree:
691
691
n_total_samples, _best_i, _best_t,
692
692
_best_error, _initial_error)
693
693
694
- cdef void find_best_split(self , DTYPE_t* X_ptr, int X_stride,
695
- int * X_argsorted_ptr, int X_argsorted_stride,
696
- DOUBLE_t* y_ptr, int y_stride,
694
+ cdef void find_best_split(self , DTYPE_t* X_ptr, Py_ssize_t X_stride,
695
+ int * X_argsorted_ptr, Py_ssize_t X_argsorted_stride,
696
+ DOUBLE_t* y_ptr, Py_ssize_t y_stride,
697
697
DOUBLE_t* sample_weight_ptr,
698
698
BOOL_t* sample_mask_ptr,
699
699
int n_node_samples,
@@ -822,9 +822,9 @@ cdef class Tree:
822
822
_best_error[0 ] = best_error
823
823
_initial_error[0 ] = initial_error
824
824
825
- cdef void find_random_split(self , DTYPE_t* X_ptr, int X_stride,
826
- int * X_argsorted_ptr, int X_argsorted_stride,
827
- DOUBLE_t* y_ptr, int y_stride,
825
+ cdef void find_random_split(self , DTYPE_t* X_ptr, Py_ssize_t X_stride,
826
+ int * X_argsorted_ptr, Py_ssize_t X_argsorted_stride,
827
+ DOUBLE_t* y_ptr, Py_ssize_t y_stride,
828
828
DOUBLE_t* sample_weight_ptr,
829
829
BOOL_t* sample_mask_ptr,
830
830
int n_node_samples,
@@ -1034,12 +1034,12 @@ cdef class Tree:
1034
1034
cdef class Criterion:
1035
1035
""" Interface for splitting criteria (regression and classification)."""
1036
1036
1037
- cdef void init(self , DOUBLE_t* y, int y_stride,
1038
- DOUBLE_t* sample_weight,
1039
- BOOL_t* sample_mask,
1040
- int n_samples,
1041
- double weighted_n_samples,
1042
- int n_total_samples):
1037
+ cdef void init(self , DOUBLE_t* y, Py_ssize_t y_stride,
1038
+ DOUBLE_t* sample_weight,
1039
+ BOOL_t* sample_mask,
1040
+ int n_samples,
1041
+ double weighted_n_samples,
1042
+ int n_total_samples):
1043
1043
""" Initialise the criterion."""
1044
1044
pass
1045
1045
@@ -1048,10 +1048,10 @@ cdef class Criterion:
1048
1048
pass
1049
1049
1050
1050
cdef bool update(self , int a, int b,
1051
- DOUBLE_t* y, int y_stride,
1052
- int * X_argsorted_i,
1053
- DOUBLE_t* sample_weight,
1054
- BOOL_t* sample_mask):
1051
+ DOUBLE_t* y, Py_ssize_t y_stride,
1052
+ int * X_argsorted_i,
1053
+ DOUBLE_t* sample_weight,
1054
+ BOOL_t* sample_mask):
1055
1055
""" Update the criteria for each value in interval [a,b) (where a and b
1056
1056
are indices in `X_argsorted_i`)."""
1057
1057
pass
@@ -1083,7 +1083,7 @@ cdef class ClassificationCriterion(Criterion):
1083
1083
weighted_n_samples : double
1084
1084
The weighted number of samples.
1085
1085
1086
- label_count_stride : int
1086
+ label_count_stride : Py_ssize_t
1087
1087
The stride between outputs in label_count_* arrays.
1088
1088
1089
1089
label_count_left : double*
@@ -1118,7 +1118,7 @@ cdef class ClassificationCriterion(Criterion):
1118
1118
"""
1119
1119
cdef int * n_classes
1120
1120
1121
- cdef int label_count_stride
1121
+ cdef Py_ssize_t label_count_stride
1122
1122
cdef double * label_count_left
1123
1123
cdef double * label_count_right
1124
1124
cdef double * label_count_init
@@ -1139,7 +1139,7 @@ cdef class ClassificationCriterion(Criterion):
1139
1139
if self .n_classes == NULL :
1140
1140
raise MemoryError ()
1141
1141
1142
- cdef int label_count_stride = - 1
1142
+ cdef Py_ssize_t label_count_stride = - 1
1143
1143
1144
1144
for k from 0 <= k < n_outputs:
1145
1145
self .n_classes[k] = n_classes[k]
@@ -1183,7 +1183,7 @@ cdef class ClassificationCriterion(Criterion):
1183
1183
def __setstate__ (self , d ):
1184
1184
pass
1185
1185
1186
- cdef void init(self , DOUBLE_t* y, int y_stride,
1186
+ cdef void init(self , DOUBLE_t* y, Py_ssize_t y_stride,
1187
1187
DOUBLE_t* sample_weight,
1188
1188
BOOL_t* sample_mask,
1189
1189
int n_samples,
@@ -1192,7 +1192,7 @@ cdef class ClassificationCriterion(Criterion):
1192
1192
""" Initialise the criterion."""
1193
1193
cdef int n_outputs = self .n_outputs
1194
1194
cdef int * n_classes = self .n_classes
1195
- cdef int label_co
741A
unt_stride = self .label_count_stride
1195
+ cdef Py_ssize_t label_count_stride = self .label_count_stride
1196
1196
cdef double * label_count_init = self .label_count_init
1197
1197
1198
1198
cdef int k = 0
@@ -1223,7 +1223,7 @@ cdef class ClassificationCriterion(Criterion):
1223
1223
""" Reset the criterion for a new feature index."""
1224
1224
cdef int n_outputs = self .n_outputs
1225
1225
cdef int * n_classes = self .n_classes
1226
- cdef int label_count_stride = self .label_count_stride
1226
+ cdef Py_ssize_t label_count_stride = self .label_count_stride
1227
1227
cdef double * label_count_init = self .label_count_init
1228
1228
cdef double * label_count_left = self .label_count_left
1229
1229
cdef double * label_count_right = self .label_count_right
@@ -1244,15 +1244,15 @@ cdef class ClassificationCriterion(Criterion):
1244
1244
label_count_right[k * label_count_stride + c] = label_count_init[k * label_count_stride + c]
1245
1245
1246
1246
cdef bool update(self , int a, int b,
1247
- DOUBLE_t* y, int y_stride,
1247
+ DOUBLE_t* y, Py_ssize_t y_stride,
1248
1248
int * X_argsorted_i,
1249
1249
DOUBLE_t* sample_weight,
1250
1250
BOOL_t* sample_mask):
1251
1251
""" Update the criteria for each value in interval [a,b) (where a and b
1252
1252
are indices in `X_argsorted_i`)."""
1253
1253
cdef int n_outputs = self .n_outputs
1254
1254
cdef int * n_classes = self .n_classes
1255
- cdef int label_count_stride = self .label_count_stride
1255
+ cdef Py_ssize_t label_count_stride = self .label_count_stride
1256
1256
cdef double * label_count_left = self .label_count_left
1257
1257
cdef double * label_count_right = self .label_count_right
1258
1258
cdef int n_left = self .n_left
@@ -1310,7 +1310,7 @@ cdef class ClassificationCriterion(Criterion):
1310
1310
before)."""
1311
1311
cdef int n_outputs = self .n_outputs
1312
1312
cdef int * n_classes = self .n_classes
1313
- cdef int label_count_stride = self .label_count_stride
1313
+ cdef Py_ssize_t label_count_stride = self .label_count_stride
1314
1314
cdef double * label_count_init = self .label_count_init
1315
1315
1316
1316
cdef int k, c
@@ -1342,7 +1342,7 @@ cdef class Gini(ClassificationCriterion):
1342
1342
cdef double n_samples = self .weighted_n_samples
1343
1343
cdef int n_outputs = self .n_outputs
1344
1344
cdef int * n_classes = self .n_classes
1345
- cdef int label_count_stride = self .label_count_stride
1345
+ cdef Py_ssize_t label_count_stride = self .label_count_stride
1346
1346
cdef double * label_count_left = self .label_count_left
1347
1347
cdef double * label_count_right = self .label_count_right
1348
1348
cdef double n_left = self .weighted_n_left
@@ -1404,7 +1404,7 @@ cdef class Entropy(ClassificationCriterion):
1404
1404
cdef double n_samples = self .weighted_n_samples
1405
1405
cdef int n_outputs = self .n_outputs
1406
1406
cdef int * n_classes = self .n_classes
1407
- cdef int label_count_stride = self .label_count_stride
1407
+ cdef Py_ssize_t label_count_stride = self .label_count_stride
1408
1408
cdef double * label_count_left = self .label_count_left
1409
1409
cdef double * label_count_right = self .label_count_right
1410
1410
cdef double n_left = self .weighted_n_left
@@ -1564,7 +1564,7 @@ cdef class RegressionCriterion(Criterion):
1564
1564
def __setstate__ (self , d ):
B568
1565
1565
pass
1566
1566
1567
- cdef void init(self , DOUBLE_t* y, int y_stride,
1567
+ cdef void init(self , DOUBLE_t* y, Py_ssize_t y_stride,
1568
1568
DOUBLE_t* sample_weight,
1569
1569
BOOL_t* sample_mask,
1570
1570
int n_samples,
@@ -1654,10 +1654,10 @@ cdef class RegressionCriterion(Criterion):
1654
1654
weighted_n_samples * (mean_right[k] * mean_right[k]))
1655
1655
1656
1656
cdef bool update(self , int a, int b,
1657
- DOUBLE_t* y, int y_stride,
1658
- int * X_argsorted_i,
1659
- DOUBLE_t* sample_weight,
1660
- BOOL_t* sample_mask):
1657
+ DOUBLE_t* y, Py_ssize_t y_stride,
1658
+ int * X_argsorted_i,
1659
+ DOUBLE_t* sample_weight,
1660
+ BOOL_t* sample_mask):
1661
1661
""" Update the criteria for each value in interval [a,b) (where a and b
1662
1662
are indices in `X_argsorted_i`)."""
1663
1663
cdef double * mean_left = self .mean_left
0 commit comments