spark平台 mllib K-Means聚类算法 实现

 spark平台  mllib K-Means聚类算法 python版本 实现

K-Means 聚类算法可以认为是机器学习比较简单算法,无监督学习。

把自然界的各类人、物属性向量化,来划分k类。

迭代来求k类的中心点。

直接上spark自带源码,spark源码自带

kmeans_data.txt
0.0 0.0 0.0
0.1 0.1 0.1
0.2 0.2 0.2
9.0 9.0 9.0
9.1 9.1 9.1
9.2 9.2 9.2


#kmeans.py

from __future__ import print_function

import sys

import numpy as np
from pyspark import SparkContext
from pyspark.mllib.clustering import KMeans


def parseVector(line):
    return np.array([float(x) for x in line.split(' ')])


if __name__ == "__main__":
    if len(sys.argv) != 3:
        print("Usage: kmeans <file> <k>", file=sys.stderr)
        exit(-1)
    sc = SparkContext(appName="KMeans")
    lines = sc.textFile(sys.argv[1])
    data = lines.map(parseVector)
    k = int(sys.argv[2])
    model = KMeans.train(data, k)
    print("Final centers: " + str(model.clusterCenters))
    print("Total Cost: " + str(model.computeCost(data)))
    sc.stop()

k为2

spark-submit kmeans.py '/root/lxs/machine/mllib/kmeans_data.txt' 2

Final centers: [array([ 9.1,  9.1,  9.1]), array([ 0.1,  0.1,  0.1])]

Total Cost: 0.11999999999994547

k为3

Final centers: [array([ 0.1,  0.1,  0.1]), array([ 9.05,  9.05,  9.05]), array([ 9.2,  9.2,  9.2])]

Total Cost: 0.07500000000004324

k为4

Final centers: [array([ 0.05,  0.05,  0.05]), array([ 9.05,  9.05,  9.05]), array([ 0.2,  0.2,  0.2]), array([ 9.2,  9.2,  9.2])]

Total Cost: 0.03000000000004321

k为5

Final centers: [array([ 0.05,  0.05,  0.05]), array([ 9.,  9.,  9.]), array([ 9.2,  9.2,  9.2]), array([ 9.1,  9.1,  9.1]), array([ 0.2,  0.2,  0.2])]

Total Cost: 0.01500000000000001

简单列子后续详细分析。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值