Quellcode zum Beispiel

Wie besprochen basiert die Anwendung aus dem Abschnitt zuvor auf einer recht simplen Nächste-Nachbarn-Bestimmung (wobei jeweils der Kosinus-Abstand zwischen Punkten im 1024-dimensionalen Raum bestimmt wird). Die Vorgehensweise dazu präsentieren wir nun anhand eines kleinen Quellcodes.

Zunächst wird das Scribble-Paket verwendet, um einen Datensatz bestehend aus Strichzeichnungen zu erzeugen:

Zur Referenz

Wir erhalten damit eine Matrix (zweidimensionales Datenfeld bzw. Tabelle), wobei jede Zeile eine Strichzeichnung anhand ihrer Pixel von oben links (Pixel 1) nach unten links (Pixel 1024) repräsentiert:

Pixel 1Pixel 2...Pixel 1024
Strichzeichnung 1WertWert...Wert
Strichzeichnung 2WertWert...Wert
............
Strichzeichnung 2000WertWert...Wert

Jeder Wert der Matrix ist eine Zahl zwischen 0 und 1 zur Kodierung der jeweiligen Graustufe des Pixels. Nun wird eine zufällige Zeile (bzw. Strichzeichnung) gewählt, um diesbezüglich eine Nächste-Nachbarn-Bestimmung durchzuführen. Es werden also die Strichzeichnungen bestimmt, die den kleinsten (Kosinus-)Abstand zur gewählten Zeichnung haben:

Zur Referenz

Zurückgegeben wird eine Liste der Indizes der Zeilen bzw. Strichzeichnungen, die zur gewählten Zeile am ähnlichsten sind (bzw. den kleinsten Abstand haben). Diese werden schließlich unter Verwendung des Picture-Pakets dargestellt:

Zur Referenz

Beispiel
Ein kleiner Quellcode, um eine Nächste-Nachbarn-Bestimmung anhand von Strichzeichnungen durchzuführen (inhaltsbasiertes Empfehlungssystem).
Aufgabe

Mache dich mit dem Quellcode zuvor vertraut. Experimentiere anschließend, indem folgende Veränderungen vorgenommen werden:

  1. Verwende statt den Fischen eine andere Klasse von Strichzeichnung, z.B. pizza oder flower.
  2. Verändere die Größe der Strichzeichnung auf einen Wert etwa zwischen 12 und 80.
  3. Experimentiere mit dem Abstandsmaß, indem zum Beispiel die Euklidische Abstand (euclidean) gewählt wird.
Quiz
Nutzerbasierte Systeme