处理不等长的数据?

最近在处理EEG数据,遇到不等长的EEG数据,需要处理成等长的数据。

首先:

先看数据的分布,是否符合正太分布,datas_lengths是数据长度的列表,分别存储每一个样本的数据长度

num_tokens = np.array(data_lengths)
plt.hist(np.log(num_tokens), bins = 100)
plt.xlim((1,10))
plt.ylabel('number of tokens')
plt.xlabel('length of tokens')
plt.title('Distribution of tokens length')
plt.show()

 

显示数据柱状图:

然后:

这里用一个均值+2个标准差,可以覆盖到97%左右的数据。(正态分布的特性)


max_tokens = np.mean(data_lengths) + 2 * np.std(data_lengths)
max_tokens = int(max_tokens)
max_tokens

最后:

使用pad_sequences(keras包提供的函数)截取和补齐数据

(长于max_tokens的数据进行截取,短于max_tokens的数据进行补0)

from tensorflow.python.keras.preprocessing.sequence import pad_sequences
train_pad = pad_sequences(x_data, maxlen=max_tokens,
                            padding='pre', truncating='pre',dtype=float)

 

 参数说明

  • sequences:浮点数或整数构成的两层嵌套列表
  • maxlen:None或整数,为序列的最大长度。大于此长度的序列将被截短,小于此长度的序列将在后部填0.
  • dtype:返回的numpy array的数据类型
  • padding:‘pre’或‘post’,确定当需要补0时,在序列的起始还是结尾补`
  • truncating:‘pre’或‘post’,确定当需要截断序列时,从起始还是结尾截断
  • value:浮点数,此值将在填充时代替默认的填充值

参考:https://blog.csdn.net/wcy23580/article/details/84957471

       https://keras-cn.readthedocs.io/en/latest/preprocessing/sequence/ 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值