如何访问群集中的数据点?

时间:2016-04-28 07:34:01

标签: scala apache-spark apache-spark-mllib

所以我正在尝试创建一个像谷歌地图这样的软件,根据出租车数据评估从a点到b点的旅行时间。

 val taxiFile = sc.textFile("/resources/LabData/nyctaxisub.csv")
    val header = taxiFile.first()
    val taxiNoHead = taxiFile.filter(x=> (x !=header))

    //3, 4, 9, 10 are the dropoff and pickup longitude and latitude 
    val taxiData=taxiNoHead.
        filter(_.split(",")(3)!="" ).  
        filter(_.split(",")(4)!="") 

    val taxiFence=taxiData.
        filter(_.split(",")(3).toDouble>40.70).
        filter(_.split(",")(3).toDouble<40.77).
        filter(_.split(",")(4).toDouble>(-74.02)).
        filter(_.split(",")(4).toDouble<(-73.7)).
        filter(_.split(",")(9).toDouble>40.70).
        filter(_.split(",")(9).toDouble<40.77).
        filter(_.split(",")(10).toDouble>(-74.02)).
        filter(_.split(",")(10).toDouble<(-73.7))

    val taxi=taxiFence.
        map{
            line=>Vectors.dense(
                line.split(',').slice(3,5).map(_ .toDouble)
            )
        }.cache()

    val iterationCount=10
    val clusterCount=40

    val model=KMeans.train(taxi,clusterCount,iterationCount)
    val clusterCenters=model.clusterCenters.map(_.toArray)

    clusterCenters.foreach(lines=>println(lines(0),lines(1)))

(以下是与我的所有群集中心http://www.darrinward.com/lat-long/?id=1922446进行映射的链接)

现在我的问题是我不知道如何计算从一个集群到另一个集群的平均时间。如果有方法可以访问分配给每个群集的数据点,则可以轻松完成此操作,然后将trip_time_in_secs的平均值用于从群集到最靠近下降点的其他群集的行程。此外,如果在点a和b之间存在簇,例如点c。它还会计算平均值。从a点到c点和从c到b点的时间然后将它们加在一起。与Dijkstra的算法类似。

这可能吗?如果是的话,怎么样?

0 个答案:

没有答案