首页 > 代码库 > 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聚类算法