(Ajout de la procédure d'installation du package R. 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)
La mise à jour anniversaire pour Windows 10 a été publiée et Bash sur Ubuntu sur Windows peut être utilisé. Il y a un rapport que "TensorFlow a également fonctionné!", Mais cette fois, j'ai décidé d'essayer d'améliorer l'environnement de XGBoost (paquet Python). XGBoost est une bibliothèque (Xgboost = eXtreme Gradient Boosting) qui implémente la méthode d'amplification de gradient. Bien qu'il s'agisse d'un programme C ++, il prend également en charge l'utilisation de Python, R, Julia et Java.
Je me souviens que lorsque j'ai installé XGBoost sur Windows il y a quelque temps, il a fallu beaucoup de travail pour commencer l'installation de MinGW. Dans l'espoir d'une amélioration, j'ai continué le travail en pensant à écrire un article comme "Cette fois, c'est tellement facile à installer!", Mais j'ai eu quelques soucis, donc je vais vous présenter la situation.
(L'environnement sur lequel j'ai travaillé cette fois-ci est Windows 10, ver.1607, Bash sur Ubuntu sur Windows (Windows Sybsystem pour Linux), Python 3.5.2, pyenv, miniconda3-4.0.5, xgboost ver.0.6.)
Si vous installez Bash sur Ubuntu sous Windows en vous référant à l'article de blog de Microsoft, l'environnement d'Ubuntu 14.04LTS sera inclus, mais il n'y a presque pas de programmes comme environnement de développement. Par conséquent, nous avons d'abord introduit les outils de base.
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.
Donc, gcc 4.8.4 est inclus.
Installez make
car il n'est pas inclus par défaut.
sudo apt-get install make
Maintenant que gcc, g ++, etc. ont été installés, compilez XGBoost.
XGBoost build
git clone --recursive https://github.com/dmlc/xgboost
cd xgboost
make -j4
Dans l'environnement natif Windows 10 que j'ai essayé auparavant, j'ai eu beaucoup de problèmes jusqu'à ce que je puisse le construire, mais cette fois, la construction est terminée en un seul coup. Dans le répertoire xgboost / lib
, il y avait libxgboost.a
et libxgboost.so
.
Puisqu'il peut y avoir des cas où Python2 est encore nécessaire, créez un environnement pour pyenv et basculez entre Python2 et 3. (Référence) https://github.com/yyuu/pyenv#installation
Il est nécessaire d'ajouter des variables d'environnement liées à PATH, mais ici j'ai édité .bashrc
en utilisant vi
qui était inclus depuis le début.
Sélectionnez python à installer à l'aide de pyenv. La liste des choix est présentée ci-dessous.
pyenv install -l
Ici, je ne sais pas si je dois sélectionner le système Anaconda (package complet) ou le système miniconda (package minimum), mais cette fois, j'ai choisi miniconda3-4.0.5.
pyenv install miniconda3-4.0.5
Après cela, installez les modules nécessaires au calcul numérique.
conda install numpy, scipy, scikit-learn
conda install ipython
Cela aurait dû aller jusqu'à présent, mais à la fin, j'ai trébuché. Tout d'abord, lorsque vous tapez la commande conformément à la documentation XGBoost,
cd python-package; sudo python setup.py install
Une erreur se produit avec un message indiquant que diverses choses ne suffisent pas. Pour cela, python-setuptools est requis. (Il a été correctement écrit dans la documentation XGBoost.)
sudo apt-get install python-setuptools
Après cela, revenez à l'étape suivante et
sudo python setup.py install
Je pensais qu'il serait récupéré, mais une erreur liée à "commande non trouvée". La cause est une incompatibilité que la commande ci-dessus a tenté d'exécuter au niveau du système (autorité racine) alors que l'environnement de pyenv était maintenu au niveau de l'utilisateur. (Pyenv bascule entre plusieurs environnements en plaçant shim sous $ HOME / .pyenv par défaut (?).)
Par conséquent, réinstallez au niveau de l'utilisateur.
python setup.py install
Installation terminée avec succès. (J'ai pensé ...) Testez xgboost avec le code de distribution predict_first_ntree.py.
$ python predict_first_ntree.py
OMP: Error #100: Fatal system error detected.
OMP: System error #22: Invalid argument
Annuler(Vidage de base)
Ceci est le résultat d'une cause inconnue (inattendue). Le seul indice est le mot ** "OMP" **. Recherche sur le net, OMP = OpenMP (Open Multi-Processing). Celui qui semble être lié à cela est la bibliothèque de calcul numérique ** MKL ** (Math Kernel Library) faite par Intel, qui a été installée dans Miniconda. (Installé en tant que bibliothèque de prérequis pour Numpy et Scipy.)
MKL prend en charge les bibliothèques liées au calcul numérique telles que Numpy et Scipy, et améliore les performances, mais il faut noter que cela cause souvent des problèmes en termes de maintenance de l'environnement. Auparavant, dans un environnement Ubuntu (sans environnement virtuel) (je ne sais pas ce qui l'a déclenché), tout à coup, le Deep Learning Framework Theano et TensorFlow ont généré une erreur en même temps, et à la suite d'une enquête précipitée, elle a été causée par MKL. était là.
Cette fois, il semble que MKL n'a pas pu être pris en charge car il s'agit d'un environnement virtuel Ubuntu. J'ai remplacé les bibliothèques liées à MKL et l'ai essayé. Le remplacement est une commande pour installer nomkl
. La bibliothèque MKL a été supprimée et openblas a été installé à sa place.
conda install nomkl
Après cela, predict_fist_ntree.py est exécuté, et c'est une démonstration d'un simple problème de classification binaire. (Au début, le code de distribution a été modifié.)
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))))
Voici les résultats du calcul.
$ 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
C'est donc devenu un fonctionnement normal. Des informations selon lesquelles cet environnement (Bash sur Ubuntu sous Windows) ne prend pas en charge MKL ont déjà été publiées sur Qiita. (J'ai appris plus tard ...)
(Article de Qiita - Pikkaman V) http://qiita.com/PikkamanV/items/d308927c395d6e687a6a (La source) https://scivision.co/anaconda-python-with-windows-subsystem-for-linux/
Je viens de commencer à utiliser l'environnement de Bash sur Ubuntu sur ..., mais j'ai de grandes attentes pour cet environnement. Je suis désolé de ne pas soutenir MKL, mais avant --Windows + bibliothèque "que" + compilateur "ce" + outil "il" D'un tel état, cela semble être une grande amélioration.
De plus, étant donné que XGBoost lui-même vient d'être mis à niveau vers la ver.0.6 (en sautant la version.0.5), j'aimerais continuer à étudier et approfondir ma compréhension de XGBoost.
À ce stade, Docker pour Windows a également été publié, et l'environnement de programmation pour Windows (bien qu'il puisse avoir un objectif différent de celui de Bash sur ..) est devenu plus intéressant. (Bien que cela puisse être ennuyeux.)
{Devtools} est requis comme package prérequis. De plus, comme la bibliothèque C requise pour le package R {devtools} n'est pas incluse dans l'état initial de Bash sur Ubuntu, il était nécessaire d'installer environ deux packages avec sudo apt-get install
.
Lorsque {devtools} est entré, lancez l'interpréteur R et
library(devtools)
install('xgboost/R-package')
Ça aurait dû être OK. (Puisque «xgboost / R-package» est un chemin relatif, il est nécessaire de spécifier le chemin de manière appropriée en fonction du répertoire courant.)
Le résultat de l'exécution du script ci-dessus est le suivant.
> library(devtools);install('R-package')
Installing xgboost
URL 'https://cran.rstudio.com/src/contrib/Matrix_1.2-7.1.tar.gz'j'essaie
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)Erreur dans:Une erreur s'est produite lors de l'exécution de l'instruction
Information additionnelle:Message d'alerte:
utils::untar(src, exdir = target, compressed = "gzip")alors:
‘/bin/gtar -xf '/tmp/RtmplJiuv1/Matrix_1.2-7.1.tar.gz' -C '/tmp/RtmplJiuv1/devtools24847e356e71'’ returned error code 127
Il s'agit d'un message d'erreur indiquant que / bin / gtar
n'existe pas lors du développement de Matrix_1.2-7.1.tar.gz. Bash sur Ubuntu a / bin / tar
, donc j'aimerais que vous l'utilisiez, mais il semble que le script d'installation ne soit pas fait de cette façon. Vous pouvez créer un lien vers l'itinéraire, mais lorsque je l'ai recherché sur le net, il y avait une contre-mesure dans le débordement de pile.
Error in untar( ) while using R
Sys.setenv(TAR = '/bin/tar')
Après avoir défini ce qui précède sur l'interpréteur R, exécutez 'install (R-package)' pour terminer l'installation.
Recommended Posts