首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >星火MLlib K-均值聚类

星火MLlib K-均值聚类
EN

Stack Overflow用户
提问于 2016-08-10 10:06:24
回答 2查看 1.7K关注 0票数 1

我有一些地理点定义了纬度,经度和分数,我想使用MLlib K-均值算法来形成聚类。如果可用,我如何将参数或特性传递给算法.据我所知,它读取一个双数据类型的文本文件,并在此基础上生成集群。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-10 17:31:13

不要在经度数据上使用k-均值。

因为扭曲。地球是一个球体,-180°和+180°没有360°的距离。但是即使你离数据线很远,例如,你所有的数据都在旧金山,在纬度~37.773972,你的失真超过20%,而且越往北越糟。

使用像HAC或DBSCAN这样的算法,它可以在Haversine距离中使用(在一个好的实现中,有很多不好的实现)。例如,埃尔基有非常快的聚类算法,并且允许不同的地理距离.即使指数加速,对地理点也有很大帮助。

还请参阅这篇博客文章:https://doublebyteblog.wordpress.com/2014/05/16/clustering-geospatial-data/

票数 1
EN

Stack Overflow用户

发布于 2019-12-22 17:30:32

如果您仍然需要使用MLlib的K-均值,那么官方文档是- https://spark.apache.org/docs/latest/ml-clustering.html#k-means

  1. 构建包含要容纳功能的列的dataframe。假设列名为"f“表示功能。它也可以包含其他不会被触及的列。
  2. 此特征列为向量类型。可以使用示例- https://spark.apache.org/docs/latest/mllib-data-types.html创建稀疏向量。
  3. 如果您有单词,那么您可以使用示例- https://spark.apache.org/docs/latest/ml-features.html#word2vec创建它们的向量。
  4. 一旦输入数据与类型向量的列准备就绪,实例化org.apache.spark.ml.clustering.KMeans、设置参数K和seed、拟合和预测。您可以使用此示例- https://spark.apache.org/docs/latest/ml-clustering.html#k-means
代码语言:javascript
复制
val trainingDataset = //build a dataframe containing a column "f" of type org.apache.spark.mllib.linalg.Vector


val kmeans = new KMeans().setK(2).setSeed(1L).setFeaturesCol("f").setPredictionCol("p")
val model = kmeans.fit(trainingDataset) // your model is ready

//Predict another dataset
val pDataset = //build a dataframe containing a column "f" of type org.apache.spark.mllib.linalg.Vector

val predictions = model.transform(pDataset) 
//predictions will contain your prediction on column "p".

在本地星火安装的“示例”文件夹中还有其他可用的示例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38870280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档