Spark作为一种开源集群计算环境,具有分布式的快速数据处理能力。而Spark中的Mllib定义了各种各样用于机器学习的数据结构以及算法。Python具有Spark的API。需要注意的是,Spark中,所有数据的处理都是基于RDD的。
首先举一个聚类方面的详细应用例子Kmeans:
下面代码是一些基本步骤,包括外部数据,RDD预处理,训练模型,预测。
#coding:utf-8
from numpy import array
from math import sqrt
from pyspark import SparkContext
from pyspark.mllib.clustering import KMeans, KMeansModel
if __name__ == "__main__":
sc = SparkContext(appName="KMeansExample",master='local') # SparkContext
# 读取并处理数据
data = sc.textFile("./kmeans_data.txt")
print data.collect()
parsedData = data.map(lambda line: array([float(x) for x in line.split(' ')]))
# 训练数据
print parsedData.collect()
clusters = KMeans.train(parsedData, k=2, maxIterations=10,
runs=10, initializationMode="random")
#求方差之和
def error(point):
center = clusters.centers[clusters.predict(point)]
return sqrt(sum([x**2 for x in (point - center)]))
WSSSE = parsedData.map(lambda point: error(point)).reduce(lambda x, y: x + y)
print("Within Set Sum of Squared Error = " + str(WSSSE))
#聚类结果
def sort(point):