1、扑克牌手动演练k均值聚类过程:>30张牌,3类
2、自主编写K-means算法 ,以鸢尾花花瓣长度数据做聚类,并用散点图显示。(加分题)
代码:
from sklearn.datasets import load_iris import numpy as np import matplotlib.pyplot as plt #1、数据准备 iris = load_iris() iris.data data = iris.data[:,0] x = data.reshape(-1,1) #鸢尾花瓣的长度数据 m = x.shape[1] #样本属性个数 n = len(data) #样本的个数 k =3 #类中心的个数,即最终分类的类别数 #2、数据初始化 dist = np.zeros([n,k+1]) #距离矩阵 center = np.zeros([k,m]) #初始类中心 new_center = np.zeros([k,m]) #新的类中心 number = 0 #选中心 center = x[:k,:] #选择前3个样本作为初始类中心 while True: #求距离 for i in range(n): for j in range(k): dist[i,j] = np.sqrt(sum((x[i,:] - center[j,:])**2)) # 归类 dist[i,k] = np.argmin(dist[i,:k]) #求新类中心 for i in range(k): index = dist[:,k] == i new_center[i,:] = np.mean(x[index,:]) #判定结束 if(np.all(center == new_center)): break else: center = new_center print('最终的聚类结果:',dist[:,k]) plt.scatter(x,x,c=dist[:,k],s=50,cmap='rainbow') plt.show()
运行结果:
3、用sklearn.cluster.KMeans,鸢尾花花瓣长度数据做聚类,并用散点图显示.
代码:
运行结果:
4、鸢尾花完整数据做聚类并用散点图显示.
代码:
运行结果:
5、想想k均值算法中可以用来做什么?
(1)利用k均值算法实现图像压缩,运行k均值算法处理图像。
(2)可以根据不同的特征对多种数据进行分类。