#!/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

最新文章

  1. ViewPager和Fragment的结合使用fragment里包含着listview的常见问题
  2. 图像映射map
  3. php.ini中有关安全的设置
  4. 升级xcode7.0 第三方库不能用的解决方法(bitcode是什么鬼?)
  5. 关于PHP中Session文件过多的问题
  6. easyui accordion—手风琴格子始终展开和多个格子展开
  7. 48种CIFilter
  8. css3 文本记
  9. inconvertible types; cannot cast 'android.supoort.v4.app.Fragment' to 'com.example.sevenun.littledemo.fragment.NewsTitleFragment'
  10. [转]给Linux系统管理员准备的Nmap命令的29个实用范例+ tsysv 系统服务器管理器
  11. Android依赖注入:Google Guice on Android的使用及相关资源
  12. Django - 通用视图
  13. C#实现谷歌翻译API
  14. Office 365 应用开发的 .NET Core 模板库
  15. Idea中最最常见的快捷键
  16. mongo 索引 安全、备份与恢复
  17. 【洛谷P4878】布局
  18. PSD的单位及计算方法[转]
  19. 【C#】读取Excel中嵌套的Json对象,Json带斜杠的问题(其二)
  20. squid常用操作

热门文章

  1. 揭开HTTPS的神秘面纱
  2. C++入门经典-例3.20-使用continue跳出循环
  3. Java基础教程免费分享
  4. Ajax学习--理解 Ajax 及其工作原理
  5. sql server中 设置与查看锁的超时时间(ZT) @@LOCK_TIMEOUT
  6. 浏览器端-W3School-JavaScript-HTML DOM:HTML DOM Event 对象
  7. ERROR: Command "python setup.py egg_info" python-nss
  8. nodejs之express框架商品管理系统登录功能
  9. LoadRunner 技巧之 添加事务
  10. mxml 嵌入as代码出错,缺少 CDATA