• IT-Karriere:
  • 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. INIT Group, Karlsruhe, Braunschweig
  2. Dataport, verschiedene Standorte

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.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
Machine-Learning-Pakete für Python 
  1. 1
  2. 2
  3. 3
  4.  


Anzeige
Hardware-Angebote
  1. täglich neue Deals bei Alternate.de
  2. (reduzierte Überstände, Restposten & Co.)

Frankenwein 22. Nov 2018

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

henryanki 15. Nov 2018

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

0110101111010001 13. Nov 2018

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

Bruto 13. Nov 2018

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

Frankenwein 13. Nov 2018

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


Folgen Sie uns
       


Google Stadia - Test

Beim Test haben wir verschiedene Spiele auf Stadia von Google ausprobiert und uns mit der Einrichtung und dem Zugang beschäftigt.

Google Stadia - Test Video aufrufen
Mobile-Games-Auslese: Märchen-Diablo für Mobile-Geräte
Mobile-Games-Auslese
Märchen-Diablo für Mobile-Geräte

"Einarmiger Schmied" als Klasse? Diablo bietet das nicht - das wunderschöne Yaga schon. Auch sonst finden sich in der neuen Mobile-Games-Auslese viele spannende und originelle Perlen.
Von Rainer Sigl

  1. Mobile-Games-Auslese Fantasypixel und Verkehrsplanung für unterwegs
  2. Mobile-Games-Auslese Superheld und Schlapphutträger zu Besuch im Smartphone
  3. Mobile-Games-Auslese Verdrehte Räume und verrückte Zombies für unterwegs

Macbook Pro 16 Zoll im Test: Ein Schritt zurück sind zwei Schritte nach vorn
Macbook Pro 16 Zoll im Test
Ein Schritt zurück sind zwei Schritte nach vorn

Keine Butterfly-Tastatur mehr, eine physische Escape-Taste, dünnere Displayränder: Es scheint, als habe Apple beim Macbook Pro 16 doch auf das Feedback der Nutzer gehört und ist einen Schritt zurückgegangen. Golem.de hat sich angeschaut, ob sich die Änderungen auch lohnen.
Ein Test von Oliver Nickel

  1. Audioprobleme Knackgeräusche beim neuen Macbook Pro 16 Zoll
  2. iFixit Kleber und Nieten im neuen Macbook Pro 16 Zoll
  3. Macbook Pro Apple gibt fehlerhafte Butterfly-Tastatur auf

Apex Pro im Test: Tastatur für glückliche Gamer und Vielschreiber
Apex Pro im Test
Tastatur für glückliche Gamer und Vielschreiber

Steelseries bietet seine mechanische Tastatur Apex 7 auch als Pro-Modell mit besonderen Switches an: Zum Einsatz kommen sogenannte Hall-Effekt-Schalter, die ohne mechanische Kontakte auskommen. Besonders praktisch ist der einstellbare Auslösepunkt.
Ein Test von Tobias Költzsch

  1. Bluetooth und Ergonomic Keyboard Microsoft-Tastaturen kommen nach Deutschland
  2. Peripheriegeräte Microsofts neue Tastaturen haben Office- und Emoji-Tasten
  3. G Pro X Gaming Keyboard Logitech lässt E-Sportler auf austauschbare Tasten tippen

    •  /