import numpy as np
import matplotlib.pyplot as plt
#matplotlib inline
# 解析文件,按空格分割字段,得到一个浮点数字类型的矩阵
def loadDataSet(fileName):
dataMat = [] # 初始化一个空列表,文件的最后一个字段是类别标签
fr = open(fileName) # 读取文件
for line in fr.readlines(): # 循环遍历文件所有行
curLine = line.strip().split(' ') # 切割每一行的数据
fltLine = list(map(float, curLine)) # 映射所有的元素为 float(浮点数)类型
dataMat.append(fltLine) # 将数据追加到dataMat
return dataMat # 返回dataMat
# 计算欧几里得距离
def distEclud(vecA, vecB):
return sqrt(sum(power(vecA - vecB, 2))) # 求两个向量之间的距离
# 构建聚簇中心,取k个(此例中为4)随机质心
def randCent(dataSet, k):
n = shape(dataSet)[1] #获取特征值数量:3列
centroids = mat(zeros((k,n))) #初始化质心为0,创建(k,n)个以零填充的矩阵k=4行,3列
for j in range(n): #循环遍历特征值
#下面计算的分别是横坐标、纵坐标与类别标签
minJ = min(dataSet[:,j]) #计算每一列的最小值
半监督k-means算法
于 2023-06-04 12:22:16 首次发布