53. TensorFlow 汽车评估分类#

53.1. 介绍#

前面的实验已经学习了如何使用 TensorFlow 搭建人工神经网络,本次挑战将由你独立完成一个开放性的分类预测练习。

53.2. 知识点#

  • TensorFlow 构建神经网络

  • 张量数据处理转换

  • 损失函数,优化器

TensorFlow 构建人工神经网络的实验中,你已经学习了使用 TensorFlow 构建神经网络的一般步骤。本次挑战提供了 UCI 汽车评估数据集,你需要使用该数据集自行构建一个神经网络,并最终完成训练。

首先,导入该数据集,并简单处理。

import pandas as pd

# 加载数据集
df = pd.read_csv(
    "https://cdn.huhuhang.com/hands-on-ai/files/car.data",
    header=None
)
# 设置列名
df.columns = ["buying", "maint", "doors", "persons", "lug_boot", "safety", "class"]
df.head()
buying maint doors persons lug_boot safety class
0 vhigh vhigh 2 2 small low unacc
1 vhigh vhigh 2 2 small med unacc
2 vhigh vhigh 2 2 small high unacc
3 vhigh vhigh 2 2 med low unacc
4 vhigh vhigh 2 2 med med unacc

数据集包含 6 个特征及 class 目标列。特征表示了汽车的价格及一些技术规格,而目标则是对样本的安全性评估,是一个多分类数据集。

挑战先对数据集完成训练集和测试集划分:

from sklearn.model_selection import train_test_split

X = df.iloc[:, :-1]  # 特征
y = df["class"]  # 目标

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)

X_train.shape, X_test.shape, y_train.shape, y_test.shape
((1382, 6), (346, 6), (1382,), (346,))

接下来,将由你独立完成神经网络的构建,并最终得到分类准确率结果。

Exercise 53.1

开放型挑战

挑战:使用 TensorFlow 构建一个合理的全连接人工神经网络,完成汽车安全性评估分类任务。

规定:你需要使用前面学习过的 TensorFlow 函数及方法完成网络的构建,训练,预测及评估。自行选择数据处理方式,神经网络结构,损失函数,优化方法等。数据预处理等非主要代码允许少量使用其他类库提供的函数及操作。

开放型挑战没有思路引导过程,有更大的自由度和灵活性,更锻炼独立解决问题能力。这可能会涉及到一些课程外的知识点,需要你拥有一定的探索精神和独立解决问题的能力。

最终,挑战期望得到合理迭代次数下的测试集准确率和损失结果。示例如下:

期望输出

Epoch [000/500], Accuracy: [0.17], Loss: [9.9333]
Epoch [100/500], Accuracy: [0.93], Loss: [0.1228]
Epoch [200/500], Accuracy: [0.93], Loss: [0.1056]
Epoch [300/500], Accuracy: [0.93], Loss: [0.1025]
Epoch [400/500], Accuracy: [0.94], Loss: [0.1003]
Epoch [500/500], Accuracy: [0.94], Loss: [0.0992]

相关链接