1、如何划分数据集

  • 导入数据
data1 = scio.loadmat("C:/Users/tyh18/Desktop/data/A/1_Normal_1.mat")["X098_DE_time"]
data2 = scio.loadmat("C:/Users/tyh18/Desktop/data/A/2_B007_1.mat")["X119_DE_time"]
data3 = scio.loadmat("C:/Users/tyh18/Desktop/data/A/3_B014_1.mat")["X223_DE_time"]
data4 = scio.loadmat("C:/Users/tyh18/Desktop/data/A/4_B021_1.mat")["X186_DE_time"]
data5 = scio.loadmat("C:/Users/tyh18/Desktop/data/A/5_IR007_1.mat")["X106_DE_time"]
data6 = scio.loadmat("C:/Users/tyh18/Desktop/data/A/6_IR014_1.mat")["X170_DE_time"]
data7 = scio.loadmat("C:/Users/tyh18/Desktop/data/A/7_IR021_1.mat")["X210_DE_time"]
data8 = scio.loadmat("C:/Users/tyh18/Desktop/data/A/8_OR007@6_1.mat")["X131_DE_time"]
data9 = scio.loadmat("C:/Users/tyh18/Desktop/data/A/9_OR014@6_1.mat")["X198_DE_time"]
data10 = scio.loadmat("C:/Users/tyh18/Desktop/data/A/10_OR021@6_1.mat")["X235_DE_time"]
  • 定义函数
def ber_train(data,windowlen,buchang):
    p=len(data)
    L=list()
    q=(p-windowlen)
    for i in range(q):
        if  int(i) % int(buchang) == 0:
             a=data[i:i+windowlen]
             L.append(a)
        if int(i) / int(buchang) > 659 :
             break
    return L

def data_train(data,windowlen,buchang,biaoqian):
    data=ber_train(data,windowlen,buchang)
    data=np.array(data)
    x,y,z=data.shape
    c=data.reshape(x,y)
    for i in range(x):
        c1=c[i,:]
        pingjunzhi=np.mean(c1)
        c2=c1-pingjunzhi
        c3=max(abs(c2))
        c1=c2/c3
        c[i,:]=c1
    k=np.zeros((x,1))+biaoqian
    KK=np.hstack([c,k])
    # print(KK.shape)
    return KK


def ber_test(data,windowlen,buchang):
    p=len(data)
    L=list()
    q=(p-windowlen)
    for i in range(q):
        if  int(i) % int(buchang) == 0:
             a=data[i:i+windowlen]
             L.append(a)
        if int(i) / int(buchang) > 58 :
            break
    return L

def data_test(data,windowlen,buchang,biaoqian):
    data=ber_test(data,windowlen,buchang)
    data=np.array(data)
    x,y,z=data.shape
    c=data.reshape(x,y)
    for i in range(x):
        c1=c[i,:]
        pingjunzhi=np.mean(c1)
        c2=c1-pingjunzhi
        c3=max(abs(c2))
        c1=c2/c3
        c[i,:]=c1
    k=np.zeros((x,1))+biaoqian
    KK=np.hstack([c,k])
    # print(KK.shape)
    return KK
  • 划分测试集、训练集
yb1_train=data_train(data1,2048,731,1)    #660,窗口为2048,步长为730
yb2_train=data_train(data2,2048,181,2)    #660,步长为180
yb3_train=data_train(data3,2048,181,3)    #662,步长为180
yb4_train=data_train(data4,2048,182,4)    #660,步长为181
yb5_train=data_train(data5,2048,182,5)    #660,步长为181
yb6_train=data_train(data6,2048,181,6)    #662,步长为180
yb7_train=data_train(data7,2048,181,7)    #661,步长为180
yb8_train=data_train(data8,2048,182,8)    #662,步长为181
yb9_train=data_train(data9,2048,182,9)    #660,步长为181
yb10_train=data_train(data10,2048,182,10) #660,步长为181

yb1_test = data_test(data1,2048,2048,1)
yb2_test = data_test(data2,2048,2048,2)
yb3_test = data_test(data3,2048,2048,3)
yb4_test = data_test(data4,2048,2048,4)
yb5_test = data_test(data5,2048,2048,5)
yb6_test = data_test(data6,2048,2048,6)
yb7_test = data_test(data7,2048,2048,7)
yb8_test = data_test(data8,2048,2048,8)
yb9_test = data_test(data9,2048,2048,9)
yb10_test = data_test(data10,2048,2048,10)
  • 合并数据
L_train=np.vstack([yb1_train,yb2_train,yb3_train,yb4_train,yb5_train,yb6_train,yb7_train,yb8_train,yb9_train,yb10_train])
L_test=np.vstack([yb1_test,yb2_test,yb3_test,yb4_test,yb5_test,yb6_test,yb7_test,yb8_test,yb9_test,yb10_test])


X_train = np.expand_dims(L_train[:, 0:2048].astype(float), axis=1) #每行的1-2048列作为训练数据
Y_train = L_train[:, 2048] #每行的第2049列作为训练标签

X_test = np.expand_dims(L_test[:, 0:2048].astype(float), axis=1) #每行的1-2048列作为训练数据
Y_test = L_test[:, 2048] #每行的第2049列作为训练标签
  • 变成数据集
encoder = LabelEncoder()    # 独热编码
Y_train = encoder.fit_transform(Y_train.ravel())
X_train, Y_train = torch.FloatTensor(X_train), torch.LongTensor(Y_train)

train_dataset =  torch.utils.data.TensorDataset(X_train, Y_train)

encoder = LabelEncoder()
Y_test = encoder.fit_transform(Y_test.ravel())
X_test, Y_test = torch.FloatTensor(X_test), torch.LongTensor(Y_test)


val_dataset =  torch.utils.data.TensorDataset(X_test, Y_test)

train_loader = DataLoader(train_dataset, batch_size=330, shuffle=True)  # shuffle=True 取完变量之后,打乱顺序
val_loader = DataLoader(val_dataset, batch_size=590, shuffle=True)     # shuffle=False 取完变量之后,不打乱顺序

print(len(val_dataset))
print(len(train_dataset))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值