2016-10-25 3 views
1

In dem Programm scanne ich alle 2,5 Sekunden eine Anzahl von Gehirnproben, die in einer Zeitreihe von 40 x 64 x 64 Bildern aufgenommen wurden. Die Anzahl der "Voxel" (3D-Pixel) in jedem Bild beträgt somit ~ 168.000 ish (40 × 64 × 64), von denen jedes ein "Merkmal" für ein Bildmuster ist.sklearns Vorhersage sagt Werte außerhalb des Bereichs voraus

Ich dachte an die Verwendung von Principle Component Analysis (PCA) wegen der übermäßig hohen n zur Reduzierung der Dimensionalität. Dann folgen Sie dies mit Rekursive Feature Elimination (RFS).

Es gibt 9 Klassen zur Vorhersage. Also ein mehrklassiges Klassifizierungsproblem. Im Folgenden wandle ich diese 9-Klassen-Klassifizierung in ein binäres Klassifizierungsproblem um und speichere die Modelle in einer Liste Modelle.

models = [] 
model_count = 0 

for i in range(0,DS.nClasses): 
    for j in range(i+1,DS.nClasses): 

     binary_subset = sample_classes[i] + sample_classes[j] 

     print 'length of combined = %d' % len(binary_subset) 
     X,y = zip(*binary_subset) 
     print 'y = ',y 

     estimator = SVR(kernel="linear") 
     rfe = RFE(estimator , step=0.05) 
     rfe = rfe.fit(X, y) 

     #save the model 
     models.append(rfe) 
     model_count = model_count + 1 
     print '%d model fitting complete!' % model_count 

Jetzt durchlaufen Sie diese Modelle und machen Sie Vorhersagen. Angabe der 9 möglichen Ergebnisse

predictions = [] 
for X,y in test_samples: 
    Votes = np.zeros(DS.nClasses) 

    for mod in models: 
     #X = mod.transform(X) 
     label = mod.predict(X.reshape(1,-1)) #Something goes wrong here 

     print 'label is type',type(label),' and value ',label 
     Votes[int(label)] = Votes[int(label)] + 1 

    prediction = np.argmax(Votes) 
    predictions.append(prediction) 
    print 'Votes Array = ',Votes 
    print "We predicted %d , actual is %d" % (prediction,y) 

sollten die Etiketten Zahlen von 0-8 sein. Ich bin das Drucken der Label Werte und das ist, was ich bekommen:

label is type <type 'numpy.ndarray'> and value [ 0.87011103] 
label is type <type 'numpy.ndarray'> and value [ 2.09093105] 
label is type <type 'numpy.ndarray'> and value [ 1.96046739] 
label is type <type 'numpy.ndarray'> and value [ 2.73343935] 
label is type <type 'numpy.ndarray'> and value [ 3.60415663] 
label is type <type 'numpy.ndarray'> and value [ 6.10577602] 
label is type <type 'numpy.ndarray'> and value [ 6.49922691] 
label is type <type 'numpy.ndarray'> and value [ 8.35338294] 
label is type <type 'numpy.ndarray'> and value [ 1.29765466] 
label is type <type 'numpy.ndarray'> and value [ 1.60883217] 
label is type <type 'numpy.ndarray'> and value [ 2.03839272] 
label is type <type 'numpy.ndarray'> and value [ 2.03794106] 
label is type <type 'numpy.ndarray'> and value [ 2.58830013] 
label is type <type 'numpy.ndarray'> and value [ 3.28811133] 
label is type <type 'numpy.ndarray'> and value [ 4.79660621] 
label is type <type 'numpy.ndarray'> and value [ 2.57755697] 
label is type <type 'numpy.ndarray'> and value [ 2.72263461] 
label is type <type 'numpy.ndarray'> and value [ 2.58129428] 
label is type <type 'numpy.ndarray'> and value [ 3.96296151] 
label is type <type 'numpy.ndarray'> and value [ 4.80280219] 
label is type <type 'numpy.ndarray'> and value [ 7.01768046] 
label is type <type 'numpy.ndarray'> and value [ 3.3720926] 
label is type <type 'numpy.ndarray'> and value [ 3.67517869] 
label is type <type 'numpy.ndarray'> and value [ 4.52089242] 
label is type <type 'numpy.ndarray'> and value [ 4.83746684] 
label is type <type 'numpy.ndarray'> and value [ 6.76557315] 
label is type <type 'numpy.ndarray'> and value [ 4.606097] 
label is type <type 'numpy.ndarray'> and value [ 6.00243346] 
label is type <type 'numpy.ndarray'> and value [ 6.59194317] 
label is type <type 'numpy.ndarray'> and value [ 7.63559593] 
label is type <type 'numpy.ndarray'> and value [ 5.8116106] 
label is type <type 'numpy.ndarray'> and value [ 6.37096926] 
label is type <type 'numpy.ndarray'> and value [ 7.57033285] 
label is type <type 'numpy.ndarray'> and value [ 6.29465433] 
label is type <type 'numpy.ndarray'> and value [ 7.91623641] 
label is type <type 'numpy.ndarray'> and value [ 7.79524801] 
Votes Array = [ 1. 3. 8. 5. 5. 1. 7. 5. 1.] 
We predicted 2 , actual is 8 

ich nicht, warum die Label Werte Punktzahlen schweben. Sie sollten Zahlen von 0-8 sein.

Ich habe die Daten korrekt geladen. Irgendetwas schief geht bei der Ausführung predict() Aber ich kann immer noch nicht herausfinden, was.

Antwort

3

Sie erhalten Gleitkommawerte, weil Sie SV R verwenden: Support-Vektor-Regression. Sie möchten SVC, Unterstützung Vektor Klassifizierung.

+0

Wow. Ich fühle mich jetzt ein bisschen dumm. Es klappt! Vielen Dank! :) Ich habe gerade einen Brief geändert –

Verwandte Themen