You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@systemds.apache.org by ba...@apache.org on 2021/09/14 12:40:00 UTC

[systemds] branch master updated (9fb5328 -> a264691)

This is an automated email from the ASF dual-hosted git repository.

baunsgaard pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/systemds.git.


    from 9fb5328  [SYSTEMDS-3129] GitHub actions new memory amount
     new 7d354ac  [SYSTEMDS-3130] Remove old algorithm definitions in PythonAPI
     new 8aab7f5  [SYSTEMDS-3131] Python API node strings
     new a264691  [MINOR] PythonAPI update builtin algorithms

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 src/main/python/systemds/operator/algorithm.py     | 198 ---------------------
 .../python/systemds/operator/algorithm/__init__.py |  20 ++-
 .../systemds/operator/algorithm/builtin/bandit.py  |  27 ++-
 .../algorithm/builtin/{lasso.py => deepWalk.py}    |  32 ++--
 .../algorithm/builtin/{abstain.py => ffTrain.py}   |  26 ++-
 .../systemds/operator/algorithm/builtin/garch.py   |  70 ++++++++
 .../builtin/{imputeByFD.py => lenetTrain.py}       |  17 +-
 .../builtin/{l2svmPredict.py => matrixProfile.py}  |  26 +--
 .../{naiveBayesPredict.py => selectByVarThresh.py} |  12 +-
 .../algorithm/builtin/{lmDS.py => tSNE.py}         |  22 ++-
 .../operator/algorithm/builtin/tomeklink.py        |   2 +-
 .../operator/algorithm/builtin/winsorize.py        |   4 +-
 ...Pipeline.py => xgboostPredictClassification.py} |  17 +-
 .../{lasso.py => xgboostPredictRegression.py}      |  23 ++-
 src/main/python/systemds/operator/nodes/frame.py   |   3 +
 src/main/python/systemds/operator/nodes/list.py    |   2 +
 .../python/systemds/operator/nodes/list_access.py  |   5 +-
 src/main/python/systemds/operator/nodes/matrix.py  |   7 +-
 .../python/systemds/operator/nodes/multi_return.py |   5 +-
 src/main/python/systemds/operator/nodes/scalar.py  |   6 +-
 src/main/python/systemds/operator/nodes/source.py  |   3 +
 .../python/tests/{source => basics}/__init__.py    |   0
 .../test_lm.py => basics/test___str__.py}          |  39 ++--
 23 files changed, 253 insertions(+), 313 deletions(-)
 delete mode 100644 src/main/python/systemds/operator/algorithm.py
 copy src/main/python/systemds/operator/algorithm/builtin/{lasso.py => deepWalk.py} (65%)
 copy src/main/python/systemds/operator/algorithm/builtin/{abstain.py => ffTrain.py} (60%)
 create mode 100644 src/main/python/systemds/operator/algorithm/builtin/garch.py
 copy src/main/python/systemds/operator/algorithm/builtin/{imputeByFD.py => lenetTrain.py} (79%)
 copy src/main/python/systemds/operator/algorithm/builtin/{l2svmPredict.py => matrixProfile.py} (66%)
 copy src/main/python/systemds/operator/algorithm/builtin/{naiveBayesPredict.py => selectByVarThresh.py} (83%)
 copy src/main/python/systemds/operator/algorithm/builtin/{lmDS.py => tSNE.py} (69%)
 copy src/main/python/systemds/operator/algorithm/builtin/{executePipeline.py => xgboostPredictClassification.py} (67%)
 copy src/main/python/systemds/operator/algorithm/builtin/{lasso.py => xgboostPredictRegression.py} (69%)
 copy src/main/python/tests/{source => basics}/__init__.py (100%)
 copy src/main/python/tests/{algorithms/test_lm.py => basics/test___str__.py} (58%)

[systemds] 02/03: [SYSTEMDS-3131] Python API node strings

Posted by ba...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

baunsgaard pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/systemds.git

commit 8aab7f5dc5dc125dce971978403428027e37dc60
Author: baunsgaard <ba...@tugraz.at>
AuthorDate: Tue Sep 14 14:39:14 2021 +0200

    [SYSTEMDS-3131] Python API node strings
---
 src/main/python/systemds/operator/nodes/frame.py   |  3 +
 src/main/python/systemds/operator/nodes/list.py    |  2 +
 .../python/systemds/operator/nodes/list_access.py  |  5 +-
 src/main/python/systemds/operator/nodes/matrix.py  |  7 ++-
 .../python/systemds/operator/nodes/multi_return.py |  5 +-
 src/main/python/systemds/operator/nodes/scalar.py  |  6 +-
 src/main/python/systemds/operator/nodes/source.py  |  3 +
 src/main/python/tests/basics/__init__.py           | 20 +++++++
 src/main/python/tests/basics/test___str__.py       | 66 ++++++++++++++++++++++
 9 files changed, 112 insertions(+), 5 deletions(-)

diff --git a/src/main/python/systemds/operator/nodes/frame.py b/src/main/python/systemds/operator/nodes/frame.py
index 25f1b81..6551332 100644
--- a/src/main/python/systemds/operator/nodes/frame.py
+++ b/src/main/python/systemds/operator/nodes/frame.py
@@ -132,3 +132,6 @@ class Frame(OperationNode):
         :return: The Frame containing the replaced values 
         """
         return Frame(self.sds_context, "replace", named_input_nodes={"target": self, "pattern": f"'{pattern}'", "replacement":f"'{replacement}'"})
+
+    def __str__(self):
+        return "FrameNode"
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/nodes/list.py b/src/main/python/systemds/operator/nodes/list.py
index 90e2e90..09455a3 100644
--- a/src/main/python/systemds/operator/nodes/list.py
+++ b/src/main/python/systemds/operator/nodes/list.py
@@ -84,3 +84,5 @@ class List(OperationNode):
     def compute(self, verbose: bool = False, lineage: bool = False) -> Union[np.array]:
         return super().compute(verbose, lineage)
 
+    def __str__(self):
+        return "ListNode"
diff --git a/src/main/python/systemds/operator/nodes/list_access.py b/src/main/python/systemds/operator/nodes/list_access.py
index 869377f..10d51f5 100644
--- a/src/main/python/systemds/operator/nodes/list_access.py
+++ b/src/main/python/systemds/operator/nodes/list_access.py
@@ -60,4 +60,7 @@ class ListAccess(OperationNode):
         ent = self._list_source[self._key]
         res = Scalar(self.sds_context, "as.scalar", [ent])
         self._list_source._outputs[self._key] = res
-        return res
\ No newline at end of file
+        return res
+
+    def __str__(self):
+        return "ListAccessNode"
\ No newline at end of file
diff --git a/src/main/python/systemds/operator/nodes/matrix.py b/src/main/python/systemds/operator/nodes/matrix.py
index f205b4d..f90218b 100644
--- a/src/main/python/systemds/operator/nodes/matrix.py
+++ b/src/main/python/systemds/operator/nodes/matrix.py
@@ -335,7 +335,7 @@ class Matrix(OperationNode):
 
         return Matrix(self.sds_context, 'order', [], named_input_nodes=named_input_nodes)
 
-    def to_string(self, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> 'Matrix':
+    def to_string(self, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> 'Scalar':
         """ Converts the input to a string representation.
         :return: `Scalar` containing the string.
         """
@@ -359,4 +359,7 @@ class Matrix(OperationNode):
         """
         Replace all values with replacement value
         """
-        return Matrix(self.sds_context, "replace", named_input_nodes={"target": self, "pattern": pattern, "replacement":replacement})
\ No newline at end of file
+        return Matrix(self.sds_context, "replace", named_input_nodes={"target": self, "pattern": pattern, "replacement":replacement})
+
+    def __str__(self):
+        return "MatrixNode"
diff --git a/src/main/python/systemds/operator/nodes/multi_return.py b/src/main/python/systemds/operator/nodes/multi_return.py
index c14a7b0..90b2de5 100644
--- a/src/main/python/systemds/operator/nodes/multi_return.py
+++ b/src/main/python/systemds/operator/nodes/multi_return.py
@@ -82,4 +82,7 @@ class MultiReturn(OperationNode):
         return result_var
 
     def __iter__(self):
-        return iter(self._outputs)
\ No newline at end of file
+        return iter(self._outputs)
+
+    def __str__(self):
+        return "MultiReturnNode"
diff --git a/src/main/python/systemds/operator/nodes/scalar.py b/src/main/python/systemds/operator/nodes/scalar.py
index cd27d30..5078ac0 100644
--- a/src/main/python/systemds/operator/nodes/scalar.py
+++ b/src/main/python/systemds/operator/nodes/scalar.py
@@ -218,8 +218,12 @@ class Scalar(OperationNode):
         """
         return Scalar(self.sds_context, 'tanh', [self])
 
-    def to_string(self, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> 'OperationNode':
+    def to_string(self, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> 'Scalar':
         """ Converts the input to a string representation.
         :return: `Scalar` containing the string.
         """
         return Scalar(self.sds_context, 'toString', [self], named_input_nodes=kwargs, output_type=OutputType.STRING)
+
+    def __str__(self):
+        return "ScalarNode"
+
diff --git a/src/main/python/systemds/operator/nodes/source.py b/src/main/python/systemds/operator/nodes/source.py
index 8008c9b..d027209 100644
--- a/src/main/python/systemds/operator/nodes/source.py
+++ b/src/main/python/systemds/operator/nodes/source.py
@@ -197,3 +197,6 @@ class Source(OperationNode):
 
     def compute(self, verbose: bool = False, lineage: bool = False):
         raise Exception("Invalid invocation of source from script")
+
+    def __str__(self):
+        return "SourceNode"
diff --git a/src/main/python/tests/basics/__init__.py b/src/main/python/tests/basics/__init__.py
new file mode 100644
index 0000000..e66abb4
--- /dev/null
+++ b/src/main/python/tests/basics/__init__.py
@@ -0,0 +1,20 @@
+# -------------------------------------------------------------
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# -------------------------------------------------------------
diff --git a/src/main/python/tests/basics/test___str__.py b/src/main/python/tests/basics/test___str__.py
new file mode 100644
index 0000000..7e2010d
--- /dev/null
+++ b/src/main/python/tests/basics/test___str__.py
@@ -0,0 +1,66 @@
+# -------------------------------------------------------------
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# -------------------------------------------------------------
+
+import unittest
+
+from systemds.context import SystemDSContext
+
+
+class Test__str__(unittest.TestCase):
+
+    sds: SystemDSContext = None
+
+    @classmethod
+    def setUpClass(cls):
+        cls.sds = SystemDSContext()
+
+    @classmethod
+    def tearDownClass(cls):
+        cls.sds.close()
+
+    def test_1(self):
+        self.assertTrue("MatrixNode" in str(self.sds.full([1, 2], 3)))
+
+    def test_2(self):
+        self.assertTrue("ScalarNode" in str(self.sds.scalar(3)))
+
+    def test_3(self):
+        self.assertTrue("ScalarNode" in str(self.sds.scalar("Hi")))
+
+    def test_4(self):
+        self.assertTrue("ScalarNode" in str(
+            self.sds.full([1, 2], 3).to_string()))
+
+    def test_5(self):
+        self.assertTrue("ListNode" in str(self.sds.list(
+            self.sds.rand(1, 2, 3, 4), self.sds.scalar(4))))
+
+    def test_6(self):
+        self.assertTrue("MatrixNode" in str(self.sds.list(
+            self.sds.rand(1, 2, 3, 4), self.sds.scalar(4))[0]))
+
+    def test_7(self):
+        self.assertTrue("ScalarNode" in str(self.sds.list(
+            self.sds.rand(1, 2, 3, 4), self.sds.scalar(4))[1]))
+
+
+if __name__ == "__main__":
+    unittest.main(exit=False)

[systemds] 01/03: [SYSTEMDS-3130] Remove old algorithm definitions in PythonAPI

Posted by ba...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

baunsgaard pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/systemds.git

commit 7d354ac0f63b2156b099c14f6bf99658c690b650
Author: baunsgaard <ba...@tugraz.at>
AuthorDate: Tue Sep 14 14:37:49 2021 +0200

    [SYSTEMDS-3130] Remove old algorithm definitions in PythonAPI
---
 src/main/python/systemds/operator/algorithm.py | 198 -------------------------
 1 file changed, 198 deletions(-)

diff --git a/src/main/python/systemds/operator/algorithm.py b/src/main/python/systemds/operator/algorithm.py
deleted file mode 100644
index 7833030..0000000
--- a/src/main/python/systemds/operator/algorithm.py
+++ /dev/null
@@ -1,198 +0,0 @@
-# -------------------------------------------------------------
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-# -------------------------------------------------------------
-
-from typing import Dict
-
-from systemds.operator import OperationNode
-from systemds.script_building.dag import OutputType
-from systemds.utils.consts import VALID_INPUT_TYPES
-
-__all__ = ['l2svm', 'lm', 'kmeans', 'pca', 'multiLogReg', 'multiLogRegPredict']
-
-
-def l2svm(x: OperationNode, y: OperationNode, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
-    """
-    Perform L2SVM on matrix with labels given.
-
-    :param x: Input dataset
-    :param y: Input labels in shape of one column
-    :param kwargs: Dictionary of extra arguments 
-    :return: `OperationNode` containing the model fit.
-    """
-    x._check_matrix_op()
-    params_dict = {'X': x, 'Y': y}
-    params_dict.update(kwargs)
-    return OperationNode(x.sds_context, 'l2svm', named_input_nodes=params_dict)
-
-
-def lm(x: OperationNode, y: OperationNode, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
-    """
-    Performs LM on matrix with labels given.
-
-    :param x: Input dataset
-    :param y: Input labels in shape of one column
-    :param kwargs: Dictionary of extra arguments 
-    :return: `OperationNode` containing the model fit.
-    """
-
-    if x.shape[0] == 0:
-        raise ValueError("Found array with 0 feature(s) (shape={s}) while a minimum of 1 is required."
-                         .format(s=x.shape))
-    if y.shape[0] == 0:
-        raise ValueError("Found array with 0 feature(s) (shape={s}) while a minimum of 1 is required."
-                         .format(s=y.shape))
-
-    params_dict = {'X': x, 'y': y}
-    params_dict.update(kwargs)
-    return OperationNode(x.sds_context, 'lm', named_input_nodes=params_dict)
-
-
-def kmeans(x: OperationNode, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
-    """
-    Performs KMeans on matrix input.
-
-    :param x: Input dataset to perform K-Means on.
-    :param k: The number of centroids to use for the algorithm.
-    :param runs: The number of concurrent instances of K-Means to run (with different initial centroids).
-    :param max_iter: The maximum number of iterations to run the K-Means algorithm for.
-    :param eps: Tolerance for the algorithm to declare convergence using WCSS change ratio.
-    :param is_verbose: Boolean flag if the algorithm should be run in a verbose manner.
-    :param avg_sample_size_per_centroid: The average number of records per centroid in the data samples.
-    :return: `OperationNode` List containing two outputs 1. the clusters, 2 the cluster ID associated with each row in x.
-    """
-
-    x._check_matrix_op()
-    if x.shape[0] == 0:
-        raise ValueError("Found array with 0 feature(s) (shape={s}) while a minimum of 1 is required."
-                         .format(s=x.shape))
-
-    if 'k' in kwargs.keys() and kwargs.get('k') < 1:
-        raise ValueError(
-            "Invalid number of clusters in K-Means, number must be integer above 0")
-
-    params_dict = {'X': x}
-    params_dict.update(kwargs)
-    return OperationNode(x.sds_context, 'kmeans', named_input_nodes=params_dict, output_type=OutputType.LIST, number_of_outputs=2)
-
-def kmeansPredict(X: OperationNode, C: OperationNode) -> OperationNode:
-    """
-    Perform Kmeans Predict, note that the Ids returned are 1 indexed.
-    
-    :param X: The matrix to classify.
-    :param Y: The Clusters to use for classification into.
-    :return: `OperationNode` containing a matrix of classifications of Id's of specific clusters in C.
-    """
-    X._check_matrix_op()
-    C._check_matrix_op()
-
-    params_dict = {'X' : X, 'C' : C}
-    return OperationNode(X.sds_context, 'kmeansPredict', named_input_nodes=params_dict, output_type=OutputType.MATRIX, shape=(1, X.shape[0]))
-
-
-
-def pca(x: OperationNode, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
-    """
-    Performs PCA on the matrix input
-
-    :param x: Input dataset to perform Principal Componenet Analysis (PCA) on.
-    :param K: The number of reduced dimensions.
-    :param center: Boolean specifying if the input values should be centered.
-    :param scale: Boolean specifying if the input values should be scaled.
-     :return: `OperationNode` List containing two outputs 1. The dimensionality reduced X input, 2. A matrix to reduce dimensionality similarly on unseen data.
-    """
-
-    x._check_matrix_op()
-    if x.shape[0] == 0:
-        raise ValueError("Found array with 0 feature(s) (shape={s}) while a minimum of 1 is required."
-                         .format(s=x.shape))
-
-    if 'K' in kwargs.keys() and kwargs.get('K') < 1:
-        raise ValueError(
-            "Invalid number of dimensions in PCA, number must be integer above 0")
-
-    params_dict = {'X': x}
-    params_dict.update(kwargs)
-    return OperationNode(x.sds_context, 'pca', named_input_nodes=params_dict,  output_type=OutputType.LIST, number_of_outputs=2)
-
-
-def multiLogReg(x: OperationNode, y: OperationNode, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
-    """
-    Performs Multiclass Logistic Regression on the matrix input
-    using Trust Region method.
-
-    See: Trust Region Newton Method for Logistic Regression, Lin, Weng and Keerthi, JMLR 9 (2008) 627-650)
-
-    :param x: Input dataset to perform logstic regression on
-    :param y: Labels rowaligned with the input dataset
-    :param icpt: Intercept, default 2, Intercept presence, shifting and rescaling X columns:
-        0 = no intercept, no shifting, no rescaling;
-        1 = add intercept, but neither shift nor rescale X;
-        2 = add intercept, shift & rescale X columns to mean = 0, variance = 1
-    :param tol: float tolerance for the algorithm.
-    :param reg: Regularization parameter (lambda = 1/C); intercept settings are not regularized.
-    :param maxi: Maximum outer iterations of the algorithm
-    :param maxii: Maximum inner iterations of the algorithm
-     :return: `OperationNode` of a matrix containing the regression parameters trained.
-    """
-    
-    if x.shape[0] == 0:
-        raise ValueError("Found array with 0 feature(s) (shape={s}) while a minimum of 1 is required."
-                         .format(s=x.shape))
-    if y.shape[0] == 0:
-        raise ValueError("Found array with 0 feature(s) (shape={s}) while a minimum of 1 is required."
-                         .format(s=y.shape))
-    if -1 in x.shape:
-        output_shape = (-1,)
-    else:
-        output_shape = (x.shape[1],)
-        
-    params_dict = {'X': x, 'Y': y}
-    params_dict.update(kwargs)
-    return OperationNode(x.sds_context, 'multiLogReg', named_input_nodes=params_dict, shape = output_shape)
-
-
-def multiLogRegPredict(x: OperationNode, b: OperationNode, y: OperationNode, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> OperationNode:
-    """
-    Performs prediction on input data x using the model trained, b.
-
-    :param x: The data to perform classification on.
-    :param b: The regression parameters trained from multiLogReg.
-    :param y: The Labels expected to be contained in the X dataset, to calculate accuracy.
-    :param verbose: Boolean specifying if the prediction should be verbose.
-    :return: `OperationNode` List containing three outputs. 
-        1. The predicted means / probabilities
-        2. The predicted response vector
-        3. The scalar value of accuracy
-    """
-
-    if x.shape[0] == 0:
-        raise ValueError("Found array with 0 feature(s) (shape={s}) while a minimum of 1 is required."
-                         .format(s=x.shape))
-    if b.shape[0] == 0:
-        raise ValueError("Found array with 0 feature(s) (shape={s}) while a minimum of 1 is required."
-                         .format(s=y.shape))
-    if y.shape[0] == 0:
-        raise ValueError("Found array with 0 feature(s) (shape={s}) while a minimum of 1 is required."
-                         .format(s=y.shape))
-
-    params_dict = {'X': x, 'B': b, 'Y': y}
-    params_dict.update(kwargs)
-    return OperationNode(x.sds_context, 'multiLogRegPredict', named_input_nodes=params_dict,  output_type=OutputType.LIST, number_of_outputs=3, output_types=[OutputType.MATRIX,OutputType.MATRIX,OutputType.DOUBLE])

[systemds] 03/03: [MINOR] PythonAPI update builtin algorithms

Posted by ba...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

baunsgaard pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/systemds.git

commit a264691c9c98e48c59469740c599d08fa65ce034
Author: baunsgaard <ba...@tugraz.at>
AuthorDate: Tue Sep 14 14:39:38 2021 +0200

    [MINOR] PythonAPI update builtin algorithms
---
 .../python/systemds/operator/algorithm/__init__.py | 20 ++++++-
 .../systemds/operator/algorithm/builtin/bandit.py  | 27 ++++-----
 .../builtin/{winsorize.py => deepWalk.py}          | 28 ++++++---
 .../algorithm/builtin/{winsorize.py => ffTrain.py} | 29 +++++++--
 .../systemds/operator/algorithm/builtin/garch.py   | 70 ++++++++++++++++++++++
 .../builtin/{winsorize.py => lenetTrain.py}        | 17 ++++--
 .../builtin/{tomeklink.py => matrixProfile.py}     | 29 +++++----
 .../builtin/{tomeklink.py => selectByVarThresh.py} | 21 +++----
 .../algorithm/builtin/{winsorize.py => tSNE.py}    | 24 ++++++--
 .../operator/algorithm/builtin/tomeklink.py        |  2 +-
 .../operator/algorithm/builtin/winsorize.py        |  4 +-
 ...insorize.py => xgboostPredictClassification.py} | 18 ++++--
 .../{winsorize.py => xgboostPredictRegression.py}  | 19 ++++--
 13 files changed, 226 insertions(+), 82 deletions(-)

diff --git a/src/main/python/systemds/operator/algorithm/__init__.py b/src/main/python/systemds/operator/algorithm/__init__.py
index 377c248..ffe59b3 100644
--- a/src/main/python/systemds/operator/algorithm/__init__.py
+++ b/src/main/python/systemds/operator/algorithm/__init__.py
@@ -39,9 +39,12 @@ from .builtin.csplineDS import csplineDS
 from .builtin.cvlm import cvlm 
 from .builtin.dbscan import dbscan 
 from .builtin.decisionTree import decisionTree 
+from .builtin.deepWalk import deepWalk 
 from .builtin.discoverFD import discoverFD 
 from .builtin.dist import dist 
 from .builtin.executePipeline import executePipeline 
+from .builtin.ffTrain import ffTrain 
+from .builtin.garch import garch 
 from .builtin.gaussianClassifier import gaussianClassifier 
 from .builtin.getAccuracy import getAccuracy 
 from .builtin.glm import glm 
@@ -73,11 +76,13 @@ from .builtin.knnbf import knnbf
 from .builtin.l2svm import l2svm 
 from .builtin.l2svmPredict import l2svmPredict 
 from .builtin.lasso import lasso 
+from .builtin.lenetTrain import lenetTrain 
 from .builtin.lm import lm 
 from .builtin.lmCG import lmCG 
 from .builtin.lmDS import lmDS 
 from .builtin.lmPredict import lmPredict 
 from .builtin.logSumExp import logSumExp 
+from .builtin.matrixProfile import matrixProfile 
 from .builtin.msvm import msvm 
 from .builtin.msvmPredict import msvmPredict 
 from .builtin.multiLogReg import multiLogReg 
@@ -96,6 +101,7 @@ from .builtin.ppca import ppca
 from .builtin.randomForest import randomForest 
 from .builtin.scale import scale 
 from .builtin.scaleApply import scaleApply 
+from .builtin.selectByVarThresh import selectByVarThresh 
 from .builtin.sherlock import sherlock 
 from .builtin.sherlockPredict import sherlockPredict 
 from .builtin.shortestPath import shortestPath 
@@ -108,6 +114,7 @@ from .builtin.splitBalanced import splitBalanced
 from .builtin.stableMarriage import stableMarriage 
 from .builtin.statsNA import statsNA 
 from .builtin.steplm import steplm 
+from .builtin.tSNE import tSNE 
 from .builtin.toOneHot import toOneHot 
 from .builtin.tomeklink import tomeklink 
 from .builtin.univar import univar 
@@ -115,6 +122,8 @@ from .builtin.vectorToCsv import vectorToCsv
 from .builtin.winsorize import winsorize 
 from .builtin.xdummy1 import xdummy1 
 from .builtin.xdummy2 import xdummy2 
+from .builtin.xgboostPredictClassification import xgboostPredictClassification 
+from .builtin.xgboostPredictRegression import xgboostPredictRegression 
 
 __all__ = ['abstain',
  'als',
@@ -134,9 +143,12 @@ __all__ = ['abstain',
  'cvlm',
  'dbscan',
  'decisionTree',
+ 'deepWalk',
  'discoverFD',
  'dist',
  'executePipeline',
+ 'ffTrain',
+ 'garch',
  'gaussianClassifier',
  'getAccuracy',
  'glm',
@@ -168,11 +180,13 @@ __all__ = ['abstain',
  'l2svm',
  'l2svmPredict',
  'lasso',
+ 'lenetTrain',
  'lm',
  'lmCG',
  'lmDS',
  'lmPredict',
  'logSumExp',
+ 'matrixProfile',
  'msvm',
  'msvmPredict',
  'multiLogReg',
@@ -191,6 +205,7 @@ __all__ = ['abstain',
  'randomForest',
  'scale',
  'scaleApply',
+ 'selectByVarThresh',
  'sherlock',
  'sherlockPredict',
  'shortestPath',
@@ -203,10 +218,13 @@ __all__ = ['abstain',
  'stableMarriage',
  'statsNA',
  'steplm',
+ 'tSNE',
  'toOneHot',
  'tomeklink',
  'univar',
  'vectorToCsv',
  'winsorize',
  'xdummy1',
- 'xdummy2'] 
+ 'xdummy2',
+ 'xgboostPredictClassification',
+ 'xgboostPredictRegression'] 
diff --git a/src/main/python/systemds/operator/algorithm/builtin/bandit.py b/src/main/python/systemds/operator/algorithm/builtin/bandit.py
index ff6b1c0..5cb87b5 100644
--- a/src/main/python/systemds/operator/algorithm/builtin/bandit.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/bandit.py
@@ -31,27 +31,20 @@ from systemds.utils.consts import VALID_INPUT_TYPES
 
 def bandit(X_train: Matrix,
            Y_train: Matrix,
+           X_test: Matrix,
+           Y_test: Matrix,
            metaList: Iterable,
-           targetList: Iterable,
+           evaluationFunc: str,
+           evalFunHp: Matrix,
            lp: Frame,
            primitives: Frame,
            param: Frame,
+           baseLineScore: float,
+           cv: bool,
            **kwargs: Dict[str, VALID_INPUT_TYPES]):
     
-    params_dict = {'X_train': X_train, 'Y_train': Y_train, 'metaList': metaList, 'targetList': targetList, 'lp': lp, 'primitives': primitives, 'param': param}
+    params_dict = {'X_train': X_train, 'Y_train': Y_train, 'X_test': X_test, 'Y_test': Y_test, 'metaList': metaList, 'evaluationFunc': evaluationFunc, 'evalFunHp': evalFunHp, 'lp': lp, 'primitives': primitives, 'param': param, 'baseLineScore': baseLineScore, 'cv': cv}
     params_dict.update(kwargs)
-    
-    vX_0 = Frame(X_train.sds_context, '')
-    vX_1 = Matrix(X_train.sds_context, '')
-    vX_2 = Matrix(X_train.sds_context, '')
-    vX_3 = Frame(X_train.sds_context, '')
-    output_nodes = [vX_0, vX_1, vX_2, vX_3, ]
-
-    op = MultiReturn(X_train.sds_context, 'bandit', output_nodes, named_input_nodes=params_dict)
-
-    vX_0._unnamed_input_nodes = [op]
-    vX_1._unnamed_input_nodes = [op]
-    vX_2._unnamed_input_nodes = [op]
-    vX_3._unnamed_input_nodes = [op]
-
-    return op
+    return Matrix(X_train.sds_context,
+        'bandit',
+        named_input_nodes=params_dict)
diff --git a/src/main/python/systemds/operator/algorithm/builtin/winsorize.py b/src/main/python/systemds/operator/algorithm/builtin/deepWalk.py
similarity index 62%
copy from src/main/python/systemds/operator/algorithm/builtin/winsorize.py
copy to src/main/python/systemds/operator/algorithm/builtin/deepWalk.py
index 335d01b..59fdc63 100644
--- a/src/main/python/systemds/operator/algorithm/builtin/winsorize.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/deepWalk.py
@@ -20,7 +20,7 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
-# Autogenerated From : scripts/builtin/winsorize.dml
+# Autogenerated From : scripts/builtin/deepWalk.dml
 
 from typing import Dict, Iterable
 
@@ -29,10 +29,24 @@ from systemds.script_building.dag import OutputType
 from systemds.utils.consts import VALID_INPUT_TYPES
 
 
-def winsorize(X: Matrix,
-              verbose: bool):
-    
-    params_dict = {'X': X, 'verbose': verbose}
-    return Matrix(X.sds_context,
-        'winsorize',
+def deepWalk(Graph: Matrix,
+             w: int,
+             d: int,
+             gamma: int,
+             t: int,
+             **kwargs: Dict[str, VALID_INPUT_TYPES]):
+    """
+    :param Graph: adjacency matrix of a graph (n x n)
+    :param w: window size
+    :param d: embedding size
+    :param gamma: walks per vertex
+    :param t: walk length
+    :param alpha: learning rate
+    :param beta: factor for decreasing learning rate
+    :return: 'OperationNode' containing matrix of vertex/word representation (n x d) 
+    """
+    params_dict = {'Graph': Graph, 'w': w, 'd': d, 'gamma': gamma, 't': t}
+    params_dict.update(kwargs)
+    return Matrix(Graph.sds_context,
+        'deepWalk',
         named_input_nodes=params_dict)
diff --git a/src/main/python/systemds/operator/algorithm/builtin/winsorize.py b/src/main/python/systemds/operator/algorithm/builtin/ffTrain.py
similarity index 55%
copy from src/main/python/systemds/operator/algorithm/builtin/winsorize.py
copy to src/main/python/systemds/operator/algorithm/builtin/ffTrain.py
index 335d01b..06a3176 100644
--- a/src/main/python/systemds/operator/algorithm/builtin/winsorize.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/ffTrain.py
@@ -20,7 +20,7 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
-# Autogenerated From : scripts/builtin/winsorize.dml
+# Autogenerated From : scripts/builtin/ffTrain.dml
 
 from typing import Dict, Iterable
 
@@ -29,10 +29,27 @@ from systemds.script_building.dag import OutputType
 from systemds.utils.consts import VALID_INPUT_TYPES
 
 
-def winsorize(X: Matrix,
-              verbose: bool):
-    
-    params_dict = {'X': X, 'verbose': verbose}
+def ffTrain(X: Matrix,
+            Y: Matrix,
+            out_activation: str,
+            loss_fcn: str,
+            **kwargs: Dict[str, VALID_INPUT_TYPES]):
+    """
+    :param batch_size: Batch size
+    :param epochs: Number of epochs
+    :param learning_rate: Learning rate
+    :param out_activation: User specified ouptut activation function. Possible values:
+    :param loss_fcn: User specified loss function. Possible values:
+    :param shuffle: Flag which indicates if dataset should be shuffled or not
+    :param validation_split: Fraction of training set used as validation set
+    :param seed: Seed for model initialization
+    :param verbose: Flag which indicates if function should print to stdout
+    :param Supported: by the model
+    :param Supported: by the model
+    :return: 'OperationNode' containing  
+    """
+    params_dict = {'X': X, 'Y': Y, 'out_activation': out_activation, 'loss_fcn': loss_fcn}
+    params_dict.update(kwargs)
     return Matrix(X.sds_context,
-        'winsorize',
+        'ffTrain',
         named_input_nodes=params_dict)
diff --git a/src/main/python/systemds/operator/algorithm/builtin/garch.py b/src/main/python/systemds/operator/algorithm/builtin/garch.py
new file mode 100644
index 0000000..b0a8e7e
--- /dev/null
+++ b/src/main/python/systemds/operator/algorithm/builtin/garch.py
@@ -0,0 +1,70 @@
+# -------------------------------------------------------------
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# -------------------------------------------------------------
+
+# Autogenerated By   : src/main/python/generator/generator.py
+# Autogenerated From : scripts/builtin/garch.dml
+
+from typing import Dict, Iterable
+
+from systemds.operator import OperationNode, Matrix, Frame, List, MultiReturn, Scalar
+from systemds.script_building.dag import OutputType
+from systemds.utils.consts import VALID_INPUT_TYPES
+
+
+def garch(X: Matrix,
+          kmax: int,
+          momentum: float,
+          start_stepsize: float,
+          end_stepsize: float,
+          start_vicinity: float,
+          end_vicinity: float,
+          sim_seed: int,
+          verbose: bool):
+    """
+    :param X: The input Matrix to apply Arima on.
+    :param kmax: Number of iterations
+    :param momentum: Momentum for momentum-gradient descent (set to 0 to deactivate)
+    :param start_stepsize: Initial gradient-descent stepsize
+    :param end_stepsize: gradient-descent stepsize at end (linear descent)
+    :param start_vicinity: proportion of randomness of restart-location for gradient descent at beginning
+    :param end_vicinity: same at end (linear decay)
+    :param sim_seed: seed for simulation of process on fitted coefficients
+    :param verbose: verbosity, comments during fitting
+    :return: 'OperationNode' containing simulated garch(1,1) process on fitted coefficients & variances of simulated fitted process & constant term of fitted process & 1-st arch-coefficient of fitted process & 1-st garch-coefficient of fitted process & drawbacks: slow convergence of optimization (sort of simulated annealing/gradient descent) 
+    """
+    params_dict = {'X': X, 'kmax': kmax, 'momentum': momentum, 'start_stepsize': start_stepsize, 'end_stepsize': end_stepsize, 'start_vicinity': start_vicinity, 'end_vicinity': end_vicinity, 'sim_seed': sim_seed, 'verbose': verbose}
+    
+    vX_0 = Matrix(X.sds_context, '')
+    vX_1 = Matrix(X.sds_context, '')
+    vX_2 = Scalar(X.sds_context, '')
+    vX_3 = Scalar(X.sds_context, '')
+    vX_4 = Scalar(X.sds_context, '')
+    output_nodes = [vX_0, vX_1, vX_2, vX_3, vX_4, ]
+
+    op = MultiReturn(X.sds_context, 'garch', output_nodes, named_input_nodes=params_dict)
+
+    vX_0._unnamed_input_nodes = [op]
+    vX_1._unnamed_input_nodes = [op]
+    vX_2._unnamed_input_nodes = [op]
+    vX_3._unnamed_input_nodes = [op]
+    vX_4._unnamed_input_nodes = [op]
+
+    return op
diff --git a/src/main/python/systemds/operator/algorithm/builtin/winsorize.py b/src/main/python/systemds/operator/algorithm/builtin/lenetTrain.py
similarity index 74%
copy from src/main/python/systemds/operator/algorithm/builtin/winsorize.py
copy to src/main/python/systemds/operator/algorithm/builtin/lenetTrain.py
index 335d01b..87a28da 100644
--- a/src/main/python/systemds/operator/algorithm/builtin/winsorize.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/lenetTrain.py
@@ -20,7 +20,7 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
-# Autogenerated From : scripts/builtin/winsorize.dml
+# Autogenerated From : scripts/builtin/lenetTrain.dml
 
 from typing import Dict, Iterable
 
@@ -29,10 +29,17 @@ from systemds.script_building.dag import OutputType
 from systemds.utils.consts import VALID_INPUT_TYPES
 
 
-def winsorize(X: Matrix,
-              verbose: bool):
+def lenetTrain(X: Matrix,
+               Y: Matrix,
+               X_val: Matrix,
+               Y_val: Matrix,
+               C: int,
+               Hin: int,
+               Win: int,
+               **kwargs: Dict[str, VALID_INPUT_TYPES]):
     
-    params_dict = {'X': X, 'verbose': verbose}
+    params_dict = {'X': X, 'Y': Y, 'X_val': X_val, 'Y_val': Y_val, 'C': C, 'Hin': Hin, 'Win': Win}
+    params_dict.update(kwargs)
     return Matrix(X.sds_context,
-        'winsorize',
+        'lenetTrain',
         named_input_nodes=params_dict)
diff --git a/src/main/python/systemds/operator/algorithm/builtin/tomeklink.py b/src/main/python/systemds/operator/algorithm/builtin/matrixProfile.py
similarity index 63%
copy from src/main/python/systemds/operator/algorithm/builtin/tomeklink.py
copy to src/main/python/systemds/operator/algorithm/builtin/matrixProfile.py
index e2e020c..3472c40 100644
--- a/src/main/python/systemds/operator/algorithm/builtin/tomeklink.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/matrixProfile.py
@@ -20,7 +20,7 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
-# Autogenerated From : scripts/builtin/tomeklink.dml
+# Autogenerated From : scripts/builtin/matrixProfile.dml
 
 from typing import Dict, Iterable
 
@@ -29,24 +29,27 @@ from systemds.script_building.dag import OutputType
 from systemds.utils.consts import VALID_INPUT_TYPES
 
 
-def tomeklink(X: Matrix,
-              y: Matrix):
+def matrixProfile(ts: Matrix,
+                  **kwargs: Dict[str, VALID_INPUT_TYPES]):
     """
-    :param X: Data Matrix (nxm)
-    :param y: Label Matrix (nx1)
-    :return: 'OperationNode' containing  
+    :param ts: Time series to profile
+    :param window_size: Sliding window size
+    :param sample_percent: Degree of approximation 
+    :param between: one (1 
+    :param computes: solution)
+    :param is_verbose: Print debug information
+    :return: 'OperationNode' containing the computed matrix profile & indices of least distances 
     """
-    params_dict = {'X': X, 'y': y}
+    params_dict = {'ts': ts}
+    params_dict.update(kwargs)
     
-    vX_0 = Matrix(X.sds_context, '')
-    vX_1 = Matrix(X.sds_context, '')
-    vX_2 = Matrix(X.sds_context, '')
-    output_nodes = [vX_0, vX_1, vX_2, ]
+    vX_0 = Matrix(ts.sds_context, '')
+    vX_1 = Matrix(ts.sds_context, '')
+    output_nodes = [vX_0, vX_1, ]
 
-    op = MultiReturn(X.sds_context, 'tomeklink', output_nodes, named_input_nodes=params_dict)
+    op = MultiReturn(ts.sds_context, 'matrixProfile', output_nodes, named_input_nodes=params_dict)
 
     vX_0._unnamed_input_nodes = [op]
     vX_1._unnamed_input_nodes = [op]
-    vX_2._unnamed_input_nodes = [op]
 
     return op
diff --git a/src/main/python/systemds/operator/algorithm/builtin/tomeklink.py b/src/main/python/systemds/operator/algorithm/builtin/selectByVarThresh.py
similarity index 74%
copy from src/main/python/systemds/operator/algorithm/builtin/tomeklink.py
copy to src/main/python/systemds/operator/algorithm/builtin/selectByVarThresh.py
index e2e020c..7069e40 100644
--- a/src/main/python/systemds/operator/algorithm/builtin/tomeklink.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/selectByVarThresh.py
@@ -20,7 +20,7 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
-# Autogenerated From : scripts/builtin/tomeklink.dml
+# Autogenerated From : scripts/builtin/selectByVarThresh.dml
 
 from typing import Dict, Iterable
 
@@ -29,24 +29,19 @@ from systemds.script_building.dag import OutputType
 from systemds.utils.consts import VALID_INPUT_TYPES
 
 
-def tomeklink(X: Matrix,
-              y: Matrix):
-    """
-    :param X: Data Matrix (nxm)
-    :param y: Label Matrix (nx1)
-    :return: 'OperationNode' containing  
-    """
-    params_dict = {'X': X, 'y': y}
+def selectByVarThresh(X: Matrix,
+                      **kwargs: Dict[str, VALID_INPUT_TYPES]):
+    
+    params_dict = {'X': X}
+    params_dict.update(kwargs)
     
     vX_0 = Matrix(X.sds_context, '')
     vX_1 = Matrix(X.sds_context, '')
-    vX_2 = Matrix(X.sds_context, '')
-    output_nodes = [vX_0, vX_1, vX_2, ]
+    output_nodes = [vX_0, vX_1, ]
 
-    op = MultiReturn(X.sds_context, 'tomeklink', output_nodes, named_input_nodes=params_dict)
+    op = MultiReturn(X.sds_context, 'selectByVarThresh', output_nodes, named_input_nodes=params_dict)
 
     vX_0._unnamed_input_nodes = [op]
     vX_1._unnamed_input_nodes = [op]
-    vX_2._unnamed_input_nodes = [op]
 
     return op
diff --git a/src/main/python/systemds/operator/algorithm/builtin/winsorize.py b/src/main/python/systemds/operator/algorithm/builtin/tSNE.py
similarity index 65%
copy from src/main/python/systemds/operator/algorithm/builtin/winsorize.py
copy to src/main/python/systemds/operator/algorithm/builtin/tSNE.py
index 335d01b..ef5556d 100644
--- a/src/main/python/systemds/operator/algorithm/builtin/winsorize.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/tSNE.py
@@ -20,7 +20,7 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
-# Autogenerated From : scripts/builtin/winsorize.dml
+# Autogenerated From : scripts/builtin/tSNE.dml
 
 from typing import Dict, Iterable
 
@@ -29,10 +29,22 @@ from systemds.script_building.dag import OutputType
 from systemds.utils.consts import VALID_INPUT_TYPES
 
 
-def winsorize(X: Matrix,
-              verbose: bool):
-    
-    params_dict = {'X': X, 'verbose': verbose}
+def tSNE(X: Matrix,
+         **kwargs: Dict[str, VALID_INPUT_TYPES]):
+    """
+    :param X: Data Matrix of shape
+    :param reduced_dims: Output dimensionality
+    :param perplexity: Perplexity Parameter
+    :param lr: Learning rate
+    :param momentum: Momentum Parameter
+    :param max_iter: Number of iterations
+    :param seed: The seed used for initial values.
+    :param If: -1 random seeds are selected.
+    :param is_verbose: Print debug information
+    :return: 'OperationNode' containing data matrix of shape (number of data points, reduced_dims) 
+    """
+    params_dict = {'X': X}
+    params_dict.update(kwargs)
     return Matrix(X.sds_context,
-        'winsorize',
+        'tSNE',
         named_input_nodes=params_dict)
diff --git a/src/main/python/systemds/operator/algorithm/builtin/tomeklink.py b/src/main/python/systemds/operator/algorithm/builtin/tomeklink.py
index e2e020c..dc80c67 100644
--- a/src/main/python/systemds/operator/algorithm/builtin/tomeklink.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/tomeklink.py
@@ -33,7 +33,7 @@ def tomeklink(X: Matrix,
               y: Matrix):
     """
     :param X: Data Matrix (nxm)
-    :param y: Label Matrix (nx1)
+    :param y: Label Matrix (nx1), greater than zero
     :return: 'OperationNode' containing  
     """
     params_dict = {'X': X, 'y': y}
diff --git a/src/main/python/systemds/operator/algorithm/builtin/winsorize.py b/src/main/python/systemds/operator/algorithm/builtin/winsorize.py
index 335d01b..1ce9192 100644
--- a/src/main/python/systemds/operator/algorithm/builtin/winsorize.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/winsorize.py
@@ -30,9 +30,11 @@ from systemds.utils.consts import VALID_INPUT_TYPES
 
 
 def winsorize(X: Matrix,
-              verbose: bool):
+              verbose: bool,
+              **kwargs: Dict[str, VALID_INPUT_TYPES]):
     
     params_dict = {'X': X, 'verbose': verbose}
+    params_dict.update(kwargs)
     return Matrix(X.sds_context,
         'winsorize',
         named_input_nodes=params_dict)
diff --git a/src/main/python/systemds/operator/algorithm/builtin/winsorize.py b/src/main/python/systemds/operator/algorithm/builtin/xgboostPredictClassification.py
similarity index 67%
copy from src/main/python/systemds/operator/algorithm/builtin/winsorize.py
copy to src/main/python/systemds/operator/algorithm/builtin/xgboostPredictClassification.py
index 335d01b..4da8b77 100644
--- a/src/main/python/systemds/operator/algorithm/builtin/winsorize.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/xgboostPredictClassification.py
@@ -20,7 +20,7 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
-# Autogenerated From : scripts/builtin/winsorize.dml
+# Autogenerated From : scripts/builtin/xgboostPredictClassification.dml
 
 from typing import Dict, Iterable
 
@@ -29,10 +29,16 @@ from systemds.script_building.dag import OutputType
 from systemds.utils.consts import VALID_INPUT_TYPES
 
 
-def winsorize(X: Matrix,
-              verbose: bool):
-    
-    params_dict = {'X': X, 'verbose': verbose}
+def xgboostPredictClassification(X: Matrix,
+                                 M: Matrix,
+                                 learning_rate: float):
+    """
+    :param X: Matrix of feature vectors we want to predict (X_test)
+    :param M: The model created at xgboost
+    :param learning_rate: the learning rate used in the model
+    :return: 'OperationNode' containing the predictions of the samples using the given xgboost model. (y_prediction) 
+    """
+    params_dict = {'X': X, 'M': M, 'learning_rate': learning_rate}
     return Matrix(X.sds_context,
-        'winsorize',
+        'xgboostPredictClassification',
         named_input_nodes=params_dict)
diff --git a/src/main/python/systemds/operator/algorithm/builtin/winsorize.py b/src/main/python/systemds/operator/algorithm/builtin/xgboostPredictRegression.py
similarity index 67%
copy from src/main/python/systemds/operator/algorithm/builtin/winsorize.py
copy to src/main/python/systemds/operator/algorithm/builtin/xgboostPredictRegression.py
index 335d01b..1b9e217 100644
--- a/src/main/python/systemds/operator/algorithm/builtin/winsorize.py
+++ b/src/main/python/systemds/operator/algorithm/builtin/xgboostPredictRegression.py
@@ -20,7 +20,7 @@
 # -------------------------------------------------------------
 
 # Autogenerated By   : src/main/python/generator/generator.py
-# Autogenerated From : scripts/builtin/winsorize.dml
+# Autogenerated From : scripts/builtin/xgboostPredictRegression.dml
 
 from typing import Dict, Iterable
 
@@ -29,10 +29,17 @@ from systemds.script_building.dag import OutputType
 from systemds.utils.consts import VALID_INPUT_TYPES
 
 
-def winsorize(X: Matrix,
-              verbose: bool):
-    
-    params_dict = {'X': X, 'verbose': verbose}
+def xgboostPredictRegression(X: Matrix,
+                             M: Matrix,
+                             **kwargs: Dict[str, VALID_INPUT_TYPES]):
+    """
+    :param X: Matrix of feature vectors we want to predict (X_test)
+    :param M: The model created at xgboost
+    :param learning_rate: the learning rate used in the model
+    :return: 'OperationNode' containing the predictions of the samples using the given xgboost model. (y_prediction) 
+    """
+    params_dict = {'X': X, 'M': M}
+    params_dict.update(kwargs)
     return Matrix(X.sds_context,
-        'winsorize',
+        'xgboostPredictRegression',
         named_input_nodes=params_dict)