【2】基于深度神经网络的脑电睡眠分期方法研究(标签导入)

该博客介绍了如何结合Polyman和Python进行数据预处理,包括将Pysiobank标签文件转换为csv,再转为txt,并依据标签对30s信号进行分类。此外,还展示了如何构建训练集和验证集,以及根据标签将图像分类到不同的文件夹中。
摘要由CSDN通过智能技术生成

使用Polyman和Python相结合的方法。

1、Polyman:先从pysiobank中下载到与原始数据相对应的标签文件,用Pysiobank可以打开文件,然后导出csv文件(即excel表格),将里面的所有标签改成0、1、2、3、4、5的分类名称(为了好区分),将movement状态改成一个接近的状态,将最后一个标签删除。

2、在python中将csv文件转换成txt文件(在txt文件中标签以0、1、2、3、4、5的形式出现,一行一个数)

# coding: utf-8
r"""
生成标签
"""
import pandas as pd


def main():
    save_path = '4041_label.txt'
    file_path = r"C:\Users\10133\Desktop\标签集\SC4041_label.csv"
    df = pd.read_csv(file_path)
    values = df.values
    duration = values[:, 3]
    label = values[:, 4]
    result = []
    for i, d in enumerate(duration):
        num = d // 30
        current_label = label[i]
        item = [current_label] * num
        result = result + item
    result = list(map(str, result))
    content = '\n'.join(result)
    open(save_path, 'w+').write(content)
    print()


if __name__ == '__main__':
    main()

3、将上个博客中导出的30s一段的信号根据标签进行分类,首先第一步是建立训练集和验证集,利用代码建成train和valid两个文件夹,下面分设六个种类的文件夹(如果嫌麻烦,可以手动建文件夹)本文中使用的方法是将前七个人的数据分成训练集和验证集,将第八个人的数据直接用来测试分成六个种类。

# -*- coding:utf-8 -*-
# In[1]:
import os
import shutil
import numpy as np

#先建立一个数据的文件夹
base_dir = r'C:\Users\10133\Desktop\bishe\matlab\traintest'
if os.path.exists(base_dir):
   shutil.rmtree(base_dir)
os.mkdir(base_dir)  # 在该路径下创建目录

#在总的文件夹下自动创建训练集和验证集两个文件夹
train_dir = os.path.join(base_dir, 'train')  # 训练文件夹
os.mkdir(train_dir)
test_dir = os.path.join(base_dir, 'valid')  # 验证文件夹
os.mkdir(test_dir)

print('主目录已经建立好了!')

#在训练集文件夹下自动建立六个类别文件夹
train_0_dir = os.path.join(train_dir, '0')
os.mkdir(train_0_dir)

train_1_dir = os.path.join(train_dir, '1')
os.mkdir(train_1_dir)

train_2_dir = os.path.join(train_dir, '2')
os.mkdir(train_2_dir)

train_3_dir = os.path.join(train_dir, '3')
os.mkdir(train_3_dir)

train_4_dir = os.path.join(train_dir, '4')
os.mkdir(train_4_dir)

train_5_dir = os.path.join(train_dir, '5')
os.mkdir(train_f5_dir)

print('类别目录已经建立好了!')

第二步就是根据标签将图片分类(只是分成了五类,但是还没有分训练集和验证集)

# -*- coding:utf-8 -*-
# In[1]:
import os
import shutil
import numpy as np

train_0_dir = r'C:\Users\10133\Desktop\bishe\matlab\classification\0'
train_1_dir = r'C:\Users\10133\Desktop\bishe\matlab\classification\1'
train_2_dir = r'C:\Users\10133\Desktop\bishe\matlab\classification\2'
train_3_dir = r'C:\Users\10133\Desktop\bishe\matlab\classification\3'
train_4_dir = r'C:\Users\10133\Desktop\bishe\matlab\classification\4'
train_5_dir = r'C:\Users\10133\Desktop\bishe\matlab\classification\5'

original_dataset_dir = r'D:\SC4032jpg'#这个例子用的是4032的例子

labelpath = r'C:\Users\10133\PycharmProjects\practice\4032_label.txt'#导入4032的标签

y = np.loadtxt(fname=labelpath, delimiter='\n')

print(y[0])
print(y.shape)
print('finished!')

for i in range(len(y)):
    if y[i] == 0:
        src = os.path.join(original_dataset_dir, f"{i + 1}.jpg")
        dst = os.path.join(train_0_dir, f"{i + 1}.jpg")
        shutil.copyfile(src, dst)
    elif y[i] == 1:
        src = os.path.join(original_dataset_dir, f"{i + 1}.jpg")
        dst = os.path.join(train_1_dir, f"{i + 1}.jpg")
        shutil.copyfile(src, dst)
    elif y[i] == 2:
        src = os.path.join(original_dataset_dir, f"{i + 1}.jpg")
        dst = os.path.join(train_2_dir, f"{i + 1}.jpg")
        shutil.copyfile(src, dst)
    elif y[i] == 3:
        src = os.path.join(original_dataset_dir, f"{i + 1}.jpg")
        dst = os.path.join(train_3_dir, f"{i + 1}.jpg")
        shutil.copyfile(src, dst)
    elif y[i] == 4:
        src = os.path.join(original_dataset_dir, f"{i + 1}.jpg")
        dst = os.path.join(train_4_dir, f"{i + 1}.jpg")
        shutil.copyfile(src, dst)
    else:
        src = os.path.join(original_dataset_dir, f"{i + 1}.jpg")
        dst = os.path.join(train_5_dir, f"{i + 1}.jpg")
        shutil.copyfile(src, dst)

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值