首页 > 代码库 > Tensorflow快速入门1--实现K-Means聚类算法

Tensorflow快速入门1--实现K-Means聚类算法

  快速入门1–实现K-Means聚类算法
  
  环境:
  
  虚拟机
  
  版本:0.12.0(仅使用cpu下,pip命令安装)
  
  目录
  
  1.环境搭建
  
  的安装
  
  1.2简单测试
  
  学习文档
  
  相关的库Seaborn、pandas安装
  
  实现K-Means聚类算法
  
  2.1最基本的K-Means聚类算法步骤
  
  实现K-Means聚类算法
  
  2.3测试数据准备
  
  2.4完整的kmeans.py文件
  
  2.5简单测试结果
  
  1.环境搭建
  
  的安装
  
  这里通过pip安装(只安装cpu单机版的,有条件的可以安装gpu下的)。
  
  1
  
  2
  
  1
  
  2
  
  注意:如果pip安装Tensorflow时失败,可尝试上述命令重新安装。再次安装则成功。
  
  1.2简单测试
  
  按照下述简单测试Tensorflow安装成功。
  
  42
  
  >>>
  
  1
  
  2
  
  3
  
  4
  
  5
  
  6
  
  7
  
  8
  
  9
  
  10
  
  11
  
  12
  
  13
  
  14
  
  1
  
  2
  
  3
  
  4
  
  5
  
  6
  
  7
  
  8
  
  9
  
  10
  
  11
  
  12
  
  13
  
  14
  
  这里写图片描述
  
  学习文档
  
  (张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,Flow为张量从流图的一端流动到另一端计算过程。Flow使用基础数据结构—tensor来表示所有数据。一个tensor可以看成是一个拥用静态数据类型动态大小且多维的数组,它可以从布尔或string转换成数值类型。
  
  的具体细节及框架可在中文社区学习,上面内容非常详细:
  
  源码下载:
  
  相关的库Seaborn、pandas安装
  
  支持多种前端语言,但对Python的支持是最好的,因此开发大多基于Python。在py www.jyz521.com/thon编程中,计算及画图需要用到一些包,主要有matplotlib、Seaborn、NumPy、pandas等。这里安装Seaborn(其实也是基于matplotlib的,用起来更方便简洁),数据用库pandas,画图时用起来更方便简洁(NumPy也一样,画图时稍微麻烦)。
  
  下自带的有pyth www.yixingsyle.cn/on。这里建议以下四个都安装一下。
  
  安装Seaborn:
  
  安装pandas:
  
  安装numpy:
  
  安装matplotlib:
  
  由于后续开发中需要利用python计算等等,所以这里可以把numpy和matplotlib也都安装上。
  
  当然也可以使用apt-get安装,安装不成功时上网搜搜解决方法,这个应该很简单的。
  
  实现K-Means聚类算法
  
  2.1最基本的K-Means聚类算法步骤
  
  这里写图片描述
  
  上述是最基本的k-menas算法,各种改进自行查找资料及文档。
  
  实现K-Means聚类算法
  
  这里使用Sachin Joglekar基于tensorflow www.shaixiu.net写的一个kmeans模板,见Sachin Jogleka的原文
  
  2.3测试数据准备
  
  注意:测试数据是随机生成的数据,每次运行结果会不一样
  
  生成测试数据
  
  数据数量
  
  # 二维正态分布
  
  1
  
  2
  
  3
  
  4
  
  5
  
  6
  
  7
  
  8
  
  9
  
  1
  
  2
  
  3
  
  4
  
  5
  
  6
  
  7
  
  8
  
  9
  
  注意:单独运行上述代码需要导入包:
  
  1
  
  2
  
  3
  
  4
  
  1
  
  2
  
  3
  
  4
  
  2.4完整的kmeans.py文件
  
  ,可以在终端中直接使用:
  
  路径+kmeans.py运行
  
  的基于tensorflow写的一个kmeans模板
  
  """
  
  应该是一个n*k的二维的NumPy的数组,其中n代表着K维向量的数目
  
  代表了待分的集群的数目,是一个整型值
  
  """
  
  #找出每个向量的维度
  
  #辅助随机地从可得的向量中选取中心点
  
  #计算图
  
  #我们创建了一个默认的计算流的图用于整个算法中,这样就保证了当函数被多次调用 #时,默认的图并不会被从上一次调用时留下的未使用的OPS或者Variables挤满
  
  #计算的会话
  
  ##构建基本的计算的元素
  
  ##首先我们需要保证每个中心点都会存在一个Variable矩阵
  
  ##从现有的点集合中抽取出一部分作为默认的中心点
  
  ##创建一个placeholder www.senta7.net/用于存放各个中心点可能的分类的情况
  
  ##对于每个独立向量的分属的类别设置为默认值0
  
  ##这些节点在后续的操作中会被分配到合适的值
  
  ##下面创建用于计算平均值的操作节点
  
  #输入的
  
  #节点/OP接受输入,并且计算0维度的平均值,譬如输入的向量列表
  
  ##用于计算欧几里得距离的节点
  
  ##这个OP会决定应该将向量归属到哪个节点
  
  ##基于向量到中心点的欧几里得距离
  
  ##初始化所有的状态值
  
  ##这会帮助初始化图中定义的所有Variables。Variable-initializer应该定
  
  ##义在所有的Variables被构造之后,这样所有的Variables才会被纳入初始化
  
  #初始化所有的变量
  
  ##集群遍历
  
  #接下来在K-Means聚类迭代中使用最大期望算法。为了简单起见,只让它执行固
  
  #定的次数,而不设置一个终止条件
  
  ##期望步骤
  
  ##基于上次迭代后算出的中心点的未知
  
  #首先遍历所有的向量
  
  #计算给定向量与分配的中心节点之间的欧几里得距离
  
  #下面可以使用集群分配操作,将上述的距离当做输入
  
  #接下来为每个向量分配合适的值
  
  ##最大化的步骤
  
  #基于上述的期望步骤,计算每个新的中心点的距离从而使集群内的平方和最小
  
  #收集所有分配给该集群的向量
  
  #计算新的集群中心点
  
  #为每个向量分配合适的中心点
  
  #返回中心节点和分组
  
  生成测试数据
  
  数据数量
  
  # 二维正态分布
  
  算法计算
  
  k=4
  
  利用seaborn画图

Tensorflow快速入门1--实现K-Means聚类算法