关于KMeans和range的使用
#!/usr/bin/python
#-*-coding:utf-8-*-
import numpy as np
from sklearn.cluster import KMeans
from scipy.spatial.distance import cdist
import matplotlib.pyplot as plt
cluster1 = np.random.uniform(0.5, 1.5, (2, 10))
cluster2 = np.random.uniform(3.5, 4.5, (2, 10))
X = np.hstack((cluster1, cluster2)).T
K = range(1, 10)
meandistortions = []
for k in K:
kmeans = KMeans(n_clusters=k)
kmeans.fit(X)
#首先求出X和聚簇中心的距离(20个点*5个聚簇中心)
#然后以每个点和5个聚簇中心为一组,选出一个距离最小值(注意axis=1,否则求出20个点*5个聚簇中心最小值,是唯一值)
#然后将这20个最小值求和,并添加到meandistortions
meandistortions.append(sum(np.min(cdist(X, kmeans.cluster_centers_, 'euclidean'), axis=1))/X.shape[0])
plt.plot(K, meandistortions, 'rx-')
plt.xlabel('k')
plt.ylabel('Average distortion')
plt.title('Selecting k with the Elbow Method')
plt.show()
S = range(1,10) #等价 [1,10)
for s in S:
print(s)
print('over')
1
2
3
4
5
6
7
8
9
over
#特别注意,此处range在for循环中,不包括最后一个数10,但是包括第一个数1
最新文章
- ViewPager和Fragment的结合使用fragment里包含着listview的常见问题
- 图像映射map
- php.ini中有关安全的设置
- 升级xcode7.0 第三方库不能用的解决方法(bitcode是什么鬼?)
- 关于PHP中Session文件过多的问题
- easyui accordion—手风琴格子始终展开和多个格子展开
- 48种CIFilter
- css3 文本记
- inconvertible types; cannot cast 'android.supoort.v4.app.Fragment' to 'com.example.sevenun.littledemo.fragment.NewsTitleFragment'
- [转]给Linux系统管理员准备的Nmap命令的29个实用范例+ tsysv 系统服务器管理器
- Android依赖注入:Google Guice on Android的使用及相关资源
- Django - 通用视图
- C#实现谷歌翻译API
- Office 365 应用开发的 .NET Core 模板库
- Idea中最最常见的快捷键
- mongo 索引 安全、备份与恢复
- 【洛谷P4878】布局
- PSD的单位及计算方法[转]
- 【C#】读取Excel中嵌套的Json对象,Json带斜杠的问题(其二)
- squid常用操作
热门文章
- 揭开HTTPS的神秘面纱
- C++入门经典-例3.20-使用continue跳出循环
- Java基础教程免费分享
- Ajax学习--理解 Ajax 及其工作原理
- sql server中 设置与查看锁的超时时间(ZT) @@LOCK_TIMEOUT
- 浏览器端-W3School-JavaScript-HTML DOM:HTML DOM Event 对象
- ERROR: Command ";python setup.py egg_info"; python-nss
- nodejs之express框架商品管理系统登录功能
- LoadRunner 技巧之 添加事务
- mxml 嵌入as代码出错,缺少 CDATA