HOG-Features skalieren bevor Training mit SVM?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
CodeIt
User
Beiträge: 36
Registriert: Mittwoch 13. September 2017, 06:10

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
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
CodeIt
User
Beiträge: 36
Registriert: Mittwoch 13. September 2017, 06:10

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.
Antworten