zoukankan      html  css  js  c++  java
  • 3-K均值算法

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

     实现代码:

    from sklearn.datasets import load_iris
    import  numpy as np
    import matplotlib.pyplot as plt
    # 1.实现K-Means算法
    iris = load_iris()   #导入数据
    data = iris.data[:,2].reshape(-1,1)
    n = len(data)       #样本总数
    k = 3               #设置中心个数
    dist = np.zeros([n, k+1])   #初始化距离矩阵,第k列存放得到的每个样本的类别
    center=random.sample(list(data), k)     #初始类中心,随机选取3个样本作为初始类中心
    center_new = np.zeros([k,1])  #新的类中心
    
    while True:
        for i in range(n):
            for j in range(k):
                dist[i,j] = np.sqrt((data[i] - center[j])**2) #计算欧氏距离
            dist[i,k] = np.argmin(dist[i,:k])         #根据最近准则进行归类
    
        
        for i in range(k):
            index = dist[:, k] == i     #判断属于哪一类
            center_new[i] = data[index].mean(axis = 0)#求新的类中心
    
        if  np.all(center == center_new):      #判断新的类中心是否与上一轮的类中心相同,若相同则跳出循环
            break
        else:
            center = center_new     #更新类中心
    print('150个样本的归类:',dist[:, k])
    
    plt.scatter(data[:,0], data[:,0],c=dist[:, k])
    plt.show()

     运行结果:

    2). 用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[:,2]#选取鸢尾花花瓣长度数据
    x=data.reshape(-1,1)
    
    y=KMeans(n_clusters=3) #构建模型,n_clusters指定中心数为3个
    y.fit(x) #训练模型
    
    y_pre=y.predict(x) 
    
    plt.scatter(x[:,0],x[:,0],c=y_pre)
    plt.show()

    运行结果:

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

     实现代码:

    import matplotlib.pyplot as plt
    from sklearn.cluster import KMeans
    from sklearn.datasets import load_iris
    
    
    iris=load_iris()
    x=iris.data        #鸢尾花完整数据
    y=KMeans(n_clusters=3)
    y.fit(x)
    y_pre=y.predict(x)
    
    plt.scatter(x[:,0],x[:,2],c=y_pre)
    plt.show()
    

      

    运行结果:

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

     可用于对图像进行压缩显示;网站对网络用户进行喜好分析;工厂按制造指标对库存进行分组

  • 相关阅读:
    Quartz.net -- Corn表达式
    ASP.NET Core 3.x RESTful API学习记录--获取父子关系资源
    ASP.NET Core 3.x RESTful API学习记录--AutoMapper简单使用
    ASP.NET Core 3.x RESTful API学习记录--ActionResult<T>
    ASP.NET Core 3.x RESTful API学习记录-- 面向外部的Model
    ASP.NET Core 3.x RESTful API学习记录--内容协商
    ASP.NET Core 3.x RESTful API学习记录--HTTP 状态码;错误和故障
    ASP.NET Core 3.x RESTful API学习记录--HTTP 方法
    ASP.NET Core 3.x RESTful API学习记录--API的对外合约
    asp.net core2 mvc 基础教程--CI/CD Azure DevOps
  • 原文地址:https://www.cnblogs.com/a1120139442/p/12714924.html
Copyright © 2011-2022 走看看