python 实现kmeans聚类
2024-08-31 06:24:28
编程中在做数值相等判断的时候,直接使用==
判断并不可靠。实际上经过运算后的两个值(浮点型)并不可能完全一致,可能会因为小数点后的些许差异导致判断为false。
比如:
1
|
print 1e - 5 = = 1e - 6 / / 这肯定是false,但是实际这两个值可以看作近似相等。 |
在kmeans中判断是否结束循环,就是判断重新计算的聚类中心点是否和原聚类中心点一致,实际上新旧聚类中心点之间会有一个可允许的误差。修改代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
import numpy as np def kmeans(data, n, m, k): rarray = np.random.random(size = k) rarray = np.floor(rarray * n) rarray.astype( int ) cls = np.zeros([ 1 ,n],np. int ) center = np.take(data,rarray) pcenter = np.zeros([k,m]) end = True while end: for i in xrange (n): tmp = data[i] - center tmp = np.square(tmp) tmp = np. sum (tmp,axis = 1 ) cls [i] = np.argmin(tmp) center = np.zeros([k,m]) count = np.zeros([ 1 ,k],np. int ) for i in xrange (n): center[ cls [i]] = center[ cls [i]] + data[i] count[ cls [i]] = count[ cls [i]] + 1 if np. sum (center / count - pcenter) < = 1e - 4 : end = False pcenter = center / count |
最新文章
- 基于redis分布式锁实现“秒杀”
- mfc ui库
- 菜鸟-手把手教你把Acegi应用到实际项目中(7)-缓存用户信息
- POJ 1450
- Stanford parser:入门使用
- 《赢在用户:Web人物角色创建和应用实践指南》阅读总结
- Centos 6.5升级安装Git
- iOS开发UI篇-tableView在编辑状态下的批量操作(多选)
- Linux搭建SSH服务器
- [置顶] 步步辨析JS中的对象成员
- jar包问题
- Java中需要总结的几个问题
- ui-router多视图+嵌套视图+传参综合练习
- LightOJ DNA Prefix(字典树+dfs)
- DVWA 黑客攻防演练(二)暴力破解 Brute Froce
- SpringBoot2.x使用EasyPOI导入Excel浅谈
- C#模拟HTTP请求Post JSON
- 解决IDEA授权报错
- 《Linux 性能及调优指南》1.4 硬盘I/O子系统
- Spring中ApplicationEvent和ApplicationListener封装
热门文章
- wordpress相关
- gradle打包android (实现外部导入签名文件、多渠道打包、导入ant脚本)
- .m文件导入C++头文件带来的错误
- Windowns 无法启动 Office Software Protection Platform 服务,系统找不到指定的文件
- machine learning in coding(python):使用贪心搜索【进行特征选择】
- BNU 13289 Energetic Pandas DP
- 3n+1问题
- servlet中的中文乱码问题
- Python开发利器PyCharm 2.7附注册码
- js getyear和getfullyear