• 3.K均值算法


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

    30张牌

    第一次划分

    第二次划分

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

    源代码:

    from sklearn.datasets import load_iris
    import numpy as np
    iris = load_iris()
    data = iris['data']
    data.shape
    data[:,0]
    n = len(data)   #样本个数
    m = data.shape[1]   #样本属性个数
    k = 3   #类中心的个数
    dist = np.zeros([n, k+1]) #初始化距离矩阵,最后一列存放每个样本的类别
    #1.选中心
    center = data[:k, :] #初始类中心,选取前3个样本作为初始类中心
    centernew = np.zeros([k, m])
    
    while True:
        for i in range(n):
            for j in range(k):
                dist[i, j] = np.sqrt(sum((data[i, :] - center[j, :])**2))#2.求距离
            dist[i, k] = np.argmin(dist[i, :k])#3.归类
    
        #4.求新类中心
        for i in range(k):
           index = dist[:, k] == i   #判断距离矩阵中最后一列归属为哪一类
           centernew[i, :] = data[index, :].mean(axis=0)
    
        #5.判定结果
        if np.all((center == centernew)):
            break
        else:
            center = centernew
    print('150个样本的归类:', dist[:, k])

    结果:

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

    源代码:

    import matplotlib.pyplot as plt
    from sklearn.cluster import KMeans
    from sklearn.datasets import load_iris
    
    iris=load_iris()
    data=iris.data[:,1]
    x=data.reshape(-1,1)
    
    y=KMeans(n_clusters=3)
    y.fit(x)
    
    y_pre=y.predict(x)
    
    plt.scatter(x[:,0],x[:,0],c=y_pre,s=50,cmap='rainbow')
    plt.show()

    结果:

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

    源代码:

    import matplotlib.pyplot as plt
    from sklearn.cluster import KMeans
    from sklearn.datasets import load_iris
    
    data=load_iris()
    x=data.data
    y=KMeans(n_clusters=3)
    y.fit(x)
    y_pre=y.predict(x)
    
    plt.scatter(x[:,2],x[:,3],c=y_pre,s=100,cmap='rainbow',alpha=0.5)
    plt.show()

    结果:

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

    k均值算法就是把所有事物根据划分的点数来按“”较靠近“”进行分类,从而得出一个预测规律。

    在生活中,我觉得可以用来测试人们的生活习惯和身材肥胖的关系。

  • 相关阅读:
    EasyUI笔记(三)Window窗口
    EasyUI笔记(二)Layout布局
    从零构建Flink SQL计算平台
    从零构建Flink SQL计算平台
    Hystrix压测
    Java对象属性复制备忘
    Java垃圾回收手册翻译
    一次虚拟机升级和参数调整记录
    获取不同虚拟机参数的终极方法
    Dataset数据的XML持久化处理
  • 原文地址:https://www.cnblogs.com/tao614/p/12695146.html
Copyright © 2020-2023  润新知