• 第八次作业


    1.选取初始数据中的k个对象作为初始的中心

    #随机生成一组整数sample
    import numpy as np
    sample=np.random.randint(1,150,[50,1])  
    k=3#要分成的类别数
    y=np.zeros(50)
    #定义一个函数来存放开始的聚类中心kc
    def start_center(sample,k):
        return sample[:3]
    kc=start_center(sample,k) 

    2. 按照数据与这些聚类中心的欧氏距离,分配到最近的聚类中心

    def nearest(kc,i):
        d=abs(kc-i)
        t=np.where(d ==np.min(d))
        return t[0][0]
    nearest(kc,34)
    #对其进行对应的分类
    ​def xclassify(sample,y,kc):
        for i in range(30):
            y[i]=nearest(kc,sample[i])
        return y
    y=xclassify(sample,y,kc)
    print(kc,y)
    

    3.更新聚类中心

    def kcmean(sample,y,kc,k):
        l=list(kc)
        flag=False
        for j in range(k):#对k的类别进行遍历
            m=np.where(y==j)
            print(j,sample[j])
            junzhi=np.mean(sample[m])#求出每个类别的均值
            print(kc[j],junzhi)
            if l[j]!=junzhi: #判断求出的均值是否与开始的看类别值相等
                l[j]=junzhi
                flag=True
        return(np.array(l),flag)
    

    4.判断聚类中心和目标函数的值是否发生改变

    flag=True
    while flag:
        y=xclassify(sample,y,kc)
        kc,flag=kcmean(sample,y,kc,k)
        print(y,kc)
    print(sample,y)
    

    5.鸢尾花花瓣长度做聚类分析并用散点图显示出来

    import matplotlib.pyplot as plt
    from sklearn.datasets import load_iris
    import numpy as np
    # 鸢尾花花瓣长度数据做聚类并用散点图显示
    data=load_iris()
    data_length=data['data'][:,2]#取出鸢尾花花瓣的长度
    x=data_length
    y=np.zeros(x.shape[0])
    kc = start_center(x,3)
    flag=True
    while flag:
        y=xclassify(x,y,kc)
        kc,flag=kcmean(x,y,kc,k)
    print(y,kc)
    #用散点图来显示
    plt.scatter(x,x,s=x,c=y,cmap='rainbow',alpha=0.5,linewidths=4)
    plt.show()
    

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

    from sklearn.datasets import load_iris
    from sklearn.cluster import KMeans
    import matplotlib.pyplot as plt
    import numpy as np
    # 用sklearn.cluster.KMeans,鸢尾花花瓣长度数据做聚类并用散点图显示. data=load_iris() data_length=data['data'][:,2:3]#取出鸢尾花花瓣的长度 x=data_length #y=np.zeros(x.shape[0]) k1=KMeans(n_clusters=3)#将其类别分为3类 k1.fit(x) kc1=k1.cluster_centers_ y_kmeans=k1.predict(x)##预测每个样本的聚类索引 print(y_kmeans,kc1) plt.scatter(x,np.linspace(1,150,150),c=y_kmeans,marker='x',cmap='rainbow',linewidths=4) plt.show()

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

    # 用sklearn.cluster.KMeans,完整的鸢尾花数据做聚类并用散点图显示.
    data=load_iris()
    x2=data.data
    k2=KMeans(n_clusters=3)#将其类别分为3类
    k2.fit(x2)
    kc2=k2.cluster_centers_
    y_kmeans2=k2.predict(x2)##预测每个样本的聚类索引
    print(y_kmeans2,kc2,len(y_kmeans2))
    plt.scatter(x2[:,0],x2[:,1],c=y_kmeans2,marker='p',cmap='rainbow',linewidths=4)
    plt.show()
    

      

  • 相关阅读:
    charindex代替like并非"更快更全面"
    SQLServer2005中的几个统计技巧
    SQLServer获取Excel中所有Sheet
    SQLServer2005的查询独占模拟
    SSAS事实表和维度表数据类型必须一致
    monodevelop 出现has line endings which differ from the policy settings.的解决方法
    mono for android Main.axml
    vs2010 错误提示框:文件加载 使用 简体中文(GB2312
    在Virtual Machine上运行Hello China的方法和工具
    embed基本语法
  • 原文地址:https://www.cnblogs.com/czx98/p/9945391.html
Copyright © 2020-2023  润新知