paddlepaddle零基础入门深度学习系列之——波士顿房价预测

目录

  • 前言
  • 数据处理
  • 模型设计
  • 训练配置
  • 训练过程
  • 模型保存
  • 测试模型

前言

  本人在此前是从未学习过深度学习相关内容的,只是对其听说的比较多,本系列文章是为了记录本人的学习历程,希望对其他想学习深度学习又没有经验的同学有所帮助。

  基于百度的飞桨工具对波士顿房价进行预测的步骤如下所示:
paddlepaddle零基础入门深度学习系列之——波士顿房价预测_第1张图片
波士顿房价的数据则是由这位无私奉献的程序员贡献,博文地址

在正式开始之前需要先按照官方网站的安装教程安装飞桨

数据处理

  1. 第一步:读取数据,这里由于使用的从其他地方下载的csv文件数据,所以与官网的处理稍微不一样。
    #从文件导入数据
    datafile = 'D:\\git_python\\boston_housing_data.csv'
    #每条数据包括14项,其中前面13项是影响因素,第14项是相应的房屋价格中位数
    feature_names = [ 'CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', \
                      'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV' ]
    feature_num = len(feature_names)
    #读取数据
    result = []
    with codecs.open(datafile, encoding='utf-8-sig') as f:
        for row in csv.DictReader(f, skipinitialspace=True):
            da = []
            for title in feature_names:
                da.append(float(row[title]))
            result.append(da)
    data = np.array(result)
  1. 第二步:将原数据集拆分成训练集和测试集
	ratio = 0.8
    offset = int(data.shape[0] * ratio)
    training_data = data[:offset]
  1. 第三步:对数据进行归一化处理
# 计算训练集的最大值,最小值,平均值
maximums, minimums, avgs = training_data.max(axis=0), training_data.min(axis=0), \
                                 training_data.sum(axis=0) / training_data.shape[0]
# 对数据进行归一化处理
    for i in range(feature_num):
        #print(maximums[i], minimums[i], avgs[i])
        data[:, i] = (data[:, i] - avgs[i]) / (maximums[i] - minimums[i])

    # 训练集和测试集的划分比例
    training_data = data[:offset]
    test_data = data[offset:]

模型设计

定义线性回归的网络结构。此处我没看到为啥要用线性回归网络结构,希望有懂的朋友说明一下。

class Regressor(paddle.nn.Layer):

    # self代表类的实例自身
    def __init__(self):
        # 初始化父类中的一些参数
        super(Regressor, self).__init__()
        
        # 定义一层全连接层,输入维度是13,输出维度是1
        self.fc = Linear(in_features=13, out_features=1)
    
    # 网络的前向计算
    def forward(self, inputs):
        x = self.fc(inputs)
        return x

训练配置

设置训练参数

# 声明定义好的线性回归模型
model = Regressor()
# 开启模型训练模式
model.train()
# 加载数据
training_data, test_data = load_data()
# 定义优化算法,使用随机梯度下降SGD
# 学习率设置为0.01
opt = paddle.optimizer.SGD(learning_rate=0.01, parameters=model.parameters())

训练过程

paddlepaddle零基础入门深度学习系列之——波士顿房价预测_第2张图片
paddlepaddle零基础入门深度学习系列之——波士顿房价预测_第3张图片paddlepaddle零基础入门深度学习系列之——波士顿房价预测_第4张图片

模型保存

paddlepaddle零基础入门深度学习系列之——波士顿房价预测_第5张图片

测试模型

paddlepaddle零基础入门深度学习系列之——波士顿房价预测_第6张图片

你可能感兴趣的:(#,paddlepaddle,深度学习,python)