Spark机器学习之聚类

聚类

本页介绍MLlib中的聚类算法。 在基于RDD的API中聚类的指南还具有关于这些算法的相关信息。

目录
1 k-均值 K-means
2 Dirichlet allocation (LDA) 
3 平分k-均值 Bisecting k-means
4 高斯混合模型(GMM)

1 K-means

k-means是将数据点聚类到预定数量的聚类中最常用的聚类算法之一。 MLlib实现包括一个名为kmeans ||的k-means ++方法的并行化变体。
KMeans实现为一个估计器,并生成一个KMeansModel作为基本模型。

from pyspark.ml.clustering import KMeans

# Loads data.
dataset = spark.read.format("libsvm").load("data/mllib/sample_kmeans_data.txt")

# Trains a k-means model.
kmeans = KMeans().setK(2).setSeed(1)
model = kmeans.fit(dataset)

# Evaluate clustering by computing Within Set Sum of Squared Errors.
wssse = model.computeCost(dataset)
print("Within Set Sum of Squared Errors = " + str(wssse))

# Shows the result.
centers = model.clusterCenters()
print("Cluster Centers: ")
for center in centers:
    print(center)
2 Dirichlet allocation (LDA) 

LDA实现为一个支持EMLDAOptimizer和OnlineLDAOptimizer的估计器,并生成一个LDAModel作为基本模型。 如果需要,专家用户可以将EMLDAOptimizer生成的LDAModel转换为DistributedLDAModel。

from pyspark.ml.clustering import LDA

# Loads data.
dataset = spark.read.format("libsvm").load("data/mllib/sample_lda_libsvm_data.txt")

# Trains a LDA model.
lda = LDA(k=10, maxIter=10)
model = lda.fit(dataset)

ll = model.logLikelihood(dataset)
lp = model.logPerplexity(dataset)
print("The lower bound on the log likelihood of the entire corpus: " + str(ll))
print("The upper bound bound on perplexity: " + str(lp))

# Describe topics.
topics = model.describeTopics(3)
print("The topics described by their top-weighted terms:")
topics.show(truncate=False)

# Shows the result
transformed = model.transform(dataset)
transformed.show(truncate=False)

3 Bisecting k-means

平分k均值是使用分裂(或“自上而下”)方法的一种分层聚类:所有观察在一个簇中开始,并且分层在层级结构向下移动时递归地执行。
平分K均值通常比常规K均值快得多,但通常会产生不同的聚类。
BisectingKMeans被实现为一个估计器,并生成一个BisectingKMeansModel作为基本模型。

from pyspark.ml.clustering import BisectingKMeans

# Loads data.
dataset = spark.read.format("libsvm").load("data/mllib/sample_kmeans_data.txt")

# Trains a bisecting k-means model.
bkm = BisectingKMeans().setK(2).setSeed(1)
model = bkm.fit(dataset)

# Evaluate clustering.
cost = model.computeCost(dataset)
print("Within Set Sum of Squared Errors = " + str(cost))

# Shows the result.
print("Cluster Centers: ")
centers = model.clusterCenters()
for center in centers:
    print(center)
4 高斯混合模型(GMM)

高斯混合模型表示复合分布,其中点从k个高斯子分布中的一个绘出,每个具有其自身的概率。 spark.ml实现使用期望最大化算法来给出给定一组样本的最大似然模型。
GaussianMixture作为估计器实现,并生成GaussianMixtureModel作为基本模。

from pyspark.ml.clustering import GaussianMixture

# loads data
dataset = spark.read.format("libsvm").load("data/mllib/sample_kmeans_data.txt")

gmm = GaussianMixture().setK(2).setSeed(538009335)
model = gmm.fit(dataset)

print("Gaussians shown as a DataFrame: ")
model.gaussiansDF.show(truncate=False)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值