深度学习-利用递归网络判断序列趋势

本文介绍了如何利用LSTM递归神经网络对序列数据进行分类,将数据分为6种趋势类别。通过下载并预处理UCI数据集,采用CSV序列读取器加载和规范化数据,配置小型LSTM网络进行训练,并在40个步骤中监测测试数据的准确率和F1分数。
摘要由CSDN通过智能技术生成

这其实是一个利用LSTM递归网络进行序列分类的问题,根据数据趋势把数据分成6个类正常,循环,阶跃上升,阶跃下降,趋势向上,趋势向下

数据连接:https://archive.ics.uci.edu/ml/machine-learning-databases/synthetic_control-mld/synthetic_control.data

图像连接https://archive.ics.uci.edu/ml/machine-learning-databases/synthetic_control-mld/data.jpeg

处理步骤如下:

1.下载并准备数据

(a)600个数据450个训练150测试

(b)把数据转成适当的格式并用csv序列读取器读取

     格式:每个文件一个代表一个时间序列,还有一个独立的标签文件,例如train/features/0.csv是特征文件,对应标签文件train/labels/0.csv,由于数据是单变量序列,csv   只有一列数据,没列有多个值,每行一个时间步,标签文件只有一个标签值

2.用csv序列读取器装载训练数据,用序列读取数据迭代器转换数据集

3.规范化数据,收集训练数据的统计信息,训练数据和测试数据用同样的方法规范化

4.配置网络,我们使用小型的lstm层和一个rnn输出层

5.训练40步,每步打印测试数据的准确率和f1

代码如下:

public class UCISequenceClassificationExample {
    private static final Logger log = LoggerFactory.getLogger(UCISequenceClassificationExample.class);//声明了log类,这样用logger.info打印信息

    //'baseDir': Base directory for the data. Change this if you want to save the data somewhere else
    private static File baseDir = new File("src/main/resources/uci/");//文件路径,实战中文件很多时我们很可能这样处理数据
    private static File baseTrainDir = new File(baseDir, "train");//file类里两个参数,第一个是上级目录,第二个是下级目录
    private static File featuresDirTrain = new File(baseTrainDir, "features");//定位到特征目录
    private static File labelsDirTrain = new File(baseTrainDir, "labels");//定位到标签目录
    private static File baseTestDir = new File(baseDir, "test");//定位到测试目录
    private static File featuresDirTest = new File(baseTestDir, "features");//定位到测试属性目录
    private static File labelsDirTest = new File(baseTestDir, "labels");//定位到测试标签目录
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值