zoukankan      html  css  js  c++  java
  • C均值算法实现

    ###总结

    1、np.array是没有空数组的,需要先成立一个空的list,给他添加元素,然后将它转化为np.array的格式

    2、直接使两个center相等,以后他们会一直相等,因为使用的是同一个指针。

    ###源程序

    import numpy as np
    import matplotlib.pyplot as plt
    
    dataset = np.array([[0, 0], [1, 0], [0, 1], [1, 1], [2, 1],
                       [1, 2], [2, 2], [3, 2], [6, 6], [7, 6],
                       [8, 6], [6, 7], [7, 7], [8, 7], [9, 7],
                       [7, 8], [8, 8], [9, 8], [8, 9], [9, 9]])
    
    plt.figure(1)
    plt.scatter(dataset[:, 0], dataset[:, 1])
    
    C = 2
    C0 = []
    C1 = []
    center = dataset[0:C, :]
    center = center.astype(float)
    center_ = np.copy(center) #注意不能直接等于哦
    while 1:
    
        #使用欧氏距离聚类
        for xi in dataset:
            if np.linalg.norm(center[0, :] - xi) < np.linalg.norm(center[1, :] - xi):
                C0.append(xi)
            else:
                C1.append(xi)
    
        #计算聚类中心
        C0 = np.array(C0)
        C1 = np.array(C1)
        center_[0] = np.mean(C0, axis=0)
        center_[1] = np.mean(C1, axis=0)
    
        #判断是否达到最优
        if np.sum(np.abs(center-center_)) <= 0.0:
            break
    
        #更新聚类中心
        center = center_
        C0 = []
        C1 = []
    
    plt.figure(2)
    plt.scatter(C0[:, 0], C0[:, 1], marker='o', color='b')
    plt.scatter(C1[:, 0], C1[:, 1], marker='o', color='r')
    plt.show()
  • 相关阅读:
    vc枚举本机端口信息API
    xmpp 与服务器连接并身份验证成功
    xmpp 常见错误 一
    xmpp 环境配置
    使用宏定义创建单例
    iOS知识列表
    ios sqlite 简单使用
    关于游戏
    开通博客园博客的第一天
    如何让移动设备的宽与浏览器视图的宽保持一致
  • 原文地址:https://www.cnblogs.com/jingxin-gewu/p/14543409.html
Copyright © 2011-2022 走看看