Studienprojekt WS 2018: Data Science Wiki (dscw)

(Diese Seite: Studienprojekt WS 2018. Zum Studienprojekt 2019 siehe http://www.jbusse.de/projekte/dsci-spb-2019.html ).

Im Studienprojekt "Data Science Wiki (dscw)" erstellen wir praxistaugliche Dokumentationen für die Analyse von ausgewählten Datensätzen (u.A. auch aus der HAW LA) mit Regressions-Verfahren wie Lars, Ridge, Lasso und ElasticNet. Projektziele:

  • Erstellung eines kleinen Baukastens von Python3-Codesnippets zur prädiktiven Datenanalyse (Sprache: EN)
  • Exemplarische Analysen von Datensätzen aus Projekten der HAW LA (Sprache: DE)
  • Dokumentation von Herangehensweisen, Code, Datensätzen und exemplarischen Analysen in einem Doku-Wiki (Sprache: DE)

Als Ergebnis des Studienprojektes soll man eine praktische Materialsammlung für eine hypothetische Wahlpflicht-Veranstaltung für Bachelor-Studierende im dritten(!) Studiensemester eines technischen Studienganges an einer FH/HAW in den Händen halten können.

Wir arbeiten mit Python. Das ist kein Bug, sondern ein Feature: Im Studienprojekt kann man schon im Bachelorstudium ganz praktisch eine der wichtigsten Sprachen nicht nur für Data Science, sondern auch für IoT, Web u.V.m niedrigschwellig kennenlernen. Manche halten Python für eine ideale Einsteiger-Sprache. Wer später mal mit Google-Technologien (z.B. TensorFlow) arbeiten will, kommt sowieso nicht ohne sie aus.

Die Herausforderung des Studienprojektes liegt übrigens nicht in Python, sondern in der genauen Kenntnis von Bibliotheken wie insbesondere numpy, pandas und scikit:

  • typische Aufgaben im Gesamtprozess
  • Leistungsfähigkeit und Shortcomings
  • Datentypen, die von diesen Bibliotheken zur Verfügung gestellt werden
  • wechseleitige explizite und implizite Typ-Umwandlungen

Wir verwenden Python also hauptsächlich als Host und als Skript-Sprache, mit der wir leistungsfähige Bibliotheken ansprechen können.

Schritte

Einarbeitung in Python 3, Pandas und Scikit-learn anhand bereits ausgewählter Quellen:

Anwenden der Code-Snippets auf neue Datensätze, insbesondere auch aus Projekten der HAW LA

  • muss: die 4 Beispiele aus Bowles
  • kann: Kaggle Titanic u.a.
  • soll: exemplarische eigene Datensätze aus Projekten der HAW LA

Dokumentieren des Codes in einem Dokuwiki, Ausführen in einem Jupyter Notebook

Voraussetzungen

Von den Teilnehmern des Studienprojektes wird erwartet, dass sie gerne programmieren, sich insbesondere selbstständig anhand von Online-Tutorials in die für Data Science erforderlichen Grundlagen von Python einarbeiten wollen.

Um die Einarbeitung in die Theorie zur Data Science im Rahmen eines Studienprojekts überhaupt zu ermöglichen, konzentrieren wir uns auf das sehr praxisrelevante und extrem leistungsfähig Regressions-Verfahren ElasticNet. Dieses Verfahren wird in Bowles (Machine Learning in Python, Wiley 2015) didaktisch ausführlichst beschrieben und kommt auch im Master-Modul "Data Science" zur Anwendung.

Im Studienprojekt muss man EN flüssig lesen können, sämtliche Literatur zum Thema liegt ausschließlich auf EN vor.

Treffen 2019-12-04

Hausaufgabe

  • 20h Beschäftigung mit den Aufgaben aus https://www.w3resource.com/python-exercises/pandas/index.php
  • Lernjournal: Möglichst reflektiert das eigene Lernen beobachten
    • Was läuft gut, was macht Spaß
    • Wo hat man Aversionen?
    • Was ist schwierig?
    • etc.
  • Ziel: Man will ja mal Tutor/Trainer werden für das Lernen von Mitarbeitern in der Abteilung

Was tun wir?

  • "Lernerfolgskontrollen": Was kann ein durchschnittlicher Lerner in 20h lernen?
    • Faktor 1:10 je nach Vorkenntnissen zu erwarten
    • Wichtige Einflussgröße: Vorkenntnisse im Programmieren?

Treffen 2019-01-16

Hausaufgabe für unseren Workshop-Tag Mitte Februar: Einlesen! und zwar in:

Alles über Titanic in Kaggle:

Die Wiki-Struktur entnehmen wir CRISP-DM: https://www.the-modeling-agency.com/crisp-dm.pdf

Den Code für viele typische Tasks aus CRISP-DM entnehmen wir:

  • Chris Albon: Machine Learning with Python Cookbook. O'Reilly 2018 (Anschaffungsantrag läuft)

Für welche Modelltypen machen wir die Datenvorverarbeitung? für (a) regulated regression und (b) decision trre forests, wie sie beschrieben sind in Bowles

Treffen 2019-02-18

11-17 Uhr HAW LA

als Ziel definiert: fertiges ODF-Dokument

Unser Modell: MLPC Kap 13 Linear Regression und Kap 16 Logistic Regression, insbesondere ElasticNet (als Regression und in der Logit-Version als Klassifikation). ElasticNet im Detail: siehe Bowles

Treffen 2019-03-07 (Do) 10-14

Tu Zun zuhause

  • mit Dokuwiki spielen
    • includes etc. ausprobieren
    • neue Seiten anlegen
    • Skizze erweitern, wie das Endprodukt aussehen könnte
    • ggf. ACL etc.
  • Markdown und Dokuwiki-Markup vergleichen

Ergebnissicherung: jede Gruppe zeigt

  • die Dokuwik-Experimente
  • ihren MLPC-CRISP-Titanic-Demo-Kernel

dann: 'rüberkopieren in das (dann hoffentlich von außen zugängliche) Wiki

https://github.com/TobyTrmpck/StudienprojektLa_TestWorkshop

Treffen Mo 2019-03-18 (Mo) 13-16 Uhr

Ziele Stand heute:

Zu tun:

  • auf Github ein privates Projekt einrichten
    • Kontakt mit M.Mock
    • zusammenfügen
    • BUJ
  • Projektraum strukturieren?
  • Kollaboration in der Kleingruppe ausprobieren
    • jede Kleingruppe

Für jedes Code-Snippet

  • Quelle in MLPC
  • ggf. Quelle in Scikit? oer auch andere Quellen

Treffen Mo 2019-04-08 von 13 (auch 14:30) -16 Uhr

Was haben wir gemacht?

  • Übungs-Notebooks
  • MA-Notebooks angeschaut

Treffen Do 2019-05-02 von 13-16

Mikro-Tasks für Anfänger, z.B.:

  • CSV-Datensatz einlesen
    • alles
    • nur bestimmte Spalten
    • nur Zeilen ohne NaN
    • NaNs mit Spezialwerten auffüllen (z.B. -999)
    • mit / ohne Spaltenköpfe
  • Zeilen mit NaN
    • löschen
    • Durchschnittswert imputieren
    • Mini-Projekt: Regression auf Titanic-Age
  • Werte ersetzen
    • z.B. "Male" nach "m"
  • Spalten umbenennen
    • .rename
  • Age: Durchschnitt für male und female getrennt imputieren
  • Spalten sortieren
    • Visualisierung
    • 10%-Percentile
  • Zahlen nach Werten gruppieren (z.B. nach female, male)
  • Grundlagen Visualisierung
    • Histogramm
    • Scatter-Plot

Zweier-Tasks für Fortgeschrittene

  • eine Mikro-Task
  • plus Regression
    • numerisch: Kap 13 Regression
    • Klassifikation? logistische aus Kap 16 "Regression"

Zu jeder Mikro_task

  • ein Notebook

bis zum nächsten Treffen

  • 3-5 Notebooks zu interessanten Mikro Tasks
  • gerne mit didaktischem "#hide"
  • publiziert auf github: https://github.com/HAWMobileSystems/dsci-ws-2018 bis Termin: 15. Mai 23:55 Uhr
    • pro Person bitte in einen Unterordner, der gliech heißt wie der entsprechende github-Account
  • Besprechung dann auf dem Treffen 16.5.2019 von 13-16 Uhr

Ziel Studienprojekt (Revidiert Mai 2019):

  • eine Sammlung von Mikro-Tasks ("Rezepte")
  • mit Verweis auf MLPC, wo möglich
    • ggf. auch Verweis auf andere Quellen, falls nihct in MLPC enthalten
  • Einschränkung: Regression und logistische Regression
  • idealerweise Titanic
  • auf GitHu

Treffen Do 2019-05-16 von 13-16

Bis zum nächsten Treffen:

(Mikro- oder größere) Notebooks fertigstellen

  • Name
  • #hide das was versteckt werden soll
  • insgesamt 20 verschiedene #hide
    • ( "#hide" hat kein Leerzeichen)

Bericht in einer Zip-Datei auf Moodle hochladen

  • Protokolle aller Treffen
  • Web-Tutorials
    • incl. Lern-Zeiten, falls verfügbar
    • ggf. noch eine kurze Bewertung, ob sich das Tutorial gelohnt hat?
    • Eigene Lernstrategie
  • eigene (Mikro-) Notebooks

Treffen Do 2019-06-27 von 13-16: Abschluss

Zeigen, was man gemacht hat ... auch den Bericht etwas zeigen: Highlights?

Wir besprechen Verbesserungs-Möglichkeiten

Kontakte