私は画像を含むデータセットの主成分分析をしようとしていますが、sklearn.decompositionモジュールからpca.transformを適用したいときはいつも、私はこのエラーを受け取り続けています:* AttributeError: 'PCA'オブジェクトには 'mean _' *という属性はありません。私はこのエラーの意味を知っていますが、私はそれを修正する手がかりがありません。私は皆さんの中には、これを修正する方法を知っている人がいると思います。主成分分析が機能しない
は
ご協力いただきありがとうございます私のコード:
from sklearn import svm
import numpy as np
import glob
import os
from PIL import Image
from sklearn.decomposition import PCA
image_dir1 = "C:\Users\private\Desktop\K FOLDER\private\train"
image_dir2 = "C:\Users\private\Desktop\K FOLDER\private\test1"
Standard_size = (300,200)
pca = PCA(n_components = 10)
file_open = lambda x,y: glob.glob(os.path.join(x,y))
def matrix_image(image_path):
"opens image and converts it to a m*n matrix"
image = Image.open(image_path)
print("changing size from %s to %s" % (str(image.size), str(Standard_size)))
image = image.resize(Standard_size)
image = list(image.getdata())
image = map(list,image)
image = np.array(image)
return image
def flatten_image(image):
"""
takes in a n*m numpy array and flattens it to
an array of the size (1,m*n)
"""
s = image.shape[0] * image.shape[1]
image_wide = image.reshape(1,s)
return image_wide[0]
if __name__ == "__main__":
train_images = file_open(image_dir1,"*.jpg")
test_images = file_open(image_dir2,"*.jpg")
train_set = []
test_set = []
"Loop over all images in files and modify them"
train_set = [flatten_image(matrix_image(image)) for image in train_images]
test_set = [flatten_image(matrix_image(image)) for image in test_images]
train_set = np.array(train_set)
test_set = np.array(test_set)
train_set = pca.fit_transform(train_set) "line where error occurs"
test_set = pca.fit_transform(test_set)
完全トレースバック:
Traceback (most recent call last):
File "C:\Users\Private\workspace\final_submission\src\d.py", line 54, in <module>
train_set = pca.transform(train_set)
File "C:\Python27\lib\site-packages\sklearn\decomposition\pca.py", line 298, in transform
if self.mean_ is not None:
AttributeError: 'PCA' object has no attribute 'mean_'
EDIT1:だから私はそれを変換する前にモデルを合わせてみました 、および今私はさらに奇妙なエラーが発生しています。私はそれを見て、それはf2py、Numpyライブラリの一部であるFortranをPythonに移植するモジュールを含んでいます。
File "C:\Users\Private\workspace\final_submission\src\d.py", line 54, in <module>
pca.fit(train_set)
File "C:\Python27\lib\site-packages\sklearn\decomposition\pca.py", line 200, in fit
self._fit(X)
File "C:\Python27\lib\site-packages\sklearn\decomposition\pca.py", line 249, in _fit
U, S, V = linalg.svd(X, full_matrices=False)
File "C:\Python27\lib\site-packages\scipy\linalg\decomp_svd.py", line 100, in svd
full_matrices=full_matrices, overwrite_a = overwrite_a)
ValueError: failed to create intent(cache|hide)|optional array-- must have defined dimensions but got (0,)
EDIT2:私のtrain_setとdata_setは、任意のデータを含んでおり、そうでないのであれば、私は
をチェックしています。 私は自分のimage_dirをチェックしました。正しい場所が含まれています(わかりやすくするため、実際のファイルに移動してイメージのプロパティを見て、場所をコピーしました)。障害はどこかにあるはずです。
完全なトレースバックを提供する必要があります。 – zero323
真。私は、私に秒を与えます。 – Learner
最初に 'fit()'するべきでしょうか? – joaquin