我正在使用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现在我有了差异,但我想计算数据丢失尊重原始数据集。为了做到这一点,我要计算由2驱动的原始数据集的每个元素与重建的数据集之间的差值的平均值。
在最后一条语句中,我计算了原始数据集的每个元素与重构的数据集之间的差异,但现在我必须计算幂。我不知道怎么做,因为当我使用:
power=differenceMatrix**我得到一个错误:这个矩阵不是正方形的。
为了解决这个问题,我用
np.power(differenceMatrix,differenceMatrix)它起作用了,但有些元素是南。我认为这是由于缺乏方形的缘故。
谁知道如何解决这一问题,并计算原始数据集和转换数据集之间的数据丢失使用PCA?
谢谢。
发布于 2017-04-24 17:35:00
要将矩阵的每个元素(我猜这就是“由2供电”的意思)平方,请使用:
np.square(differenceMatrix)这在元素上是可行的,不限制你使用方阵的形状.矩阵中的NaN在输出中作为NaN返回。
https://stackoverflow.com/questions/43593238
复制相似问题