Seite 1 von 1

HOG-Features skalieren bevor Training mit SVM?

Verfasst: Montag 7. Oktober 2019, 14:21
von CodeIt
Hallo,
ich möchte eine SVM mit aus Bildern extrahierten HOG-Features trainieren.
Der Code zur Bestimmung der HOG-Features lautet wie folgt:

Code: Alles auswählen

from skimage import feature

def get_hog_features(X):
	hog_list = []
	for i in range(0, len(X)):
	      feat = hog(X[i],
	      		 orientations=9,
	      		 pixels_per_cell=(8,8),
	      		 cells_per_block=(2,2),
	      		 block_norm='L2-Hys',
	      		 transform_sqrt=True,
	      		 visualize=False)
	      	hog_list.append(feat)
Ich bin mir ziemlich unsicher, ob ich vor dem Trainieren die HOG-Features noch mithilfe des StandardScaler skalieren soll oder nicht. Habe ähnliche Codes gefunden in welchem manchmal die HOG-Features vor dem Training skaliert werden in anderen wiederum nicht.

Vielen Dank im voraus

Re: HOG-Features skalieren bevor Training mit SVM?

Verfasst: Montag 7. Oktober 2019, 15:16
von __deets__
Ueber Listen iteriert man direkt, statt da muehselig einen Index zu erzeugen - das aber nur am Rande. Und grossgeschriebene Namen bedeuten KONSTANTE in Python, X ist also verwirrend als Parametername.

Code: Alles auswählen

for image in training_images:
    ...
Zu deinem Problem: SVM ist AFAIK am besten bei Werten zwischen -1 bis 1, entsprechend macht man das oft. Du musst das dann natuerlich auch spaeter beim klassifizieren machen. Ultimativ kannst du das auch als Hyperparameter betrachten, und dein Problem mal mit, mal ohne Skalierung trainieren und validieren lassen, und dann sehen, ob du zu unterschiedlichen Ergebnissen kommst.

Re: HOG-Features skalieren bevor Training mit SVM?

Verfasst: Montag 7. Oktober 2019, 17:46
von CodeIt
Vielen Dank für den Hinweis.
Ich habe nun die Ergebnisse beim Training mit skalierten und ohne skalierten HOG-Features
verglichen und festgestellt, dass die Testgenauigkeit ohne vorherige Anwendung des StandardScalers wesentlich höher ist.