python实现k均值算法示例(k均值聚类算法)

 更新时间:2014年03月16日 10:39:24   作者:  
这篇文章主要介绍了python实现k均值算法示例,简单实现平面的点K均值分析,使用欧几里得距离,并用pylab展示,需要的朋友可以参考下

简单实现平面的点K均值分析,使用欧几里得距离,并用pylab展示。

复制代码 代码如下:

import pylab as pl

#calc Euclid squire
def calc_e_squire(a, b):
    return (a[0]- b[0]) ** 2 + (a[1] - b[1]) **2

#init the 20 point
a = [2,4,3,6,7,8,2,3,5,6,12,10,15,16,11,10,19,17,16,13]
b = [5,6,1,4,2,4,3,1,7,9,16,11,19,12,15,14,11,14,11,19]

#define two k_value
k1 = [6,3]
k2 = [6,1]

#defint tow cluster
sse_k1 = []
sse_k2 = []
while True:
    sse_k1 = []
    sse_k2 = []
    for i in range(20):
        e_squire1 = calc_e_squire(k1, [a[i], b[i]])
        e_squire2 = calc_e_squire(k2, [a[i], b[i]])
        if (e_squire1 <= e_squire2):
            sse_k1.append(i)
        else:
            sse_k2.append(i)

    #change k_value
    k1_x = sum([a[i] for i in sse_k1]) / len(sse_k1)
    k1_y = sum([b[i] for i in sse_k1]) / len(sse_k1)

    k2_x = sum([a[i] for i in sse_k2]) / len(sse_k2)
    k2_y = sum([b[i] for i in sse_k2]) / len(sse_k2)

    if k1 != [k1_x, k1_y] or k2 != [k2_x, k2_y]:
        k1 = [k1_x, k1_y]
        k2 = [k2_x, k2_y]
    else:
        break

kv1_x = [a[i] for i in sse_k1]
kv1_y = [b[i] for i in sse_k1]

kv2_x = [a[i] for i in sse_k2]
kv2_y = [b[i] for i in sse_k2]

pl.plot(kv1_x, kv1_y, 'o')
pl.plot(kv2_x, kv2_y, 'or')

pl.xlim(1, 20)
pl.ylim(1, 20)
pl.show()

相关文章

  • python微信好友数据分析详解

    python微信好友数据分析详解

    这篇文章主要为大家详细介绍了python微信好友数据分析,实现对微信好友的获取,并对省份、性别等数据分析,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • python连接、操作mongodb数据库的方法实例详解

    python连接、操作mongodb数据库的方法实例详解

    这篇文章主要介绍了python连接、操作mongodb数据库的方法,结合实例形式详细分析了Python针对MongoDB数据库的连接、查询、排序等相关操作技巧,需要的朋友可以参考下
    2019-09-09
  • python实现简单爬虫功能的示例

    python实现简单爬虫功能的示例

    本文主要是介绍python实现简单爬虫功能的示例,主要实现了把我们想要的图片爬虫到本地的一个示例,有需要的朋友可以了解一下。
    2016-10-10
  • python中str内置函数用法总结

    python中str内置函数用法总结

    在本篇文章里小编给大家整理了一篇关于python中str内置函数用法总结内容,有需要的朋友们可以学习下。
    2020-12-12
  • 使用 Python 玩转 GitHub 的贡献板(推荐)

    使用 Python 玩转 GitHub 的贡献板(推荐)

    这篇文章主要介绍了使用 Python 玩转 GitHub 的贡献板的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • python注册钉钉回调事件的实现

    python注册钉钉回调事件的实现

    钉钉有回调事件流程,本文主要介绍了python注册钉钉回调事件的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Python中is和==的区别详解

    Python中is和==的区别详解

    这篇文章主要介绍了Python中is和==的区别详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • 使用Python的Matplotlib绘制渐变的彩色曲线

    使用Python的Matplotlib绘制渐变的彩色曲线

    这篇文章主要介绍了使用Python的Matplotlib绘制渐变的彩色曲线,Matplotlib是Python生态圈中应用最为广泛的2D绘图库,通过扩展工具包mplot3d,也可以绘制简单的3D模型,需要的朋友可以参考下
    2023-08-08
  • Python 使用类写装饰器的小技巧

    Python 使用类写装饰器的小技巧

    装饰器是一个返回函数的函数。写一个装饰器,除了最常见的在函数中定义函数以外,Python还允许使用类来定义一个装饰器。这篇文章给大家分享Python 使用类写装饰器的小技巧,一起看看吧
    2018-09-09
  • python插入排序算法的实现代码

    python插入排序算法的实现代码

    这篇文章主要介绍了python插入排序算法的实现代码,大家参考使用吧
    2013-11-11

最新评论