Python实现k-means算法


Posted in Python onFebruary 23, 2018

本文实例为大家分享了Python实现k-means算法的具体代码,供大家参考,具体内容如下

这也是周志华《机器学习》的习题9.4。

数据集是西瓜数据集4.0,如下

编号,密度,含糖率
1,0.697,0.46
2,0.774,0.376
3,0.634,0.264
4,0.608,0.318
5,0.556,0.215
6,0.403,0.237
7,0.481,0.149
8,0.437,0.211
9,0.666,0.091
10,0.243,0.267
11,0.245,0.057
12,0.343,0.099
13,0.639,0.161
14,0.657,0.198
15,0.36,0.37
16,0.593,0.042
17,0.719,0.103
18,0.359,0.188
19,0.339,0.241
20,0.282,0.257
21,0.784,0.232
22,0.714,0.346
23,0.483,0.312
24,0.478,0.437
25,0.525,0.369
26,0.751,0.489
27,0.532,0.472
28,0.473,0.376
29,0.725,0.445
30,0.446,0.459

算法很简单,就不解释了,代码也不复杂,直接放上来:

# -*- coding: utf-8 -*- 
"""Excercise 9.4"""
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import sys
import random

data = pd.read_csv(filepath_or_buffer = '../dataset/watermelon4.0.csv', sep = ',')[["密度","含糖率"]].values

########################################## K-means ####################################### 
k = int(sys.argv[1])
#Randomly choose k samples from data as mean vectors
mean_vectors = random.sample(data,k)

def dist(p1,p2):
  return np.sqrt(sum((p1-p2)*(p1-p2)))
while True:
  print mean_vectors
  clusters = map ((lambda x:[x]), mean_vectors) 
  for sample in data:
    distances = map((lambda m: dist(sample,m)), mean_vectors) 
    min_index = distances.index(min(distances))
    clusters[min_index].append(sample)
  new_mean_vectors = []
  for c,v in zip(clusters,mean_vectors):
    new_mean_vector = sum(c)/len(c)
    #If the difference betweenthe new mean vector and the old mean vector is less than 0.0001
    #then do not updata the mean vector
    if all(np.divide((new_mean_vector-v),v) < np.array([0.0001,0.0001]) ):
      new_mean_vectors.append(v)  
    else:
      new_mean_vectors.append(new_mean_vector)  
  if np.array_equal(mean_vectors,new_mean_vectors):
    break
  else:
    mean_vectors = new_mean_vectors 

#Show the clustering result
total_colors = ['r','y','g','b','c','m','k']
colors = random.sample(total_colors,k)
for cluster,color in zip(clusters,colors):
  density = map(lambda arr:arr[0],cluster)
  sugar_content = map(lambda arr:arr[1],cluster)
  plt.scatter(density,sugar_content,c = color)
plt.show()

运行方式:在命令行输入 python k_means.py 4。其中4就是k。
下面是k分别等于3,4,5的运行结果,因为一开始的均值向量是随机的,所以每次运行结果会有不同。

Python实现k-means算法

Python实现k-means算法

Python实现k-means算法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的复制操作及copy模块中的浅拷贝与深拷贝方法
Jul 02 Python
Python基于pillow判断图片完整性的方法
Sep 18 Python
使用Python将数组的元素导出到变量中(unpacking)
Oct 27 Python
python 生成器生成杨辉三角的方法(必看)
Apr 10 Python
Pycharm 设置默认头的图文教程
Jan 17 Python
python学生信息管理系统实现代码
Dec 17 Python
Python爬取阿拉丁统计信息过程图解
May 12 Python
keras 自定义loss model.add_loss的使用详解
Jun 22 Python
python的flask框架难学吗
Jul 31 Python
python字符串拼接+和join的区别详解
Dec 03 Python
Python使用Kubernetes API访问集群
May 30 Python
使用Djongo模块在Django中使用MongoDB数据库
Jun 20 Python
python语言中with as的用法使用详解
Feb 23 #Python
python实现定时自动备份文件到其他主机的实例代码
Feb 23 #Python
Python机器学习算法之k均值聚类(k-means)
Feb 23 #Python
python3调用R的示例代码
Feb 23 #Python
python中kmeans聚类实现代码
Feb 23 #Python
python实现SOM算法
Feb 23 #Python
python实现k-means聚类算法
Feb 23 #Python
You might like
一贴学会PHP 新手入门教程
2009/08/03 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
2015/05/21 PHP
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
2017/10/12 PHP
php-fpm添加service服务的例子
2018/04/27 PHP
PHP单元测试框架PHPUnit用法详解
2019/01/23 PHP
IE8 chrome中table隔行换色解决办法
2010/07/09 Javascript
基于jquery的横向滚动条(滑动条)
2011/02/24 Javascript
JQuery循环滚动图片代码
2011/12/08 Javascript
用jQuery模拟页面加载进度条的实现代码
2011/12/19 Javascript
JS 删除字符串最后一个字符的实现代码
2014/02/20 Javascript
js判断滚动条是否已到页面最底部或顶部实例
2014/11/20 Javascript
js实现点击图片将图片地址复制到粘贴板的方法
2015/02/16 Javascript
javascript实现 百度翻译 可折叠的分享按钮列表
2015/03/12 Javascript
浅谈js函数三种定义方式 &amp; 四种调用方式 &amp; 调用顺序
2017/02/19 Javascript
ES6使用export和import实现模块化的方法
2018/09/10 Javascript
KOA+egg.js集成kafka消息队列的示例
2018/11/09 Javascript
vue实现商城秒杀倒计时功能
2019/12/12 Javascript
Javascript查看大图功能代码实现
2020/05/07 Javascript
[02:08]DOTA2英雄基础教程 马格纳斯
2014/01/17 DOTA
python中使用正则表达式的连接符示例代码
2017/10/10 Python
浅谈Python处理PDF的方法
2017/11/10 Python
python的Crypto模块实现AES加密实例代码
2018/01/22 Python
TensorFlow深度学习之卷积神经网络CNN
2018/03/09 Python
python爬虫 requests-html的使用
2020/11/30 Python
python 基于opencv实现图像增强
2020/12/23 Python
CSS3 RGBA色彩模式使用实例讲解
2016/04/26 HTML / CSS
德国大型的家具商店:Pharao24.de
2016/10/02 全球购物
Timex手表官网:美国运动休闲手表品牌
2017/01/28 全球购物
英国时尚运动品牌的合集:The Sports Edit
2017/12/20 全球购物
玉兰油美国官网:OLAY美国
2018/10/25 全球购物
JavaScript实现前端网页版倒计时
2021/03/24 Javascript
酒店值班经理的工作职责范本
2014/02/18 职场文书
2014年办公室个人工作总结
2014/11/12 职场文书
2014年大学班级工作总结
2014/11/14 职场文书
演讲稿之感恩老师(三篇范文)
2019/09/06 职场文书
nginx代理实现静态资源访问的示例代码
2022/07/07 Servers