Nic Eggert created SPARK-22289:
----------------------------------

             Summary: Cannot save LogisticRegressionClassificationModel with 
bounds on coefficients
                 Key: SPARK-22289
                 URL: https://issues.apache.org/jira/browse/SPARK-22289
             Project: Spark
          Issue Type: Bug
          Components: ML
    Affects Versions: 2.2.0
            Reporter: Nic Eggert


I think this was introduced in SPARK-20047.

Trying to call save on a logistic regression model trained with bounds on its 
parameters throws an error. This seems to be because Spark doesn't know how to 
serialize the Matrix parameter.

Model is set up like this:
{code}
    val calibrator = new LogisticRegression()
      .setFeaturesCol("uncalibrated_probability")
      .setLabelCol("label")
      .setWeightCol("weight")
      .setStandardization(false)
      .setLowerBoundsOnCoefficients(new DenseMatrix(1, 1, Array(0.0)))
      .setFamily("binomial")
      .setProbabilityCol("probability")
      .setPredictionCol("logistic_prediction")
      .setRawPredictionCol("logistic_raw_prediction")
{code}

{code}
17/10/16 15:36:59 ERROR ApplicationMaster: User class threw exception: 
scala.NotImplementedError: The default jsonEncode only supports string and 
vector. org.apache.spark.ml.param.Param must override jsonEncode for 
org.apache.spark.ml.linalg.DenseMatrix.
scala.NotImplementedError: The default jsonEncode only supports string and 
vector. org.apache.spark.ml.param.Param must override jsonEncode for 
org.apache.spark.ml.linalg.DenseMatrix.
        at org.apache.spark.ml.param.Param.jsonEncode(params.scala:98)
        at 
org.apache.spark.ml.util.DefaultParamsWriter$$anonfun$1$$anonfun$2.apply(ReadWrite.scala:296)
        at 
org.apache.spark.ml.util.DefaultParamsWriter$$anonfun$1$$anonfun$2.apply(ReadWrite.scala:295)
        at 
scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
        at 
scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
        at 
scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
        at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
        at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
        at scala.collection.AbstractTraversable.map(Traversable.scala:104)
        at 
org.apache.spark.ml.util.DefaultParamsWriter$$anonfun$1.apply(ReadWrite.scala:295)
        at 
org.apache.spark.ml.util.DefaultParamsWriter$$anonfun$1.apply(ReadWrite.scala:295)
        at scala.Option.getOrElse(Option.scala:121)
        at 
org.apache.spark.ml.util.DefaultParamsWriter$.getMetadataToSave(ReadWrite.scala:295)
        at 
org.apache.spark.ml.util.DefaultParamsWriter$.saveMetadata(ReadWrite.scala:277)
        at 
org.apache.spark.ml.classification.LogisticRegressionModel$LogisticRegressionModelWriter.saveImpl(LogisticRegression.scala:1182)
        at org.apache.spark.ml.util.MLWriter.save(ReadWrite.scala:114)
        at 
org.apache.spark.ml.Pipeline$SharedReadWrite$$anonfun$saveImpl$1.apply(Pipeline.scala:254)
        at 
org.apache.spark.ml.Pipeline$SharedReadWrite$$anonfun$saveImpl$1.apply(Pipeline.scala:253)
        at 
scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
        at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:186)
        at 
org.apache.spark.ml.Pipeline$SharedReadWrite$.saveImpl(Pipeline.scala:253)
        at 
org.apache.spark.ml.PipelineModel$PipelineModelWriter.saveImpl(Pipeline.scala:337)
        at org.apache.spark.ml.util.MLWriter.save(ReadWrite.scala:114)
        -snip-
{code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org
For additional commands, e-mail: issues-h...@spark.apache.org

Reply via email to