Abo
  • Services:

Programmiersprachen, Pakete, IDEs: So steigen Entwickler in Machine Learning ein

Programme zum Maschinenlernen stellen andere Herausforderungen an Entwickler als die klassische Anwendungsentwicklung, denn hier lernt der Computer selbst. Wir geben eine Übersicht über die wichtigsten Entwicklerwerkzeuge - inklusive Programmierbeispielen.

Artikel von Miroslav Stimac veröffentlicht am
Maschinenlernen stellt an Entwickler besondere Herausforderungen.
Maschinenlernen stellt an Entwickler besondere Herausforderungen. (Bild: Public Domain / Montage: Golem.de)

Die Entwicklung von Machine-Learning-Programmen bei Data-Science-Projekten unterscheidet sich sehr von der klassischen Anwendungsentwicklung, weil man bei Machine Learning das Regelwerk nicht explizit programmiert. Vielmehr werden dem Computer Algorithmen und Daten gegeben, mit denen er selbstständig lernt und das Regelwerk aufbaut. Dafür kommen Programmiersprachen, Bibliotheken und integrierte Entwicklungsumgebungen zum Einsatz, die in der Anwendungsentwicklung eher unüblich sind.

Inhalt:
  1. Programmiersprachen, Pakete, IDEs: So steigen Entwickler in Machine Learning ein
  2. Machine-Learning-Pakete für Python
  3. Ein kleines Programmierbeispiel

Anwendungsentwickler verwenden in der Regel Programmiersprachen wie Java, C# und Visual Basic sowie bei Webanwendungen PHP oder Ruby. Die Wahl hängt von vielen Aspekten ab, etwa davon, welches Betriebssystem unterstützt werden soll, welche Sprachen im Team am besten beherrscht werden und welche Frameworks verfügbar sind. Hinzu kommen eigene Vorlieben. Bei Data-Science-Projekten sieht die Situation anders aus, wenn es darum geht, durch Einsatz von Machine-Learning-Algorithmen oder auch Methoden der klassischen Statistik Erkenntnisse und Wissen aus Daten zu erlangen.

Zwar können auch dabei Programmiersprachen wie Java und C# verwendet werden, doch kommen sie, wenn überhaupt, erst in einem Folgeprojekt bei der Entwicklung eines reifen, produktiven Machine-Learning-Systems zum Einsatz. Anfangs ist in der Regel nicht bekannt, wie die Daten, die man für das Trainieren des Computers verwenden will, inhaltlich und qualitativ beschaffen sind. Auch ist oft unklar, welcher Machine-Learning-Algorithmus bei den verfügbaren Daten beziehungsweise dem Szenario gute Ergebnisse liefern wird. Deshalb sind Programmiersprachen nötig, mit denen schnell und einfach Daten analysiert und Prototypen von Machine-Learning-Programmen entwickelt werden können. Die zwei gängigsten Programmiersprachen dafür sind R und Python.

R - die Programmiersprache der Statistiker

Die Programmiersprache R wurde von den Statistikern Ross Ihaka und Robert Gentleman an der Universität Auckland (Neuseeland) im Jahr 1992 entwickelt. Sie wurde für Statistik beziehungsweise Datenanalyse geschaffen. R ist ausgerechnet für erfahrene Programmierer eher schwer zugänglich.

Stellenmarkt
  1. Beckhoff Automation GmbH & Co. KG, Verl
  2. Bosch Gruppe, Grasbrunn

Wer bekannte Paradigmen von C, PHP oder Python anwenden will, kann das zwar tun, macht es sich aber unnötig schwer. Programmieren mit R heißt, stets auf Mengen zu operieren. Skalare Datentypen spielen in R keine wichtige Rolle. Programmierer sollten sich deshalb eher die Denkweise von SQL und Stored Procedures in relationalen Datenbanksystemen zum Vorbild nehmen, wenn sie die ersten Schritte mit R unternehmen.

R unterstützt das Arbeiten und Rechnen mit Datencontainern, die für Statistiker besonders wichtig sind: Vektoren, Matrizen und Data Frames. Am mächtigsten ist der Data Frame, ein Container, der ähnlich wie eine Tabelle ist. Er enthält mehrere Vektoren gleicher Länge, die sich aber bezüglich der Datentypen unterscheiden dürfen.

Data Frames können auch Spalten- und Zeilenüberschriften haben, und es gibt viele Methoden, auf bestimmte Zellen in Data Frames zuzugreifen. Diese elegante Art und Weise, mit Daten in Data Frames zu arbeiten, macht R bei Statistikern so beliebt. Auch die Befüllung von Data Frames aus externen Quellen wie Datenbanktabellen, CSV-Dateien oder Excel-Sheets ist sehr einfach. Hier ein Beispiel mit einer CSV-Datei als Datenquelle:

  1. df <- read.csv(file="Dateiname.csv", header=TRUE, sep=",")

Mit nur einer Zeile R-Code werden Daten aus einer CSV-Datei in ein Data Frame geladen. Wer mit Java oder C# programmiert, wird wissen, dass dies bei diesen Programmiersprachen nicht so kurz und einfach ist und allein das formelle Deklarieren der leeren Start-Klasse und der Main-Methode mehr Zeilen Code sind. Dies ist keine Kritik an Java oder C#. Man muss sich bewusst sein, dass R eine Programmiersprache speziell für Statistiker ist. Sie ist für Anwendungsentwicklung sehr eingeschränkt oder gar nicht geeignet:

  • R ist elegant für Datenanalysen, aber nicht für große Programme, die oft zu Unübersichtlichkeit neigen.
  • R ist schnell bei mengenorientierten Berechnungen wie Matrix-Multiplikationen, aber langsam beim Einsatz von Schleifen.
  • Alle Daten, die in R verwendet werden, werden komplett in den Arbeitsspeicher geladen. Falls das RAM voll wird, sinkt die Performance massiv.

Bei R liegt der Schwerpunkt in der Ad-hoc-Datenanalyse und dem Ausprobieren von Machine-Learning-Algorithmen. Dazu hat R nicht nur eine elegante Syntax, sondern es gibt auch ein Repository mit über 13.000 Paketen, von denen viele für Datenanalyse, Datenvisualisierung und Machine Learning sind.

R ist kostenlos für Linux, MacOS X und Windows zum Download verfügbar.

Wer jedoch nicht nur Ad-hoc-Datenanalysen machen, sondern auch einen Prototyp einer Machine-Learning-Anwendung entwickeln will, für den ist Python die bessere Wahl.

Python - damit kommt man schnell zum Prototyp

Im Gegensatz zu dem für Statistiker gedachten R handelt es sich bei Python um eine universelle Programmiersprache, die insbesondere bei Naturwissenschaftlern, Ingenieuren und Data Scientists beliebt ist.

Python wurde Ende der 1980er vom niederländischen Programmierer Guido van Rossum am Centrum Wiskunde & Informatica (CWI) konzeptioniert, 1991 veröffentlichte er die erste Version (Version 0.9.0). Die erste Vollversion (1.0) erschien 1994. Mittlerweile ist die aktuellste stabile Version 3.7.1 (Stand 20. Oktober 2018).

Wichtig zu wissen ist, dass aktuell meist zwei gängige Hauptversionen im Einsatz sind: 2.x und 3.x. Die Versionen 3.x sind nicht vollständig abwärtskompatibel zu 2.x. Es kann sein, dass man hin und wieder Programme findet, die in Python 2.x entwickelt wurden und nicht ohne Anpassungen mit Python 3.x funktionieren. Mittlerweile verwenden immer mehr Pakete, Frameworks und Programme Python 3.x, sodass auf lange Sicht Python 2.x an Bedeutung verlieren wird.

Python wird als sehr nutzerfreundliche Sprache angesehen. Sie unterstützt mehrere Programmierparadigmen wie die objektorientierte, imperative, prozedurale, aspektorientierte und funktionale Programmierung. Zudem ist Python oft als Skriptsprache im Einsatz. Sie wird beim Raspberry Pi im Betriebssystem Raspbian als Programmiersprache mitgeliefert. Im Magpi-Magazin, dem offiziellen Magazin für den Raspberry Pi, gibt es stets viele Python-Tutorials und Beispielprojekte unterschiedlicher Schwierigkeitsgrade. In gewisser Weise hat Python heutzutage den Stellenwert, den Basic in den 1980ern bei Heimcomputern hatte: Es ist die oft erste und beliebteste Sprache für Programmieranfänger.

Dennoch ist Python nicht nur bei Anfängern, sondern auch bei Wissenschaftlern und Ingenieuren populär. Deshalb gibt es eine große Anzahl von Paketen für Naturwissenschaften wie Astronomie, Biologie und Physik, aber auch für Mathematik, Statistik und Data Sciences oder Machine Learning in dem Python-Repository. Aktuell (Stand Oktober 2018) sind dort rund 150.000 Projekte gelistet.

Python steht kostenlos als Open-Source-Programmiersprache für Linux, MacOS, Windows und einige weitere Betriebssysteme zum Download bereit.

Obwohl Python nicht ursprünglich für Statistiker entwickelt wurde, wird die Sprache bei Data Scientists zunehmend beliebter, was an der einfachen Syntax und der riesigen Anzahl von Paketen für Data Science und Machine Learning liegt.

PythonR
ZielgruppeEntwickler, Data Scientists, Naturwissenschaftler, IngenieureStatistiker, Data Scientists
Repositoryhttps://pypi.org https://cran.r-project.org/web/packages/
Paketanzahl> 155000> 13000
EignungDeep Learning mit GPU-Support, große Datenmengen, Machine Learning bei IoT und RobotikAd-hoc-Datenanalysen, komfortable Datenvisualisierung
Downloadhttps://www.python.org/downloads/https://cran.r-project.org/
Vergleich von Python und R

Im Folgenden werden nur einige von vielen ML-Paketen für Python, nicht aber R, vorgestellt, weil davon ausgegangen wird, dass die meisten Golem.de-Leser IT-Profis und keine Statistiker sind und sich deshalb bei Projekten eher für die universelle Programmiersprache Python als für die spezielle Statistikprogrammiersprache R entscheiden würden. Es spricht aber nichts dagegen, sich auch mit R zu beschäftigen, insbesondere wenn Nutzer schon SQL-Kenntnisse haben und geübt sind, mit Mengen zu arbeiten. Gerade bei Aufgaben, bei denen es darum geht, schnell neue Datenquellen zu analysieren und die Daten zu visualisieren, wird man mit etwas Übung mit R schneller programmieren können als mit Python. Die Liste von Machine-Learning-Paketen für R ist auch sehr lang. Für die Datenvisualisierung mit R ist ggplot2 das wohl bekannteste Paket.

Einige der wichtigsten Pakete und Frameworks für Python werden nun vorgestellt - ohne Anspruch auf Vollständigkeit, denn es gibt nicht nur sehr viele Pakete, sondern es werden auch ständig neue entwickelt und veröffentlicht.

Machine-Learning-Pakete für Python 
  1. 1
  2. 2
  3. 3
  4.  


Anzeige
Hardware-Angebote
  1. 149,90€ + Versand (im Preisvergleich ab 184,95€)

Frankenwein 22. Nov 2018 / Themenstart

Das klingt interessant. Du gibst historische stündliche Daten zu Umgebungsvariablen und...

henryanki 15. Nov 2018 / Themenstart

Schleifen sind auch ein "Anti-Pattern" in R. Für fast alle "iterativen" Prozesse sollte...

0110101111010001 13. Nov 2018 / Themenstart

Tensorflow am verbreitetsten, CNTK am schnellsten. PyTorch am Facebookgsten...

Bruto 13. Nov 2018 / Themenstart

Psst, das ist zu symbolisch für die NNler ;) Oder es hat einfach zu viele Klammern.

Frankenwein 13. Nov 2018 / Themenstart

Super, danke für den Hinweis. Es gibt so viel Bewegung auf dem Gebiet, da ist es schwer...

Kommentieren


Folgen Sie uns
       


Amazons Echo Sub im Test

Mit dem Echo Sub lassen sich Echo-Lautsprecher mit Tiefbass nachrüsten. Die Echo-Lautsprecher sind allerdings im Mittenbereich vergleichsweise schwach, so dass das Klangbild entsprechend leidet. Sobald zwei Echo-Lautsprecher miteinander verbunden sind, gibt es enorm viele Probleme: Die Echo-Geräte reagieren langsamer, es gibt Zeitverzögerungen der einzelnen Lautsprecher und das Spulen in Musik ist nicht mehr möglich. Wie dokumentieren die Probleme im Video.

Amazons Echo Sub im Test Video aufrufen
Resident Evil 2 angespielt: Neuer Horror mit altbekannten Helden
Resident Evil 2 angespielt
Neuer Horror mit altbekannten Helden

Eigentlich ein Remake - tatsächlich aber fühlt sich Resident Evil 2 an wie ein neues Spiel: Golem.de hat mit Leon und Claire gegen Zombies und andere Schrecken von Raccoon City gekämpft.
Von Peter Steinlechner

  1. Resident Evil Monster und Mafia werden neu aufgelegt

Need for Speed 3 Hot Pursuit (1998): El Nino, Polizeifunk und Lichtgewitter in Rot-Blau
Need for Speed 3 Hot Pursuit (1998)
El Nino, Polizeifunk und Lichtgewitter in Rot-Blau

Golem retro_ Electronic Arts ist berühmt und berüchtigt für jährliche Updates und Neuveröffentlichungen. Was der Publisher aber 1998 für digitale Raser auffuhr, ist in puncto Dramatik bei Verfolgungsjagden bis heute unerreicht.
Von Michael Wieczorek

  1. Playstation Classic im Test Sony schlampt, aber Rettung naht

Google Nachtsicht im Test: Starke Nachtaufnahmen mit dem Pixel
Google Nachtsicht im Test
Starke Nachtaufnahmen mit dem Pixel

Gut einen Monat nach der Vorstellung der neuen Pixel-Smartphones hat Google die Kamerafunktion Nachtsicht vorgestellt. Mit dieser lassen sich tolle Nachtaufnahmen machen, die mit denen von Huaweis Nachtmodus vergleichbar sind - und dessen Qualität bei Selbstporträts deutlich übersteigt.
Ein Test von Tobias Költzsch

  1. Pixel 3 Google patcht Probleme mit Speichermanagement
  2. Smartphone Google soll Pixel 3 Lite mit Kopfhörerbuchse planen
  3. Google Dem Pixel 3 XL wächst eine zweite Notch

    •  /