[SPARK-9720] [ML] Identifiable types need UID in toString methods

A few Identifiable types did override their toString method but without using the parent implementation. As a consequence, the uid was not present anymore in the toString result. It is the default behaviour.

This patch is a quick fix. The question of enforcement is still up.

No tests have been written to verify the toString method behaviour. That would be long to do because all types should be tested and not only those which have a regression now.

It is possible to enforce the condition using the compiler by making the toString method final but that would introduce unwanted potential API breaking changes (see jira).

Author: Bertrand Dechoux <BertrandDechoux@users.noreply.github.com>

Closes #8062 from BertrandDechoux/SPARK-9720.
This commit is contained in:
Bertrand Dechoux 2015-09-14 09:18:46 +01:00 committed by Sean Owen
parent 1dc614b874
commit d81565465c
8 changed files with 9 additions and 9 deletions

View file

@ -146,7 +146,7 @@ final class DecisionTreeClassificationModel private[ml] (
}
override def toString: String = {
s"DecisionTreeClassificationModel of depth $depth with $numNodes nodes"
s"DecisionTreeClassificationModel (uid=$uid) of depth $depth with $numNodes nodes"
}
/** (private[ml]) Convert to a model in the old API */

View file

@ -200,7 +200,7 @@ final class GBTClassificationModel(
}
override def toString: String = {
s"GBTClassificationModel with $numTrees trees"
s"GBTClassificationModel (uid=$uid) with $numTrees trees"
}
/** (private[ml]) Convert to a model in the old API */

View file

@ -198,7 +198,7 @@ class NaiveBayesModel private[ml] (
}
override def toString: String = {
s"NaiveBayesModel with ${pi.size} classes"
s"NaiveBayesModel (uid=$uid) with ${pi.size} classes"
}
}

View file

@ -193,7 +193,7 @@ final class RandomForestClassificationModel private[ml] (
}
override def toString: String = {
s"RandomForestClassificationModel with $numTrees trees"
s"RandomForestClassificationModel (uid=$uid) with $numTrees trees"
}
/**

View file

@ -129,7 +129,7 @@ class RFormula(override val uid: String) extends Estimator[RFormulaModel] with R
override def copy(extra: ParamMap): RFormula = defaultCopy(extra)
override def toString: String = s"RFormula(${get(formula)})"
override def toString: String = s"RFormula(${get(formula)}) (uid=$uid)"
}
/**
@ -171,7 +171,7 @@ class RFormulaModel private[feature](
override def copy(extra: ParamMap): RFormulaModel = copyValues(
new RFormulaModel(uid, resolvedFormula, pipelineModel))
override def toString: String = s"RFormulaModel(${resolvedFormula})"
override def toString: String = s"RFormulaModel(${resolvedFormula}) (uid=$uid)"
private def transformLabel(dataset: DataFrame): DataFrame = {
val labelName = resolvedFormula.label

View file

@ -118,7 +118,7 @@ final class DecisionTreeRegressionModel private[ml] (
}
override def toString: String = {
s"DecisionTreeRegressionModel of depth $depth with $numNodes nodes"
s"DecisionTreeRegressionModel (uid=$uid) of depth $depth with $numNodes nodes"
}
/** Convert to a model in the old API */

View file

@ -189,7 +189,7 @@ final class GBTRegressionModel(
}
override def toString: String = {
s"GBTRegressionModel with $numTrees trees"
s"GBTRegressionModel (uid=$uid) with $numTrees trees"
}
/** (private[ml]) Convert to a model in the old API */

View file

@ -155,7 +155,7 @@ final class RandomForestRegressionModel private[ml] (
}
override def toString: String = {
s"RandomForestRegressionModel with $numTrees trees"
s"RandomForestRegressionModel (uid=$uid) with $numTrees trees"
}
/**