TensorFlow 教程 3:导入数据





5.00/5 (1投票)
作者:Dante Sblendorio
为了创建一个神经网络,我们首先需要一些数据来使用。 UCI 机器学习资源库 提供了大量可供使用的数据集。我们将使用 葡萄酒数据集。它包含在意大利同一地区种植的 178 个葡萄酒样本。每个样本都来自三个品种之一(“Class”特征),并且还具有 13 个化学分析结果的组成特征。这是一个干净的数据集(没有缺失值),因此不需要任何数据整理即可使其成为适合我们神经网络的形式。这使我们的工作更轻松。
import pandas as pd wine_names = ['Class', 'Alcohol', 'Malic acid', 'Ash', 'Alcalinity of ash', 'Magnesium', 'Total phenols', 'Flavanoids', 'Nonflavanoid phenols', 'Proanthocyanins', 'Color intensity', 'Hue', 'OD280/OD315', 'Proline'] wine_data = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data', names = wine_names) wine_df = pd.DataFrame(wine_data)
在第一部分,我们导入了 pandas 库和葡萄酒数据集。然后,我们将数据集转换为 pandas DataFrame。
我还从 UCI 资源库中提取了每个特征的名称。 pandas 中有两种主要的数据结构:Series(一维)和 DataFrame(二维)。几乎所有的数据集都可以使用这两种数据结构。在创建我们的神经网络之前,最好先探索数据,以便了解其一般形式、属性等。无论何时处理新的数据集,这始终是第一件事(当然是在导入之后)。更有用的方法之一是 .head(n)。 这会将输出连接到前 n 个样本,允许您查看您想要的任何数量的样本。您还可以使用 .sample(n),它将从您的数据集中输出 n 个随机样本。因此,为了查看我们的特征,请运行
wine_df.head(5)
一些其他有用的函数:len()
和 .nunique()
len(wine_df)
wine_df['Class'].nunique()
.describe()
方法将输出关于 DataFrame 中所有特征的快速和基本统计信息。这在处理数值数据时非常有用。
wine_df.describe()
希望您已经注意到关于数据的一些事情。第一,除了 Class 之外,每个特征都是数值的。第二,Class 特征是分类的,这意味着它可以取三个值之一(与品种一致)。 UCI 资源库提供了一个描述数据的文件,但通过我们自己的探索来确认这些特征是很好的。
在我们使用葡萄酒数据创建神经网络之前,了解 TensorFlow 的一些基础知识很有用。如果您懂一点线性代数,那么某些概念看起来会很熟悉。 TensorFlow 中使用的主要数据单元是张量。简而言之,张量是多维的数值集合。有许多严格的数学定义,但对于我们的案例来说,这个定义就足够了。张量的秩是它的维度数,而它的形状是一个整数元组,指定了数组沿每个维度的长度。以下是一些张量值的示例
3. # a rank 0 tensor; a scalar with shape [], [1., 2., 3.] # a rank 1 tensor; a vector with shape [3] [[1., 2., 3.], [4., 5., 6.]] # a rank 2 tensor; a matrix with shape [2, 3] [[[1., 2., 3.]], [[7., 8., 9.]]] # a rank 3 tensor with shape [2, 1, 3]
在 TensorFlow 中,您显式地定义张量的类型。例如,如果您想定义两个常量并将它们相加,就是这样
import tensorflow as tf const1 = tf.constant([[1,2,3], [1,2,3]]); const2 = tf.constant([[3,4,5], [3,4,5]]); result = tf.add(const1, const2); with tf.Session() as sess: output = sess.run(result) print(output)
会话是 TensorFlow 中的另一个重要概念。 会话提供了执行操作和评估张量的环境。 当我们定义 const1
、const2
和 result
时,不会执行任何操作。 仅在会话中执行该操作。 将 TensorFlow 中的操作视为图或节点网络也很有优势。 这个概念是神经网络的基础。 上述操作的计算图如下所示
使用计算图来表示神经网络是理解它们结构和性能的有效方法。 TensorFlow 包含一个可视化工具,称为 TensorBoard,专门用于帮助用户更好地理解他们的代码。 (关于 TensorFlow 基础知识的更多信息可以在 此处 找到。)
要获取挑战 3 的条目代码,请在您的 Jupyter notebook 中创建一个新的代码单元格并输入以下代码
with tf.Session() as sess: member_number = tf.constant(12345678) result = tf.divide(member_number, tf.constant(20)) print(int(sess.run(result)))
并将 12345678 替换为您的 CodeProject 成员编号。打印的数字将是您本次挑战的参赛代码。请点击 此处 以输入竞赛参赛代码。