Part3-Chapter10-利用K-均值聚类算法对未标注数据分组

以下代码为简单的随机k-均值聚类法,距离计算方法为平方差

import numpy as np
import random
import math

#载入数据
#filename:载入文件名
def loadDataSet(filename):
    dataSet = []
    fr = open(filename)
    for line in fr.readlines():
        mat0 = line.strip().split('\t')
        mat1 = list(map(float,mat0))
        dataSet.append(mat1)
    return dataSet

#随机选取k个点作为起始质点
#dataSet:数据集
#k:指定聚类数
#Clu:初始化的质点矩阵
#initClu:最初的选取质点矩阵:防止选取重复初始质点
def initClu(dataSet,k):
    m,n = np.shape(np.mat(dataSet))
    Clu = np.zeros((k,n))
    initClu = np.zeros((k,1)).astype(int)
    #检查是否重复
    check = 0
    for i in range(k):
        newClu = math.ceil(random.random()*m)
        for j in range(k):
            checkClu = initClu[j][0]
            #如果检查完当前存储的质点,则跳出循环
            if checkClu == 0:
                break
            #若出现重复,则报错(本来打算i--,但是发现python的for循环的i的变化对循环没有影响,于是选择报错
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值