ValueError: DataFrame constructor not properly called- After fitting a SparsePCA

ValueError: DataFrame constructor not properly called- After fitting a SparsePCA

安装 SparsePCA 后

from sklearn.decomposition import PCA
from sklearn.decomposition import TruncatedSVD
from scipy.sparse import random as sparse_random
from sklearn.decomposition import SparsePCA
from sklearn.random_projection import sparse_random_matrix


pca_a = SparsePCA(n_components=2, random_state=0) #grafico 2d
pca_review = pca_a.fit(R.toarray())

我尝试使用以下代码将其转换为 DataFrame

pca_review_df = pd.DataFrame(data= pca_review, columns= ['Component1','Component2'])
pca_name_review = pd.concat([pca_review_df, validation[['Kmeans_cluster']]],axis=1)

但我收到以下错误:

ValueError: DataFrame constructor not properly called!

¿我该如何解决?

你的错误发生在

pca_review_df = pd.DataFrame(data= pca_review, columns= ['Component1','Component2'])

因为 pca_review 不是数组、可迭代对象或字典,它是 SparsePCA 对象。要获取数据集的分量值,您需要通过拟合和变换(将数据乘以 PCA 投影矩阵)来转换数据集,例如

pca_review = pca_a.fit_transform(R.toarray())

然后你就可以构建你的数据框了。