聚类(Clustering)
是按照某个特定标准(如距离)把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能地大。也即聚类后同一类的数据尽可能聚集到一起,不同类数据尽量分离。
from sklearn.datasets import load_iris import numpy as np iris = load_iris() data = iris.data n = len(data) k = 2 dist = np.zeros([n, k+1]) # 1、选中心 center = data[:k, :] center_new = np.zeros([k, data.shape[1]]) while True: # 2、求距离 for i in range(n): for j in range(k): dist[i, j] = np.sqrt(sum((data[i, :] - center[j, :])**2)) dist[i, k] = np.argmin(dist[i, :k]) # 3、归类 for i in range(k): # 4、求新类中心 index = dist[:, k] == i center_new[i, :] = data[index, :].mean(axis=0) if np.all(center == center_new): # 5、判定结束 break center = center_new
from sklearn.datasets import load_iris from sklearn.cluster import KMeans iris = load_iris() model = KMeans(n_clusters=3).fit(iris.data) print(model.labels_)
【聚类】五种主要聚类算法_
机器学习(7)——聚类算法 - 简书
【创作不易,望点赞收藏,若有疑问,请留言,谢谢】