使用PCA计算原始数据集与转换后数据集之间的数据损失

我在Python中使用sklearn进行主成分分析。

我的一个意图是生成一个包含4个成分的模型,另一个包含8个成分,并使用inverse_transform将两者与原始数据进行比较。

代码大致如下:

pca4 = PCA(n_components=4)pca4.fit(parkinsonData)scores4=pca.transform(parkinsonData)reconstruct4=pca.inverse_transform(scores4)

为了计算原始数据与重构数据之间的差异,我做了以下操作:

differenceMatrix=parkinsonData-reconstruct4

现在我有了差异,但我希望计算相对于原始数据集的数据损失。为此,我想计算原始数据集与重构数据集中每个元素之间差异的平方均值。

在最后一个语句中,我计算了原始数据集与重构数据集中每个元素之间的差异,但现在我需要计算平方。我不知道如何操作,因为当我使用:

power=differenceMatrix**

我得到了一个错误:该矩阵不是方阵。

为了解决这个问题,我使用了

np.power(differenceMatrix,differenceMatrix)

它可以工作,但有些元素是NAN。我理解这是由于缺乏方形形状造成的。

有谁知道如何解决这个问题,并使用PCA计算原始数据集与转换后数据集之间的数据损失?

谢谢。


回答:

要对矩阵的每个元素进行平方(我猜这就是你所说的“powered by 2”),请使用:

np.square(differenceMatrix)

这将逐元素工作,并且不限制你使用方形矩阵。矩阵中的NaNs在输出中将作为NaN返回。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注