【7天入门机器学习课程附加题:故障多分类】总结之二——数据处理

举报
TSE 发表于 2019/01/26 21:41:53 2019/01/26
【摘要】 从《【7天入门机器学习课程附加题:故障多分类】总结之一———数据理解与分析》可知为了区分Abnormal2与Abnormal3,需要对样本数据进行再处理以达到特征强化,从而区分出标识Abnormal2与Abnormal3。因为每个文件是同一个标识的时间序列,独立于其它文件,所以特征强化是对每一个文件做单独处理的。这里说的特征强化其实就是以统一标准对同一大样本(文件)中的各个小样本(行数据)进...


从《【7天入门机器学习课程附加题:故障多分类】总结之一———数据理解与分析》可知为了区分Abnormal2与Abnormal3,需要对样本数据进行再处理以达到特征强化,从而区分出标识Abnormal2与Abnormal3。

因为每个文件是同一个标识的时间序列,独立于其它文件,所以特征强化是对每一个文件做单独处理的。这里说的特征强化其实就是以统一标准对同一大样本(文件)中的各个小样本(行数据)进行聚类计算。这里举例使用Office 2016的Excel进行数据处理,直观说明特征强化处理。

一、数据处理的标准

新样本数据是原始样本数据2个维度<rawdata,output>的<均值、方差、标准差、最大值、最小值>,当然还可以有其它计算方法,这样就形成了<rawdata均值、rawdata方差、rawdata标准差、rawdata最大值、rawdata最小值、output均值、output方差、output标准差、output最大值、output最小值>10个维度的数据。具体做法是:新样本数据第1行是原始数据的第1、2、3、4行数据的<均值、方差、标准差、最大值、最小值>,新样本数据第2行是原始数据的第2、3、4、5行数据的<均值、方差、标准差、最大值、最小值>,以此类推,新样本数据第n行是原始数据的第n、n+1、n+2、n+3行数据的<均值、方差、标准差、最大值、最小值>。这样做达到了特征强化的效果,又不减少样本数量。

二、Excel中的操作

Excel中公式如图:

image.png

Excel中公式计算结果如图:

image.png

三、数据处理结果

加文件名列filename用于样本合并后区分样本。打上标识label。结果如图并存为xl1.csv。

image.png

为每个训练数据文件做如上处理,并存为xl1.csv、xl2.csv、xl3.csv、xl4.csv、xl5.csv、xl6.csv。将xl1.csv至xl5.csv合并成xlj.csv文件作为训练集,xl6.csv改名为yzj.csv留作验证集。也为每个测试数据文件做如上处理,但标识列label值留空,合并测试数据为csj.csv作为测试集。为了在华为云机器学习服务中使用不易出错,把样本数据的标列用数字表示。比如[0,1,2,3]表示相应的[Normal,Abnormal1,Abnormal2,Abnormal3]。

四、在python使用pandas处理数据

Excel处理数据虽然直观,但是容易出错。这里提供python处理数据的脚本。结果与上面Excel处理的结果有微小差别,数据在文件中存放位置的问题。

#xlj.csv.py

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

l=[];

for i in range(0,5):

    ii=i+1

    fn=str(ii)+'.csv'

    df=pd.read_csv(fn)

    r=df[['rawdata','output']].rolling(4,min_periods=1)

    dr=r.agg([np.mean,np.var,np.std,np.max,np.min])

    dr.columns=['rawdatamean','rawdatavar','rawdatastd','rawdatamax','rawdatamin',' outputmean','outputvar ','outputtd','outputmax','outputmin']

    if ii>3:

        ii=0

    dr['filename']=fn

    dr['label']=ii

    l.append(dr)

re=pd.concat(l,sort=False)

re.to_csv('xlj.csv',index=False)

 

 

#yzj.csv.py

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

fn='6.csv'

df=pd.read_csv(fn)

r=df[['rawdata','output']].rolling(4,min_periods=1)

dr=r.agg([np.mean,np.var,np.std,np.max,np.min])

dr.columns=['rawdatamean','rawdatavar','rawdatastd','rawdatamax','rawdatamin',' outputmean','outputvar ','outputtd','outputmax','outputmin']

dr['filename']=fn

dr['label']=0

dr.to_csv('yzj.csv',index=False)

 

 

#csj.csv.py

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

l=[];

for i in range(0,56):

    ii=i+1

    fn=str(ii)+'.csv'

    df=pd.read_csv(fn)

    r=df[['rawdata','output']].rolling(4,min_periods=1)

    dr=r.agg([np.mean,np.var,np.std,np.max,np.min])

    dr.columns=['rawdatamean','rawdatavar','rawdatastd','rawdatamax','rawdatamin',' outputmean','outputvar ','outputtd','outputmax','outputmin']

    dr['filename']=fn

    l.append(dr)

re=pd.concat(l,sort=False)

re.to_csv('csj.csv',index=False)

 

将上面代码分别保存在各个数据集的目录下运行,可生成相应的数据集:xlj.csv、yzj.csv、csj.csv。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。