LogisticRegressionModel Vorhersage manuell

9

Ich habe versucht, eine Markierung für jede Zeile in DataFrame vorherzusagen , aber ohne LinearRegressionModel % transform -Methode, aufgrund von Hintergründen, stattdessen habe ich versucht, es manuell zu berechnen Mit der klassischen Formel 1 / (1 + e^(-hθ(x))) beachte ich, dass ich den Code aus dem Repository von Apache Spark kopiert habe und fast alles von private object BLAS in eine öffentliche Version kopiert habe. PD: Ich benutze keine regParam , ich habe das Modell einfach angepasst.

%Vor%

Nach dem Definieren solcher Funktionen und dem Erhalten von Modellparametern habe ich UDF erstellt, um die Vorhersage zu berechnen (sie erhält die gleichen Merkmale wie DenseVector ), später vergleiche ich meine Vorhersagen mit denen des realen Modells und sie sind ganz anders! Was habe ich vermisst? Was mache ich falsch?

%Vor%

BEARBEITEN

Ich habe sogar versucht, solche Funktionen innerhalb von udf zu definieren und habe nicht funktioniert.

%Vor%     
Alberto Bonsanto 04.05.2016, 19:11
quelle

1 Antwort

1

Es ist sehr peinlich, aber eigentlich lag das Problem daran, dass ich ein Pipeline verwendet und ein MinMaxScaler als Bühne hinzugefügt habe, also wurde das Dataset vor dem Training des Models skaliert, also wurden beide Parameter coefficients und intercept gebunden zu diesen skalierten Daten , also wenn ich die Vorhersage mit ihnen berechnete, war das Ergebnis total verzerrt. Um das Problem zu lösen, habe ich das Trainingsdatenset einfach aufnormalisiert, um die coefficients und intercept zu erhalten. Nachdem ich den Code erneut ausgeführt habe, habe ich das gleiche Ergebnis wie Spark . Andererseits habe ich @ zero323 gehört und die Definitionen margin und score in die erste udf -Deklaration von lambda verschoben.

    
Alberto Bonsanto 12.05.2016, 15:04
quelle