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

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

    from sklearn.datasets import load_iris#导入鸢尾花数据集
    import numpy as np
    iris = load_iris()
    data = iris['data']
    data.shape
    n = len(data)#样本个数
    m = data.shape[1]#样本分类个数
    k = 3#设置类中心
    dist = np.zeros([n,k+1])#初始化矩阵
    #1.选中心:
    center = data[:k,:]#选取前面三个样本为初始类中心
    center_new = np.zeros([k,m])
    #2.求距离:
    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])#3.归类
        for i in range(k):#4.求新类中心
            index = dist[:,k]==i
            center_new[i,:]= data[index,:].mean(axis = 0)
        if np.all((center ==center_new)):#判断类中心是否和上一轮类中心相同
            break#5.判定结束
        else:
            center = center_new#更新类中心
    print('150个鸢尾花样本的归类:',dist[:,k])
    import matplotlib.pyplot as plt
    x = data[:,2]#花瓣长度
    y = dist[:,k]#分好的组(类)
    plt.scatter(x,y,c='g')
    plt.scatter(x,y,c='g',alpha='0.6')
    plt.show()
    

     

     

     

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

     

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

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

    可以用来给能够测量具体数据的一组数据,根据数据进行分类,比如说根据西瓜的瓜蒂的长短来分类成几种西瓜。

    翻译 朗读 复制 正在查询,请稍候…… 重试 朗读 复制 复制 朗读 复制 via 谷歌翻译(国内)

  • 相关阅读:
    [HDU3555]Bomb
    [POJ3096]Surprising Strings
    [POJ1068]Parencodings
    [POJ3295]Tautology
    [POJ2586]Y2K Accounting Bug
    [POJ2109]Power of Cryptography
    [POJ1328]Radar Installation
    Binary search tree system and method
    ES6详解八:模块(Module)!--各种导入导出方法
    java在cmd下编译和执行引用jar的类
  • 原文地址:https://www.cnblogs.com/moxiaomo/p/12711713.html
Copyright © 2011-2022 走看看