(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.)
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.
sudo apt-get install git
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.
Installieren Sie make
, da es standardmäßig nicht enthalten ist.
sudo apt-get install make
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".
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.
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
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/
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.)
{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.
Recommended Posts