aboutsummaryrefslogtreecommitdiff
path: root/python/pyspark/ml/param/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/pyspark/ml/param/__init__.py')
-rw-r--r--python/pyspark/ml/param/__init__.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/python/pyspark/ml/param/__init__.py b/python/pyspark/ml/param/__init__.py
index 3da36d32c5..ea86d6aeb8 100644
--- a/python/pyspark/ml/param/__init__.py
+++ b/python/pyspark/ml/param/__init__.py
@@ -314,3 +314,27 @@ class Params(Identifiable):
if p in paramMap and to.hasParam(p.name):
to._set(**{p.name: paramMap[p]})
return to
+
+ def _resetUid(self, newUid):
+ """
+ Changes the uid of this instance. This updates both
+ the stored uid and the parent uid of params and param maps.
+ This is used by persistence (loading).
+ :param newUid: new uid to use
+ :return: same instance, but with the uid and Param.parent values
+ updated, including within param maps
+ """
+ self.uid = newUid
+ newDefaultParamMap = dict()
+ newParamMap = dict()
+ for param in self.params:
+ newParam = copy.copy(param)
+ newParam.parent = newUid
+ if param in self._defaultParamMap:
+ newDefaultParamMap[newParam] = self._defaultParamMap[param]
+ if param in self._paramMap:
+ newParamMap[newParam] = self._paramMap[param]
+ param.parent = newUid
+ self._defaultParamMap = newDefaultParamMap
+ self._paramMap = newParamMap
+ return self