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 谷歌翻译(国内)

  • 相关阅读:
    PMP:9.项目资源管理
    @JsonIgnore忽略JSON字段
    xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
    android加载不到.so文件
    报错Failed to install the following SDK components: platforms;android-29 Android SDK Platform 29
    Mac 终端启动运行Redis
    Mac 命令行执行Sublime
    Bean转为Json指定字段名,防止被修改大小写
    Rest接口入参忽略大小写 使用jackson注解
    mongo批量导入
  • 原文地址:https://www.cnblogs.com/moxiaomo/p/12711713.html
Copyright © 2011-2022 走看看