本文,将继续运用PaddleTS东西中的LSTNet模型完结回归猜测任务,首要包含数据预处理部分,例如归一化、TSDataset结构。

1. 项目回顾

本项目归于机器学习领域,依据指定数据集(我国人口数据集等)运用PaddleTS进行LSTNet网络模型搭建全流程,包含数据预处理、模型构建、模型练习、模型猜测、猜测成果可视化等。

  • 咱们将依据我国人口数据集中的多个特征(features),例如:出世人口(万)、我国人均GPA(美元计)、我国性别份额(依照女生=100)、自然增长率(%)等8个特征字段,猜测我国未来总人口(万人)这1个标签字段。归于多输入,单输出LSTM神经网路猜测领域。
  • 关于本项目运用的东西PaddleTS,PaddleTS是一个易用的深度时序建模的Python库,它基于飞桨深度学习结构PaddlePaddle,专注业界领先的深度模型,旨在为领域专家和职业用户提供可扩展的时序建模才能和快捷易用的用户体验。
  • 该东西包内置LSTNet模型,本项目将运用其LSTNet深度学习模型完结项目开发。

2. 数据集介绍

本项目运用的数据集为我国人口猜测数据集,包含10个字段,其间8个特征字段,1个标签字段,1个行索引字段,数据集各字段对应的数据类型如下表所示:

  • 其间包含10个字段,例如年份、总人口数、出世率、自然增长率等等。
  • 数据包含50条样本,因而应该合理确认练习数据、测验数据和验证数据。
  • 数据集样本较少,测验集能够相应的少一些,尽可能多一些练习数据。

3. 数据预处理

3.1 打印特征字段

由于数据集特征数量有限,咱们保留了数据集中一切的特征字段,下面进行对选取的特征进行打印和展现。

print(
    "选取的参数指标是:",
    ", ".join([titles[i] for i in [0, 1, 2, 3, 4, 5, 6, 7, 8]]),
)
selected_features = [feature_keys[i] for i in [0, 1, 2, 3, 4, 5, 6, 7, 8]]
features = population[selected_features]
features.index = population[date_time_key]
features.head()

运转成果如下图所示:

【机器学习】基于PaddleTS的LSTNet时序预测模型实现中国人口预测(2)

3.2 转化字段类型

咱们需要将int类型字段转化为float类型的字段,方可用于模型练习,不然会报错。

  • 首先运用如下语句查看数据集各个字段类型。
  • 接下来咱们将int64转为float64并替换原数据字段

先查看一下当前数据集各个字段的类型,从而调查出哪些字段需要转化类型。

population.dtypes

运转成果如下图所示:

  • 能够发现存在in64类型的字段,例如年份,出世人口等等
  • 需要将其转化数据类型

【机器学习】基于PaddleTS的LSTNet时序预测模型实现中国人口预测(2)

转化字段类型:

population['出世人口(万)'] = population['出世人口(万)'].astype('float64')
population['总人口(万人)'] = population['总人口(万人)'].astype('float64')
population['我国人均GPA(美元计)'] = population['我国人均GPA(美元计)'].astype('float64')
population['我国就业人口(万人)'] = population['我国就业人口(万人)'].astype('float64')

3.3 结构TSDataset

TSDataset 是 PaddleTS 中最首要的类之一,其被规划用来表明绝大多数时序样本数据。通常,时序数据能够分为以下几种:

  • 单变量数据,只包含单列的猜测方针,一起能够包容单列或者多列协变量
  • 多变量数据,包容多列猜测方针,一起能够包容单列或者多列协变量

TSDataset 需要包含time_index属性,time_index支持 pandas.DatetimeIndex 和 pandas.RangeIndex 两种类型。

  • 依照PaddleTS东西库的要求结构TSDataset才能用于后续模型练习
target_cov_dataset = TSDataset.load_from_dataframe(
    population,
    time_col='年份',
    target_cols='总人口(万人)',
    observed_cov_cols=['出世人口(万)', '我国人均GPA(美元计)', '我国性别份额(依照女生=100)', '自然增长率(%)',
       '乡镇人口(乡镇+村庄=100)', '村庄人口', '美元兑换人民币汇率', '我国就业人口(万人)'],
    fill_missing_dates=True,
    fillna_method='pre'
)
target_cov_dataset.plot(['总人口(万人)', '出世人口(万)', '我国人均GPA(美元计)', '我国性别份额(依照女生=100)', '自然增长率(%)',
       '乡镇人口(乡镇+村庄=100)', '村庄人口', '美元兑换人民币汇率', '我国就业人口(万人)'])

运转成果如下图所示:

  • 将一切特征字段制作在一张图中,进行可视化展现

【机器学习】基于PaddleTS的LSTNet时序预测模型实现中国人口预测(2)

展现各个字段统计学描述

target_cov_dataset.summary()

3.4 区分数据集

练习集:验证集:测验集 = 0.6 :0.2 :0.2

train_dataset, val_test_dataset = target_cov_dataset.split(0.6)
val_dataset, test_dataset = val_test_dataset.split(0.5)
train_dataset.plot(add_data=[val_dataset,test_dataset], labels=['Val', 'Test'])

区分后的数据集可视化展现如下:

【机器学习】基于PaddleTS的LSTNet时序预测模型实现中国人口预测(2)

3.5 归一化

  • 对练习集、测验集、验证集分别归一化,缩小数据规模,使得模型练习后更加准确。
  • 比如,有些数据规模是几千,有的数据规模是几十,这样在量级上就相差很多,假如直接放入模型进行练习,会导致某些特征过火扩大,终究影响模型作用,因而需要做归一化处理。
scaler = StandardScaler()
scaler.fit(train_dataset)
train_dataset_scaled = scaler.transform(train_dataset)
val_test_dataset_scaled = scaler.transform(val_test_dataset)
val_dataset_scaled = scaler.transform(val_dataset)
test_dataset_scaled = scaler.transform(test_dataset)

4. 总结

本文首要完结了人口回归猜测项目的数据预处理部分,解说了为什么要做归一化、并且完结数据集区分、字段类型转化、相应的可视化等等。下一篇文章将首要完结模型构建、模型猜测、以及模型评估任务,终究对猜测数据进行可视化展现。

本文正在参加「金石计划 . 瓜分6万现金大奖」