脑机接口基础学习14---Epochs数据可视化

这篇文章主要介绍epoched数据的可视化

这里介绍的所有函数基本上都是高级matplotlib函数,所有方法均返回matplotlib图形实例的句柄
mne.Epochs.plot()提供了一个交互式浏览器,当与关键字block=True结合使用时,运行手动拒绝。这将阻止脚本执行,直到关闭浏览器窗口

#加载工具包

import os
import os.path as op
import mne
import matplotlib.pyplot as plt

#加载数据
'''
加载数据,如果本地无该数据,
则从网络下载

'''
sample_data_folder=r'E:\脑机接口资料\MNE-sample-data'
sample_data_raw_file=os.path.join(sample_data_folder,'MEG','sample',
                                 'sample_audvis_filt-0-40_raw.fif')
raw=mne.io.read_raw_fif(sample_data_raw_file,verbose=False,preload=True)
#设置 event ID

event_id={'auditory/left':1,'auditory/right':2,'visual/left':3,
         'visual/right':4,'smiley':5,'button':32}
events=mne.find_events(raw)
epochs=mne.Epochs(raw,events,event_id=event_id,tmin=-0.2,tmax=0.5,preload=True)

del raw

输出结果:
在这里插入图片描述

#绘制epochs
epochs.plot(block=True)
plt.show()

在这里插入图片描述
顶部的数字表示epoch的事件id,底部的数字是各个epoch的运行编号
因为这里没有进行人为的伪影校正或剔除,所以有一些epoch数据被眨眼或扫视污染。例如,epoch 1似乎被眨眼污染了(滚动到底部查看EOG通道)。单击浏览器窗口的顶部可以将这个epoch标记剔除。单击时,epoch应该变为红色。这意味着当浏览器窗口关闭时,它将被删除。

通过将events关键字传递给epochs绘图仪,可以在epoched数据上绘制事件标记。这些事件被绘制为竖线,它们遵循与mvc.viz.plot_events()相同的着色方案。由于颜色相同,事件绘图仪也可以作为epochs绘图仪事件的图例。也可以通过event_colors关键字传递自己的颜色。在这里,我们可以绘制看到笑脸和按下按钮之间的反应事件(事件32)。

在传递事件时,默认情况下,底部的epoch编号是关闭的,以避免重叠。你可以通过设置对话框通过按o键重新打开它。

#绘制events
events=mne.pick_events(events,include=[5,32])
mne.viz.plot_events(events)

在这里插入图片描述

# 绘制smiley的epochs

epochs['smiley'].plot(events=events)
plt.show()

在这里插入图片描述
为了一眼就可以看到所有的epoch,可以使用函数mne.epoch.plot_image()将各个通道绘制为图像。它可以显示信号在所有时间点上的振幅,加上激活的平均(诱发响应)。

显式地将交互式colorbar设置为on(默认情况下也是on,以使用topo绘图以外的colorbar来绘制函数)。在交互模式下,可以通过鼠标滚动和上下箭头键来缩放和改变颜色图。也可以用鼠标左右拖动颜色栏。按下空格键会重置比例


epochs.plot_image(278,
                 cmap='interactive',
                 sigma=1,
                 vmin=-250,vmax=250)

在这里插入图片描述
这里还可以通过计算全局字段功率(或其他聚合方法)来概述所有通道。但是,以这种方式组合多个通道类型(例如MEG和EEG)是不明智的,因此,如果未指定特定的通道选择,默认情况下plot_image()方法将为每个通道类型生成单独的图形。

epochs.plot_image(combine='gfp',sigma=2.0,cmap='YlGnBu_r')

在这里插入图片描述
在这里插入图片描述
这里还可以使用一些函数来绘制按通道排列成通道阵列形状的信息,图形绘制时默认情况下使用自动播放,但是有噪声的通道和不同类型的通道类型会导致缩放有点小

epochs.plot_topo_image(vmin=-250,
                      vmax=250,
                      title='ERF images',
                      sigma=2.,
                      fig_facecolor='w',
                      font_color='k')

在这里插入图片描述
以上所有内容均来自于微信公众号的学习,不积跬步无以至千里,继续加油

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 好的,实现基于RNN的股票价格预测模型,可以分为以下几个步骤: 1. 数据预处理:首先需要获取股票历史数据,对数据进行预处理。可以使用Python的pandas库对数据进行处理,包括数据清洗、去除重复值、填充缺失值等。 2. 特征工程:根据股票历史数据,需要提取一些有用的特征,比如过去一段时间的股票价格、成交量等指标。 3. 数据划分:将处理好的数据集划分为训练集和测试集。 4. 构建RNN模型:使用Python的Keras库构建RNN模型,包括输入层、隐藏层和输出层。 5. 模型训练:使用训练集对模型进行训练,调整模型参数。 6. 模型预测:使用测试集对模型进行预测,得到预测结果。 7. 可分析:将实验结果进行可分析,比如预测结果与实际股票价格的对比图等。 下面是一个简单的Python代码示例,实现对股票价格的预测: ```python import pandas as pd import numpy as np from keras.models import Sequential from keras.layers import Dense, LSTM from sklearn.preprocessing import MinMaxScaler import matplotlib.pyplot as plt # 读取股票历史数据 df = pd.read_csv('stock.csv') # 数据预处理 df = df.drop_duplicates() df = df.dropna() df = df[['Date', 'Close']] df['Date'] = pd.to_datetime(df['Date']) df = df.set_index('Date') # 特征工程 window_size = 30 df['Rolling_mean'] = df['Close'].rolling(window=window_size).mean() df = df.dropna() # 数据归一 scaler = MinMaxScaler() df_scaled = scaler.fit_transform(df) # 数据划分 train_size = int(len(df_scaled) * 0.8) test_size = len(df_scaled) - train_size train_data, test_data = df_scaled[0:train_size,:], df_scaled[train_size:len(df_scaled),:] # 构建RNN模型 model = Sequential() model.add(LSTM(50, input_shape=(window_size, 1))) model.add(Dense(1)) model.compile(loss='mean_squared_error', optimizer='adam') # 模型训练 X_train, y_train = [], [] for i in range(window_size, len(train_data)): X_train.append(train_data[i-window_size:i, 0]) y_train.append(train_data[i, 0]) X_train, y_train = np.array(X_train), np.array(y_train) X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1)) model.fit(X_train, y_train, epochs=100, batch_size=32) # 模型预测 X_test, y_test = [], [] for i in range(window_size, len(test_data)): X_test.append(test_data[i-window_size:i, 0]) y_test.append(test_data[i, 0]) X_test, y_test = np.array(X_test), np.array(y_test) X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1], 1)) predictions = model.predict(X_test) predictions = scaler.inverse_transform(predictions) # 可分析 plt.plot(df['Close'][train_size+window_size:], label='Actual') plt.plot(predictions, label='Prediction') plt.legend() plt.show() ``` 需要注意的是,以上代码只是一个简单的示例,实际应用中还需要进一步优模型,提高预测准确率。 ### 回答2: 使用Python编写基于RNN的股票价格预测模型非常简单有效。首先,我们需要适当地处理股票历史数据,以便于模型的训练。常见的数据预处理技术包括标准、归一和对数收益率转换等。我们可以使用Python中的Pandas库来处理和清洗数据。 接下来,我们可以使用Python中的Keras库来构建基于RNN的模型。RNN(循环神经网络)是一种适用于序列数据分析的深度学习模型,可以捕捉股票价格的序列特征。Keras库提供了方便的接口来定义和训练RNN模型。我们可以选择LSTM(长短期记忆网络)作为RNN的一种实现方式,因为它可以更好地处理长期依赖关系。 在训练模型时,我们可以将历史股票价格序列作为输入数据,将未来股票价格作为目标标签。根据需要,我们可以调整模型的各种超参数,如网络结构、时间步长和批量大小。 完成模型的训练后,我们可以使用训练好的模型对未来的股票价格进行预测。为了可分析实验结果,我们可以使用Python中的Matplotlib库绘制预测的股票价格曲线与实际股票价格曲线的比较图。通过比较预测结果和实际情况,我们可以评估模型的性能和准确性。 总之,使用Python编写基于RNN的股票价格预测模型可以通过适当的数据预处理技术来处理股票历史数据,并使用Keras库构建和训练RNN模型。通过可分析实验结果,我们可以评估模型的性能并进行进一步的调整和改进。这个模型可以为投资和交易决策提供有价值的预测信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值