Github user huaxingao commented on a diff in the pull request:
https://github.com/apache/spark/pull/20442#discussion_r164956149
--- Diff:
mllib/src/main/scala/org/apache/spark/ml/feature/QuantileDiscretizer.scala ---
@@ -167,25 +167,31 @@ final class QuantileDiscretizer @Since("1.6.0")
(@Since("1.6.0") override val ui
@Since("2.3.0")
def setOutputCols(value: Array[String]): this.type = set(outputCols,
value)
- private[feature] def getInOutCols: (Array[String], Array[String]) = {
- require((isSet(inputCol) && isSet(outputCol) && !isSet(inputCols) &&
!isSet(outputCols)) ||
- (!isSet(inputCol) && !isSet(outputCol) && isSet(inputCols) &&
isSet(outputCols)),
- "QuantileDiscretizer only supports setting either inputCol/outputCol
or" +
- "inputCols/outputCols."
- )
+ @Since("1.6.0")
+ override def transformSchema(schema: StructType): StructType = {
+ ParamValidators.checkSingleVsMultiColumnParams(this, Seq(outputCol),
+ Seq(outputCols))
- if (isSet(inputCol)) {
- (Array($(inputCol)), Array($(outputCol)))
- } else {
- require($(inputCols).length == $(outputCols).length,
- "inputCols number do not match outputCols")
- ($(inputCols), $(outputCols))
+ if (isSet(inputCols)) {
+ require(getInputCols.length == getOutputCols.length,
+ s"QuantileDiscretizer $this has mismatched Params " +
--- End diff --
The only reason I have $this is because Bucketizer has $this and I am
trying to be consistent with Bucketizer implementation.
```
if (isSet(inputCols)) {
require(getInputCols.length == getOutputCols.length &&
getInputCols.length == getSplitsArray.length, s"Bucketizer $this
has mismatched Params " +
s"for multi-column transform. Params (inputCols, outputCols,
splitsArray) should have " +
```
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]