Pyspark实现KMeans机器学习聚类算法(一)
环境配置:
- spark 2.1.1
- python 3.5.2
- IPython 5.1.0
这里配置了pyspark默认以ipython
模式启动。(IPython是一个交互式比较好的科学计算包)。
命令行中输入 pyspark
(这里需要提前配置好环境变量),启动spark。
对于spark来说,与python相关的机器学习库都在pyspark.ml
包中,
首先导入模块Vectors
和KMeans
,创建数据集,spark2.1推荐使用DataFrame,我们这里通过
spark.createDataFrame
创建数据集,直接调用KMeans算法这里设置k=2,分为两类。
坑一:Row is read-only
解决办法
rows[0].prediction == rows[1].prediction
True
rows[2].prediction == rows[3].prediction
True
坑二:Mkdirs failed to create file:/C:/Users/Adminstrator/kmeas/metadata.....
解决办法:
C盘换成其他盘,可能C盘为系统盘不能修改,比如换成F盘。
坑三:填了一坑,又来一坑,java.io.IOException:Path F:/spark already exists.Please use write overwirte().save(path) to overwrite it.
解决办法:
temp_path = "F:/"
kmeans_path = temp_path+"kmeans"
把模型存起来,然后需要的时候调用模型。这个场景应用比较普遍。
结论:通过pyspark对数据点用Kmeans聚集为2类,熟悉了Kmeans机器学习算法在spark中的实现,总结了一些常见的错误。注意各种包的导入。
参考文献:1.http://spark.apache.org/docs/2.1.1/api/python/pyspark.ml.html#pyspark.ml.clustering.KMeans