2016-07-17 5 views
0

Es gibt 192 x 144 Pixel Bilder. Sie sollten in eine Python-Liste importiert werden, damit die Elemente in der Liste NDArray-Instanzen sind. Ein neuer Datenrahmen sollte aus der Liste erstellt werden und dieser Datenrahmen sollte Isomap übergeben werden. iso.fit(df) nicht mit den FehlernImportieren von Bildern für Mannigfaltigkeit Isomap

array = array.astype(np.float64) 

ValueError: setting an array element with a sequence. 

ich mehr als einen Tag verbracht haben versucht, die NDArrays um herauszufinden, wie verarbeitet werden sollen und die Datenrahmen mit ihnen geladen. Kein Glück. Jede Hilfe wäre willkommen.

Antwort

1

Wenn dies Graustufenbilder vom ALOI sind, möchten Sie wahrscheinlich die Helligkeit jedes Pixels als Feature behandeln. Daher sollten Sie das img-Array mit img.reshape (-1) reduzieren. Der überarbeitete Code folgt:

import pandas as pd 
from scipy import misc 
import glob 
from sklearn import manifold 

samples = [] 

for filename in glob.glob('Datasets/ALOI/32/*.png'): 
    img = misc.imread(filename, mode='I') 
    # the following line changed 
    samples.append(img.reshape(-1)) 

df = pd.DataFrame.from_records(samples, coerce_float=True) 

iso = manifold.Isomap(n_neighbors=6, n_components=3) 
iso.fit(df) 
+0

Vielen Dank hawley. reshape() ist es. – Tapani