使用出租车上传的GPS点作为分析对象,使用Kmeans把出租车轨迹点聚类,找出出租车出现密集的地方,并用地图的方式进行可视化展示。
【实验目的】
主要使用出租车上传的GPS点作为分析对象,使用Kmeans把出租车轨迹点聚类,找出出租车出现密集的地方,用地图的方式进行可视化展示。
【实验原理】
(1)数据的准备。
(2)创建DataFrame。
(3)使用kmeans聚类。
(4)聚类结果可视化。
【实验环境】
操作系统: Linux
开发环境: pyspark交互式命令行
【实验步骤】
1.数据处理
下载数据
wget http://10. 90.3.2/HUP /spark/Files/taxi. csv
该实验采用数据为出租车载客时GPS记录数据集,数据格式为CSV, CSV格式是数据分析中常见的一种数据格式。
2.数据分析
创建DataFrame
引入与sq|相关的包初始化Spark上文
from pyspark . sql import SparkSession
from pyspark import SparkContext
使用textFile函数读取csv文件创建taxi_ data, 然后使用map算子操作将按照逗号隔开的文本创建RDD。
taxi_ data = sc . textFile(" /home/ ubuntu/ Downloads/taxi. csv")
taxi_ rdd=taxi_ data . map( lambda line: line .sp1it(','))
创建矢量RDD,矢两个参数分别为纬度和经度。在下文的聚类函数中需要该格式RDD进行聚类。
from pyspark. ml. linalg import Vectors
taxi_ row=taxi_ rdd . map(lambda x: (Vectors . dense (x[1],x[2]), ))
使用SparkSession创建sql上下文并使用createDataFrame创建DataFrame
sq1sc=SparkSession . builder . getOrCreate( )
taxi_ df=sqlsc. createDataFrame(taxi_ row, [" features" ] )
输入和输出列是用户使用kmeans方法时候的参数类型,默认的输入列名为features, 输出的列名为prediction。KMeans方法中包含若干参数,其中k为分簇个数, seed为种子点。
from pyspark.ml.clustering import KMeans
kmeans=KMeans(k=3, seed=1) #聚成3类
model=kmeans.fht(taxi_ df) #注意,传入的DataFrame是矢铭称为features的集合
centers=model.clusterCenters()
print centers
3.可视化展现
申请地图key
使用百度地图接口需要百度的一个认证,也就是需要在登录百度地图开发平台申请key,申请key地址: http://lbsyun.baidu.com/apiconsole/key,申请界面如图
聚类结果可视化
已经得到了聚类结果坐标,本节任务就是把这些点可视化出来即可。根据百度开放平台提供的例子简单地编写一些html代码即可展示相应的点,代码核心部分如下:
【对实验过程中可能存在的问题的思考】
实验中遇到的问题:
1. 数据处理问题:在下载数据和创建DataFrame的过程中,可能存在文件路径错误或网络连接问题等。确保能够成功下载数据,并正确读取和解析CSV文件,以创建正确的DataFrame。
2. 数据质量问题:原始的GPS记录数据集可能存在缺失值、异常值或噪声数据。在数据处理阶段,需要进行数据清洗和预处理,例如处理缺失值、去除异常轨迹点等,以确保得到准确和可靠的数据进行后续分析。
3. 参数选择问题:在使用K-means算法进行聚类时,需要选择合适的聚类簇数(k)和种子点(seed)。选择不合适的参数可能导致聚类结果不准确或不符合预期。可以尝试不同的参数组合,并使用合适的评估指标来评估聚类效果,以选择最佳参数设置。
4. 可视化展示问题:在将聚类结果可视化展示时,需要使用地图API或可视化工具进行开发。可能会遇到地图API的限制、接口调用问题或展示效果不理想的情况。我们需要确保正确获取地图API的认证密钥,并熟悉相关API的使用方法,以实现聚类结果的有效可视化展示。
【实验小结】
本实验旨在使用出租车GPS点数据进行聚类分析,并通过地图可视化展示出租车出现密集的地方。通过实验,我的小结如下:
1. 数据处理是数据分析的重要步骤,正确读取、解析和清洗数据对后续分析结果的准确性至关重要。
2. K-means算法是一种常用的聚类算法,通过选择合适的聚类簇数和种子点,可以对数据进行有效的聚类分析。
3. 可视化是一种直观展示数据分析结果的方法,在地图上展示聚类结果可以帮助我们发现出租车出现密集的地区。
4. 在实际应用中,需要根据具体需求进行参数选择和结果解释。聚类结果可能需要进一步分析和解释,以得出有关出租车分布和交通流量的结论。
5. 在使用地图API进行可视化展示时,需要熟悉地图API的使用方法,并了解API的限制和使用注意事项,以确保正确地展示分析结果。
总之,通过本实验可以对出租车GPS数据进行聚类分析,并通过地图可视化展示结果,有助于我们了解出租车分布情况和交通拥堵区域,为城市交通规划和出行提供参考依据。