- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在处理集群问题,它必须可扩展以处理大量数据。我想在 Spark 中尝试层次聚类,并将我的结果与其他方法进行比较。
我在网上做了一些关于在 Spark 中使用层次聚类的研究,但没有找到任何有希望的信息。
如果有人对此有所了解,我将不胜感激。谢谢。
最佳答案
似乎做得不错,而且在性能方面运行得相当快。这是我编写的示例代码,用于利用 Spark (scala) 中的 Bisecting-Kmeans 算法从 Iris 数据集(许多人都熟悉)中获取聚类中心。注意:(我的大部分 Spark 工作都使用 Spark-Notebook,它与 Jupyter Notebooks 非常相似)。我提出这个是因为您需要为这个示例创建一个 Spark SQLContext 才能工作,这可能会根据您访问 Spark 的位置或方式而有所不同。
您可以下载 Iris.csv 进行测试 here
您可以下载 Spark-Notebook here
这是一个很棒的工具,可以让您轻松运行独立的 spark 集群。如果您想在 Linux 或 Mac 上获得帮助,我可以提供说明。一旦你下载了它,你需要使用 SBT 来编译它...使用基本目录 sbt
中的以下命令,然后 run
可以在 localhost:9000 访问它
必需的进口
import org.apache.spark.sql.types._
import org.apache.spark.ml.feature.VectorAssembler
import org.apache.spark.ml.clustering.BisectingKMeans
在Spark-Notebook中创建sqlContext的方法
import org.apache.spark.sql.SQLContext
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
定义导入模式
val customSchema = StructType(Array(
StructField("c0", IntegerType, true),
StructField("Sepal_Length", DoubleType, true),
StructField("Sepal_Width", DoubleType, true),
StructField("Petal_Length", DoubleType, true),
StructField("Petal_Width", DoubleType, true),
StructField("Species", StringType, true)))
制作DF
val iris_df = sqlContext.read
.format("csv")
.option("header", "true") //reading the headers
.option("mode", "DROPMALFORMED")
.schema(customSchema)
.load("/your/path/to/iris.csv")
指定特征
val assembler = new
VectorAssembler().setInputCols(Array("c0","Sepal_Length", "Sepal_Width","Petal_Length","Petal_Width")).setOutputCol("features")
val iris_df_trans = assembler.transform(iris_df)
具有 3 个集群的模型(使用 .setK 进行更改)
val bkm = new BisectingKMeans().setK(3).setSeed(1L).setFeaturesCol("features")
val model = bkm.fit(iris_df_trans)
计算成本
val cost = model.computeCost(iris_df_trans)
计算中心
println(s"Within Set Sum of Squared Errors = $cost")
println("Cluster Centers: ")
val centers = model.clusterCenters
centers.foreach(println)
下面提供了Spark中的Agglomerative hierarchical clustering实现,值得一看,它没有像二等分Kmeans方法那样包含在基本MLlib中,我没有示例。但值得好奇的人看看。
关于apache-spark - Spark 中的分层凝聚聚类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44152337/
我是一名优秀的程序员,十分优秀!