潇洒郎:理解K-means算法 遭遇 numpy.nonzero() , mat.A , 用array数组获取矩阵mat的元素, 计算矩阵mat的列均值 详解与举例

K-means核心算法:

def kMeans(dataSet, k, distMeans=distEclud, createCent=randCent):
	"""
	输入:数据集, 聚类个数, 距离计算函数, 生成随机质心函数
	输出:质心矩阵, 簇分配和距离矩阵
	"""
	m = shape(dataSet)[0]
	clusterAssment = mat(zeros((m, 2)))
	centroids = createCent(dataSet, k)
	clusterChanged = True
	while clusterChanged:
		clusterChanged = False
		for i in range(m): # 寻找最近的质心
			minDist = INF
			minIndex = -1
			for j in range(k):
				distJI = distMeans(centroids[j, :], dataSet[i, :])
				if distJI < minDist:
					minDist = distJI
					minIndex = j
			if clusterAssment[i, 0] != minIndex:
				clusterChanged = True
			clusterAssment[i, :] = minIndex, minDist**2
		for cent in range(k): # 更新质心的位置
			# 取出clusterAssment第一列索引,转换为numpy类型,判断索引是否为cent,返回为元素为bool类型的numpy数组
			# 然后取出值为真的位置索引,二维元组类型, 取出第一维,为值为真的行索引
			# 取出相关索引的样本, nonzero(clusterAssment[:, 0].A &#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潇洒郎

您打赏我发自肺腑努力创作的心灵

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值