Abo
  • IT-Karriere:

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. Universität Stuttgart, Stuttgart
  2. BWI GmbH, Meckenheim, München

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
Top-Angebote
  1. mit Rabatt auf Monitore, SSDs, Gehäuse und mehr
  2. (u. a. The Legend of Zelda, Super Smash Bros. Ultimate)
  3. 9,90€ (Release am 22. Juli)
  4. 9,99€ (Release am 24. Juni)

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
       


Demo gegen Uploadfilter in Berlin - Bericht

Impressionen von der Demonstration am 23. März 2019 gegen die Uploadfilter in Berlin.

Demo gegen Uploadfilter in Berlin - Bericht Video aufrufen
Kontist, N26, Holvi: Neue Banking-Apps machen gute Angebote für Freelancer
Kontist, N26, Holvi
Neue Banking-Apps machen gute Angebote für Freelancer

Ein mobiles und dazu noch kostenloses Geschäftskonto für Freiberufler versprechen Startups wie Kontist, N26 oder Holvi. Doch sind die Newcomer eine Alternative zu den Freelancer-Konten der großen Filialbanken? Ja, sind sie - mit einer kleinen Einschränkung.
Von Björn König


    Raumfahrt: Jeff Bezos' Mondfahrt
    Raumfahrt
    Jeff Bezos' Mondfahrt

    Blue Moon heißt die neue Mondlandefähre des reichsten Mannes der Welt, Jeff Bezos. Sie ist vor exklusivem Publikum und ohne Möglichkeit von Rückfragen vorgestellt worden. Wann sie fliegen soll, ist unklar.
    Von Frank Wunderlich-Pfeiffer

    1. Artemis Trump will Nasa-Budget für die Mondlandung aufstocken
    2. SpaceIL Israelische Mondlandung fehlgeschlagen
    3. Raumfahrt Trump will bis 2024 Astronauten auf den Mond bringen

    Zulassung autonomer Autos: Der Mensch fährt besser als gedacht
    Zulassung autonomer Autos
    Der Mensch fährt besser als gedacht

    Mehrere Jahre haben Wissenschaftler und Autokonzerne an Testverfahren für einen Autobahnpiloten geforscht. Die Ergebnisse sprechen für den umfangreichen Einsatz von Simulation. Und gegen den schnellen Einsatz der Technik.
    Von Friedhelm Greis

    1. Ingolstadt Audi vernetzt Autos mit Ampeln
    2. Wasserkühlung erforderlich Leistungshunger von Auto-Rechnern soll stark steigen
    3. Waymo One Lyft vermittelt Waymos autonome Taxis

      •  /