Code Competition 12/2018: Big Data Predictions by Materna
Code Competition 12/2018: Big Data Predictions by Materna
{ABOUT}
Big Data ist in aller Munde. Daten sind Wissen und Wissen ist Macht. Aber was ist dran an diesem Spruch und dem gehypten Begriff der “Big Data”?
Damit wollen wir uns in dieser Code Competition auseinandersetzen. Bei “Big Data” geht es um die Auswertung von großen Datenmengen. Die Auswertung besteht darin, die Datenmenge zunächst aufzubereiten, sodass sie von Software mit entsprechenden Algorithmen automatisch analysiert werden kann. Dann geht es um die Erkennung von Mustern und Zusammenhängen innerhalb der Daten und schließlich um die Herleitung von Erkenntnissen aus entdeckten Mustern und die Visualisierung dieser Erkenntnisse.
Folgende Schritte sind also wichtig:
- Aufbereiten
- Muster erkennen
- Erkenntnisse aus Mustern herleiten
- Erkenntnisse visualisieren
{INPUT}
Wir stellen Dir einen Datensatz eines Rennspiels zur Verfügung. In diesem Datensatz findest Du über 160.000 eingetragene Rennen.
Aus diesen (Meta)-Daten lassen sich bereits viele spannende Aussagen treffen (Wer fährt präferiert wann und gegen wen Rennen? Gewonnen oder Verloren?) und Vorhersagen ableiten.
Tipp: Filtere die Einträge je nachdem, mit welcher Fragestellung Du die Daten untersuchst.
Die Daten
Datensatz: races.csv
Der Datensatz beinhaltet folgende Informationen/Spalten:
- ID: Die ID des Eintrages
- race_created: Wann wurde das Rennen angesetzt/geplant?
- race_driven: Wann wurde das Rennen ausgetragen?
- track_id: ID der Rennstrecke, auf der das Rennen ausgetragen wurde.
- challenger: userID des Herausforderers
- opponent: userID des Gegners (Herausgeforderter)
- money: Einsatz des Rennens (in EUR)
- fuel_consumption: Spritverbruauch der Teilnehmer während des Rennens (in l)
- winner: Gewinner des Rennens (userID)
- status: Der Status des Rennens. Möglich sind: waiting, finished, retired, declined
- forecast: Wettervorhersage für das Rennen. Es handelt sich bei dem Feld (es handelt sich bei der CSV-Datei um einen Export aus einer (My)SQL-Datenbank) um ein serialisiertes Array.
Das bedeutet, es wird ein Datentyp Array in Form eines Strings in der Datenbank gespeichert. Der Hintergrund ist, dass man nicht für jeden Wert im Array ein eigenes Feld in der Tabelle der Datenbank haben möchte.
Nun aber zu den Daten an sich. Ich will Dir Daten anhand des Strings aus dem „forecast“-Feld der ersten Zeile erläutern:
a:4:{s:5:”sunny”;i:10;s:5:”rainy”;i:70;s:8:”thundery”;i:0;s:5:”snowy”;i:20;}
Das a:4 bedeutet, dass es sich um ein serialisiertes Array mit 4 Datenpaaren handelt. Der Inhalt des Arrays steht dann in den geschweiften Klammern. Jedes Datenpaar repräsentiert eine Wetterart und die Wahrscheinlichkeit ihres Auftretens. Die Wetterarten (Einträge im Array) werden durch Semikolons getrennt. Es gibt vier Wetterarten (sunny, rainy, thundery, snowy). Jeweils davor steht „s:“ und eine Zahl. Die Zahl beschreibt lediglich die Länge des folgenden Strings (bei sunny 5 Zeichen, bei thundery 8 usw.). Hinter der Wetterart steht jeweils noch ein „i:“ und eine Zahl. Die Zahl hinter dem i (für Integer) beschreibt die prozentuale Wahrscheinlichkeit für das Auftreten des jeweiligen Wetters.
Der obige Eintrag bedeutet also aufgeschlüsselt:
10% sonniges Wetter (Wahrscheinlichkeit)
70% regnerisches Wetter (Wahrscheinlichkeit)
0% Gewitter
20% Schneefall - weather: Tatsächliches Wetter
Deine Abgabe soll:
- Spannende Fragestellungen an den Datensatz formulieren
- Die Daten anhand der Fragestellungen auswerten
- Die Aussagen/Ergebnisse visualisieren
- Optional: Voraussagen über weitere Rennen und Rennergebnisse zu verschiedenen Fahrer-IDs ausgeben.
Selbstverständlich kannst Du weitere Zusatzfeatures implementieren 😉
{REVIEW}
Worauf achten wir bei der Bewertung Deiner Abgabe?
- Funktionalität: Lässt sich das Programm bedienen? Tut die Anwendung oder die Funktion, was sie soll? Wie umfangreich sind die Funktionen?
- Code-Qualität: Ist der Code sinnvoll strukturiert und effizient?
- Code-Lesbarkeit / Dokumentation: Lässt sich der Quellcode nachvollziehen? Ist der Code kommentiert?
- Setup: Ist das System einfach einzurichten / aufzusetzen? (z.B. mittels guter Dokumentation, Docker, Vagrant, Skripte, o.ä.)
- README: Wird eine README mitgeliefert, die zeigt, wie das Programm aufgerufen werden kann?
- Welche Zusatzfeatures wurden eingebaut?
Abgabe
Programmiersprachen:
Java, C, C++, C#, Python und PHP/HTML/MySQL.
Als Form der Lösung ist erlaubt: Webseite, Android-App, Desktopanwendung oder Konsolenein- und Ausgabe. Die Verwendung von Frameworks ist erlaubt.
Additional Details
Weiterleitungsevent - No
Partnerunternehmen -
Sponsor der Förderung -
Top-Event (Bezahlevent) - No
Talentpool-ID -