Original-URL des Artikels: https://www.golem.de/news/programmiersprachen-pakete-ides-so-steigen-entwickler-in-machine-learning-ein-1811-137463.html    Veröffentlicht: 12.11.2018 12:03    Kurz-URL: https://glm.io/137463

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.

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.

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.

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:

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:



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.

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

Die Installation von Paketen erfolgt mit dem Python-Packet-Installation-Tool pip, das bei Python schon dabei ist. Alternativ kann die Installation mit dem Anaconda Navigator, einem Tool mit grafischer Oberfläche, erfolgen. Anaconda und die wichtigsten davon unterstützen integrierten Entwicklungsumgebungen (IDEs) werden später im Artikel vorgestellt.

Pandas - das Standardpaket für Datenverwaltung

Pandas ist eigentlich kein Machine-Learning-Paket, sondern ein Paket für Datenhaltung und Datenverarbeitung. Es enthält mächtige Datencontainer und Methoden, um auf Daten zuzugreifen und sie performant zu verarbeiten. Zu den wichtigsten Datencontainern bei Pandas zählt der Data Frame, den wir schon bei R kennengelernt haben, wobei der Data Frame bei Pandas nicht identisch mit dem in R, sondern im Großen und Ganzen funktional mit ihm vergleichbar ist. Bei fast allen Data-Science- beziehungsweise Machine-Learning-Projekten wird man Pandas verwenden. Eine umfangreiche Dokumentation gibt es auf der Pandas-Webseite.

Pandas kann mit pip mit diesem Einzeiler installiert werden:

Scikit-learn - das Allrounder-Paket für Machine Learning

Scikit-learn ist das wohl bekannteste und beliebteste Paket für Machine Learning für Python und für Anfänger oft ein hervorragender Einstieg. Es verfügt über eine große Anzahl von Algorithmen von klassischer Statistik bis zu Machine Learning, darunter auch beliebte Algorithmen wie Random Forest und Neural Networks. Scikit-learn ist exzellent geeignet, um unterschiedlichste Machine-Learning-Algorithmen auszuprobieren. Seine Schwäche ist jedoch, dass GPUs nicht unterstützt werden, das heißt, bei großen Datenmengen und anspruchsvollen Algorithmen wie Multi-Layer Neural Networks (Deep Learning) sollte man sich andere Pakete ansehen.

Scikit-learn kann mit pip mit folgendem Befehl installiert werden:

Keras mit Tensorflow, CNTK und Theano

Google Tensorflow, Microsoft CNTK und Theano sind mächtige Deep Learning (Multi-Layer Neural Networks) Frameworks, die auch GPUs unterstützen, was bei diesen Deep-Learning-Algorithmen die Performance im Vergleich zu der CPU um ein Vielfaches steigern kann. Leider unterstützen sie nur CUDA-kompatible GPUs von NVidia. OpenCL (AMD, Intel) wird aktuell noch nicht oder nur sehr eingeschränkt über experimentelle Versionen unterstützt. Wer GPUs sinnvoll mit diesen Frameworks nutzen will, ist aktuell auf NVidia GPUs angewiesen. Dies gilt auch für viele andere Deep-Learning-Frameworks: Ein Support von OpenCL ist oft gar nicht oder nur sehr eingeschränkt vorhanden. Zu den drei Frameworks:



Wer sich auf keins der drei Frameworks festlegen will, kann Keras nutzen. Keras ist eine High-Level-API, die im Backend Theano, CNTK und Tensorflow verwenden kann. Mit einer einfachen Umschaltung mittels einer Konfigurationsdatei kann zwischen den drei Backend-Frameworks umgeschaltet werden, ohne am mit Keras entwickelten Quellcode etwas ändern zu müssen. Dies bedeutet aber nicht, dass nichts geändert werden darf, denn die Backend-Frameworks arbeiten nicht genau gleich, sodass das Design und die Parametrisierung des in Keras entwickelten neuronalen Netzes gegebenenfalls mit Erfahrung und Ausprobieren für das jeweilige Backend etwas angepasst werden sollte.

Wichtigste Vorteile von Keras im Vergleich zum Programmmieren direkt mit den Backend-Frameworks sind:



Wichtigste Nachteile von Keras im Vergleich zum Programmmieren direkt mit den Backend-Frameworks sind:



Die Installation von Keras, Theano, Tensorflow und CNTK erfordert unter anderem die Installation von CUDA-Treibern und weiterer Pakete, insbesondere wenn GPUs eingesetzt werden sollen, was hier Sinn macht.

Eine Erleichterung stellt Anaconda dar, die das Paketmanagement und die Installation von integrierten Entwicklungsumgebungen vereinfacht. Mehr dazu später in diesem Artikel.

Seaborn - Menschen denken visuell

Oft sollen statistische Zusammenhänge auch visuell dargestellt werden. Dazu gibt es bei Python viele Pakete, von denen Seaborn zu den beliebtesten zählt. Seaborn ist eine komfortable High-Level-API, die im Backend mit Matplotlib arbeitet.

Mit Seaborn können Nutzer eine Vielzahl von Diagrammarten erstellen und auch ein visuell anspruchsvolles Publikum zufriedenstellen. Als Datenquelle für Seaborn kommt oft der Data Frame von Pandas zum Einsatz. Hier zeigt sich die Stärke von Python: Man setzt viele Pakete ein, und das Zusammenspiel bildet Synergievorteile.

Die Installation von Seaborn mit pip ist simpel:

Statt pip in der Kommandozeile aufzurufen, kann die Installation von Paketen und Frameworks auch mittels einer grafischen Entwicklungsumgebung erfolgen.



Integrierte Entwicklungsumgebungen (IDEs)

Auch mit einem Texteditor wie Notepad unter Windows oder Vi unter Linux lassen sich Python- und R-Programme entwickeln und mit der Kommandozeile deren Ausführung starten. Doch die meisten Programmierer werden wohl komfortable, integrierte Entwicklungsumgebungen (IDEs) präferieren, weil sie viele Vorteile bieten, etwa Syntax Highlighting (visuelles Hervorheben von Befehlen), Code Completion (automatisches Vervollständigen von Befehlen), elegante Debugging-Möglichkeiten, Variableneditoren und Paketmanagement.

Prinzipiell ließe sich mit jeder IDE, die in der klassischen Anwendungsentwicklung eingesetzt wird und Python beziehungsweise R unterstützt, auch bei Data-Science-Projekten arbeiten. Auch Eclipse konfiguriert für Python beziehungsweise R, Visual Studio IDE wäre also verwendbar. Viele Data Scientists nutzen jedoch lieber andere IDEs, die für Data-Science-Projekte besser geeignet sind und im Folgenden vorgestellt werden.

Die Unterschiede zwischen IDEs für klassische Anwendungsentwicklung und Data Science liegen hauptsächlich daran, dass bei klassischer Anwendungsentwicklung der Fokus auf dem Quellcode liegt (zum Beispiel Refactoring-Funktionalitäten, Visualisierung der Programmstruktur mit beispielsweise Klassendiagrammen, Code-Metrics-Berechnungen und Ähnliches) während bei Data-Science-Projekten der Augenmerk auf den Daten liegt (zum Beispiel Variablen- und Data-Frame-Editoren, Visualisierung von Daten und Dokumentation der Zwischenergebnisse, anfängliche Zeitersparnis wegen einiger oft verwendeter Machine-Learning-Pakete, die in der IDE schon vorinstalliert und vorkonfiguriert sind).

Im Falle von R gibt es de facto einen Marktstandard: RStudio. Die meisten Statistiker verwenden diese IDE, die es sowohl als kostenlose wie auch als kostenpflichtige Versionen für Linux, MacOS und Windows gibt.

Eine eher selten verwendete Alternative unter Windows ist Visual Studio IDE, das seit Version 2015 auch R unterstützt. Für Windows und MacOS existieren unterschiedliche Versionen. Des Weiteren gibt es auch eine kompakte und leichtgewichtige Version namens Visual Studio Code, die zudem auch für Linux verfügbar ist und mit installierbaren Erweiterungen ebenfalls R unterstützt.

Bei Python gibt es nicht die eine dominierende IDE. Je nach Vorliebe und Einsatzzweck haben sich mehrere IDEs etabliert. Auch hier gibt es Visual Studio IDE und Visual Studio Code, die aber unter Data Scientists eher seltener Einsatz finden. Visual Studio IDE bietet sich eher für die Entwicklung von Anwendungen und Visual Studio Code für das Skripten mit Python an.

Eine andere Alternative für die Anwendungsentwicklung mit Python ist PyCharm von Jetbrains, verfügbar für Linux, MacOS und Windows. Auch diese IDE ist bei Data Scientists eher selten in Einsatz.

Data Scientists verwenden viel lieber die IDE Jupyter Notebook. Diese IDE läuft im Browser, und man kann sie sich als interaktives Notiz- oder Forschungsheft vorstellen. In diesem kann man sowohl Beschreibungen und Kommentare mit einer sehr einfachen Formatierungssprache verfassen als auch Python-Quellcode schreiben, ausführen und die Ergebnisse im Heft persistent halten. Der große Nutzen für Data Scientists ist, dass sie sowohl den Weg, die Ergebnisse zu bekommen, nämlich die Formeln und den Quellcode, als auch die Ergebnisse selbst in Form von Beschreibungen, Ergebnistabellen, statistischen Werten und Diagrammen in einem sequenziellen Heft aufbewahren und ihren Kunden präsentieren können. Zudem sind die Ergebnisse so replizierbar, und bei Bedarf kann man einige Parameter im Python-Quellcode verändern und ausprobieren, ob man dadurch neue Erkenntnisse über die Daten bekommt beziehungsweise das Machine-Learning-Modell besser arbeitet.

Beispiele von Jupyter Noteboks bei Machine-Learning-Projekten werden auf Github gezeigt.

Will man jedoch nicht statistische Ergebnisse und Diagramme als Forschungsbericht präsentieren, sondern eine Machine-Learning-Anwendung entwickeln, dann ist oft Spyder (Scientific Python Development Environment) eine interessante IDE. Spyder zählt zu den beliebtesten Python-Entwicklungsumgebungen für Wissenschaftler. Sie ist relativ einfach, nicht überladen und verfügt über die wichtigsten Features wie einen komfortablen Debugger und einen Variablenmonitor.

Muss man sich unbedingt für eine bestimmte IDE entscheiden? Wenn man mehrere IDEs verwenden will, muss man jede einzeln installieren und sich um Updates kümmern? Muss man unterschiedliche Python-Versionen für unterschiedliche Projekte installieren und konfigurieren? Die Lösung all dieser Probleme ist der Anaconda Navigator.

Anaconda Navigator bietet die Installation von Jupyter Notebook, Spyder, Visual Studio Code, RStudio und einigen anderen IDEs an; und zwar alles unter einer Haube samt grafischer Benutzeroberfläche. Zudem enthält der Anaconda Navigator einen benutzerfreundlichen Paketmanager für Python, mit dem man Pakete suchen, installieren und updaten kann. Auch das Updaten der IDEs selbst wird angeboten. Zudem bietet der Anaconda Navigator die Konfiguration mehrerer Environments an. Das sind unterschiedliche Umgebungen, unter denen der Python- oder R-Code laufen soll.

Man stelle sich zum Beispiel vor, dass man eine bestimmte Umgebung mit Tensorflow und einer bestimmten Python-Version benötigt, weil vielleicht die aktuelle Version von Tensorflow nicht mit jeder Python-Version läuft; dagegen braucht man vielleicht für CNTK eine andere Python-Version oder man möchte unterschiedliche Cuda-Versionen ausprobieren. Statt Anaconda Navigator mehrmals zu installieren, installiert man ihn nur einmal und erstellt unter ihm mehrere Environments.



Ein kleines Programmierbeispiel

Für das Programmierbeispiel nehmen wir ein klassisches Problem: Klassifizierung von drei Arten von Schwertlilien (Iris setosa, Iris versicolor und Iris virginica) anhand von vier Merkmalen: Kelchblattlänge, Kelchblattbreite, Blütenblattlänge und Blütenblattbreite. Dieses Klassifizierungsbeispiel wurde schon vom britischen Biologen und Statistiker Ronald Fisher in seinem Artikel "The use of multiple measurements in taxonomic problems" im Jahr 1936 vorgestellt. Daten von 150 vermessenen Schwertlilien findet man im Archiv des UCI Machine Learning Repository.

Für unser Programmbeispiel wurde aus dem Archiv die Datei iris.data in der ersten Zeile um die Spaltenüberschriften ergänzt, die im Punkt 7 in der Datei iris.names beschrieben sind, und als IrisData.csv lokal auf dem Rechner abgespeichert.

Wir haben vier Inputvariablen (X1: Kelchblattlänge, X2: Kelchblattbreite, X3: Blütenblattlänge und X4: Blütenblattbreite) und eine Outputvariable (Art der Schwertlilie).

Die zwei im Folgenden gezeigten Programme, jeweils eins in R und Python, sollen zwei einfache Aufgaben der deskriptiven Statistik erledigen:



Programm in R - mit wenigen Zeilen zum Ziel

library(GGally) df <- read.csv(file="c:\\IrisAnalysis\\IrisData.csv", header=TRUE, sep=",") aggregate(df[, 1:4], list(df$Irisart), mean) ggpairs(df, aes(colour = Irisart, alpha = 0.4))

Wir verwenden das Paket GGally für die Erstellung des Pair Plot. Deshalb wird das Paket importiert: library(GGally)

Mit df >- read.csv(file="c:\\IrisAnalysis\\IrisData.csv", header=TRUE, sep=",") werden Daten aus der Datei IrisData.csv, die in der ersten Zeile die Spaltenüberschriften hat und Kommas als Spaltentrennzeichen verwendet, in einen Data Frame geladen.

Mit dem Befehl aggregate(df[, 1:4], list(df$Irisart), mean) werden die Mittelwerte der vier Inputvariablen für jede der drei Irisarten berechnet. ggpairs(df, aes(colour = Irisart, alpha = 0.4)) erstellt den Pair Plot. Das Programm gibt eine Tabelle und eine Grafik aus.



Abbildung 1: Pair Plot erstellt mit R und GGally Programm in Python

import pandas as pd import seaborn as sns df = pd.read_csv('IrisData.csv', delimiter=',', header=0, index_col=False) groupedData = df.groupby('Irisart') meanValues = groupedData[['Kelchblattlaenge in cm', 'Kelchblattbreite in cm', 'Bluetenblattlaenge in cm', 'Bluetenblattbreite in cm']].mean() print(meanValues.to_string()) sns.set(style="ticks") sns.pairplot(df, hue="Irisart")

Als erstes werden zwei Pakete importiert: Wie bereits erklärt, enthält Pandas unter anderem das Data Frame für Python, und Seaborn ist eine mächtige High-Level-API für Datenvisualisierung.

Mit df = pd.read_csv('IrisData.csv', delimiter=',', header=0, index_col=False) werden Daten aus der Datei IrisData.csv, die in der ersten Zeile (header = 0, weil Python mit 0 zu indizieren beginnt) die Spaltenüberschriften hat und Kommas als Spaltentrennzeichen verwendet, in einen Data Frame geladen. index_col=False bedeutet lediglich, dass es keine Indexspalte gibt.

Im nächsten Abschnitt werden die Mittelwerte der vier Inputvariablen für jede der drei Irisarten berechnet und ausgegeben.

Die beiden letzten zwei Zeilen erstellen den Pair Plot mit dem seaborn-Style namens ticks:

Auch dieses Programm gibt eine Tabelle und eine Grafik aus.



Von deskriptiver Statistik zu Machine Learning

Die oben gezeigten Programme in R beziehungsweise Python sind natürlich kein Beispiel für Machine Learning, sondern nur für deskriptive Statistik. Wollte man nun den Computer dazu bringen zu lernen, wie er die Art der Schwertlilie anhand von Kelchblattlänge, Kelchblattbreite, Blütenblattlänge und Blütenblattbreite erkennen soll, so benötigt man einen geeigneten Machine-Learning-Algorithmus. Ein solcher Algorithmus ist beispielweise der Random-Forest-Algorithmus, der bei Golem.de schon vorgestellt wurde.

Ein Artikel der Oxford Protein Informatics Group über die Klassifizierung der Schwertlilienarten mit dem Random Forest Algorithmus bietet vollständige Beispiele für R und für Python.

Fazit

Mit den zwei vorgestellten Programmiersprachen R und Python sowie den dazugehörigen integrierten Entwicklungsumgebungen (IDEs), Paketen und Frameworks können Daten statistisch analysiert und Machine-Learning-Programme entwickelt werden. Wer primär Ad-hoc-Datenanalysen machen will und schon viel Erfahrung mit mengenorientierten Programmiersprachen wie SQL hat, wird wahrscheinlich zu R tendieren. Liegt hingegen der Schwerpunkt in der Entwicklung von größeren Machine-Learning-Programmen oder man benötigt GPUs für rechenintensive Machine-Learning-Algorithmen wie beispielsweise mehrschichtige neuronale Netze, dann wird meistens Python die bessere Wahl sein.

Wie bei jeder Programmiersprache gilt auch bei R und Python: Übung macht den Meister! Einfach den Anaconda Navigator installieren, die IDEs ausprobieren und mit einem kleinen Lernprojekt mit der persönlich favorisierten IDE beginnen.

Wer allgemein Machine-Learning-Algorithmen mit Python ausprobieren möchte, legt mit dem Paket Scikit-learn los. Es kann fast alles, jedoch unterstützt es keine GPUs. Wer unbedingt mit Deep Learning Neural Networks Cuda-fähige Nvidia-GPUs (und hoffentlich eines Tages auch OpenCL-kompatible GPUs von AMD und Intel) zum Glühen bringen will, für den ist Keras mit CNTK und/oder Tensorflow ein guter Einstieg.

Viel Spaß beim Programmieren!

Miroslav Stimac ist Informatiker, promovierter Wirtschaftswissenschaftler und aktuell Teilzeitstudent der Astronomie. Er arbeitet seit 2004 als Entwickler mit branchenübergreifender Projekterfahrung, hauptsächlich in Business Intelligence, Data Science und Statistik. Seine fachlichen Interessenschwerpunkte sind Astronomie, Japanologie, Konsumforschung und Robotik.

 (msti)


Verwandte Artikel:
China: Überwachungssystem erkennt Personen an ihrem Gang   
(07.11.2018, https://glm.io/137564 )
Xinhua: In China verlesen KI-Avatare die Nachrichten   
(09.11.2018, https://glm.io/137623 )
PyPi-Malware: Britisches Python-Paket klaut Bitcoin   
(23.10.2018, https://glm.io/137260 )
Kollaborationsprojekte: Linux Foundation sorgt für über 100 Millionen Codezeilen   
(01.10.2015, https://glm.io/116631 )
Maschinenlernen: Google kauft Data-Science-Plattform Kaggle   
(08.03.2017, https://glm.io/126596 )

© 1997–2019 Golem.de, https://www.golem.de/