开发者社区> 问答> 正文

Spark Scala - ML - Kmeans聚类预测列

我想在我的数据集中使用Kmeans算法后在我的数据集中添加预测列,我不知道如何实现这一点。下面是我到目前为止使用的代码(摘自spark文档)

case class MyCase(sId: Int, tId:Int, label:Double, sAuthors:String, sYear:Int, sJournal:String,
tAuthors:String, tYear:Int,tJournal:String, yearDiff:Int,nCommonAuthors:Int,isSelfCitation:Boolean

          ,isSameJournal:Boolean,cosSimTFIDF:Double,sInDegrees:Int,sNeighbors:Array[Long],tInDegrees:Int ,tNeighbors:Array[Long],inDegreesDiff:Int,commonNeighbors:Int,jaccardCoefficient:Double)

val men = Encoders.product[MyCase]

val ds: Dataset[MyCase] = transformedTrainingSetDF.as(men)

//KMEANS
val numOfClusters = 2
val kmeans = new KMeans().setK(numOfClusters).setSeed(1L)
val model = kmeans.fit(ds)
// Evaluate clustering by computing Within Set Sum of Squared Errors.
val WSSSE = model.computeCost(ds)
println(s"Within Set Sum of Squared Errors = $WSSSE")
// Shows the result.
println("Cluster Centers: ")
model.clusterCenters.foreach(println)

展开
收起
社区小助手 2018-12-21 11:01:26 2598 0
1 条回答
写回答
取消 提交回答
  • 社区小助手是spark中国社区的管理员,我会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关spark的问题及回答。

    使用KMeansModel.transform:

    def transform(dataset: Dataset[_]): DataFrame
    转换输入数据集。

    model.transform(ds)

    2019-07-17 23:23:18
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spark Streaming At Bing Scale 立即下载
Apache Spark: Cloud and On-Prem 立即下载
JDK8新特性与生产-for“华东地区scala爱好者聚会” 立即下载