doc

Werbung
Vorlesung „Maschinelles Lernen“, WS 2006/7, Informatik LS8, Prof. Dr. Katharina Morik
Übungsaufgaben Zettel 1
8 – 10P
Sie haben in der Vorlesung das Instanz-basierte Klassifikationsverfahren k-nächste Nachbarn
kennen gelernt. In der letzten Übungssitzung wurde das System Yale vorgestellt und Sie
haben das on-line Tutorial gelesen.
Wir haben in Yale im Modul exercises Rahmenklassen vorbereitet, so dass Sie den Kern
eines Lernverfahrens in Java implementieren und es dann in Yale ablaufen lassen können.
In dieser Aufgabe geht es um die Klasse KNearestNeighborModelExercise
implements KNearestNeighborPredictor mit den Methoden
predictClass(Collection<Example> trainData, Example example,
int useNeighbors),
getDistanceFromExample(Example to) und
compare(Example example1, Example example2).
Sie geben den Java-Code ab (6 Punkte) und ein Yale-Experiment mit den ripley-set.amlDaten in /app/unido-i08/share/java/yale/yale-3.4/sample/data, in dem
mit Kreuzvalidierung das Ergebnis vorhergesagt wird (2 Punkte).
Sie können 2 Sonderpunkte gewinnen, wenn Ihr getDistanceFromExample() auch
für nominale Werte einen sinnvollen Abstand liefert (zu testen an golf.aml).
Hintergrundinformation
Sie starten Yale im Pool mit dem Aufruf
module add yale (entfällt zu Hause)
YaleGUI
Sie kompilieren Ihre eigene Klasse dazu
javac –cp $YALE_HOME/lib/yale.jar:$YALE_HOME/lib/plugins/yaleexercise-3.4.jar <eigene Klasse>.java
Sie setzen den Klassenpfad:
export CLASSPATH=pfad/zur/eigenen/klasse:$YALE_HOME/lib/plugins/yale-exercise-3.4.jar
Unter Solaris entsprechend mit
setenv CLASSPATH pfad/zur/eigenen/klasse:$YALE_HOME/lib/plugins/yaleexercise-3.4.jar:$CLASSPATH
WICHTIG 1: Die Variable $YALE_HOME wird von dem Modulaufruf oben automatisch
gesetzt, welcher daher vorher gemacht werden muss. Außerdem gibt es $YALE_HOME
folglich nicht zu Hause, weswegen die Variable dort durch den richtigen Pfad ersetzt werden
muss.
WICHTIG 2: Die Plugin-Jar-Datei muss leider auch beim Starten noch mal in den
Klassenpfad, da sonst die dynamisch dazugenerierte eigene Klasse nicht instantiiert werden
kann.
WICHTIG 3: Die (Re-)Definition des CLASSPATH ist vor dem Aufruf von YaleGUI nötig,
da sonst die eigenen Klassen erst recht nicht gefunden werden.
Herunterladen