第三次k均值

1). 扑克牌手动演练k均值聚类过程:>30张牌,3类

 

 

 

2). *自主编写K-means算法 ,以鸢尾花花瓣长度数据做聚类,并用散点图显示。(加分题)

from sklearn.datasets import load_iris
import numpy as np

#1\数据准备
iris=load_iris()
data=iris['data']
m=data.shape[1]#样本属性个数
data.shape
n=len(data)#样本个数
k=3#类中心个数,即最终分类
#数据初始化
dist=np.zeros([n,k+1])#距离矩阵
center=np.zeros([k,m])#初始类中心
new_center=np.zeros([k,m])#新的类中心
number=0
#选中心
center=data[:k, :]#选择前三个样本作为初始类中心
while True:
#求距离
    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])
    #求新类中心
    for i in range(k):
        index=dist[:,k]==i
        new_center[i,:]=np.mean(data[index, :])
    #判定结束
    if(np.all(center==new_center)):
        break
    else:
        center=new_center
        number=number+1
print('聚类分析迭代慈次数:',number )
print('最终聚类结果:',dist[:,k])

 

 

 

3). 用sklearn.cluster.KMeans,鸢尾花花瓣长度数据做聚类,并用散点图显示.

from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# 获取鸢尾花数据集
iris = load_iris()
x = iris.data[:, 1].reshape(-1, 1)  # 鸢尾特征值,需要多少列数据训练就进行
model = KMeans(n_clusters=3)  # 构建模型
model.fit(x)  # 训练
y = model.predict(x)  # 预测样本的聚类索引
print("预测结果:", y)
k= model.cluster_centers_
print("聚类中心:", k)
plt.scatter(x[:, 0], x[:, 0], c=y, s=50, cmap='rainbow')
plt.show()

 

 

 

 

 

 

4). 鸢尾花完整数据做聚类并用散点图显示.

from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# 获取鸢尾花数据集
iris = load_iris()
x = iris.data  # 鸢尾花花瓣长度数据
model = KMeans(n_clusters=3)  # 构建模型
model.fit(x)  # 这里训练所有数据
y = model.predict(x)  # 预测每个样本的聚类索引
print("预测结果:", y)
k = model.cluster_centers_   # 聚类中心
print("聚类中心:", k)
plt.scatter(x[:, 2], x[:, 3], c=y, s=50, cmap='rainbow')
plt.show()

 

5).想想k均值算法中以用来做什么?

每一样事物都有其属性,世界上'' 没有一片完全相同的叶子'',最根本的原因是:每一样的事物本身的属性不是跟其它任何事物的完全相同。但是我们分析和描述客观自然事物的时候,往往是基于对某一事物重要的、突出的和具有普遍性的属性来进行归门别类。通过聚类来描述物体本身最微小的差别,来进行归类,像极了我们阅人无数,通过大量的人来进行学习,来分辨各类各样的人,所以机器学习中通过这些微小的差别进行分辨事物。

posted @ 2020-04-14 14:25  董学沉啦  阅读(142)  评论(0编辑  收藏  举报