背景:在实现ssvep时,要对EEG信号进行分析,找到刺激信号。可以用CCA(典型相关分析)计算不同刺激频率下,通道信号和模板信号的相关系数。
CCA的python实现:
import numpy as np
from sklearn.cross_decomposition import CCA
X = [[0, 0, 0] for i in range(2000)] #第一组因素(本例中为EEG的三个channel信号)
Y = [[0, 0, 0, 0, 0] for i in range(2000)] #第二组因素(本例中为模板信号)
#X和Y全部是0是会报错的
# 建立模型
cca = CCA(n_components=1)
#如果想计算第二主成分对应的相关系数cca = CCA(n_components=2)
# 训练数据
cca.fit(X, Y)
# 降维操作
# print(X)
X_train_r, Y_train_r = cca.transform(X, Y)
# print(X_train_r)
print(np.corrcoef(X_train_r[:, 0], Y_train_r[:, 0])[0, 1]) #输出相关系数
#如果想计算第二主成分对应的相关系数 print(np.corrcoef(X_train_r[:, 1], Y_train_r[:, 1])[0, 1])