基于西瓜书的聚类代码和介绍

时间:2021-12-10 03:29:59
【文件属性】:

文件名称:基于西瓜书的聚类代码和介绍

文件大小:183KB

文件格式:ZIP

更新时间:2021-12-10 03:29:59

python聚类

def GMM_algorithm(iterMax,gmm,dataset): ''' 高斯混合聚类算法 :param iterMax: 最大迭代次数 :param gmm: 保存gmm模型的数据 :return: 簇划分结果 ''' step = 0 m = len(dataset) flagMat = np.mat(np.zeros((m, 1))) # 保存每个样本的簇标记 lateProbMat = np.mat(np.zeros((m,3))) #保存后验概率 while step < iterMax: #迭代更新模型参数 for j in range(m): #计算后验概率 vectX = dataset[j] prob1 = 0.0 for i in range(3): prob1 += (gmm.aplhaList[i] * densityFunc(gmm.meanList[i], gmm.matList[i], vectX)) for i in range(3): prob2 = gmm.aplhaList[i] * densityFunc(gmm.meanList[i], gmm.matList[i], vectX) lateProbMat[j,i] = float(prob2/prob1) for i in range(3): #更新高斯混合模型参数 mean = calMean(dataset,lateProbMat,i) #更新均值向量 gmm.meanList[i] = mean X = np.array(dataSet) # 列表类型转换成array数组类型 numSamples = len(dataSet) bandwidth = estimate_bandwidth(X, quantile=0.2, n_samples=500)#estimate_bandwidth函数用作于mean-shift算法估计带宽 clf = MeanShift(bandwidth=bandwidth, bin_seeding=True, cluster_all=True).fit(X) centroids = clf.labels_ print( centroids, type(centroids)) # 显示每一个点的聚类归属 # 计算其自动生成的k,并将聚类数量小于3的排除 arr_flag = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] for i in clf.labels_: arr_flag[i] += 1 k = 0 for i in arr_flag: if (i > 3): k += 1 print( k) mark = ['or', 'ob', 'og', 'ok', '^r', '+r', 'sr', 'dr', '


【文件预览】:
新建文件夹
----层次聚类.txt(1KB)
----密度聚类2代码.txt(1KB)
----密度.pdf(182KB)
----密度聚类.txt(2KB)
----高斯聚类.txt(5KB)

网友评论

  • 还没有运行,有书里边的几个例子