【7天入门机器学习课程附加题:故障多分类】总结之二——数据处理
从《【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中公式如图:
Excel中公式计算结果如图:
三、数据处理结果
加文件名列filename用于样本合并后区分样本。打上标识label。结果如图并存为xl1.csv。
为每个训练数据文件做如上处理,并存为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处理的结果有微小差别,数据在文件中存放位置的问题。
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。
- 点赞
- 收藏
- 关注作者
评论(0)