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画图

时间: 2024-10-27 09:08:39

Tensorflow快速入门1--实现K-Means聚类算法的相关文章

Tensorflow快速入门2--实现手写数字识别

Tensorflow快速入门2–实现手写数字识别 环境: 虚拟机ubuntun16.0.4 Tensorflow(仅使用cpu版) Tensorflow安装见: http://blog.csdn.net/yhhyhhyhhyhh/article/details/54429034 或者: http://www.tensorfly.cn/tfdoc/get_started/os_setup.html 本文将利用Tensorflow以softmax回归和卷积神经网络两种模型简单测试MNIST数据集,快

TensorFlow快速入门与实战

课程目录:01.课程内容综述02.第一章内容概述03.TensorFlow产生的历史必然性04.TensorFlow与JeffDean的那些事05.TensorFlow的应用场景06.TensorFlow的落地应用07.TensorFlow的发展现状08.第二章内容概述09.搭建你的TensorFlow开发环境10.HelloTensorFlow11.在交互环境中使用TensorFlow12.在容器中使用TensorFlow13.第三章内容概述14.TensorFlow模块与架构介绍15.Ten

k-均值聚类算法;二分k均值聚类算法

根据<机器学习实战>一书第十章学习k均值聚类算法和二分k均值聚类算法,自己把代码边敲边理解了一下,修正了一些原书中代码的细微差错.目前代码有时会出现如下4种报错信息,这有待继续探究和完善. 报错信息: Warning (from warnings module): File "F:\Python2.7.6\lib\site-packages\numpy\core\_methods.py", line 55 warnings.warn("Mean of empty

机器学习实战笔记-利用K均值聚类算法对未标注数据分组

聚类是一种无监督的学习,它将相似的对象归到同一个簇中.它有点像全自动分类.聚类方法几乎可以应用于所有对象,簇内的对象越相似,聚类的效果越好 簇识别给出聚类结果的含义.假定有一些数据,现在将相似数据归到一起,簇识别会告诉我们这些簇到底都是些什么.聚类与分类的最大不同在于,分类的目标事先巳知,而聚类则不一样.因为其产生的结果与分类相同,而只是类别没有预先定义,聚类有时也被称为无监督分类(unsupervised classification ). 聚类分析试图将相似对象归人同一簇,将不相似对象归到不

K均值聚类算法

k均值聚类算法(k-means clustering algorithm)是一种迭代求解的聚类分析算法,其步骤是随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心.聚类中心以及分配给它们的对象就代表一个聚类.每分配一个样本,聚类的聚类中心会根据聚类中现有的对象被重新计算.这个过程将不断重复直到满足某个终止条件.终止条件可以是没有(或最小数目)对象被重新分配给不同的聚类,没有(或最小数目)聚类中心再发生变化,误差平方和局部最小.

k means聚类过程

k-means是一种非监督 (从下图0 当中我们可以看到训练数据并没有标签标注类别)的聚类算法 0.initial 1.select centroids randomly 2.assign points 3.update centroids 4.reassign points 5.update centroids 6.reassign points 7.iteration reference: https://www.naftaliharris.com/blog/visualizing-k-me

基于改进人工蜂群算法的K均值聚类算法(附MATLAB版源代码)

其实一直以来也没有准备在园子里发这样的文章,相对来说,算法改进放在园子里还是会稍稍显得格格不入.但是最近邮箱收到的几封邮件让我觉得有必要通过我的博客把过去做过的东西分享出去更给更多需要的人.从论文刊登后,陆陆续续收到本科生.研究生还有博士生的来信和短信微信等,表示了对论文的兴趣以及寻求算法的效果和实现细节,所以,我也就通过邮件或者短信微信来回信,但是有时候也会忘记回复. 另外一个原因也是时间久了,我对于论文以及改进的算法的记忆也越来越模糊,或者那天无意间把代码遗失在哪个角落,真的很难想象我还会全

K均值聚类算法的MATLAB实现

1.K-均值聚类法的概述 之前在参加数学建模的过程中用到过这种聚类方法,但是当时只是简单知道了在matlab中如何调用工具箱进行聚类,并不是特别清楚它的原理.最近因为在学模式识别,又重新接触了这种聚类算法,所以便仔细地研究了一下它的原理.弄懂了之后就自己手工用matlab编程实现了,最后的结果还不错,嘿嘿~~~ 简单来说,K-均值聚类就是在给定了一组样本(x1, x2, ...xn) (xi, i = 1, 2, ... n均是向量) 之后,假设要将其聚为 m(<n) 类,可以按照如下的步骤实现

【机器学习】机器学习入门08 - 聚类与聚类算法K-Means

时间过得很快,这篇文章已经是机器学习入门系列的最后一篇了.短短八周的时间里,虽然对机器学习并没有太多应用和熟悉的机会,但对于机器学习一些基本概念已经差不多有了一个提纲挈领的了解,如分类和回归,损失函数,以及一些简单的算法--kNN算法.决策树算法等. 那么,今天就用聚类和K-Means算法来结束我们这段机器学习之旅. 1. 聚类 1.1 什么是聚类 将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类.由聚类所生成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他