Spark MLlib 实现 K-means 算法
时间: 2024-04-24 21:04:00 浏览: 62
spark平台scala语言自己实现的kmeans算法,相比于MLlib的Kmeans更简单,更容易看懂,代码量少注释多
5星 · 资源好评率100%
Spark MLlib 中实现了 K-means 算法,可以用于大规模的聚类任务。下面是一个简单的实现示例:
```python
from pyspark.ml.clustering import KMeans
from pyspark.ml.evaluation import ClusteringEvaluator
from pyspark.ml.feature import VectorAssembler
from pyspark.sql import SparkSession
# 创建 SparkSession
spark = SparkSession.builder.appName("KMeansExample").getOrCreate()
# 加载数据
dataset = spark.read.format("csv").option("header", "true").option("inferSchema", "true").load("data.csv")
# 特征向量化
assembler = VectorAssembler(inputCols=dataset.columns, outputCol="features")
dataset = assembler.transform(dataset)
# 训练模型
kmeans = KMeans(k=2, seed=1)
model = kmeans.fit(dataset)
# 预测结果
predictions = model.transform(dataset)
# 评估模型
evaluator = ClusteringEvaluator()
silhouette = evaluator.evaluate(predictions)
print("Silhouette with squared euclidean distance = " + str(silhouette))
# 输出聚类中心
centers = model.clusterCenters()
print("Cluster Centers: ")
for center in centers:
print(center)
```
在上面的代码中,我们首先使用 `VectorAssembler` 将输入数据转换为特征向量,然后使用 `KMeans` 训练模型并对数据进行聚类。最后,我们使用 `ClusteringEvaluator` 对模型进行评估,并输出聚类中心。
阅读全文