zoukankan      html  css  js  c++  java
  • Python图像处理(11):k均值

    快乐虾

    http://blog.csdn.net/lights_joy/

    欢迎转载,但请保留作者信息



    K均值是一个经典的聚类算法,我们试试在python下使用它。

    首先以(-1.5, -1.5)(1.5, 1.5)为中心点各生成10个点的随机坐标值,我们希望用K均值算法将它们正确的分类。


    # 创建測试的数据点。2类
    # 以(-1.5, -1.5)为中心
    rand1 = np.ones((10,2)) * (-2) + np.random.rand(10, 2)
    print(rand1)
    
    # 以(1.5, 1.5)为中心
    rand2 = np.ones((10,2)) + np.random.rand(10, 2)
    print(rand2)
    
    # 合并随机点
    data = np.vstack((rand1, rand2))
    

    接下来kmeans出场。

    这个函数的python原型为:

    In [14]: help(cv2.kmeans)

    Help on built-in function kmeans:

     

    kmeans(...)

        kmeans(data, K,bestLabels, criteria, attempts, flags[, centers]) -> retval, bestLabels,centers 


    在我们的脚本中调用它:

    # kmeans
    (ret, label, center) = cv2.kmeans(data, 2, None, (cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_MAX_ITER, 10, 0.1), 10, cv2.KMEANS_RANDOM_CENTERS )
    

    通过此函数我们得到了2个类别的中心点和每一个点所属的类别。

     

    最后按分类显示:

    # 按label进行分类显示
    idx = np.hstack((label, label))
    for i in range(0, 2) :
        type_data = data[idx == i]
        type_data = np.reshape(type_data, (type_data.shape[0] / 2, 2))
        plt.plot(type_data[:,0], type_data[:,1], 'o')
    
    plt.show()
    

    非常好的一个结果:












    
  • 相关阅读:
    使用js固定div的高度
    iphone开发常用编码
    php mssql扩展SQL查询中文字段名解决方法
    Android带进度条文件上传
    PHP中替换换行符
    Android Timer计时器
    语法:MySQL中INSERT INTO SELECT的使用
    mysql的多表关联更新怎么写?
    Page Utility
    How do use CheckBoxList Utility
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/6794638.html
Copyright © 2011-2022 走看看