Pyspark聚类--KMeans

KMeans

class pyspark.ml.clustering.KMeans(featuresCol=‘features’, predictionCol=‘prediction’, k=2, initMode=‘k-means||’, initSteps=2, tol=0.0001, maxIter=20, seed=None, distanceMeasure=‘euclidean’)

使用类似 k-means++ 的初始化模式进行 K-means 聚类(Bahmani 等人的 k-means|| 算法)。

参数介绍和BisectingKMeans.md文档一样

01.创建数据集

from pyspark.sql import SparkSession
spark = SparkSession.builder.config("spark.driver.host","192.168.1.10")\
    .config("spark.ui.showConsoleProgress","false").appName("KMeans")\
    .master("local[*]").getOrCreate()
from pyspark.ml.linalg import Vectors
data = [(Vectors.dense([0.0, 0.0]),), (Vectors.dense([1.0, 1.0]),),
        (Vectors.dense([9.0, 8.0]),), (Vectors.dense([8.0, 9.0]),)]
df = spark.createDataFrame(data, ["features"])
df.show()
df.printSchema()

​ 输出结果:

+---------+
| features|
+---------+
|[0.0,0.0]|
|[1.0,1.0]|
|[9.0,8.0]|
|[8.0,9.0]|
+---------+

root
 |-- features: vector (nullable = true)

02.使用数据训练得到kmean模型,并转换原有数据

rom pyspark.ml.clustering import KMeans
kMeans = KMeans(k=2,seed=1)
model = kMeans.fit(df)
model.transform(df).show()

​ 输出结果:

+---------+----------+
| features|prediction|
+---------+----------+
|[0.0,0.0]|         1|
|[1.0,1.0]|         1|
|[9.0,8.0]|         0|
|[8.0,9.0]|         0|
+---------+----------+

03.查看模型属性和摘要信息

print(model.hasSummary)
print(model.clusterCenters())
print(model.summary.clusterSizes)

​ 输出结果:

True
[array([8.5, 8.5]), array([0.5, 0.5])]
[2, 2]

04.构造测试数据,使用上面模型转换预测查看结果

testdata = spark.createDataFrame([
    (Vectors.dense([8.2,8.2]),)
],["test"])
testdata.show()
# model().transform(testdata).show()
testdata = testdata.withColumnRenamed("test","features")
model.transform(testdata).show()

​ 输出结果:

+---------+
|     test|
+---------+
|[8.2,8.2]|
+---------+

+---------+----------+
| features|prediction|
+---------+----------+
|[8.2,8.2]|         0|
+---------+----------+
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值