65.9K
CodeProject 正在变化。 阅读更多。
Home

TensorFlow 教程 3:导入数据

starIconstarIconstarIconstarIconstarIcon

5.00/5 (1投票)

2018 年 10 月 16 日

CPOL

3分钟阅读

viewsIcon

8468

作者: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 中的另一个重要概念。 会话提供了执行操作和评估张量的环境。 当我们定义 const1const2result 时,不会执行任何操作。 仅在会话中执行该操作。 将 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 成员编号。打印的数字将是您本次挑战的参赛代码。请点击 此处 以输入竞赛参赛代码。

© . All rights reserved.