[PYTHON] Führen Sie XGBoost unter Bash unter Ubuntu unter Windows aus

(Es wurde hinzugefügt, wie das R-Paket installiert wird. Http://qiita.com/TomokIshii/items/b43321448ab9fa21dc10#%E8%BF%BD%E8%A8%98r-package-%E3%81%AE%E3% 82% A4% E3% 83% B3% E3% 82% B9% E3% 83% 88% E3% 83% BC% E3% 83% AB 2016/9/2)

Das Jubiläums-Update für Windows 10 wurde veröffentlicht und Bash unter Ubuntu unter Windows kann verwendet werden. Es gibt einen Bericht, dass "TensorFlow auch funktioniert hat!", Aber dieses Mal habe ich beschlossen, die Umgebung von XGBoost (Python-Paket) zu verbessern. XGBoost ist eine Bibliothek (Xgboost = eXtreme Gradient Boosting), die die Gradientenverstärkungsmethode implementiert. Obwohl es sich um ein C ++ - Programm handelt, unterstützt es auch die Verwendung von Python, R, Julia und Java.

Ich erinnere mich, dass die Installation von MinGW bei der Installation von XGBoost unter Windows vor einiger Zeit viel Arbeit gekostet hat. In der Hoffnung auf Verbesserung fuhr ich mit der Arbeit fort, während ich daran dachte, einen Artikel wie "Diesmal ist die Installation so einfach!" Zu schreiben. Aber ich hatte einige Probleme, deshalb werde ich die Situation vorstellen.

(Die Umgebung, an der ich dieses Mal gearbeitet habe, ist Windows 10, Version 1607, Bash unter Ubuntu unter Windows (Windows Sybsystem für Linux), Python 3.5.2, Pyenv, Miniconda3-4.0.5, xgboost Version 0.6.)

Einführung grundlegender Werkzeuge

Wenn Sie Bash unter Ubuntu unter Windows unter Bezugnahme auf den Blog-Artikel von Microsoft installieren, wird die Umgebung von Ubuntu 14.04LTS eingeschlossen, es gibt jedoch fast keine Programme als Entwicklungsumgebung. Deshalb haben wir zuerst die grundlegenden Werkzeuge vorgestellt.

Git Installation

sudo apt-get install git

gcc, g ++ Installation

sudo apt-get install gcc
sudo apt-get install g++
$ gcc --version
gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Also ist gcc 4.8.4 enthalten.

Installation durchführen

Installieren Sie make, da es standardmäßig nicht enthalten ist.

sudo apt-get install make

XGBoost Build und Python-bezogene Installation

Nachdem gcc, g ++ usw. installiert wurden, erstellen Sie XGBoost.

XGBoost build

git clone --recursive https://github.com/dmlc/xgboost 
cd xgboost
make -j4

In der nativen Windows 10-Umgebung, die ich zuvor ausprobiert habe, hatte ich große Probleme, bis ich sie erstellen konnte, aber dieses Mal ist die Erstellung auf einen Schlag abgeschlossen. Im Verzeichnis "xgboost / lib" befanden sich "libxgboost.a" und "libxgboost.so".

pyenv Installation

Da es Fälle geben kann, in denen Python2 noch benötigt wird, erstellen Sie eine Umgebung für pyenv und wechseln Sie zwischen Python2 und 3. (Referenz) https://github.com/yyuu/pyenv#installation

Es ist notwendig, Umgebungsvariablen hinzuzufügen, die sich auf PATH beziehen, aber hier habe ich .bashrc mit vi bearbeitet, das von Anfang an enthalten war.

Miniconda-Installation

Wählen Sie Python für die Installation mit pyenv aus. Die Liste der Auswahlmöglichkeiten wird unten angezeigt.

pyenv install -l

Hier weiß ich nicht, ob ich das Anaconda-System (Vollpaket) oder das Miniconda-System (Mindestpaket) auswählen soll, aber diesmal habe ich mich für miniconda3-4.0.5 entschieden.

pyenv install miniconda3-4.0.5

Installieren Sie danach die für die numerische Berechnung erforderlichen Module.

conda install numpy, scipy, scikit-learn
conda install ipython

Installation des XGBoost Python-Pakets

Bisher hätte alles in Ordnung sein sollen, aber am Ende bin ich gestolpert. Wenn Sie den Befehl gemäß der XGBoost-Dokumentation eingeben,

cd python-package; sudo python setup.py install

Ein Fehler tritt mit der Meldung auf, dass verschiedene Dinge nicht ausreichen. Hierfür sind Python-Setuptools erforderlich. (Es wurde ordnungsgemäß in der XGBoost-Dokumentation geschrieben.)

sudo apt-get install python-setuptools

Danach kehren Sie zum nächsten Schritt zurück und

sudo python setup.py install

Ich dachte, es würde wiederhergestellt, aber ein Fehler im Zusammenhang mit "Befehl nicht gefunden". Die Ursache ist eine Nichtübereinstimmung, die der obige Befehl auf Systemebene (Root-Berechtigung) ausführen wollte, während die Umgebung von pyenv auf Benutzerebene beibehalten wurde. (Pyenv wechselt zwischen mehreren Umgebungen, indem Shim standardmäßig unter $ HOME / .pyenv (?) Gelegt wird.)

Installieren Sie daher erneut auf Benutzerebene.

python setup.py install

Installation erfolgreich abgeschlossen. (Ich dachte ...) Testen Sie xgboost mit dem Verteilungscode prädict_first_ntree.py.

$ python predict_first_ntree.py
OMP: Error #100: Fatal system error detected.
OMP: System error #22: Invalid argument
Stornieren(Core-Dump)

Dies ist das Ergebnis einer unbekannten Ursache (unerwartet). Der einzige Hinweis ist das Wort ** "OMP" **. Suche im Internet, OMP = OpenMP (Open Multi-Processing). Diejenige, die damit in Zusammenhang zu stehen scheint, ist die numerische Berechnungsbibliothek ** MKL ** (Math Kernel Library) von Intel, die in Miniconda installiert wurde. (Wird als Voraussetzung für Numpy und Scipy installiert.)

MKL unterstützt numerische rechnerbezogene Bibliotheken wie Numpy und Scipy, um die Leistung zu verbessern. Es ist jedoch zu beachten, dass dies häufig zu Problemen bei der Wartung der Umgebung führt. Zuvor haben in einer Ubuntu-Umgebung (ohne virtuelle Umgebung) (ich weiß nicht, was sie ausgelöst hat) plötzlich das Deep Learning Framework Theano und TensorFlow gleichzeitig einen Fehler generiert, der als Ergebnis einer schnellen Untersuchung durch MKL verursacht wurde. war dort.

Dieses Mal scheint MKL nicht unterstützt zu werden, da es sich um eine virtuelle Ubuntu-Umgebung handelt. Ich habe die MKL-bezogenen Bibliotheken ersetzt und ausprobiert. Das Ersetzen ist ein Befehl zum Installieren von nomkl. Die MKL-Bibliothek wurde entfernt und an ihrer Stelle openblas installiert.

conda install nomkl

Danach wird Predict_Fist_ntree.py ausgeführt und ist eine Demonstration eines einfachen binären Klassifizierungsproblems. (Zu Beginn wurde der Verteilungscode geändert.)

import os
# check os environment
if os.name == 'nt':  # Windows case ... add mingw lib path
    mingw_path = 'C:\\usr\\mingw-w64\\x86_64-5.4.0-win32-seh-rt_v5-rev0\\mingw64\\bin'
    os.environ['PATH'] = mingw_path + ';' + os.environ['PATH']
if os.name == 'posix':  # Linux case
    break

import numpy as np
import xgboost as xgb

# load data
dtrain = xgb.DMatrix('./data/agaricus.txt.train')
dtest = xgb.DMatrix('./data/agaricus.txt.test')
param = {'max_depth':2, 'eta':1, 'silent':1, 'objective':'binary:logistic' }
watchlist  = [(dtest,'eval'), (dtrain,'train')]
num_round = 3
bst = xgb.train(param, dtrain, num_round, watchlist)
print ('start testing prediction from first n trees')
# predict using first 1 tree
label = dtest.get_label()
ypred1 = bst.predict(dtest, ntree_limit=1)
# by default, we predict using all the trees
ypred2 = bst.predict(dtest)
print ('error of ypred1=%f' % (np.sum((ypred1>0.5)!=label) /float(len(label))))
print ('error of ypred2=%f' % (np.sum((ypred2>0.5)!=label) /float(len(label))))

Unten sind die Berechnungsergebnisse.

$ python predict_first_ntree.py
[15:25:08] 6513x127 matrix with 143286 entries loaded from ./data/agaricus.txt.train
[15:25:08] 1611x127 matrix with 35442 entries loaded from ./data/agaricus.txt.test
[0]     eval-error:0.042831     train-error:0.046522
[1]     eval-error:0.021726     train-error:0.022263
[2]     eval-error:0.006207     train-error:0.007063
start testing prediction from first n trees
error of ypred1=0.042831
error of ypred2=0.006207

So wurde es normaler Betrieb. Informationen, dass diese Umgebung (Bash unter Ubuntu unter Windows) MKL nicht unterstützt, wurden bereits in Qiita veröffentlicht. (Ich habe später gelernt ...)

(Qiita Artikel-Pikkaman V) http://qiita.com/PikkamanV/items/d308927c395d6e687a6a (Quelle) https://scivision.co/anaconda-python-with-windows-subsystem-for-linux/

Zusammenfassung und Eindrücke

Ich habe gerade angefangen, die Umgebung von Bash unter Ubuntu zu verwenden, aber ich habe hohe Erwartungen an diese Umgebung. Es tut mir leid, dass ich MKL nicht unterstütze, aber vorher --Windows + Bibliothek "das" + Compiler "dieses" + Werkzeug "es" Von einem solchen Zustand aus scheint es eine große Verbesserung zu sein.

Da XGBoost selbst gerade auf Version 0.6 aktualisiert wurde (Überspringen von Version 0.5), möchte ich weiterhin studieren und mein Verständnis von XGBoost vertiefen.

Zu diesem Zeitpunkt wurde auch Docker für Windows veröffentlicht, und die Programmierumgebung für Windows (obwohl sie möglicherweise einen anderen Zweck hat als Bash on ..) ist interessanter geworden. (Obwohl es ärgerlich sein kann.)

(Ergänzung) Installation des R-Pakets

{Devtools} wird als Voraussetzung benötigt. Da die für das R-Paket {devtools} erforderliche C-Bibliothek im Ausgangszustand von Bash unter Ubuntu nicht enthalten ist, mussten außerdem ungefähr zwei Pakete mit "sudo apt-get install" installiert werden.

Wenn {devtools} eingegeben wird, starten Sie den R-Interpreter und

library(devtools)
install('xgboost/R-package')

Es hätte in Ordnung sein sollen. (Da 'xgboost / R-package' ein relativer Pfad ist, muss der Pfad entsprechend dem aktuellen Verzeichnis angegeben werden.)

Das Ergebnis der Ausführung des obigen Skripts ist wie folgt.

> library(devtools);install('R-package')
Installing xgboost
 URL 'https://cran.rstudio.com/src/contrib/Matrix_1.2-7.1.tar.gz'Ich versuche
Content type 'application/x-gzip' length 1805890 bytes (1.7 MB)
==================================================
downloaded 1.7 MB

sh: 1: /bin/gtar: not found
sh: 1: /bin/gtar: not found
 system(cmd, intern = TRUE)Fehler in:Beim Ausführen der Anweisung ist ein Fehler aufgetreten
zusätzliche Information:Warnmeldung:
 utils::untar(src, exdir = target, compressed = "gzip")damit:
  ‘/bin/gtar -xf '/tmp/RtmplJiuv1/Matrix_1.2-7.1.tar.gz' -C '/tmp/RtmplJiuv1/devtools24847e356e71'’ returned error code 127

Dies ist eine Fehlermeldung, dass / bin / gtar beim Erweitern von Matrix_1.2-7.1.tar.gz nicht vorhanden ist. Bash unter Ubuntu hat / bin / tar, daher möchte ich, dass Sie es verwenden, aber es scheint, dass das Installationsskript nicht so erstellt wurde. Sie können eine Verknüpfung zur Route herstellen, aber als ich sie im Internet nachgeschlagen habe, gab es eine Gegenmaßnahme beim Stapelüberlauf.

Error in untar( ) while using R

Sys.setenv(TAR = '/bin/tar')

Nachdem Sie die obigen Einstellungen für den R-Interpreter vorgenommen haben, führen Sie 'install (R-package)' aus, um die Installation abzuschließen.

Referenz-Website

Recommended Posts

Führen Sie XGBoost unter Bash unter Ubuntu unter Windows aus
Führen Sie Jupyter unter Ubuntu unter Windows aus
Führen Sie Tensorflow von Jupyter Notebook unter Bash unter Ubuntu unter Windows aus
Erstellen Sie XGBoost unter Windows
Hinweise zur Verwendung von TensorFlow unter Bash unter Ubuntu unter Windows
Führen Sie Openpose unter Python (Windows) aus.
Betreibe Ubuntu unter VScode (Windows 10)
Führen Sie Jupyter Notebook unter Windows aus
Installation von Bash unter Ubuntu unter Windows, Ruby, Python, Jupyter usw.
Entfernen Sie Ubuntu, das auf einem Windows 10-Computer installiert ist
Installieren Sie Dropbox und führen Sie es unter Ubuntu 20.04 aus
Installieren Sie xgboost (Python-Version) unter Windows
Führen Sie Tensorflow mit nativer Unterstützung für Windows aus
Führen Sie SwitchBot mit Bleak unter Windows 10 aus
Führen Sie Yocto unter Ubuntu mit QEMU aus.
Führen Sie die Radeon-GPU unter Windows unter QEMU / KVM aus
Führen Sie das Servo mit Python unter ESP32 (Windows) aus.
Versuchen Sie es mit Bash unter Windows 10 2 (TensorFlow-Installation)
[Hinweis] Verfahren zur Installation von Ubuntu unter Windows 10
Führen Sie bootgen unter Debian GNU / Linux, Ubuntu aus
Führen Sie py.test unter Windows Anaconda und MinGW aus
Führen Sie matplotlib in einem Windows Docker-Container aus
Python unter Windows
Shebang auf Ubuntu 20.04
Führen Sie PIFuHD in der Windows + Anaconda + Git Bash-Umgebung aus
Installieren Sie Python3.5 + NumPy + SciPy und führen Sie es unter Windows 10 aus
Setzen Sie MicroPython unter Windows ein, um ESP32 unter Python auszuführen
Führen Sie yolov4 "vorerst" in Windows aus
So führen Sie MeCab unter Ubuntu 18.04 LTS Python aus
Pylint unter Windows Atom
Linux (WSL) unter Windows
Installieren Sie Apache 2.4 unter Ubuntu 19.10 Eoan Ermine und führen Sie CGI aus
Führen Sie Django auf PythonAnywhere aus
Installieren Sie PySide2 unter Ubuntu
Führen Sie mysqlclient auf Lambda aus
Verwenden Sie pyvenv unter Windows
Installieren Sie JModelica unter Ubuntu
Anaconda auf Windows Terminal
Installieren Sie Anaconda unter Windows 10
Installieren Sie Python unter Windows
Installieren Sie pycuda unter Windows10
Erstellen Sie eine Open AI Gym-Umgebung mit Bash unter Windows 10
Führen Sie OpenMVG auf einem Mac aus
Erstellen Sie TensorFlow unter Windows
Probieren Sie FEniCS unter Windows aus!
Installieren Sie pygraphviz unter Windows 10
Verwenden Sie Ansible unter Windows
Build Python auf Ubuntu
Versuchen Sie Poerty unter Windows
Installieren Sie Python 3.3 unter Ubuntu 12.04
Installieren Sie Chainer 1.5.0 unter Windows
Installation von pyenv unter Ubuntu 16.04
Verwenden Sie QuTiP unter Windows
Installieren Sie Theano unter Ubuntu 12.04
So führen Sie Django unter IIS auf einem Windows-Server aus
Verwenden Sie pip unter Windows
Installiere angr unter Ubuntu 18.04
Installiere pip / pip3 unter Ubuntu
Verwenden Sie Xming, um eine Ubuntu-GUI-Anwendung unter Windows zu starten.
Installieren Sie Numpy in virtualenv unter Windows