Skip to content

Commit e3b2163

Browse files
Adding Local Adaptive Streaming Tree (#1610)
* add first last with out-of-date docs * update LAST to detect change in the data distribution + iter_arff none class Docs are also updated * update docs * Update hoeffding_adaptive_tree_classifier.py * changes after tests * solving inheritance and small fixes * tests + current_merit method * Update river/tree/hoeffding_adaptive_tree_classifier.py * update docs * change docs * change last * Update docs/releases/unreleased.md * Update river/tree/hoeffding_adaptive_tree_classifier.py * Update river/tree/last_classifier.py * add disclamer * Update river/tree/last_classifier.py --------- Co-authored-by: Saulo Martiello Mastelini <[email protected]>
1 parent 7e3eb19 commit e3b2163

12 files changed

+614
-2
lines changed

docs/releases/unreleased.md

+6
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,9 @@
1717
## tree
1818

1919
- Instead of letting trees grow indefinitely, setting the `max_depth` parameter to `None` will stop the trees from growing when they reach the system recursion limit.
20+
21+
-Added `tree.LASTClassifier` (Local Adaptive Streaming Tree Classifier).
22+
23+
## stream
24+
25+
- `stream.iter_arff` now supports blank values (treated as missing values).

river/stream/iter_arff.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ def iter_arff(
176176
x = {
177177
name: cast(val) if cast else val
178178
for name, cast, val in zip(names, casts, r.rstrip().split(","))
179-
if val != "?"
179+
if val != "?" and val != ""
180180
}
181181

182182
# Handle target
@@ -185,7 +185,10 @@ def iter_arff(
185185
if isinstance(target, list):
186186
y = {name: x.pop(name, 0) for name in target}
187187
else:
188-
y = x.pop(target) if target else None
188+
try:
189+
y = x.pop(target) if target else None
190+
except KeyError:
191+
y = None
189192

190193
yield x, y
191194

river/tree/__init__.py

+2
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
from .hoeffding_tree_classifier import HoeffdingTreeClassifier
6060
from .hoeffding_tree_regressor import HoeffdingTreeRegressor
6161
from .isoup_tree_regressor import iSOUPTreeRegressor
62+
from .last_classifier import LASTClassifier
6263
from .stochastic_gradient_tree import SGTClassifier, SGTRegressor
6364

6465
__all__ = [
@@ -70,6 +71,7 @@
7071
"HoeffdingTreeRegressor",
7172
"HoeffdingAdaptiveTreeRegressor",
7273
"iSOUPTreeRegressor",
74+
"LASTClassifier",
7375
"SGTClassifier",
7476
"SGTRegressor",
7577
]

0 commit comments

Comments
 (0)