2017-02-26 3 views
1

Dieser Code ist zum Erkennen von Zeichen und Zeichnen von Rechtecken und dann die Vorhersage des Zeichens, aber es gibt mir den Fehler jedes Mal!AttributeError: 'LinearSVC' Objekt hat kein Attribut 'classes_'

for rect in rects: 
# Draw the rectangles 
cv2.rectangle(im, (rect[0], rect[1]), (rect[0] + rect[2], rect[1] + rect[3]), (0, 255, 0), 3) 
# Make the rectangular region around the digit 
leng = int(rect[3] * 1.6) 
pt1 = int(rect[1] + rect[3] // 2 - leng // 2) 
pt2 = int(rect[0] + rect[2] // 2 - leng // 2) 
roi = im_th[pt1:pt1+leng, pt2:pt2+leng] 
# Resize the image 
roi = cv2.resize(roi, (28, 28), interpolation=cv2.INTER_AREA) 
roi = cv2.dilate(roi, (3, 3)) 
# Calculate the HOG features 
roi_hog_fd = hog(roi, orientations=9, pixels_per_cell=(14, 14), cells_per_block=(1, 1), visualise=False) 
ar=np.array([roi_hog_fd], 'float64') 
nbr = clf.predict(ar) 

Traceback (jüngste Aufforderung zuletzt): File "performRecognition.py", Zeile 43, in nbr = clf.predict (np.array ([roi_hog_fd], 'float64')) File " /usr/local/lib/python2.7/dist-packages/sklearn/linear_model/base.py ", Zeile 341, in Vorhersage Rückgabe self.classes_ [Indizes] AttributeError: 'LinearSVC' Objekt hat kein Attribut 'Klassen_'

+0

Bitte formatieren Sie Ihren Code, fügen Sie einen Gedankenstrich – Dmitry

+1

hinzu, Sie sollten 'clf.fit()' zuerst aufrufen. – zsrkmyn

+0

danke !! Ich habe vergessen, den Classifier Code zuerst zu starten !!! es funktioniert jetzt –

Antwort

0

@Wineartist anscheinend dieser Fehler gestiegen, weil ich den Generate Classifier-Code unten nicht ausgeführt habe:

# Import the modules 
from sklearn.externals import joblib 
from sklearn import datasets 
from skimage.feature import hog 
from sklearn.svm import LinearSVC 
import numpy as np 
from collections import Counter 

# Load the dataset 
dataset = datasets.fetch_mldata("MNIST Original") 

# Extract the features and labels 
features = np.array(dataset.data, 'int16') 
labels = np.array(dataset.target, 'int') 

# Extract the hog features 
list_hog_fd = [] 
for feature in features: 
    fd = hog(feature.reshape((28, 28)), orientations=9, pixels_per_cell=(14, 14), cells_per_block=(1, 1), visualise=False) 
    list_hog_fd.append(fd) 
hog_features = np.array(list_hog_fd, 'float64') 

print "Count of digits in dataset", Counter(labels) 

# Create a linear SVM object 
clf = LinearSVC() 

# Perform the training 
clf.fit(hog_features, labels) 

# Save the classifier 
joblib.dump(clf, "digits_cls.pkl", compress=3)  
+0

Ich habe versucht, den Generate Classifier-Code ausführen, aber einen Fehler bekommen. – Wineartist

+0

Erster Fehler in dieser Zeile: dataset = datasets.fetch_mldata ("MNIST Original") Fehler war urllib2.HTTPError: HTTP Fehler 500: INTERNER SERVERFEHLER – Wineartist

+0

Also habe ich die mnist mat-Datei heruntergeladen und mit diesem Code in das Dataset geladen : dataset = datasets.load_digits ('mnist-original.mat') Nach dieser Korrektur, als ich den Code ausgeführt habe, habe ich einen weiteren Fehler bekommen. (wird unten kopiert) – Wineartist

Verwandte Themen