【问题标题】:How to get individual coordinates PCA in Python ? (Results different between R and Python)如何在 Python 中获取单个坐标 PCA? (R 和 Python 的结果不同)
【发布时间】:2023-03-11 04:40:02
【问题描述】:

我到处搜索,但我发现的答案不起作用...... 我尝试在 Python 中获取变量的坐标,但我尝试的解决方案没有给我与 R 相同的结果

一)

Coordinates_Indiv = pca.fit_transform(df5)
Coordinates_Indiv = pd.DataFrame(Coordinates_Indiv)

B)

irlambdas=1/(5*np.sqrt(Explained_Variance))
mirlambadas=np.diagflat(irlambdas)
ProjectionsVars=df5.dot(df6)
ProjectionsVars2= ProjectionsVars.dot(mirlambadas)

使用 df6=df5.T

有没有人想办法解决?

【问题讨论】:

  • 你在 R 中使用 eigen 吗?如果是这种情况,您在 Python 中使用的基于 SVD 的 PCA 可能会产生不同的结果,因为 SVD 和特征分解处理负特征值的方式不同。
  • 首先,非常感谢您的回答和您的时间。我正在使用模块 Factominer 和摘要(pca)。对于 python,我用 sklearn (pca) 和 numpy 做到了。问题是我在 R 和 Python 之间的两种情况下都得到了相同的特征值。但是当我计算单个坐标时,我在 numpy 和 sklearn 之间得到相同的结果,但不是结果与 R 相同。

标签: python r coordinates pca


【解决方案1】:

首先,非常感谢您的回答和时间。

我正在使用模块 Factominer 和摘要 (pca)。 对于 python,我使用 sklearn (pca) 和 numpy 完成了它

问题是我在 R 和 Python 之间的两种情况下都得到了相同的特征值 (对于python,我使用以下方法计算它:

Correlation_Matrix = np.corrcoef(df)
Correlation_Matrix = np.nan_to_num(Correlation_Matrix)
Correlation_Matrix[np.diag_indices_from(Correlation_Matrix)] = 1

Eigenvalues = np.linalg.eigvals(Correlation_Matrix)
Eigenvalues[Eigenvalues == 1] = 0

或者以更简单的方式:

#Eigenvalues = pca.explained_variance_)

在这两种情况下,我得到的结果都与 R 相同......但是当我计算单个坐标时,我在 numpy 和 sklearn 之间得到相同的结果,但与 R.God 的结果不同。只有上帝知道

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    相关资源
    最近更新 更多