如何通过TF实现线性回归,通读本文帮你节省不必要的时间

大多数人学习算法,首先学到的基本都是线性回归。线性回归多被用来计算梯度下降和损耗。

如何通过TF实现线性回归,通读本文帮你节省不必要的时间

线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。其表达形式为y = w'x+e,e为误差服从均值为0的正态分布。回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。

本教程主要讲述如何使用TensorFlow实现线性回归。目的是能给你启发,教你如何在TensorFlow中使用TensorFlow封装评估模型来节省你的时间。TensorFlow封装评估模型是一种高级API,不同于需要你自己编程的低级API。

我们将从导入所需的库开始。

如何通过TF实现线性回归,通读本文帮你节省不必要的时间

在这里,我们导入的数据集来自Kaggle提供的对波士顿住房价格预测。让我们导入我们的训练数据集。链接:

如何通过TF实现线性回归,通读本文帮你节省不必要的时间

你需要检查DataFrame以查找列表名称和类型。

如何通过TF实现线性回归,通读本文帮你节省不必要的时间

使用TensorFlow时引入的一个概念是Feature Columns(功能列)。我们需要将我们的功能列传递给我们的TensorFlow封装评估模型。这样我们才能成功创建我们的功能列。

如何通过TF实现线性回归,通读本文帮你节省不必要的时间

如何通过TF实现线性回归,通读本文帮你节省不必要的时间

在实例化过程中,我们需要将功能列作为列表传递。所以,让我们创建下面的内容。

如何通过TF实现线性回归,通读本文帮你节省不必要的时间

与往常一样,在处理数据时,我们会创建一个训练集和一个测试集。所以,在这里我们也会这样做。

如何通过TF实现线性回归,通读本文帮你节省不必要的时间

如果你一直在使用sklearn,那么你一定养成了习惯将数据传递到训练函数的能力。在TensorFlow中,使用的是输入函数。所以我们需要为训练和测试创建输入函数。

如何通过TF实现线性回归,通读本文帮你节省不必要的时间

如何通过TF实现线性回归,通读本文帮你节省不必要的时间

在这里,创建_DataSet的方法有很多。因为我们之前是用Pandas来加载数据,所以(图中)我们有一个DataFrame。因此,我们将使用from_tensor_slices()来创建数据集。需要补充的是,此工具在随TensorFlow 1.8发布的tf.data模块中提供。不要小瞧它,它作为一件工具对我们的数据处理有着很大的作用。这里会涉及两个参数。第一个参数是字典。你需要将所运行的以系列数据作为字典中的值进行传递。第二个参数是表示训练数据中标签的类别。

如何通过TF实现线性回归,通读本文帮你节省不必要的时间

下一个非常重要的步骤是,我们必须分批获取数据。在这里,我们可以将批处理大小作为参数传递。如果你没有调用batch(),那么你会得到一些关于size()的有趣错误。

我们还要做的另一件事是创建一个迭代器。我们用Make_One_SHOT_Iterator()来创建。

我们返回结束我们的函数iterator.get_Next().

对类似的函数进行数据评估。

如何通过TF实现线性回归,通读本文帮你节省不必要的时间

如何通过TF实现线性回归,通读本文帮你节省不必要的时间

我们现在准备实例化我们的TensorFlow封装评估模型。回想一下我们之前创建功能列的方法,当时我们是将其传递给LinearRegressor()函数进行调用的。我们可以传递许多不同的参数,但本文中我们将使用默认值。

如何通过TF实现线性回归,通读本文帮你节省不必要的时间

现在我们准备训练我们的TensorFlow封装评估模型。

如何通过TF实现线性回归,通读本文帮你节省不必要的时间

当训练完成后,我们将对我们的模型进行评估。

如何通过TF实现线性回归,通读本文帮你节省不必要的时间

我们得到了这个用来调用的迭代器。现在我们可以进行下一步骤了。

如何通过TF实现线性回归,通读本文帮你节省不必要的时间

我们需要对此进行迭代,并转换为numpy数组以获得结果。

如何通过TF实现线性回归,通读本文帮你节省不必要的时间

希望上面的讲述对你有用。


分享到:


相關文章: