JavaFX: K-NN Decision Boundary plotten (Mesh-Grid, Polylines, ... ?? )

Tarrew

Top Contributor
Moin zusammen,

ich beschäfige mich im Moment mit Mustererkennung und möchte die Ergebnisse verschiedener Klassifizierungen irgendwie grafisch darstellen.
Bin absolut kein Frontend-Entwickler, aber habe mich dafür entschieden bei dem Thema mal etwas mit JavaFX rumzuspielen.

Ziel des Ganzen ist es, verschiedene Bewegungen (Laufen, Rennen, Treppe steigen, etc. pp.) anhand bestimmter Merkmale zu klassifizieren.
Werde jetzt Schritt für Schritt bestimmte Algorithmen einbinden und das immer für 2 Dimensionen plotten. Habe für die Darstellung der Punkte einen Linechart. Lineare Klassifizierer lassen sich jetzt auch leicht als Gerade darstellen. Bei dem K-Nearest-Neighbours Algorithmus tue ich mich jetzt etwas schwer, die Decision Boundary zu finden und vernünftig einzublenden.

Die GUI sieht im Moment so aus:
11855

Der K-NN Algorithmus an sich ist ja ziemlich leicht, mit dem Plotten der Decision Boundary in JavaFX tue ich mich etwas schwerer.
Würde gerne sowas erreichen:
knn2.png

Vllt. hat jemand eine Idee, wie man sowas in JavaFX darstellen kann. Irgendeine Art 2D-Mesh-Grid auf den Hintergrund legen und die einzelnen Polygone füllen? Oder irgendwie die Boundary-Polylines ermitteln und den Inhalt "unter" den Polylines dann einfärben?

Gibt echt etliche Beispiele für Python, R, und Matlab aber mit welchen Elementen man sowas mit JavaFX am besten erreichen kann, hab ich nicht gefunden.

Vllt. hat da von euch einer etwas mehr Ahnung ;)

Gruß

#Edit: Mist, jetzt seh ich erst, dass es extra ein Unterforum für JavaFX etc. gibt, vllt. kann das jemand verschieben, danke.
 
Zuletzt bearbeitet:

Tarrew

Top Contributor
Falls nochmal jemand ein ähnliches Problem haben sollte:

Ich habs inzwischen so umgesetzt, dass ich eine Unterklasse "CustomLineChart" von LineChart erstellt habe, dann lassen sich beliebige Nodes zum Chart hinzufügen.

Habe jetzt beispielsweise zwei Listen, eine mit den Trainingspunkten, die zweite mit einer Art Grid von Rechtecken,
um für jeden Rasterpunkt die zugehörige Klasse zu bestimmen. Die Recktecke berechne ich einmal, füge Sie hinzu und kann dann in der "layoutPlotChildren" Methode nur noch die Position updaten:
Java:
@Override
protected void layoutPlotChildren() {
    super.layoutPlotChildren();

    if (CollectionUtils.isNotEmpty(additionalPointsToPlot) && CollectionUtils.isNotEmpty(additionalPlottedShapes)) {
        AtomicInteger i = new AtomicInteger(0);

        double minX = additionalPointsToPlot.stream().mapToDouble(e -> (double) e.getX()).min().getAsDouble();
        double maxX = additionalPointsToPlot.stream().mapToDouble(e -> (double) e.getX()).max().getAsDouble();
        double minY = additionalPointsToPlot.stream().mapToDouble(e -> (double) e.getY()).min().getAsDouble();
        double maxY = additionalPointsToPlot.stream().mapToDouble(e -> (double) e.getY()).max().getAsDouble();


        double shapeWidth = (getXAxis().getDisplayPosition(maxX) - getXAxis().getDisplayPosition(minX)) / PlotUtils.POINTS_PER_ROW;
        double shapeHeight = (getYAxis().getDisplayPosition(minY) - getYAxis().getDisplayPosition(maxY)) / PlotUtils.POINTS_PER_COLUMN;

        additionalPlottedShapes.forEach(e -> {
            e.setX(getXAxis().getDisplayPosition(additionalPointsToPlot.get(i.get()).getX()));
            e.setY(getYAxis().getDisplayPosition(additionalPointsToPlot.get(i.get()).getY()));
            e.setWidth(shapeWidth);
            e.setHeight(shapeHeight);
            e.toBack();
            i.getAndIncrement();
        });
    }
}


Sieht dann im Ergebnis aus:
Bf0Peab.png



Nicht perfekt, aber für meine Zwecke erstmal ausreichend.

Vllt. hilft es der Nachwelt nochmal irgendwann ;)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Integration pay Pale in eine JavaFx Desktop Application Allgemeine Java-Themen 1
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
berserkerdq2 Jemand einen Tipp wie man ein Javafx-Hintergrund "dynamisch" macht Allgemeine Java-Themen 3
berserkerdq2 Wenn ich bei Intelij javafx mit maven importieren will, muss ich das in die pom.xml reintun, aber warum noch in module-info.java? Allgemeine Java-Themen 3
berserkerdq2 Frage zu IntelliJ und JavaFX Allgemeine Java-Themen 1
thor_norsk Eclipse - Fehlermeldung - JavaFX Allgemeine Java-Themen 24
volcanos JavaFX-Programme nur in NetBeans selber ausführbar ! command_line: NoClassDefFoundError Allgemeine Java-Themen 39
G JavaFX Maven Projekt als .exe Datei exportieren Allgemeine Java-Themen 10
C Java11+ JavaFX HtmlEditor ContextMenu neue MenuItems hinzufügen Allgemeine Java-Themen 5
G JavaFX var Ausdruck Allgemeine Java-Themen 1
G javafx "class path" exception Allgemeine Java-Themen 5
K Anzeigemöglichkeit von Bildern in JavaFX mit Hilfe von MongoDB GridFS Allgemeine Java-Themen 0
M JavaFX Allgemeine Java-Themen 13
P JavaFX Anwendung beendet sich selbst nur als Jar Allgemeine Java-Themen 40
L JavaFX JavaFX Chart in Apache Poi Excel Datei Allgemeine Java-Themen 2
A Zusammenspiel javafx Fenster Allgemeine Java-Themen 1
D JavaFX mit JDK 12 Allgemeine Java-Themen 31
H Internationalisierung I18n in JavaFx? Allgemeine Java-Themen 7
D Compiler-Fehler JavaFX - Bekomme Fehlermeldungen nicht weg Allgemeine Java-Themen 31
N Über einen Button in JavaFX ein Event über eine Pipeline schicken(Netty) Allgemeine Java-Themen 1
M List -Tableview-Javafx-Vererbung Allgemeine Java-Themen 35
RalleYTN 2D-Grafik Bild ohne AWT, Swing und JavaFX rotieren Allgemeine Java-Themen 12
U JAVAFX Simulation Allgemeine Java-Themen 1
M javafx ComboBox- Nullpointer Exception Allgemeine Java-Themen 6
L Eclipse JavaFX Klasse starten programmatisch Allgemeine Java-Themen 1
Sam96 JavaFX Benutzerrechte Allgemeine Java-Themen 6
J javaFX mySQL Allgemeine Java-Themen 3
P JavaFX HTMLEditor Menü Allgemeine Java-Themen 0
L JavaFX JavafX externe FXML laden? Allgemeine Java-Themen 4
S JavaSE, JavaEE oder JavaFX? Allgemeine Java-Themen 5
N WaitForScript- methode in javafx Allgemeine Java-Themen 1
I Javafx Open/Read und Tree Funktion Allgemeine Java-Themen 14
M Regex für Zahleneingabe in JavaFX Textfield Allgemeine Java-Themen 18
B JavaFX fxml, die selbe Instanz der Klasse Allgemeine Java-Themen 4
M JavaFX-Gegenstück zu Swing-Button-DoClick-Methode Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben