首页 > 解决方案 > pca.fit(X) return Error ValueError: setting an array element with a sequence

问题描述

伙计们..我在一些涉及图像数据减少的项目中。

我想用这个来加载数据。我已经导入了所需的库。

faces = pd.DataFrame([])
for file in os.listdir('dataset/'):
    file_name, file_extension = os.path.splitext(file)
    if(file_extension in ['.pgm']):

        img = cv2.imread('dataset/'+ '/' + file)
        face = pd.Series(img.flatten(),name=file)
        faces = faces.append(face.fillna(0))

在我填充数据之后,我为训练和测试进行数据拆分。像这样。

X = []
y = []
for nameFolder in os.listdir('dataset/LEFT'):
    for file in os.listdir('dataset/LEFT/' + nameFolder):
        img = cv2.imread('dataset/LEFT/' + nameFolder + '/' + file )
        face = pd.Series(img.flatten(),name=file)
        X.append(face)
        y.append(nameFolder)

上面的所有代码,仍然可以正常工作。但问题在那之后发生了。我想用于scaleror PCA,但它给了我一些错误。

下面的其余部分是关于我如何进行数据拆分、PCA 和缩放器的。

from sklearn.model_selection import train_test_split
X_train, X_test, train_label, test_label = train_test_split( X, y, test_size=0.4, random_state=0)

定标器:

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit(X_train)
train_img = scaler.transform(X_train)
test_img = scaler.transform(test_img)

主成分分析:

from sklearn.decomposition import PCA
faces_pca = PCA(n_components=2)
faces_pca.fit(X)
components = faces_pca.transform(X)
projected = faces_pca.inverse_transform(components)

以及下面显示的错误,就在我使用.fit() 时:

ValueError: setting an array element with a sequence.

所以现在,我想问。我必须更改数据格式或类型吗?如果是,请告诉我必须是这样,如果可能的话,如何成为那样。接下来如果我的数据没问题,我之前必须做些什么,才能做一些 .fit() 并使用 PCA 或缩放器完成数据。

标签: pythonjupyter

解决方案


推荐阅读