@@ -276,7 +276,7 @@ def _gen_params_recursion(self,node:_Node,h_node:_Node,feature_fix,threshold_fix
276
276
node .thresholds [:] = np .linspace (node .ranges [node .k ,0 ],node .ranges [node .k ,1 ],self .c_num_children_vec [node .k ]+ 1 )
277
277
else :
278
278
node .thresholds = None
279
- child_k_candidates = node .k_candidates + []
279
+ child_k_candidates = node .k_candidates . copy ()
280
280
child_k_candidates .remove (node .k )
281
281
node .leaf = False
282
282
for i in range (self .c_num_children_vec [node .k ]):
@@ -286,8 +286,7 @@ def _gen_params_recursion(self,node:_Node,h_node:_Node,feature_fix,threshold_fix
286
286
sub_model = self .SubModel .GenModel (seed = self .rng ,** self .sub_h_params ),
287
287
)
288
288
node .children [i ].k_candidates = child_k_candidates
289
- node .children [i ].ranges = np .empty ([self .c_dim_continuous ,2 ])
290
- node .children [i ].ranges [:] = node .ranges
289
+ node .children [i ].ranges = np .array (node .ranges )
291
290
if node .thresholds is not None :
292
291
node .children [i ].ranges [node .k ,0 ] = node .thresholds [i ]
293
292
node .children [i ].ranges [node .k ,1 ] = node .thresholds [i + 1 ]
@@ -309,11 +308,10 @@ def _gen_params_recursion(self,node:_Node,h_node:_Node,feature_fix,threshold_fix
309
308
node .k = h_node .k
310
309
node .children = [None for i in range (self .c_num_children_vec [node .k ])]
311
310
if node .k < self .c_dim_continuous :
312
- node .thresholds = np .empty (self .c_num_children_vec [node .k ]+ 1 )
313
- node .thresholds [:] = h_node .thresholds
311
+ node .thresholds = np .array (h_node .thresholds )
314
312
else :
315
313
node .thresholds = None
316
- child_k_candidates = node .k_candidates + []
314
+ child_k_candidates = node .k_candidates . copy ()
317
315
child_k_candidates .remove (node .k )
318
316
node .leaf = False
319
317
for i in range (self .c_num_children_vec [node .k ]):
@@ -323,8 +321,7 @@ def _gen_params_recursion(self,node:_Node,h_node:_Node,feature_fix,threshold_fix
323
321
sub_model = self .SubModel .GenModel (seed = self .rng ,** self .sub_h_params ),
324
322
)
325
323
node .children [i ].k_candidates = child_k_candidates
326
- node .children [i ].ranges = np .empty ([self .c_dim_continuous ,2 ])
327
- node .children [i ].ranges [:] = node .ranges
324
+ node .children [i ].ranges = np .array (node .ranges )
328
325
if node .thresholds is not None :
329
326
node .children [i ].ranges [node .k ,0 ] = node .thresholds [i ]
330
327
node .children [i ].ranges [node .k ,1 ] = node .thresholds [i + 1 ]
@@ -354,14 +351,13 @@ def _gen_params_recursion_feature_and_tree_fix(self,node:_Node,threshold_fix,thr
354
351
node .thresholds [:] = np .linspace (node .ranges [node .k ,0 ],node .ranges [node .k ,1 ],self .c_num_children_vec [node .k ]+ 1 )
355
352
else :
356
353
node .thresholds = None
357
- child_k_candidates = node .k_candidates + []
354
+ child_k_candidates = node .k_candidates . copy ()
358
355
child_k_candidates .remove (node .k )
359
356
node .leaf = False
360
357
for i in range (self .c_num_children_vec [node .k ]):
361
358
if node .children [i ] is not None :
362
359
node .children [i ].k_candidates = child_k_candidates
363
- node .children [i ].ranges = np .empty ([self .c_dim_continuous ,2 ])
364
- node .children [i ].ranges [:] = node .ranges
360
+ node .children [i ].ranges = np .array (node .ranges )
365
361
if node .thresholds is not None :
366
362
node .children [i ].ranges [node .k ,0 ] = node .thresholds [i ]
367
363
node .children [i ].ranges [node .k ,1 ] = node .thresholds [i + 1 ]
@@ -387,11 +383,10 @@ def _set_params_recursion(self,node:_Node,original_tree_node:_Node):
387
383
node .k = original_tree_node .k
388
384
node .children = [None for i in range (self .c_num_children_vec [node .k ])]
389
385
if node .k < self .c_dim_continuous :
390
- node .thresholds = np .empty (self .c_num_children_vec [node .k ]+ 1 )
391
- node .thresholds [:] = original_tree_node .thresholds
386
+ node .thresholds = np .array (original_tree_node .thresholds )
392
387
else :
393
388
node .thresholds = None
394
- child_k_candidates = node .k_candidates + []
389
+ child_k_candidates = node .k_candidates . copy ()
395
390
child_k_candidates .remove (node .k )
396
391
node .leaf = False
397
392
for i in range (self .c_num_children_vec [node .k ]):
@@ -402,8 +397,7 @@ def _set_params_recursion(self,node:_Node,original_tree_node:_Node):
402
397
sub_model = self .SubModel .GenModel (seed = self .rng ,** self .sub_h_params )
403
398
)
404
399
node .children [i ].k_candidates = child_k_candidates
405
- node .children [i ].ranges = np .empty ([self .c_dim_continuous ,2 ])
406
- node .children [i ].ranges [:] = node .ranges
400
+ node .children [i ].ranges = np .array (node .ranges )
407
401
if node .thresholds is not None :
408
402
node .children [i ].ranges [node .k ,0 ] = node .thresholds [i ]
409
403
node .children [i ].ranges [node .k ,1 ] = node .thresholds [i + 1 ]
@@ -520,11 +514,10 @@ def _set_h_params_recursion(self,node:_Node,original_tree_node:_Node):
520
514
node .k = original_tree_node .k
521
515
node .children = [None for i in range (self .c_num_children_vec [node .k ])]
522
516
if node .k < self .c_dim_continuous :
523
- node .thresholds = np .empty (self .c_num_children_vec [node .k ]+ 1 )
524
- node .thresholds [:] = original_tree_node .thresholds
517
+ node .thresholds = np .array (original_tree_node .thresholds )
525
518
else :
526
519
node .thresholds = None
527
- child_k_candidates = node .k_candidates + []
520
+ child_k_candidates = node .k_candidates . copy ()
528
521
child_k_candidates .remove (node .k )
529
522
node .leaf = False
530
523
for i in range (self .c_num_children_vec [node .k ]):
@@ -534,8 +527,7 @@ def _set_h_params_recursion(self,node:_Node,original_tree_node:_Node):
534
527
sub_model = self .SubModel .GenModel (seed = self .rng ,** self .sub_h_params ),
535
528
)
536
529
node .children [i ].k_candidates = child_k_candidates
537
- node .children [i ].ranges = np .empty ([self .c_dim_continuous ,2 ])
538
- node .children [i ].ranges [:] = node .ranges
530
+ node .children [i ].ranges = np .array (node .ranges )
539
531
if node .thresholds is not None :
540
532
node .children [i ].ranges [node .k ,0 ] = node .thresholds [i ]
541
533
node .children [i ].ranges [node .k ,1 ] = node .thresholds [i + 1 ]
@@ -618,7 +610,7 @@ def set_h_params(self,
618
610
for i in range (len (self .h_metatree_list )):
619
611
self ._set_h_params_recursion (self .h_metatree_list [i ],h_metatree_list [i ])
620
612
if h_metatree_prob_vec is not None :
621
- self .h_metatree_prob_vec = np .copy (
613
+ self .h_metatree_prob_vec = np .array (
622
614
_check .float_vec_sum_1 (
623
615
h_metatree_prob_vec ,
624
616
'h_metatree_prob_vec' ,
@@ -632,7 +624,7 @@ def set_h_params(self,
632
624
else :
633
625
self .h_metatree_prob_vec = None
634
626
elif h_metatree_prob_vec is not None :
635
- self .h_metatree_prob_vec = np .copy (
627
+ self .h_metatree_prob_vec = np .array (
636
628
_check .float_vec_sum_1 (
637
629
h_metatree_prob_vec ,
638
630
'h_metatree_prob_vec' ,
@@ -1318,11 +1310,10 @@ def _set_h0_params_recursion(self,node:_Node,original_tree_node:_Node):
1318
1310
node .k = original_tree_node .k
1319
1311
node .children = [None for i in range (self .c_num_children_vec [node .k ])]
1320
1312
if node .k < self .c_dim_continuous :
1321
- node .thresholds = np .empty (self .c_num_children_vec [node .k ]+ 1 )
1322
- node .thresholds [:] = original_tree_node .thresholds
1313
+ node .thresholds = np .array (original_tree_node .thresholds )
1323
1314
else :
1324
1315
node .thresholds = None
1325
- child_k_candidates = node .k_candidates + []
1316
+ child_k_candidates = node .k_candidates . copy ()
1326
1317
child_k_candidates .remove (node .k )
1327
1318
node .leaf = False
1328
1319
for i in range (self .c_num_children_vec [node .k ]):
@@ -1332,8 +1323,7 @@ def _set_h0_params_recursion(self,node:_Node,original_tree_node:_Node):
1332
1323
sub_model = self .SubModel .LearnModel (** self .sub_h0_params ),
1333
1324
)
1334
1325
node .children [i ].k_candidates = child_k_candidates
1335
- node .children [i ].ranges = np .empty ([self .c_dim_continuous ,2 ])
1336
- node .children [i ].ranges [:] = node .ranges
1326
+ node .children [i ].ranges = np .array (node .ranges )
1337
1327
if node .thresholds is not None :
1338
1328
node .children [i ].ranges [node .k ,0 ] = node .thresholds [i ]
1339
1329
node .children [i ].ranges [node .k ,1 ] = node .thresholds [i + 1 ]
@@ -1382,11 +1372,10 @@ def _set_hn_params_recursion(self,node:_Node,original_tree_node:_Node):
1382
1372
node .k = original_tree_node .k
1383
1373
node .children = [None for i in range (self .c_num_children_vec [node .k ])]
1384
1374
if node .k < self .c_dim_continuous :
1385
- node .thresholds = np .empty (self .c_num_children_vec [node .k ]+ 1 )
1386
- node .thresholds [:] = original_tree_node .thresholds
1375
+ node .thresholds = np .array (original_tree_node .thresholds )
1387
1376
else :
1388
1377
node .thresholds = None
1389
- child_k_candidates = node .k_candidates + []
1378
+ child_k_candidates = node .k_candidates . copy ()
1390
1379
child_k_candidates .remove (node .k )
1391
1380
node .leaf = False
1392
1381
for i in range (self .c_num_children_vec [node .k ]):
@@ -1396,8 +1385,7 @@ def _set_hn_params_recursion(self,node:_Node,original_tree_node:_Node):
1396
1385
sub_model = self .SubModel .LearnModel (** self .sub_hn_params ),
1397
1386
)
1398
1387
node .children [i ].k_candidates = child_k_candidates
1399
- node .children [i ].ranges = np .empty ([self .c_dim_continuous ,2 ])
1400
- node .children [i ].ranges [:] = node .ranges
1388
+ node .children [i ].ranges = np .array (node .ranges )
1401
1389
if node .thresholds is not None :
1402
1390
node .children [i ].ranges [node .k ,0 ] = node .thresholds [i ]
1403
1391
node .children [i ].ranges [node .k ,1 ] = node .thresholds [i + 1 ]
@@ -1480,7 +1468,7 @@ def set_h0_params(self,
1480
1468
for i in range (len (self .h0_metatree_list )):
1481
1469
self ._set_h0_params_recursion (self .h0_metatree_list [i ],h0_metatree_list [i ])
1482
1470
if h0_metatree_prob_vec is not None :
1483
- self .h0_metatree_prob_vec = np .copy (
1471
+ self .h0_metatree_prob_vec = np .array (
1484
1472
_check .float_vec_sum_1 (
1485
1473
h0_metatree_prob_vec ,
1486
1474
'h0_metatree_prob_vec' ,
@@ -1494,7 +1482,7 @@ def set_h0_params(self,
1494
1482
else :
1495
1483
self .h0_metatree_prob_vec = None
1496
1484
elif h0_metatree_prob_vec is not None :
1497
- self .h0_metatree_prob_vec = np .copy (
1485
+ self .h0_metatree_prob_vec = np .array (
1498
1486
_check .float_vec_sum_1 (
1499
1487
h0_metatree_prob_vec ,
1500
1488
'h0_metatree_prob_vec' ,
@@ -1614,7 +1602,7 @@ def set_hn_params(self,
1614
1602
for i in range (len (self .hn_metatree_list )):
1615
1603
self ._set_hn_params_recursion (self .hn_metatree_list [i ],hn_metatree_list [i ])
1616
1604
if hn_metatree_prob_vec is not None :
1617
- self .hn_metatree_prob_vec = np .copy (
1605
+ self .hn_metatree_prob_vec = np .array (
1618
1606
_check .float_vec_sum_1 (
1619
1607
hn_metatree_prob_vec ,
1620
1608
'hn_metatree_prob_vec' ,
@@ -1628,7 +1616,7 @@ def set_hn_params(self,
1628
1616
else :
1629
1617
self .hn_metatree_prob_vec = None
1630
1618
elif hn_metatree_prob_vec is not None :
1631
- self .hn_metatree_prob_vec = np .copy (
1619
+ self .hn_metatree_prob_vec = np .array (
1632
1620
_check .float_vec_sum_1 (
1633
1621
hn_metatree_prob_vec ,
1634
1622
'hn_metatree_prob_vec' ,
@@ -1676,7 +1664,7 @@ def get_hn_params(self):
1676
1664
def _copy_tree_from_sklearn_tree (self ,new_node :_Node , original_tree ,node_id ):
1677
1665
if original_tree .children_left [node_id ] != sklearn_tree ._tree .TREE_LEAF : # inner node
1678
1666
new_node .k = original_tree .feature [node_id ]
1679
- child_k_candidates = new_node .k_candidates + []
1667
+ child_k_candidates = new_node .k_candidates . copy ()
1680
1668
child_k_candidates .remove (new_node .k )
1681
1669
new_node .children [0 ] = _Node (
1682
1670
new_node .depth + 1 ,
@@ -1857,7 +1845,7 @@ def _map_recursion_add_nodes(self,node:_Node):
1857
1845
node .map_leaf = True
1858
1846
else : # inner node
1859
1847
node .k = node .k_candidates [0 ]
1860
- child_k_candidates = node .k_candidates + []
1848
+ child_k_candidates = node .k_candidates . copy ()
1861
1849
child_k_candidates .remove (node .k )
1862
1850
for i in range (self .c_num_children ):
1863
1851
node .children [i ] = _Node (
@@ -1896,7 +1884,7 @@ def _copy_map_tree_recursion(self,copyed_node:_Node,original_node:_Node):
1896
1884
copyed_node .h_g = original_node .h_g
1897
1885
if original_node .map_leaf == False :
1898
1886
copyed_node .k = original_node .k
1899
- child_k_candidates = copyed_node .k_candidates + []
1887
+ child_k_candidates = copyed_node .k_candidates . copy ()
1900
1888
child_k_candidates .remove (copyed_node .k )
1901
1889
for i in range (self .c_num_children ):
1902
1890
copyed_node .children [i ] = _Node (
@@ -2026,8 +2014,7 @@ def _visualize_model_recursion_none(self,tree_graph,depth,k_candidates,ranges,no
2026
2014
k = k_candidates [self .hn_k_weight_vec [k_candidates ].argmax ()]
2027
2015
label_string = f'k={ k } \\ l'
2028
2016
if k < self .c_dim_continuous :
2029
- thresholds = np .empty (self .c_num_children_vec [k ]+ 1 )
2030
- thresholds [:] = np .linspace (ranges [k ,0 ],ranges [k ,1 ],self .c_num_children_vec [k ]+ 1 )
2017
+ thresholds = np .linspace (ranges [k ,0 ],ranges [k ,1 ],self .c_num_children_vec [k ]+ 1 )
2031
2018
label_string += 'thresholds=\\ l{'
2032
2019
for i in range (self .c_num_children_vec [k ]- 1 ):
2033
2020
if i == 0 :
@@ -2037,7 +2024,7 @@ def _visualize_model_recursion_none(self,tree_graph,depth,k_candidates,ranges,no
2037
2024
label_string += '}\\ l'
2038
2025
else :
2039
2026
thresholds = None
2040
- child_k_candidates = k_candidates + []
2027
+ child_k_candidates = k_candidates . copy ()
2041
2028
child_k_candidates .remove (k )
2042
2029
label_string += f'hn_g={ self .hn_g :.2f} \\ lp_v={ tmp_p_v :.2f} \\ lsub_params={{'
2043
2030
@@ -2072,8 +2059,7 @@ def _visualize_model_recursion_none(self,tree_graph,depth,k_candidates,ranges,no
2072
2059
2073
2060
if depth < self .c_max_depth and k_candidates :
2074
2061
for i in range (self .c_num_children_vec [k ]):
2075
- child_ranges = np .empty ([self .c_dim_continuous ,2 ])
2076
- child_ranges [:] = ranges
2062
+ child_ranges = np .array (ranges )
2077
2063
if thresholds is not None :
2078
2064
child_ranges [k ,0 ] = thresholds [i ]
2079
2065
child_ranges [k ,1 ] = thresholds [i + 1 ]
0 commit comments