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:
- Homepage des Datensatzes: https://www.kaggle.com/c/titanic
- What’s the expected maximum score? https://www.kaggle.com/pliptor/how-am-i-doing-with-my-score
Die Wiki-Struktur entnehmen wir CRISP-DM: https://www.the-modeling-agency.com/crisp-dm.pdf
- Wiki-Struktur: Abbildung "Figure 3: Generic tasks (bold) and outputs (italic) of the CRISP-DM reference model" S. 12
- Vorstrukturiert unter http://jbusse.de/2018_ws_gdw/crisp-dm_einfuehrung.html > Phases, Tasks, Outputs
- ftp://public.dhe.ibm.com/software/analytics/spss/documentation/modeler/15.0/de/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
- Michael Bowles: Machine learning in Python: essential techniques for predictive analysis. Wiley 2015.
- Bibliothek: https://opac.haw-landshut.de/search?bvnr=BV043397686 | pdf: https://bibaccess.fh-landshut.de:3159/doi/book/10.1002/9781119183600
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:
- Mannheim Übungsblätter
- re-engneering *mit MLPC*
- https://www.uni-mannheim.de/dws/teaching/course-details/courses-for-master-candidates/ie-500-data-mining/ > Exercises
- vor allem Excercise 1, 2,4, 5, ggf. 6
- jedenfalls die Intro-Notebooks
- idealerweise auch die Aufgaben-Notebooks
- kein Code ohne Quellenangabe - außer man hat es aus dem Kopf selbst gemacht
- MLPC: die wichtigsten Rezepte ergänzen
- möglichst viele verschiedene Art und Weisen, das zu machen
- Einbindung in einen Kontext
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")
- ähnlich MLPC und/oder https://chrisalbon.com/
- Sprache: DE
- schöne Erläuterungen
- 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