2019-10-21 09:19:41 nanhuaibeian 阅读数 2202
  • 精通数据科学:从线性回归到深度学习

    数据科学是一门内涵很广的学科,它涉及到统计分析、机器学习以及计算机科学三方面的知识和技能。本课程将深入浅出、全面系统地介绍了这门学科的内容。通过这门课程,同学可以了解并熟悉如下的开源工具:scikit-learn、statsmodels、TensorFlow、Pyspark等。 本课程分为4个部分,18个章节。 ·             第一部分是最初的3章,主要介绍数据科学想要解决的问题、常用的IT工具Python以及这门学科所涉及的数学基础。 ·             第二部分是第4-7章,主要讨论数据模型,主要包含三方面的内容:一是统计中最经典的线性回归和逻辑回归模型;二是计算机估算模型参数的随机梯度下降法,这是模型工程实现的基础;三是来自计量经济学的启示,主要涉及特征提取的方法以及模型的稳定性。 ·             第三部分是接下来的8-15章,主要讨论算法模型,也就是机器学习领域比较经典的模型。这三章依次讨论了监督式学习、生成式模型以及非监督式学习。 ·             第四部分将覆盖目前数据科学最前沿的两个领域分别是大数据和人工智能。具体来说,第11章将介绍大数据中很重要的分布式机器学习,而最后两章将讨论人工智能领域的神经网络和深度学习。

    5956 人正在学习 去看看 唐亘

是否有监督(supervised),就看输入数据是否有标签(label)。输入数据有标签,则为有监督学习,没标签则为无监督学习。

一、监督式学习

在这里插入图片描述
在监督式学习下,输入数据被称为“训练数据”,每组训练数据有一个明确的标识或结果,如对防垃圾邮件系统中“垃圾邮件”“非垃圾邮件”,在建立预测模型的时候,监督式学习建立一个学习过程,将预测结果与“训练数据”的实际结果进行比较,不断的调整预测模型,直到模型的预测结果达到一个预期的准确率。
监督式学习的常见应用场景如分类问题和回归问题。
常见算法有逻辑回归(Logistic Regression)和反向传递神经网络(Back Propagation Neural Network)

此处以高考为例,高考的题目在上考场前我们未必做过,但在高中三年我们做过很多很多题目,懂解题方法,因此考场上面对陌生问题也可以算出答案。机器学习的思路也类似:我们能不能利用一些训练数据(已经做过的题),使机器能够利用它们(解题方法)分析未知数据(高考的题目)?最简单也最普遍的一类机器学习算法就是分类
(classification)。
对于分类,输入的训练数据有特征(feature),有标签(label)。所谓的学习,其本质就是找到特征和标签间的关系(mapping)。这样当有特征而无标签的未知数据输入时,我们就可以通过已有的关系得到未知数据标签。在上述的分类过程中,如果所有训练数据都有标签,则为有监督学习(supervised learning)。如果数据没有标签,显然就是无监督学习(unsupervised learning)了,也即聚类(clustering)。

二、无监督式学习

我们有一些问题,但是不知道答案,我们要做的无监督学习就是按照他们的性质把他们自动地分成很多组,每组的问题是具有类似性质的(比如数学问题会聚集在一组,英语问题会聚集在一组,物理…)。
所有数据只有特征向量没有标签,但是可以发现这些数据呈现出聚群的结构,本质是一个相似的类型的会聚集在一起。把这些没有标签的数据分成一个一个组合,就是聚类(Clustering)。
比如Google新闻,每天会搜集大量的新闻,然后把它们全部聚类,就会自动分成几十个不同的组(比如娱乐,科技,政治…),每个组内新闻都具有相似的内容结构。
无监督学习还有一个典型的例子就是鸡尾酒会问题(声音的分离),在这个酒会上有两种声音,被两个不同的麦克风在不同的地方接收到,而可以利用无监督学习来分离这两种不同的声音。注意到这里是无监督学习的原因是,事先并不知道这些声音中有哪些种类(这里的种类就是标签的意思)。

目前分类算法的效果还是不错的,但相对来讲,聚类算法就有些惨不忍睹了。确实,无监督学习本身的特点使其难以得到如分类一样近乎完美的结果。
这也正如我们在高中做题,答案(标签)是非常重要的,假设两个完全相同的人进入高中,一个正常学习,另一人做的所有题目都没有答案,那么想必第一个人高考会发挥更好,第二个人会发疯。
这时各位可能要问,既然分类如此之好,聚类如此之不靠谱,那为何我们还可以容忍聚类的存在?
因为在实际应用中,标签的获取常常需要极大的人工工作量,有时甚至非常困难。例如在自然语言处理(NLP)中,Penn Chinese Treebank在2年里只完成了4000句话的标签……

三、半监督式学习

对于半监督学习,其训练数据的一部分是有标签的,另一部分没有标签,而没标签数据的数量常常极大于有标签数据数量(这也是符合现实情况的)。
隐藏在半监督学习下的基本规律在于:数据的分布必然不是完全随机的,通过一些有标签数据的局部特征,以及更多没标签数据的整体分布,就可以得到可以接受甚至是非常好的分类结果。

参考
【1】https://blog.csdn.net/luolang_103/article/details/79861257
【2】https://www.zhihu.com/question/23194489/answer/25028661
【3】https://www.zhihu.com/question/23194489/answer/75555668

2020-03-10 18:07:39 qq_36618444 阅读数 47
  • 精通数据科学:从线性回归到深度学习

    数据科学是一门内涵很广的学科,它涉及到统计分析、机器学习以及计算机科学三方面的知识和技能。本课程将深入浅出、全面系统地介绍了这门学科的内容。通过这门课程,同学可以了解并熟悉如下的开源工具:scikit-learn、statsmodels、TensorFlow、Pyspark等。 本课程分为4个部分,18个章节。 ·             第一部分是最初的3章,主要介绍数据科学想要解决的问题、常用的IT工具Python以及这门学科所涉及的数学基础。 ·             第二部分是第4-7章,主要讨论数据模型,主要包含三方面的内容:一是统计中最经典的线性回归和逻辑回归模型;二是计算机估算模型参数的随机梯度下降法,这是模型工程实现的基础;三是来自计量经济学的启示,主要涉及特征提取的方法以及模型的稳定性。 ·             第三部分是接下来的8-15章,主要讨论算法模型,也就是机器学习领域比较经典的模型。这三章依次讨论了监督式学习、生成式模型以及非监督式学习。 ·             第四部分将覆盖目前数据科学最前沿的两个领域分别是大数据和人工智能。具体来说,第11章将介绍大数据中很重要的分布式机器学习,而最后两章将讨论人工智能领域的神经网络和深度学习。

    5956 人正在学习 去看看 唐亘

关系抽取

关系抽取的定义如下:给定一个句子X和一对实体<x,y>,关系抽取的主要任务是预测二者之间的关系r(r ∈ R),其中R是预定义的关系。在知识图谱的生命周期中(图片来自 LINK ),关系抽取是关键的一步。

关系抽取可以分为有监督、半监督和无监督三类(图片来源:LINK),本次主要介绍有监督的相关模型。
在这里插入图片描述

Relation Classification via Convolutional Deep Neural Network,COLING 2014

本文是使用深度学习解决关系抽取任务的经典模型,以往的关系抽取都依赖于大量的特征工程,烦的一批。本文只需要从文本中构造Lexical Level Features和Sentence Level Features,将它们扔给模型就可以了。首先,让我们看整体的模型架构:
在这里插入图片描述
模型主要包括以下三个部分:单词表示、特征提取和输出。该系统不需要任何复杂的句法或语义预处理,系统的输入是一个带有两个标记名词的句子。然后,通过Word Embedding将单词标记转换为向量。然后分别提取词汇级特征和句子级特征,并直接拼接形成最终的特征向量。最后,将特征向量输入softmax分类器中。

  • 单词表示
    直接使用2010年一项研究训练好的词向量模型(注意word2vec是在2013年提出来的)。
  • Lexical Level Features
    选择标记名词的嵌入词和上下文标记词,以及标记单词在WordNet中的上位词作为词法级别的特征。
    在这里插入图片描述
  • Sentence Level Features
    Figure2展示了句子级别的特征提取过程:将Word Feature与Position Feature拼接之后,送入CNN。
    - Word Feature:就是单词的本身的词向量。但是为了在卷积的时候也考虑到第一个单词与最后一个单词的上下文,进行了padding的操作,在句首添加x_s,句尾添加x_e。
    在这里插入图片描述
    在这里插入图片描述
    - Position Feature:PF是当前词到w1和w2的相对距离的组合。例如,句子中moving到People和downtown的相对距离分别是3和-3。所以一个单词最后就变成了本身的向量+到两个实体的相对距离。

Relation Extraction:Perspective from Convolutional Neural Networks,NAACL 2015

同样,使用CNN进行关系抽取,数据处理的方式与上一篇文章也类似,需要计算单词相对于实体的位置特征,每个单词的输入向量就变成了如下图所示。其中e表示单词文本的向量,d表示position embedding之后的向量。
在这里插入图片描述
模型采用与textCNN一样的框架。最开始获取单词的embedding,并且位置信息也要embedding。得到初始特征矩阵之后,送入带有多size filter的CNN。经过max pooling之后,将不同尺寸的filter的输出结果进行拼接,最后是一个dense。
在这里插入图片描述
作者也在原文中探讨了filter的大小对效果的影响,所采用的filter的size越多,捕获的不同粒度的特征也就越多,效果越好。这和我们的直觉是一样的:
在这里插入图片描述
最终看一段模型的代码:

class PCNN(BasicModule):
    '''
    the basic model
    Zeng 2014 "Relation Classification via Convolutional Deep Neural Network"
    '''
    def __init__(self, opt):
        super(PCNN, self).__init__()
        self.opt = opt
        self.model_name = 'PCNN'
        self.word_embs = nn.Embedding(self.opt.vocab_size, self.opt.word_dim)
        self.pos1_embs = nn.Embedding(self.opt.pos_size + 1, self.opt.pos_dim)
        self.pos2_embs = nn.Embedding(self.opt.pos_size + 1, self.opt.pos_dim)
        feature_dim = self.opt.word_dim + self.opt.pos_dim * 2
        # encoding sentence level feature via cnn
        self.convs = nn.ModuleList([nn.Conv2d(1, self.opt.filters_num, (k, feature_dim), padding=(int(k / 2), 0)) for k in self.opt.filters])
        all_filter_num = self.opt.filters_num * len(self.opt.filters)   # 多次卷积输出
        self.cnn_linear = nn.Linear(all_filter_num, self.opt.sen_feature_dim)   # 输出句子特征维度
        # self.cnn_linear = nn.Linear(all_filter_num, self.opt.rel_num)
        # concat the lexical feature in the out architecture,句子、词级别向量拼接
        # *6表示:两个实体以及实体的上下文一共6个单词
        self.out_linear = nn.Linear(all_filter_num + self.opt.word_dim * 6, self.opt.rel_num)
        # self.out_linear = nn.Linear(self.opt.sen_feature_dim, self.opt.rel_num)
        self.dropout = nn.Dropout(self.opt.drop_out)
        self.init_model_weight()

    def init_model_weight(self):
        '''use xavier to init'''
        nn.init.xavier_normal_(self.cnn_linear.weight)
        nn.init.constant_(self.cnn_linear.bias, 0.)
        nn.init.xavier_normal_(self.out_linear.weight)
        nn.init.constant_(self.out_linear.bias, 0.)
        for conv in self.convs:
            nn.init.xavier_normal_(conv.weight)
            nn.init.constant_(conv.bias, 0)

    def forward(self, lexical_feature, word_feautre, left_pf, right_pf):
        left_emb = self.pos1_embs(left_pf)  # (batch_size, max_len, word_dim)
        right_emb = self.pos2_embs(right_pf)  # (batch_size, max_len, word_dim)
        sentence_feature = torch.cat([word_feautre, left_emb, right_emb], 2)  # (batch_size, max_len, word_dim + pos_dim *2)
        # conv part
        x = sentence_feature.unsqueeze(1)
        x = self.dropout(x)
        x = [F.relu(conv(x)).squeeze(3) for conv in self.convs]
        x = [F.max_pool1d(i, i.size(2)).squeeze(2) for i in x]
        x = torch.cat(x, 1)
        sen_level_emb = x
        # combine lexical and sentence level emb
        x = torch.cat([lexical_feature, sen_level_emb], 1)
        x = self.dropout(x)
        x = self.out_linear(x)
        return x

Relation Classification via Recurrent Neural Network,2015

对于RNN,由于模型学习整个单词序列,因此在正向或反向递归传播时,可以自动获得每个单词的相对位置信息。因此,在单词序列中注释目标名就足够了,不需要改变输入向量。所以position信息就不在作为输入,而是在句子中加入“< e1> people </ e1> ”这样的标记来表明实体的位置。
在这里插入图片描述

Attention-Based Bidirectional Long Short-Term Memory Networks for Relation Classification,ACL2016

在上文的基础上引入注意力机制。深度学习中的注意力机制(Attention Mechanism)和人类视觉的注意力机制类似,就是在众多信息中把注意力集中放在重要的点上,选出关键信息,而忽略其他不重要的信息。在关系抽取中,注意力机制让分类器把“目光”重点放在对分类贡献大的词汇上。
在这里插入图片描述
Attention的操作只需要三个公式就可以概括:
在这里插入图片描述
其中,H是BiLSTM的输出。α就是传说中的“注意力”,其实就是一个学习到的权重。这部分实现在代码里也很简单:

class Att_BLSTM(BasicModule):
    def __init__(self):
        super().__init__()
        # net structures and operations
        self.word_embeddings = nn.Embedding(cfg.vocab_size, cfg.word_dim)  # embedding层
        self.lstm = nn.LSTM(
            input_size=cfg.word_dim,
            hidden_size=cfg.lstm_hidden_dim//2,  # 注意这里是双向的,所以除以二输出才能是hidden_dim
            num_layers=cfg.layers_num,
            bias=True,
            batch_first=True,
            dropout=0,
            bidirectional=True,
        )
        self.tanh = nn.Tanh()
        self.emb_dropout = nn.Dropout(0.3)
        self.lstm_dropout = nn.Dropout(0.3)
        self.linear_dropout = nn.Dropout(0.5)
        self.weight_W = nn.Parameter(torch.Tensor(cfg.lstm_hidden_dim, cfg.lstm_hidden_dim))
        self.weight_proj = nn.Parameter(torch.Tensor(cfg.lstm_hidden_dim, 1))
        self.dense = nn.Linear(
            in_features=cfg.lstm_hidden_dim,
            out_features=cfg.rel_num,
            bias=True
        )
        # initialize weight
        nn.init.uniform_(self.weight_W, -0.1, 0.1)
        nn.init.uniform_(self.weight_proj, -0.1, 0.1)

    def forward(self, words,sentence):
        x = torch.cat([words.long(), sentence.long()], 1)
        embeds = self.word_embeddings(x)  # [seq_len, bs, emb_dim]
        embeds = self.emb_dropout(embeds)
        lstm, _ = self.lstm(embeds)  # [seq_len, bs, hid_dim]
        # # # Attention过程,与论文中三个公式对应
        u = torch.tanh(torch.matmul(lstm, self.weight_W))
        att = torch.matmul(u, self.weight_proj)   # 此时得到α
        att_score = F.softmax(att, dim=1)
        scored_x = lstm * att_score
        # # # Attention过程结束
        feat = torch.sum(scored_x, dim=1)
        y = self.dense(feat)
        return y

未完待续…

2014-06-04 11:24:51 lanhaics 阅读数 1591
  • 精通数据科学:从线性回归到深度学习

    数据科学是一门内涵很广的学科,它涉及到统计分析、机器学习以及计算机科学三方面的知识和技能。本课程将深入浅出、全面系统地介绍了这门学科的内容。通过这门课程,同学可以了解并熟悉如下的开源工具:scikit-learn、statsmodels、TensorFlow、Pyspark等。 本课程分为4个部分,18个章节。 ·             第一部分是最初的3章,主要介绍数据科学想要解决的问题、常用的IT工具Python以及这门学科所涉及的数学基础。 ·             第二部分是第4-7章,主要讨论数据模型,主要包含三方面的内容:一是统计中最经典的线性回归和逻辑回归模型;二是计算机估算模型参数的随机梯度下降法,这是模型工程实现的基础;三是来自计量经济学的启示,主要涉及特征提取的方法以及模型的稳定性。 ·             第三部分是接下来的8-15章,主要讨论算法模型,也就是机器学习领域比较经典的模型。这三章依次讨论了监督式学习、生成式模型以及非监督式学习。 ·             第四部分将覆盖目前数据科学最前沿的两个领域分别是大数据和人工智能。具体来说,第11章将介绍大数据中很重要的分布式机器学习,而最后两章将讨论人工智能领域的神经网络和深度学习。

    5956 人正在学习 去看看 唐亘

推荐深度学习的教程。Andrew Ng老师的,已有部分章节翻译为中文。


http://deeplearning.stanford.edu/wiki/index.php/

说明:本教程将阐述无监督特征学习和深度学习的主要观点。通过学习,你也将实现多个功能学习/深度学习算法,能看到它们为你工作,并学习如何应用/适应这些想法到新问题上。

本教程假定机器学习的基本知识(特别是熟悉的监督学习,逻辑回归,梯度下降的想法),如果你不熟悉这些想法,我们建议你去这里

机器学习课程,并先完成第II,III,IV章(到逻辑回归)。


稀疏自编码器


矢量化编程实现


预处理:主成分分析与白化


Softmax回归


自我学习与无监督特征学习


建立分类用深度网络


自编码线性解码器


处理大型图像



注意: 这条线以上的章节是稳定的。下面的章节仍在建设中,如有变更,恕不另行通知。请随意浏览周围并欢迎提交反馈/建议。


混杂的

混杂的主题


进阶主题:

稀疏编码

独立成分分析样式建模

其它

2019-03-12 22:28:51 qq_42160304 阅读数 159
  • 精通数据科学:从线性回归到深度学习

    数据科学是一门内涵很广的学科,它涉及到统计分析、机器学习以及计算机科学三方面的知识和技能。本课程将深入浅出、全面系统地介绍了这门学科的内容。通过这门课程,同学可以了解并熟悉如下的开源工具:scikit-learn、statsmodels、TensorFlow、Pyspark等。 本课程分为4个部分,18个章节。 ·             第一部分是最初的3章,主要介绍数据科学想要解决的问题、常用的IT工具Python以及这门学科所涉及的数学基础。 ·             第二部分是第4-7章,主要讨论数据模型,主要包含三方面的内容:一是统计中最经典的线性回归和逻辑回归模型;二是计算机估算模型参数的随机梯度下降法,这是模型工程实现的基础;三是来自计量经济学的启示,主要涉及特征提取的方法以及模型的稳定性。 ·             第三部分是接下来的8-15章,主要讨论算法模型,也就是机器学习领域比较经典的模型。这三章依次讨论了监督式学习、生成式模型以及非监督式学习。 ·             第四部分将覆盖目前数据科学最前沿的两个领域分别是大数据和人工智能。具体来说,第11章将介绍大数据中很重要的分布式机器学习,而最后两章将讨论人工智能领域的神经网络和深度学习。

    5956 人正在学习 去看看 唐亘

人工智能与机器学习与深度学习

什么是人工智能?
人类用各种方式让机器拥有与人类相仿的“智能”,就是人工智能。
什么是机器学习?
机器学习就是实现人工智能的一种方式。

什么是深度学习?
深度学习就是实现机器学习的一种技术。

机器学习

为什么要机器学习呢?你想啊,人类这么聪明是为什么,还不是因为在整个人类历史中,人类不断学习,所以才有现在的智能。既然要让机器拥有与人类相仿的智能,那就让机器去学习吧。

机器学习大概可分为两种:有监督学习和无监督学习

有监督学习

有监督学习的大致过程(以图片识别猫为例):
1. 数据采集(就是找一堆猫的图片,假设是x张,当然数量很庞大,至于多大我也不清楚)
2. 特征提取(就是在图片是把猫圈起来,然后给一个标签:猫;而没有圈起来的部分全部作为背景,同时也给一个标签:背景。当然啦,这都是在软件上进行的)
3. 图片转换:人类看图片是很简单的,而机器是怎么看图的呢。机器看到的图片是由一堆数字组成的,如下图
在这里插入图片描述
当然啦,数字是我乱填的。一张彩色图片通常是三层(rgb,即红色red,绿色green,蓝色blue)的,所以是由三张和上面的图一样的图,你也可以看作是三张填满数字的表格。
当然,黑白图片就只有一层的,相当于只有一张表格咯。表格中的数字代表着颜色的程度。
假设上图是一张黑白图的表格,第一个小格子数字是255,那么这个小格的黑色程度是255(最低是0,最高是255),而我们人来看到这个格子就是全黑的。如果这个格子是0,那么我们看到的这个格子就是全白的。
4.开始学习(详细的后面再讲)
5. 当机器学习完这么多的猫图后,它就大概知道上面样子的物体是猫了。
6. 学习的过程也是一个训练的过程
7. 然后就是测试了
什么是测试呢?我们用了很多图片来让机器知道什么是猫,那总要知道机器学习得怎么样吧,就好像你上学时的测验和考试
8.测试:也是用一堆猫图(数量大概是x/4张)然后用来测试机器学习学习的效果
9. 根据学习的结果与真实结果作比较,通过一些公式来计算误差,就知道学得好不好啦(好比学习的结果里面有90%是猫,那么训练的效果就很好了,至于要用什么公式来计算误差,之后再说)

无监督学习

而无监督学习呢,厉害了,它不需要人来圈出那些部分是猫,它就能自己识别出什么是猫:
它和有监督学习的最大差别在于第二点的特征提取,因为它不用提取,因此也导致了学习的方式与有监督学习不一样。
怎么不一样呢:
简单来说就是给机器一堆猫图和一堆狗图,它就相似的图片归为一类,自动分成了猫图和狗图。
怎么算是相似呢?其实一类图片和另一类图片之间是由某种距离的,而这种距离就是关键。距离短的就是相似,距离长的就是不相似。
这个距离是什么呢?举个超级简单的例子吧:最黑和最白,在机器看来就是0和255,那么0和255的差距就是0-255=-255,这个差距带入到某公式里,就可以计算距离啦。详细的之后再讲吧。

2020-02-14 22:41:52 mndlgzzd 阅读数 492
  • 精通数据科学:从线性回归到深度学习

    数据科学是一门内涵很广的学科,它涉及到统计分析、机器学习以及计算机科学三方面的知识和技能。本课程将深入浅出、全面系统地介绍了这门学科的内容。通过这门课程,同学可以了解并熟悉如下的开源工具:scikit-learn、statsmodels、TensorFlow、Pyspark等。 本课程分为4个部分,18个章节。 ·             第一部分是最初的3章,主要介绍数据科学想要解决的问题、常用的IT工具Python以及这门学科所涉及的数学基础。 ·             第二部分是第4-7章,主要讨论数据模型,主要包含三方面的内容:一是统计中最经典的线性回归和逻辑回归模型;二是计算机估算模型参数的随机梯度下降法,这是模型工程实现的基础;三是来自计量经济学的启示,主要涉及特征提取的方法以及模型的稳定性。 ·             第三部分是接下来的8-15章,主要讨论算法模型,也就是机器学习领域比较经典的模型。这三章依次讨论了监督式学习、生成式模型以及非监督式学习。 ·             第四部分将覆盖目前数据科学最前沿的两个领域分别是大数据和人工智能。具体来说,第11章将介绍大数据中很重要的分布式机器学习,而最后两章将讨论人工智能领域的神经网络和深度学习。

    5956 人正在学习 去看看 唐亘

本程序为Matlab程序(咱不耽误铁汁们时间)
在有监督深度学习中,数据集和标签集是缺一不可的,标签是啥呢,就是用来区分数据之间的分类命名,那么咱们开门见山,走起。
首先,确定数据集的维数,以m行1列的电机轴承数据集为例
需要做啥呢?
均值+归一化处理,ok不
咋整呢
给两个小程序,都能实现,效果一样

(1)

load Normal_3.mat                  %导入正常数据
x0 = X100_DE_time(1:480000,:);     %令x0赋值为驱动端数据,总共48万个
x0 = x0 - mean(x0);                % 去均值处理 ,mean为MATLAB自带求均值函数 
x0 = x0';                          %令x0重新赋值,为去均值之后的数
y0 = mapminmax(x0,0,1);            %归一化处理 归一化函数为[A1,PS]=mapminmax(A)
                                   A1为矩阵,ps为对应关系
                                   也可表示成y0=map(取值,下界,上界)
A0 = zeros(600,800);               %创建矩阵A0,zeros函数为创建矩阵函数,(行,列)
for i = 1:600                      之前数据为48万行,1列,每取600个数放入一列
    for j = 1:800
        A0(i,j) = y0(800*(i-1)+j);    %对新建矩阵进行赋值,新矩阵建成,600行800列
    end;
end;

下一步,各种故障类型矩阵建立成功,开始合并,加入标签

traindata = [A0;A1;A2;A3;A4;A5;A6;A7;A8;A9];     % 合并处理,[;]代表纵向拼接[,]为横向拼接,一共6000行数据
trainlabels=zeros(6000,10);                      %新建标签矩阵6000行,10列
for i=1:10       
  trainlabels(600*i-599:600*i,i)=1;              %每600行做一次赋值处理,赋值为1,一共十次,对应10类故障
end 

save('traindata','traindata');                   %保存文件
save('trainlabels','trainlabels');

一个不够?
再来一个!

(2)

Mt1f2=mt1f2(202:10201,:);             %每小时20个数据故障截取10-510小时的数据,即202行到10201行 ,共10000行
Mt1f4=mt1f4(202:10201,:);
Mt1f8=mt1f8(202:10201,:);

                                      增加随机打乱数据分布
Mt1f2=mt1f2(randperm(size(mtaf2,1)),:);      %随机打乱排序,mt1f2代表mt1f2的行数
Mt1f4=mt1f4(randperm(size(mtaf4,1)),:); 
Mt1f8=mt1f8(randperm(size(mtaf8,1)),:); 

Traindata=[mt1f2(1:8000,:);mt1f4(1:8000,:);mt1f8(1:8000,:);mt1f12(1:8000,:)mt1.......mtiff18(1:8000,:);];           
                    %每类取80%的数据为训练集,再合成一个训练集
testdata=[mt1f2(8001:10000,:);mt1f4(8001:10000,:);mt1f8(8001:10000,:);mt1f12(8001:10000,:)mt1.......mtiff18(8001:10000,:);];       
                    %每类取20%的数据合成测试集
Save进行保存 
T1=[1 0 0 0 0 0 0];
T2=[0 1 0 0 0 0 0];
T3=[0 0 1 0 0 0 0];
T4=[0 0 0 1 0 0 0];                    %对故障进行编码

Rt1=repmat(t1,400,1);
Rt2=repmat(t2,400,1);
Rt3=repmat(t3,400,1);
Rt4=repmat(t4,400,1);                  %对t重复400行,进行赋值
Te1=repmat(t1,100,1);
Te2=repmat(t2,400,1);
......

Trainlabels=[rt1;tr2;tr3;tr4;tr5;tr6;tr7;tr8];   %合成样本训练标签集
Testlabels=[te1;te2;te3;te4;....]                %合成样本测试标签集

欧不欧?!
好使!
整就完了!

PS:看好自己保存的位置,别找不到了,完犊子。

弱监督深度学习

阅读数 1734

没有更多推荐了,返回首页