本节将通过用TensorFlow 2训练一个简单线性模型,来展示TensorFlow 2的工作机制和基本流程。
现存在一份拥有100个样本的数据集,需根据这100个样本数据构建一个线性模型,找出合适的 w和b,使得y=wx+b。数据的基本形式如下表所示。
这个例子将帮助大家掌握如何从数据处理、模型构建、训练到评估等步骤,逐步实现一个基础的机器学习任务。
代码讲解
下面是代码的详细讲解。
导入必要的库
import tensorflow as tf
import pandas as pd
首先,我们导入了 TensorFlow 和 Pandas 库。TensorFlow 用于构建和训练我们的机器学习模型,Pandas 用于处理和加载数据。Pandas 是非常强大的数据处理工具,它能够帮助我们方便地加载 CSV 文件并进行数据预处理。
读取数据
数据文件:
line_fit_data.csv
# 读取数据
data = pd.read_csv('./data/line_fit_data.csv').values
这里我们使用 Pandas 的 read_csv
函数来读取存储在 line_fit_data.csv
文件中的数据。.values
方法将数据转换成一个 NumPy 数组,方便后续处理。
划分测试集和训练集
# 划分训练集和测试集
# 训练集
x = data[:-10, 0]
y = data[:-10, 1]
# 测试集
x_test = data[-10:, 0]
y_test = data[-10:, 1]
在进行机器学习模型的构建过程中,合理地划分数据集是至关重要的一步。为了确保模型能够有效地从给定的数据中学习,并且能够在未见过的新数据上表现良好,我们采取了将原始数据集分割为
训练集与测试集
的方法。具体来说,在这个案例中,我们的目标是通过输入数据(记作 x),即特征向量,来预测相应的目标变量(记作 y),也就是标签。
对于数据集的划分,我们采用了一种常见的策略:将大部分的数据用于训练模型,而保留一小部分用来评估模型性能。特别地,这里选择了除了最后10个样本外的所有数据作为训练集。这样做可以让模型有机会基于大量的样本来学习潜在的模式或规律。然后,我们将这最后10个数据点专门留出,不参与任何训练过程,而是仅用它们来测试经过训练后的模型的表现。这种方式有助于更准确地估计模型在实际应用中的泛化能力,因为它模拟了模型面对完全未知数据时的情况。
总之,正确地划分训练集与测试集对于提高模型质量、避免过拟合等问题具有重要意义。
构建模型
# 构建Sequential网络
model_net = tf.keras.models