Resim içeren veri kümeleri üzerinde temel bileşen analizi yapmaya çalışıyorum, ancak sklearn.decomposition modülünden pca.transform uygulamak istediğimde şu hatayı alıyorum: * AttributeError: 'PCA' nesnenin "ortalama _" * özniteliği yoktur. Bu hatanın ne anlama geldiğini biliyorum, ama nasıl düzelteceğime dair hiçbir fikrim yok. Sanırım bazılarınız bunu nasıl çözeceğimizi biliyorsunuz. Temel Bileşen Analizi çalışmıyor
Yardımlarınız için teşekkür ederimKodum:
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)
Tam geri izleme:
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: Ben onu dönüştürerek önce modelini tespit etmek için çalıştı ve şimdi bile garip bir hata alıyorum. Ben baktım, ve bu F2py, Numran Kütüphanesi'nin bir parçası olan Fortran'ı Python'a bağlayan bir modül içerir.
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: my train_set ve data_set herhangi bir veri içerdiği ve onlar yoksa yüzden
kontrol ettirin. image_dir'leri kontrol ettim ve doğru yerleri içerdiler (sadece açıklık için, gerçek dosyalara gidip, görüntülerin özelliklerine bakarak ve konumu kopyaladım). Arıza başka bir yerde yatmalı.
Tam geri izleme sağlamalısınız. – zero323
Doğru. Ben, bana bir saniye vereceğim. – Learner
belki ilk olarak fit() 'yapmalısın? – joaquin