Je suis nouveau sur Jupyter, je vais donc vous montrer comment créer un environnement sur AWS EC2 et comment l'utiliser facilement pour moi-même six mois plus tard.
Outre les paramètres détaillés, l'objectif est de créer rapidement un environnement Jupyter sur EC2, d'exécuter un simple script Python sur Jupyter et d'apprendre les bases de la méthode d'opération de l'interface utilisateur de Jupyter. La puissance de combat de Linux est faible, alors essayez de suivre la procédure avec copier et coller autant que possible.
Si vous souhaitez créer un Jupyter sur Spark Cluster à l'aide d'Amazon EMR, veuillez consulter ici [http://qiita.com/taka4sato/items/377a9dedb6842f056e60). De plus, Jupyter Notebook deviendra ** Juypter Lab ** à partir de la prochaine version, et l'interface utilisateur / les fonctions changeront considérablement. Voir ici pour savoir comment créer l'environnement de Jupyter Lab.
Tout d'abord, la procédure de création de l'environnement Jupyter.
Démarrez EC2 qui exécute Jupyter et connectez-vous avec ssh.
8080
dans le groupe de sécurité d'EC2Insérez le module requis avec ʻatp-get, mettez à jour pip et installez ipython [notebook]. Ajoutez ʻexport LC_ALL = C
lorsque vous voyez un message comme ATTENTION! Votre environnement spécifie une locale invalide .
lors de la connexion ssh.
$ export LC_ALL=C
$ sudo apt-get update
$ sudo apt-get install -y python-pip libpq-dev python-dev libpng12-dev libjpeg8-dev libfreetype6-dev libxft-dev
$ sudo pip install -U pip
$ sudo pip install numpy pandas matplotlib seaborn scikit-learn plotly ipython[notebook]
Exécutez la commande suivante pour créer un modèle (~ / .jupyter / jupyter_notebook_config.py
) du fichier de configuration Jupyter.
$ jupyter notebook --generate-config
Puis éditez ~ / .jupyter / jupyter_notebook_config.py
. Comme tous sont de gros fichiers commentés avec #
`, placez les 5 lignes suivantes à n'importe quel endroit, comme le début du fichier, et enregistrez-le (les paramètres suivants sont des paramètres permettant à tout le monde d'accéder au serveur Jupyter, veuillez noter S'il te plait donne moi).
c = get_config()
c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8080
c.NotebookApp.token = ''
Depuis Jupyter récent, une connexion avec un mot de passe ou un jeton est requise comme mesure de sécurité. Dans l'exemple ci-dessus, c.NotebookApp.token = ''
`autorise l'accès sans jeton.
Si vous souhaitez définir le mot de passe de connexion, vous devez vérifier au préalable la chaîne de caractères de hachage du mot de passe. Lorsque vous exécutez la commande suivante, une invite pour entrer le mot de passe apparaîtra, alors entrez le mot de passe que vous souhaitez définir.
$ python -c "import IPython;print(IPython.lib.passwd())"
Ensuite, il retournera une chaîne de caractères de hachage commençant par sha1:
telle que sha1: 3be1549bb425: 1500071094720b33gf8f0feg474931dc5e43dfed
, donc copiez-la.
Ensuite, modifiez le contenu de ~ / .jupyter / jupyter_notebook_config.py
édité dans ↑ comme suit. Remplacez la chaîne de hachage après c.NotebookApp.password
par la chaîne de hachage que vous avez recherchée à l'avance ci-dessus.
c = get_config()
c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8080
c.NotebookApp.password = u'sha1:3be1549bb425:1500071094720b33gf8f0feg474931dc5e43dfed'
Exécutez la commande suivante pour démarrer Jupyter.
$ jupyter notebook
Accédez à EC2, tel que ʻec2-53-239-93-85.ap-east-1.compute.amazonaws.com: 8080sur le navigateur. N'oubliez pas le port «8080». Lorsque l'écran de connexion Jupyter apparaît, entrez le mot de passe défini en haut et la connexion est réussie. Si vous voulez exécuter Background, définissez
nohup jupyter notebook> / dev / null 2> & 1 &` et Jupyter continuera à fonctionner même si vous déconnectez ssh.
Créez un script appelé start_jupyter.sh
, enregistrez-le dans / etc / rc.local
et définissez Jupyter pour qu'il soit exécuté en arrière-plan au démarrage d'EC2.
touch ~/start_jupyter.sh
start_jupyter.sh
et écrivez-y / usr / local / bin / jupyter notebook
.chmod 777 ~/start_jupyter.sh
/ etc / rc.local
avec les privilèges root et mettez une ligne de su --ubuntu /home/ubuntu/start_jupyter.sh &
avant ʻexit 0`shutdown -r now
avec les privilèges rootC'est super facile, mais c'est un aperçu de la façon d'utiliser Jupyter.
Une fois connecté, sélectionnez «Python2» dans «Nouveau» pour créer un bloc-notes Python2.
Jupyter fonctionne en écrivant le code et la description (Markdown) dans une boîte (?) Appelée ** Cell ** et en les exécutant en séquence. Les fonctions des différentes icônes sont les suivantes
+
L'icône ajoute la cellule (la cellule peut également être ajoutée par ʻInsert> ʻInsert Cell Above
ou ʻInsert Cell below`)Ciseaux
supprime la celluleCode
est sélectionné lors de la saisie de code tel que PythonMarkdown
est sélectionné lors de l'ajout d'une description (au code et au traitement des résultats) en utilisant le langage Markdown. La notation de formule est également possible en utilisant MathjaxRaw NB Convert
est sélectionné lors de la saisie d'une formule en LatexHeading
semble avoir une utilisation similaire à Markdown
(disparaîtra dans le futur)Entrez le code Python suivant dans Cell. C'est un code qui n'imprime l'heure actuelle que 10 fois par seconde.
import datetime, time
def main():
for count in range(0, 10):
print_current_time()
time.sleep(1)
def print_current_time():
print (datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S'))
if __name__ == '__main__':
main()
Veuillez entrer le code Python ci-dessus dans la cellule de 4 codes comme indiqué ci-dessous.
Cell
> Run All
pour l'exécuter.Effacer toutes les sorties et redémarrer
avec Kernel
> Redémarrer
, puis exécutez Cell
> Exécuter tout
à nouveau pour traiter dans l'ordre du haut.Ajoutez une cellule Markdown comme indiqué ci-dessous et entrez un commentaire dans Markdown. Si vous exécutez Cell
> Exécuter tout
, Markdown sera traité dans l'ordre du haut dans l'état Rendu.
Il est courant d'utiliser matplotlib
pour créer un graphique 2D. Le graphique est créé / affiché en exécutant le code suivant sur Jupyter. % matplotlib inline
est un idiot nécessaire pour afficher le graphique de sortie de matplotlib sur Jupyter, et c'est OK s'il est déclaré / exécuté une fois quelque part sur le Notebook.
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
x = np.random.randint(0, 100, 10000)
plt.hist(x, bins=20)
plt.plot()
Avec np.random.randint (0, 100, 10000)
, créez 10000 entiers aléatoires compris entre 0 et 99 et affichez la distribution des nombres aléatoires sous forme d'histogramme de 20 colonnes.
De plus, matplotlib
est une bibliothèque de création de graphiques 2D qui existe depuis longtemps, et bien que l'on pense que la méthode de paramétrage est un peu compliquée, il existe également une bibliothèque qui peut créer un graphique de conception moderne avec un code court appelé seaborn
. Il y a (Reportez-vous ici). Cependant, sachez que certaines cartes prennent en charge matplotlib mais pas seaborn.
Un graphique 3D peut être créé à l'aide d'une bibliothèque appelée «plotly». Il est efficace lorsque vous souhaitez vérifier la distribution des données 3D par apprentissage automatique, etc., et Scatter, Surface, Mesh est pris en charge en 3D. Si vous exécutez le code suivant sur Jupyter, 3D Scatter Chart sera affiché comme ceci. Profitez du changement de point de vue et de la mise à l'échelle avec glisser et pincer dans / hors.
np.random.multivariate_normal ([0,0,0], [[0,1, 0, 0], [0, 1, 0], [0, 0, 2]], 1000) .T
a une moyenne C'est une fonction qui crée 1000 nombres aléatoires avec une distribution normale tridimensionnelle avec [0,0,0] et une variance de [0,1, 1, 2] respectivement.
import plotly
import numpy as np
plotly.offline.init_notebook_mode()
x1, y1, z1 = np.random.multivariate_normal([3,3,3], [[0.5, 0, 0], [0, 0.5, 0], [0, 0, 0.5]], 1000).T
trace1 = plotly.graph_objs.Scatter3d(x=x1, y=y1, z=z1, mode='markers', marker=dict(size=1, line=dict(color='b')))
x2, y2, z2 = np.random.multivariate_normal([0,0,0], [[0.1, 0, 0], [0, 1, 0], [0, 0, 2]], 1000).T
trace2 = plotly.graph_objs.Scatter3d(x=x2, y=y2, z=z2, mode='markers', marker=dict(size=1, line=dict(color='r')))
fig = plotly.graph_objs.Figure(data=[trace1, trace2])
plotly.offline.iplot(fig, show_link=False)
Il existe plusieurs façons d'exprimer des formules sur Jupyter.
Raw NB Convert
Markdown
.Ici, je vais le décrire en utilisant Mathjax sur Markdown.
$$r=\frac{1}{f}$$
$$\left(x + y\right)^{5}$$
Entrez ce qui précède dans ** Markdown Cell ** pour exécuter la cellule, et c'est OK si elle est rendue comme suit.
Des exemples de formules utilisant Mathjax sur Jupyter sont disponibles dans cet article et cet article. Il peut être trouvé sur //www.suluclac.com/Wiki+MathJax+Syntax). De plus, la grammaire de Mathjax est cet article (en anglais) est résumé.
Vous pouvez nommer le cahier créé avec fichier
> renommer
et l'enregistrer au format * .ipynb
avec fichier
> Télécharger en tant que
.
Il existe quelques cas où vous l'utilisez et que vous souhaitez exécuter une commande Shell. Je souhaite ajouter une bibliothèque Python, ou je souhaite importer un fichier d'un autre serveur avec wget.
Vous pouvez entrer le nœud maître avec ssh et exécuter le script, mais vous pouvez également exécuter le script shell directement sur Jupyter par l'une des méthodes suivantes. Le script est exécuté avec l'autorité utilisateur qui a démarré Jupyter.
Une bibliothèque python appelée commandes exécute des scripts shell sur python.
import commands
commands.getoutput("date")
commands.getoutput("curl yahoo.co.jp")
!
**En tant que fonction unique à Jupyter, si vous écrivez un script shell après !
, Il sera exécuté.
!date
!curl yahoo.co.jp
Il est possible d'exécuter le script shell par sudo
comme indiqué ci-dessous, mais comme Jupyter est toujours en train de traiter après l'exécution du script, il est nécessaire de le restaurer par interruption, etc.
!sudo su
!find / -name 'hoge.txt'
Jupyter notebook extensions Extensions Jupyter / IPython est en cours de développement (distinct de l'équipe de développement d'origine de Jupyter). Cet article est très bien organisé sur le type de fonctions dont il dispose.
Pour installer l'extension, éditez ~ / .jupyter / jupyter_notebook_config.py
avec les paramètres jupyter
ci-dessus, et exécutez les deux lignes suivantes avant de démarrer Jupyter avec le jupyter notebook
. est.
mkdir -p ~/.local/share/jupyter
sudo pip install https://github.com/ipython-contrib/IPython-notebook-extensions/archive/master.zip
Quand j'avoue, honnêtement, je n'utilise pas Extension ... Bien que ʻExecute Time` soit pratique.
Jupyter Magic Commands Jupyter / IPython a une fonctionnalité dédiée appelée «Magic Commands». Si vous recherchez sur Google avec «i python magic command», vous verrez diverses choses, mais les suivantes sont célèbres.
% who
% whos
%% timeit
pour mesurer le temps nécessaire pour traiter la cellule% quickref
Si vous exécutez la cellule avec % whos
entré dans la cellule, la commande Magic sera exécutée. Cependant, quand j'avoue, honnêtement, je n'utilise pas Magic Command ... J'utilise parfois % whos
parce que c'est pratique.
Bonne vie à Jupyter!
Recommended Posts