Posts mit dem Label R werden angezeigt. Alle Posts anzeigen
Posts mit dem Label R werden angezeigt. Alle Posts anzeigen

2015/05/20

Spyre - Framework für Python Datenprojekte

Was dem Python Daten Ökosystem bislang noch fehlt, ist ein Modul um webfähige Datenprodukte, schnell und mit wenig Aufwand, zu erstellen. Adam Hajari hat einen ersten Versuch unternommen, das zu ändern und begann die Entwicklung von Spyre. Um dieses Framework zu testen, habe ich eine kleine Beispielapplikation geschrieben, das im Repo für diesen Blog unter den Python Beispielen zu finden ist.

Daten von Strava

Für das Beispiel habe ich ein paar Daten zu meinen sportlichen Aktivitäten in diesem Jahr von Strava herunter geladen. Die Strava API ist zwar nicht gerade ein Highlight in Bezug auf UX beim Datenabgreifen, aber es gibt zumindest ein (selten schlecht dokumentiertes) Python Modul, das die Verbindung managt und somit die Angelegenheit ein bisschen schmerzfreier gestaltet. Das Skript, mit dem ich die Kollektionen mit meinen Radfahr- und Schwimm-Aktivitäten erstellt habe, ist auch im Beispiel Verzeichnis zu finden. Sie enthalten die Art der Aktivität, die Startzeit, Dauer und Distanz.

Spyre Apps

Nach der Installation von Spyre (das Paket heisst dataspyre bei pip) und dem Download des master Repos des Projekts kann gleich mit dem Testen der Beispielanwendungen begonnen werden. Diese sind sehr auf Plots fixiert, es ist z.B. auch möglich Bokeh Plots zu integrieren, aber auch diverse Matplotlib Derivate können gerendert werden. Aber auch das Erzeugen von Tabellen wird durch ein Beispiel abgedeckt. Wirklich sehr nützlich um sich mit dem Modul vertraut zu machen, ist das Tutorial im Spyre Repo, im Form eines Ipython Notebooks. Darin wird anhand der Beispielanwendungen die wichtigsten Input-Elemente (div. Buttons, Slider, Dropdown etc.) und Output-Möglichkeiten (Plot, Tabelle etc.) des Frameworks erklärt.
Radfahr Daten in Browser App
Daten App im Browser

Von den Beispielen im Spyre Repo habe ich dann auch meine Beispielanwendung abgeleitet (hier ist der Code dazu). Um die Anwendung zu starten genügt es, das Hauptskript mit Python (in einer 2er Version) zu starten und im Browser der Wahl den Port 9097 vom localhost aufzurufen. Wie in dem Foto rechts zu sehen ist, kann dann mit einem Dropdown die Sportart gewählt werden. Der Plot (der Simplizität zuliebe mit Pandas erzeugt) zeigt daraufhin die Tage, an denen die Aktivität statt fand und die Distanz, welche mit dem Rad bzw. im Schwimmbecken zurück gelegt wurde.

Ein Spyre Server basiert übrigens auf dem CherryPy Web Framework. Wer daran ein bisschen herum bastelt, kann übrigens auch Spyre Apps auf einen Raspberry Pi 2 zum Laufen bringen (siehe Foto unten). Das halte ich für insofern interessant, da es damit möglich wird, Sensordaten abzugreifen, zu verarbeiten und jetzt eben auch im Internet zu präsentieren mit einer durchgängigen Programmiersprache und auf einem Gerät.
Ein von @datadonk23 gepostetes Foto am


Zusammenfassung

Mit Spyre ist es möglich, webfähige Datenprodukte durchgehend in Python zu erstellen, ohne auf Übersetzungen in eine andere Sprache (wie zB bei plot.ly) und den damit verbundenen Einschränkungen, angewiesen zu sein. Die Funktionalität und Usability ist aber im Vergleich zum R Ökosystem mit Shiny jedoch sehr bescheiden und benötigt noch jede Menge Entwicklungsarbeit der Community. Es bleibt zu hoffen, dass das Projekt weiter an Bedeutung zunimmt und eventuell auch eine Plattform wie ShinyApps.io, nur für das Python Daten Ökosystem, entstehen lässt. Insbesonders für die adäquate Präsentation von Analyse-Ergebnisse oder Daten-Modellen ist ein Modul wie Spyre bedeutend, um datenwissenschaftliche Prozesse durchgehend in Python zu ermöglichen.

2014/07/27

Migrationsbilanz als ShinyApp

Für das Kurs-Projekt vom MOOC Developing Data Products habe ich eine simple Visualisierungs App entwickelt. Sie bereitet Migrationsdaten aus dem Zeitraum 2002 - 2012 der Bezirke von Oberösterreich in Form einer Choroplethenkarte auf und zeigt die Werte auch in Tabellenform.

Link zu shinyMig OÖ

ShinyApps.io

Umgesetzt wurde das Projekt zu Versuchszwecken in R auf der ShinyApps.io Plattform von RStudio. Das Deployment hierbei zeigte sich mehr als simpel. Sofern die Anwendung auf der eigenen Workstation einwandfrei läuft, kann es mit einem einfachen deployApp() Befehl auf die Plattform geladen werden. Die Kunst ist lediglich, die Anwendung am eigenen Rechner fehlerfrei zum Laufen zu bringen, da die debugging Möglichkeiten mit shiny leider noch sehr begrenzt sind.

Umsetzung in R

Bei der Entwicklung der App zeigte sich wieder eindeutig, dass R nur ein suboptimales Werkzeug zur Kartenerstellung ist. Mit ggplot2 ist zwar einiges möglich, der Aufwand dafür steht jedoch mMn nicht in Relation zu den mässigen Ergebnissen im Vergleich zu echter GIS-Software. Bei der Aufbereitung der Rohdaten (übrigen von data.gv.at) und der tabellarischen Darstellung in der App, konnte hingegen R natürlich seine Stärken ausspielen. Als größtes Hindernis bei der Entwicklung stellte sich die Kategorisierung der Migrationsbilanzen heraus, wobei ich mich nach etlichen Versuchen in automatischer- und einiger in manueller-Klassifizierung für einen semi-automatischen Weg entschieden habe, wobei positive und negative Salden getrennt und von diesen beiden Kategorien dann der jeweilige Median als weitere Schwelle eingeführt wurde. Damit blieb die visuelle Vergleichbarkeit der Karten noch einigermassen erhalten, bei Beibehaltung des Akzents auf die Trennung von positiven und negativen Werten. Für detaillierte Vergleiche sind ja noch die jeweiligen Schwellen in der Legende verzeichnet bzw. auch die Daten in der Tabelle ersichtlich.

Beispielcode

Der Beispielcode steht im R-Repo dieses Blogs zum download bereit.

2014/04/08

MOOC: The Data Scientist's Toolbox

Diese Woche habe ich wiedermal einen MOOC zum Thema Data Science begonnen. Dies ist der Einstiegskurs zu den, in einem früheren Post erwähnten, Data Science Specialization Kursen von Coursera.

Leider war aus der Kursbeschreibung nicht ersichtlich, dass es sich dabei um eine reine Einführung in (und Werbung für) diese neue Specialization-Schiene handelt und nicht etwa um eine umfassende Beschreibung von relevanten Werkzeugen, wie der Titel vermuten lassen könnte.
Thematisch handeln die Lektionen von der Installation nötiger Software (va. R für die Analyse und Git zur Versionskontrolle) und ein wenig einführender Worte zur Arbeit mit Daten. Der Arbeitsaufwand ist entsprechend gering - aktuell, habe ich alle Erfordernisse, abgesehen von der Benotung der Peers, mit einem Zeitaufwand von ca. 4h hinter mich gebracht. Etwas dürftig für einen 4 wöchigen Kurs ;)
Der Kurs ist für Datenwissenschaften-Interessierte als Zeitverschwendung anzusehen. Immerhin sollte davon ausgegangen werden können, dass jemand, der/die sich datenanalytisch betätigen möchte, gut dokumentierte Programme installieren kann.

2014/02/17

Buchbesprechung: Doing Data Science

Mit hohen Erwartungen begann ich vor einigen Wochen das Buch Doing Data Science - Straight Talk from the Frontline von Rachel Schutt und Cathy O´Neil zu lesen und diese wurden dabei auch noch übertroffen.

Konzept

Das Konzept des Buches kam mir anfangs etwas grenzwertig vor, denn der Inhalt entstand aus einer Vorlesung, die Rachel Schutt an der Columbia Universität über Data Science hielt und an dem Cathy O´Neil -bekannt durch ihren Blog mathbabe- teilnahm und mitprotokollierte. Ob ein Uni-Kurs einen umfassenden Einblick in die Welt der praktischen Datenwissenschaften (wie das Doing im Titel und generell der Untertitel suggeriert) vermitteln kann? Ich war skeptisch.

Von der Front

Und wurde eines besseren belehrt. Denn die zahlreichen Anekdoten aus dem beruflichen Erfahrungsschatz von Rachel Schutt sind schon mal ein gutes Fundament für ein praxisbezogenes Buch. Jedoch wurde das durch die Beiträge über Gastreferenten aus der Datenindustrie und deren beruflichen Background noch übertroffen. So wurde das weiter und interdisziplinäre Feld der Datenwissenschaften anhand übergreifenden Themen wie Visualisierung, Algorithmen oder das MapReduce-Paradigma anhand der Tätigkeitsbereiche der Gäste (u.a. Prof. Mark Hansen oder William Cukierski von Kaggle, sowie einige ehemalige Kollegen von Google von Racehel Schutt) erläutert, was dem Buch zwar zu einer unüblichen, aber zu einer -hinsichtlich des Durcharbeitens des Inhalts- sehr angenehmen Gliederung verhalf.

Selbst an der Front

Die am Ende der Kapitel befindlichen praktischen Übungen sind thematisch ebenfalls an die jeweiligen Gastreferenten ausgerichtet. Die zu lösenden Fragen sind realitätsnah und mit unterschiedlichen Tools zu lösen. Die Beispiele zu Beginn sind zwar sehr auf R fixiert, im weiteren Verlauf sind jedoch auch Übungen mit Python oder sogar ein Übungsbeispiel zu finden, das mit einem bash-Skript zu lösen war. Pro Übungen wird zwar Beispiel-Code zu Verfügung gestellt, die endgültige Lösung bleibt aber gänzlich dem/r Leser/in überlassen. Der mMn einzige negative Punkt an dem Buch sind dann eben die fehlenden Lösungen zur Kontrolle, was den Eindruck vermittelt, allein an der Front zurück gelassen worden zu sein - was vermutlich auch so intentioniert ist.

Inhalt - umfassend und kritisch

Der Inhalt des Buches erstreckt sich über alle Facetten der Datenwissenschaften. Methoden und Probleme hinsichtlich der Datenbeschaffung werden ebenso thematisiert wie die Datenqualität, Prozessierungsmethoden oder exploarative Datenanalyse. Die eigentlichen Auswertungsmethoden werden verständlich und prägnant erklärt. Besonders wird auf die Funktionalität unterschiedlicher Algorithmen aus dem Bereich des maschinellen Lernen eingegangen. Nötige Grundkonzepte wie beispielsweise die Statistik nach Bayes werden ebenso kurz erklärt, wie auch unterschiedliche Software die zur Analyse eingesetzt werden können. Auch die Präsentation und Visualisierung der Ergebnisse wird ausreichend genau thematisiert und die Auswirkungen kritisch hinterfragt. Mein persönliches Highlight ist jedoch nicht der umfassende und prägnant dargestellte Inhalt, sondern die -im positiven, wie auch negativen Sinn- kritische Grundhaltung der beiden Autorinnen gegenüber ihrer Disziplin. So werden ethische Fragen, insbesondere im Umgang mit sozialen Daten, nicht in Nebensätzen abgehandelt, sondern sind immer wiederkehrende Aspekte in den einzelnen Kapitel. Generell ist eine besondere, ethische Grundhaltung der beiden Autorinnen hinsichtlich des notwendigen Feingefühls im Umgang mit Daten und den Auswirkungen der Analysen zu erkennen. Dem folgend fällt auch der Rat der beiden für angehende Datenwissenschafter aus:
"We´d like to encourage the next-gen data scientists to become problem solver and question askers, to think deeply about appropriate design and process, and to use data responsibly and make the world better, not worse." (Schutt/O´Neil (2013): S. 350)

Zusammenfassung

Das Buch  Doing Data Science - Straight Talk from the Frontline von Rachel Schutt und Cathy O´Neil sollte jede/r gelesen haben der/die mit Daten arbeitet und dies erlernen möchte. Ein wenig technisches Grundwissen vorausgesetzt, zeichnet der Inhalt die aktuelle Welt der Datenwissenschaft nach und erweitert die individuellen Fähigkeiten im Umgang mit Daten. Gerade in Zeiten eines Big Data-Hypes sind die Geschichten von der Datenfront der beiden Autorinnen ein wieder erdendes Mittel. Die dargebotene kritische Hinterfragung aktueller Daten-Technologien und immer wieder kehrende ethische Fragen sind darüber hinaus ein besonderes Merkmal das zum Lesen dieses Buches motivieren sollte. 

2014/02/02

MOOC: Computing for Data Analysis

Nachdem ich beschlossen habe, dass meine Fähigkeiten, mit R zu arbeiten, erweiterungsfähig sind, habe ich mich in den Coursera-MOOC Computing for Data Analysis eingeschrieben. Im Herbst habe ich schonmal einen Coursera-MOOC zur Datenanalyse mit R belegt, aber gleichmal zu Beginn wieder abgebrochen, da mir der Inhalt dann doch zu grundlegend war. Bei diesen habe ich nun erwartet, ein paar Tipps & Tricks in der Skriptprogrammierung und Möglichkeiten zur Übung zu erhalten. Nachdem der Kurs nun abgeschlossen ist, mein Résumé:

Die Ausrichtung des Kurses finde ich nicht recht schlüssig. Einem/r EinsteigerIn ist er mMn nicht zu empfehlen, da gar nicht genügend Zeit bleibt, in einem so kompakte Zeitrahmen von 4 Wochen, die gelernten Techniken so einzuüben, um sie auch produktiv einsetzen zu können. Andererseits langweilt sich der/die Nicht-EinsteigerIn in der ersten Woche (Einführung, Installation etc.) und auch bei den Grundlagen zum Plotten.

Der Vortrag von Roger D. Peng (Assoc. Prof. an der Johns Hopkins Bloomberg School of Public Health) ist inhaltlich gut zusammengestellt und auch gut verständlich. Die Lektionen selbst sind teilweise etwas lang und könnten besser in mehrere Lektionen aufgesplittet werden. Thematisch wurde es erst gegen Ende der dritten (Reproduzierbare Forschung) und in der letzten Woche (Reguläre Ausdrücke in R bzw. S3- & S4 Klassen/-Methoden) richtig spannend.

Quizzes sind gut lösbar, aber auch nicht unterfordernd. Richtig negativ sind mir eigentlich nur die Program Assignments aufgefallen. Deren Angaben sind teilweise mangelhaft und es gibt kein nützliches Feedback (nur ob das abgegebene Dokument "korrekt" war oder eben nicht - jedoch kein Hinweis, was daran nicht korrekt war). Zudem sind die Fragen aufeinander aufgebaut. Kann also das erste Beispiel nicht korrekt gelöst werden, sind auch die übrigen Punkte verloren. Das Positive an den Assignments ist, dass sie eine gute Möglichkeit zum Training der Skriptprogrammierung mit R bieten. Die Beispiele sind mit ein bisschen Übung (und kompletter Anleitung) nicht unlösbar. Außerdem sind mMn die Domänen der jeweiligen Assignments gut gewählt, damit sie nicht allzu langweilig werden. Für diesen Blog relevant, war beispielsweise die Assignments 3 und 4, in denen im Ersten gesundheitsrelevante Datensätze (Gesundheits-Outcome- und Spitaldaten aus den USA) und im Zweiten ein Datensatz zur Kriminalität (Tötungsdelikte in Baltimore) zu bearbeiten waren. Die Datensätze waren dabei jeweils schon aufbereitet.

Alles in Allem, war es eine gute Möglichkeit zur Übung. Im Bereich von Tipps & Tricks hätte ich mir aber mehr erhofft. Vielleicht wird der Kurs in Rahmen des neuen Spezialiserungs-Programms hinsichtlich dieser Richtung ja noch verbessert. Und nun werde ich auf das Statement of Accomplishment warten ;)