首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >线性判别分析分类器的若干问题

线性判别分析分类器的若干问题
EN

Data Science用户
提问于 2019-05-31 16:39:44
回答 1查看 248关注 0票数 0

我编写了两个函数来确定脑电数据集的线性判别分类器。该数据集由预处理后的脑电数据(∈5×62×5322 )和刺激标记∈2×5322组成。数据矩阵X包含在62个电极上选择的脑电活动的5个时间窗,在受试者面前的屏幕上显示了视觉刺激。如果第一行是1,刺激是目标刺激,如果第二行是1,则刺激是非目标刺激。第一个函数返回权重向量和偏置项。第二个函数是一个显示结果的图类。

代码语言:javascript
运行
复制
def lda_fit(X,Y):
# class means

unique_classes=np.unique(Y)
mu=np.zeros((len(unique_classes),X.shape[1]))
for i,name in enumerate(unique_classes):
    mu[i,:] = X[Y==name,:].mean(axis=0)

mupos=mu[1]
muneg=mu[0]
mupos=mupos.reshape(155,2)
muneg=muneg.reshape(155,2)
Xneu=X[0].reshape(155,2)

# D-by-D inter class covariance matrix (signal)
Sinter = np.dot((muneg-mupos),(muneg-mupos).T)

# D-by-D intra class covariance matrices (noise)
Sintra =np.dot((Xneu-mupos),(Xneu-mupos).T)+np.dot((Xneu-muneg),(Xneu-muneg).T)

# solve eigenproblem
eigvals, eigvecs = sp.linalg.eig(Sinter,Sintra)
w = eigvecs[:,eigvals.argmax()]
# bias term
b = (w.dot(mupos) + w.dot(muneg))/2.
# return the weight vector
return w,b

我得到以下错误:"ValueError: matmul:输入操作数1的核心维度0不匹配,具有gufunc签名(n?,k),(k,m?)->(n?,m?) (大小155与310不同)。“

我知道这和矩阵的形状有关,但我真的坚持住了。

EN

回答 1

Data Science用户

发布于 2019-06-01 00:24:22

就像你说的,它与矩阵的形状有关。在本例中,您的矩阵与(155,2)相同,而它期望它们为(310,1)。

在转换矩阵时,尝试查看它们的形状(提示:在任何发生转换的地方插入打印语句),并确保所有内容保持一致。

另外,您能向我们提供更多的信息,例如错误发生的确切位置吗?这看起来是点产品的一个问题。

票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/52992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档