K均值算法
1) 扑克牌手动演练k均值聚类过程:>30张牌,3类。
首先,选取扑克牌中的A~8,每个数字4张牌,总共32张牌。
选出A、2、3作为3种类别,所有的牌根据与3种类别的距离的规律进行聚类,距离最近为一类。
第一轮:聚类中心为A、2、3(新的聚类中心为A、2、5.5(用6表示))
- 接着从上述分类完毕的牌簇中求和取平均,作为新的中心,以此类推,进行聚类,直到新的聚类中心与上一轮的聚类中心一致才停止聚类求中心的过程。
第二轮:聚类中心为A、2、5.5(用6表示)(新的聚类中心为A、2.5(用3表示)、6)
第三轮:聚类中心为A、2.5(用3表示)、6(新的聚类中心为A、2.5(用3表示)、6)
2)自主编写K-means算法 ,以鸢尾花花瓣长度数据做聚类,并用散点图显示。:
3)用sklearn.cluster.KMeans,鸢尾花花瓣长度数据做聚类,并用散点图显示。
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #显示中文标签
iris = load_iris()
X = iris.data[:,1]
Y = X.reshape(-1,1)
km=KMeans(n_clusters=3)
km.fit(Y)
km_Y=km.predict(Y)
plt.scatter(Y[:,0],Y[:,0],c=km_Y,s=50,cmap='coolwarm')
plt.title("sklearn.cluster.KMeans鸢尾花花瓣长度的散点图")
plt.show()
4)鸢尾花完整数据做聚类并用散点图显示。
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
iris = load_iris()
x = iris.data
km_model = KMeans(n_clusters=3)
km_model.fit(x)
y = km_model.predict(x)
plt.scatter(x[:, 2], x[:, 3], c=y, s=50, cmap="Paired")
plt.show()
5)想想k均值算法中以用来做什么?
行为细分:按购买历史记录细分 按应用程序,网站或平台上的活动进行细分, 根据兴趣定义角色, 根据活动监控创建配置文件
库存分类: 按销售活动分组库存 ,按制造指标对库存进行分组
分类传感器测量: 检测运动传感器中的活动类型 ,分组图像 ,单独的音频 ,确定健康监测中的群体
检测机器人或异常: 从机器人中分离出有效的活动组, 将有效活动分组以清除异常值检测