diff --git a/Orange/ensembles/stack.py b/Orange/ensembles/stack.py index 17e22362c78..37cb94b610b 100644 --- a/Orange/ensembles/stack.py +++ b/Orange/ensembles/stack.py @@ -81,7 +81,7 @@ def fit_storage(self, data): dom = Domain([ContinuousVariable('f{}'.format(i + 1)) for i in range(X.shape[1])], data.domain.class_var) - stacked_data = data.transform(dom).copy() + stacked_data = Table.from_table(dom, data) with stacked_data.unlocked_reference(): stacked_data.X = X stacked_data.Y = res.actual diff --git a/Orange/tests/test_stack.py b/Orange/tests/test_stack.py index c52ff229d21..48ccdcbc1ed 100644 --- a/Orange/tests/test_stack.py +++ b/Orange/tests/test_stack.py @@ -1,7 +1,7 @@ import unittest from Orange.data import Table -from Orange.ensembles.stack import StackedFitter +from Orange.ensembles.stack import StackedFitter, StackedLearner from Orange.evaluation import CA, CrossValidation, MSE from Orange.modelling import KNNLearner, TreeLearner @@ -26,3 +26,16 @@ def test_regression(self): mse = MSE()(results) self.assertLess(mse[0], mse[1]) self.assertLess(mse[0], mse[2]) + + def test_timeseries(self): + def aggregate(data): + assert type(data) is Table + + class CustomTable(Table): + pass + + sl = StackedLearner([TreeLearner(), KNNLearner()], + aggregate=aggregate) + + data = CustomTable(self.iris) + sl(data)