聚类分析tensorflow实例_[译]与TensorFlow的第一次接触(三)之聚类

本文介绍了如何在TensorFlow中使用无监督学习算法K-means对数据进行聚类分析。K-means算法用于自动将数据分类到相关子集合中,无需预先知道目标或结果。文章详细解释了TensorFlow的基础数据结构tensor,包括其数据类型、秩和操作,并通过实例展示了如何在TensorFlow中创建和操作tensor。此外,还探讨了数据存储的方法,包括从文件、常量和变量以及Python代码中获取数据。最后,通过代码示例展示了如何在TensorFlow中实现K-means算法,以及如何处理和可视化聚类结果。
摘要由CSDN通过智能技术生成

前一章节中介绍的线性回归是一种监督学习算法,我们使用数据与输出值(标签)来建立模型拟合它们。但是我们并不总是有已经打标签的数据,却仍然想去分析它们。这种情况下,我们可以使用无监督的算法如聚类。因为聚类算法是一种很好的方法来对数据进行初步分析,所以它被广泛使用。

本章中,会讲解K-means聚类算法。该算法广泛用来自动将数据分类到相关子集合中,每个子集合中的元素都要比其它集合中的元素更相似。此算法中,我们没有任何目标或结果来预测评估。

本章中依然会介绍TensorFlow的使用,并介绍基础数据结构tensor的更多细节。本章开头介绍tensor的数据类型与分析可在该数据结构上执行的运算变换。接下来展示使用tensor来实现的K-means算法。

基础数据结构—tensor

TensorFlow使用基础数据结构---tensor来表示所有数据。一个tensor可以看成是一个拥用静态数据类型动态大小且多维的数组,它可以从布尔或string转换成数值类型。下表是一些主要类型及在Python中对对应的类型:

另外,每个tensor都有一个秩,也是tensor维度的数量。例如,下面的tensor的秩为2:

t = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

tensor可以拥有任意秩。秩为2的tensor经常被看作矩阵,秩为1的tensor会被看作vector,秩为0的被看作标量值。

TensorFlow文档中使用三种不同称谓来描述tensor的维度:Shape,Rank,Dimension。下面的表展示了它们三者之间的关系,

TensorFlow提供的一系列操作来计算这些tensor,接下来我们会讨论下表中的一些操作。

通过本章,我们会继续讨论更多的细节。在Tensorflow的官方网站上能找到更多的操作列表及每一个操作的细节。

举个例子,假如你想扩展一个2*2000(2D tensor)为立方体(3D tensor)。可以使用tf.expand_dims函数,它可以向tensor中插入一个维度。

tf.expand_dims会向tensor中插入一个维度,插入位置就是参数代表的位置(维度从0开始)。

以可视化来展示的话,上面的转换过程如下图所示:

正如你所看到的,我们得到一个3D tensor,但根据函数参数我们无法判断新维度D0的大小。

如果调用get_shape()来获得tensor的shape,可以看到D0没有大小:

print  expanded_vectors.get_shape()

显示的结果如下:

TensorShape([Dimension(1),Dimension(2000), Dimension(2)])

本章的稍后,我们可以看到,由于TensorFlow的shape传递特性,很多tensor的数学运算函数(正如第一章中提到的)可以自已发现未确定大小维度的大小,并将该值赋给它。

TensorFlow中的数据存储

Tensorflow程序中主要有三种方式来获取数据:

1.从数据文件

2.以常数与变量预加载

3.Python代码提供的数据

下面简要描述这三种方式:

1.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值