机器学习—聚类算法
作者:互联网
聚类(Clustering)
是按照某个特定标准(如距离)把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能地大。也即聚类后同一类的数据尽可能聚集到一起,不同类数据尽量分离。
1.K-Means聚类鸢尾花数据
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
2.调用sklearn实现聚类分析
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_)
3.参考文章
【创作不易,望点赞收藏,若有疑问,请留言,谢谢】
标签:iris,机器,center,算法,聚类,np,dist,data 来源: https://www.cnblogs.com/dongxuelove/p/16434214.html