Github user sethah commented on a diff in the pull request:
    --- Diff: mllib/src/main/scala/org/apache/spark/ml/clustering/KMeans.scala 
    @@ -81,11 +81,23 @@ private[clustering] trait KMeansParams extends Params 
with HasMaxIter with HasFe
       def getInitSteps: Int = $(initSteps)
    +   * Param for KMeansModel to use for warm start.
    +   * @group param
    +   */
    +  final val initialModel: Param[KMeansModel] =
    +    new Param[KMeansModel](this, "initialModel", "A KMeansModel for warm 
    +  /**
        * Validates and transforms the input schema.
        * @param schema input schema
        * @return output schema
       protected def validateAndTransformSchema(schema: StructType): StructType 
= {
    +    if (isDefined(initialModel)) {
    +      val kOfInitialModel = 
    +      require(kOfInitialModel == $(k),
    +        s"mismatched cluster count, ${$(k)} cluster centers required but 
$kOfInitialModel found.")
    +    }
    --- End diff --
    This method is called at the start of training, and right now this is the 
only place we check `k`. TBH, I think it would be cleaner to implement a 
isInitialModelValid method in the companion object which checks the k and the 
feature dimensions all in one place. Checking the k parameter here is a bit odd 
since it's not exactly schema related. Seems cleaner to me to check everything 
initialModel related in one place. 

If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at or file a JIRA ticket
with INFRA.

To unsubscribe, e-mail:
For additional commands, e-mail:

Reply via email to