Tensorflow-Estimator,使用回归完成简单的多元线性预测

820 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

上一篇博客介绍了多元线性模型,并提到本篇博客将重点介绍多元线性模型的求解,废话不多说,从函数的定义分析开始,直接理解代码的计算过程。

1.PNG

首先,从上图中快速的了解tensorflow提供的两种估算器,第一种是系统提供的,用户仅需要提供输入特征即可,第二种是用户自己构建的,构建估算器的时候特征列输入函数是两个非常重要的概念,一定要牢记。

特征列

在tensorflow中,参数feature_column作为特征模块用于估算器训练的输入参数作为特征列传递。

对于tensorflow.feature_columns一共有9中不同的函数,每种函数对应的功能如下所示。

2.PNG

输入函数

输入函数所指的就是tensorflow.data.Dataset对象,该对象返回一个包含特征和标签的元组。

继续上一个例子,影响房屋价格的因素为例,设计一个简单的tensorflow估计器。假设房屋的价格受面积和房屋的类型影响,则具体实现代码如下

import tensorflow as tf
from tensorflow import feature_column as fc

# 数字特征
T_numeric_colum = fc.numeric_column
# 字符串特征
T_categorical_column_with_vocabulary_list = fc.categorical_column_with_vocabulary_list

# 定义特征列
featcols = [
    tf.feature_column.numeric_column("area"),
    tf.feature_column.categorical_column_with_vocabulary_list("type", ["document", "apartment"])
]


# 模拟输入数据
def Input_function():
    features = {
        "area":[100, 120, 140, 150, 180, 200],
        "type":["document","document","apartment","house","apartment","document"]
    }
    labels = [110, 140, 160, 190, 230, 280]
    return features, labels

# 定义线性回归模型估计器
model = tf.estimator.LinearRegressor(featcols)
# 对训练数据进行拟合
model.train(Input_function, steps=100)


# 模拟预测数据
def Predict_function():
    features ={
        "area":[160, 350],
        "type":["document","house"]
    }
    return features


# 测试预测的准确性
prediction = model.predict(Predict_function)


# 打印预测的结果
print(next(prediction).values())
print(next(prediction).values())

根据我随便编写的几个房屋类型和面积所对应价格的特征数据的拟合,对于预测数据可以得到下面的结果,基本上符合预期的结果。

3.PNG

这一篇博文的主要作用是理解回归,并了解如何在代码中实现回归的思想预测数据,了解tensorflow提供的一些高级API的使用方法等,下篇博客将主要利用波士顿房屋数据集进行一个完整的预测流程的实现,一步步的熟悉回归。