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()
  • 相关阅读:
    Hibernate 学习-3
    Hibernate反向工程使用心得
    MyEclipse中自动整合Spring3+Hibernate/JPA
    jsp页面不显示问题
    jstl获取当前系统时间的方法
    js实现12小时时钟
    从servlet跳到jsp页面,并用jstl 进行判断和显示方法
    jsp调用js文件时出现乱码
    常见异常总结
    js实现表单验证
  • 原文地址:https://www.cnblogs.com/jingxin-gewu/p/14543409.html
Copyright © 2011-2022 走看看