[PYTHON] Lesen und Schreiben von Dateien aus dem Notebook in Watson Studio in IBM Cloud Object Storage (ICOS) - unter Verwendung von project-lib-

Beim Schreiben von Code in Notebook werden häufig Daten über eine Datei geladen. Wenn Sie ein Jupyter-Notebook auf Ihrem lokalen PC ausführen, ist es in Ordnung, auf die übliche Python-Weise zu lesen und zu schreiben. Wenn Sie jedoch auf Watson Studios Notebook Dateien dauerhaft lesen und schreiben möchten, ist dies im Allgemeinen der Fall Liest und schreibt Dateien in IBM Cloud Object Storage (ICOS), die Project zugeordnet sind.

Es gibt verschiedene Möglichkeiten. Da ICOS ein AWS S3-kompatibler Objektspeicher ist, können Sie dieselbe Methode wie AWS S3 verwenden. Sie können Code auch über die Watson Studio Notebook-Benutzeroberfläche mithilfe von "Pandas-Datenrahmen einfügen" oder "StreamingBody-Objekt einfügen" generieren. Der Rest ist exklusiv für Watson Studio Notebook, aber es gibt eine Möglichkeit, project-lib zu verwenden, die relativ einfach zu schreiben ist.

Hier erklären wir eine dieser Methoden, die Methode mit project-lib. Andere Methoden sind in Qiita recht gut veröffentlicht, daher denke ich, dass Sie sie leicht finden können.

Eine weitere Option ohne Verwendung von ICOS besteht darin, Linux-Befehle direkt von Ihrem Notebook aus auszuführen. Sie können ein wget auch von einem anderen Server oder einer anderen Datei abrufen und die Datei mit wput auf einem anderen Server speichern. Dies setzt voraus, dass Sie einen Server haben, der Dateien wget / wput kann, daher werde ich es hier nicht erklären.

Die hier geschriebenen Informationen sind das Watson Studio-Dokument "Using project-lib for Python. Es basiert auf den Informationen von "html)".

0. Voraussetzung ist, dass das Watson Studio-Projekt bereits erstellt wurde.

Voraussetzung ist, dass Sie bereits ein Watson Studio-Projekt erstellt haben. Wenn Sie es noch nicht erstellt haben und nicht wissen, wie es geht

Bitte erstellen Sie zuerst ein Projekt unter Bezugnahme auf und starten Sie dann Folgendes.

1. Öffnen Sie das Projekt

Öffnen Sie das erstellte Projekt.

Wenn Sie nicht wissen wie [So zeigen Sie das erstellte Projekt nach dem Anmelden an] (https://qiita.com/nishikyon/items/ba698b638300848b746e#4-%E3%81%8A%E3%81%BE%E3%81%91%E3%83%AD%E3%82%B0%E3% 82% A4% E3% 83% B3% E5% BE% 8C% E4% BD% 9C% E6% 88% 90% E6% B8% 88Projekt% E3% 81% AE% E8% A1% A8% E7% A4% Bitte beziehen Sie sich auf BA% E6% 96% B9% E6% B3% 95), um es zu öffnen.

2. Vorbereitung Erstellen Sie ein Zugriffstoken

Um project-lib zu verwenden, müssen Sie zuerst ein Access Token erstellen, das auf die Umgebung Ihres Projekts zugreifen kann, einschließlich des zugehörigen ICOS. Dies muss nur einmal für das Projekt erstellt werden.

2-1: Klicken Sie im oberen Menü auf "Einstellungen". image.png

2-2: Scrollen Sie nach unten, um "Zugriffstoken" anzuzeigen. "Neuer Token auf der rechten Seite angezeigt "Klicken. image.png

2-3: Das Fenster "Neues Token" wird angezeigt. Legen Sie den Namen "Name" und "Zugriffsrolle für Projekt" fest und klicken Sie auf "Erstellen".

--Name: Ein ziemlich leicht verständlicher Name (in halber Breite)

Da dieser Artikel das Lesen und Schreiben erklärt, setze ich "Editor" auf den eingestellten Status. image.png image.png

Vergewissern Sie sich, dass das unter "Zugriffstoken" festgelegte Token angezeigt wird. image.png

Sie können jetzt project-lib außerhalb Ihres Notebooks verwenden.

3: Öffnen Sie das Notizbuch

Wenn Sie bereits ein Notizbuch haben, in das Sie Dateien lesen und schreiben möchten, öffnen Sie es. Sie können eine neue machen. Wenn Sie nicht wissen, wie es geht [Verwenden Sie Jupyter Notebook in Watson Studio! -3. Create Notebook-](https://qiita.com/nishikyon/items/6c5bc873e2ac7f1e5fb7#3-notebook%E3%81%AE%E4%BD%9C%E6 Bitte beziehen Sie sich auf% 88% 90), um es zu erstellen.

4: Laden Sie die Datei, die Sie lesen möchten, in ICOS hoch

Wie ich zu Beginn erklärt habe: Wenn Sie Dateien dauerhaft auf Watson Studio Notebook lesen und schreiben, lesen und schreiben Sie im Allgemeinen Dateien, wenn Sie Dateien in IBM Cloud Object Storage (im Folgenden: ICOS) lesen und schreiben, die mit Project verknüpft sind. Ich werde. Wenn sich in der lokalen Umgebung (PC) eine Datei befindet, laden Sie die Datei zuerst auf ICOS hoch.

Wenn Sie bereits hochgeladen haben, fahren Sie mit 5 fort.

4-1: Klicken Sie oben rechts auf das Symbol [Datei und Daten hinzufügen].

Beachten Sie, dass dieses Symbol nur im Notizbuch angeklickt werden kann, wenn es sich im Bearbeitungsmodus befindet. Wenn Sie sich nicht im Bearbeitungsmodus befinden, wird ein "Enbitsu" -Symbol angezeigt. Klicken Sie darauf, um den Bearbeitungsmodus aufzurufen.

image.png

4-2: Ziehen Sie die Datei, die Sie hochladen möchten, in den quadratischen Bereich, in dem "Dateien hier ablegen oder nach Dateien zum Hochladen suchen" geschrieben ist. Alternativ können Sie auf "Durchsuchen" klicken, um das Dateidialogfeld anzuzeigen, und von dort aus auswählen. image.png

Nach einer Weile wird die Datei geladen und der Name der geladenen Datei wird unten angezeigt. image.png

5: Einfügen von "Projekt-Token"

5-1: <img src = 'https: //qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/13d16779-01c5-d79d-615f-4f3a2475f0a3.png' im oberen Menü Klicken Sie auf height = '30px'> (vertikal ...) und dann auf "Projekt-Token einfügen".

Wenn Sie in [# 2. Vorbereitung Zugriffstoken](# 2) kein Zugriffstoken erstellt haben, wird dieses Menü nicht angezeigt. Wenn es nicht angezeigt wird, [# 2. Vorbereitung Zugriffstoken] Stellen Sie sicher, dass Sie [Erstellen](# 2) ausgeführt haben.

image.png

Die Bibliothek zur Verwendung von project-lib als hidden_cell wird in die ** oberste Zelle ** geladen, und die Zelle mit dem erforderlichen Code wird mit dem festgelegten Projekttoken eingefügt.

Selbst wenn Sie am unteren Rand des Notizbuchs arbeiten, wird es immer in die obere Zelle eingefügt. Wenn Sie es nicht finden können, scrollen Sie zur oberen Zelle.

image.png

5-2: Klicken Sie auf die Zelle und führen Sie eine der folgenden Methoden aus.

-Eingabe [Strg] + [Eingabe] -Eingabe [Umschalt] + [Eingabetaste]

Wenn die Ausführung abgeschlossen ist, werden die Nummern in den folgenden Teilen eingegeben. image.png

Das Notebook ist jetzt fertig. Diese Arbeit ist einmal für jedes Notebook erforderlich.

6: Lesen und Schreiben von Dateien

Lassen Sie uns nun die Projektdatei über ICOS auf dem Notebook lesen und schreiben. Es wird angenommen, dass die in # 5 eingefügte Zelle ausgeführt wurde.

6.1: ICOS <-> Notebook Kopieren von Dateien zwischen VMs

Der Beispielcode, der häufig in Büchern zum Umgang mit Dateien enthalten ist, dient zum Lesen und Schreiben direkt in den lokalen Speicher. Im Fall eines Notebooks wird die VM jedes Mal gestartet, wenn das Notebook bearbeitet wird. Wenn Sie also die Datei in diesen Bereich kopieren, ist sie dieselbe wie im lokalen Speicher, sodass Sie den Beispielcode unverändert verwenden können. Im Gegenteil, wenn Sie es mit dem Beispielcode speichern, wird es in den VM-Bereich kopiert. Wenn Sie es also vor dem Schließen des Notebooks in ICOS kopieren, wird die Datei auch dann gespeichert, wenn Sie das Notebook schließen und herunterladen können.

Kopieren Sie von IQOS auf VM

#Copy a file in project ICOS to VM
csv_file_name = 'train.csv'
csv_file = project.get_file(csv_file_name)
csv_file.seek(0)
with open(csv_file_name,'wb') as out:                   
    out.write(csv_file.read())   

Sie können überprüfen, ob die Kopie erfolgreich war, indem Sie den folgenden Befehl in der Zelle ausführen. Wenn Sie ! Zu Beginn hinzufügen, können Sie den OS-Befehl (Linux-Befehl) der VM ausführen.

!ls -la

Ausführungsbeispiel: image.png

Kopieren von VM zu ICOS

Kopieren Sie die auf der VM oben kopierte Datei nach ICOS. Der kopierte Dateiname lautet "copy_train.csv".

#Copy a file in VM to project ICOS
with open('train.csv','rb') as f:
    project.save_data('copy_train.csv', f, overwrite=True)

Die Bestätigung erfolgt durch einmaliges Schließen des Notebooks. Klicken Sie auf "1. Speichern" und "2. Klicken Sie auf den Projektnamen", um das Notizbuch zu schließen. Der Projektbildschirm wird geöffnet. image.png

Sie finden die kopierte Datei unter "Datenbestände" auf der Registerkarte "Vermögenswerte": image.png

Das Folgende sind andere direkte Lese- und Schreibmethoden.

Laden Sie von ICOS in DataFrame von Pandas

csv_file_name = 'train.csv'
csv_file = project.get_file(csv_file_name)
csv_file.seek(0)

import pandas as pd
df_csv= pd.read_csv(csv_file)
df_csv

Ausführungsbeispiel: image.png

Speichern Sie CSV von Pandas DataFrame auf ICOS

Speichern Sie den oben in ICOS gelesenen DataFrame und df_csv unter dem Namen copy_train.csv.

project.save_data("copy_train.csv", df_csv.to_csv(index=False), overwrite=True)

Die Bestätigungsmethode lautet [Von VM nach ICOS kopieren](# vm% E3% 81% 8B% E3% 82% 89icos% E3% 81% B8% E3% 81% AE% E3% 82% B3% E3% 83% 94 Gleich wie% E3% 83% BC).

Als Parameter der VisualRecognition-API übergeben

Dies ist ein Beispiel, das eine Bilddatei auf ICOS hochlädt und als Erkennungsdatei für Watsons Visial Recognition übergibt. Angenommen, die Datei "sushi.jpg " wurde in das ICOS des Projekts hochgeladen.

Die folgenden beiden sind Vorbereitungen für die Verwendung von sdk of Visual Recognition.

!pip install --upgrade "ibm-watson>=4.0.1,< 5.0"

Geben Sie den Schlüssel für die visuelle Erkennungs-API ein, der in "XXXXXXXXXXXXXXX" verwendet werden soll.

#Visual Recognition
API_KEY='XXXXXXXXXXXXXX' #replace XXXXXXXXXXXXXX to your APIKEY

from ibm_watson import VisualRecognitionV3
from ibm_cloud_sdk_core.authenticators import IAMAuthenticator

authenticator = IAMAuthenticator(API_KEY)
visual_recognition = VisualRecognitionV3(
    version='2018-03-19',
    authenticator=authenticator
)

Unten finden Sie Beispielcode mit project-lib:

import json
image_file = project.get_file("sushi.jpg ")
image_file.seek(0)
classes = visual_recognition.classify(
        images_file=image_file,
        images_filename='sushi.jpg',    
        threshold='0.6',
       accept_language='ja').get_result()

#Überprüfen Sie das Ergebnis
print(json.dumps(classes, indent=2, ensure_ascii=False))

IQOS-Bildanzeige

Angenommen, eine Bilddatei mit dem Namen "sushi.jpg " wird in das ICOS des Projekts hochgeladen. Sie können es mit dem folgenden Code auf Ihrem Notebook anzeigen.

#Image
image_file = project.get_file("sushi.jpg ")
image_file.seek(0)
from IPython.display import Image
Image(data=image_file.read()) 

das ist alles.

7: Zusammenfassung

Wie war es? Sie müssen es zuerst einstellen, aber ich denke, Sie könnten den Code leicht schreiben, außer ihn einmal einzustellen. Da project.get_file () io.BytesIO zurückgibt, denke ich, dass ich verschiedene Dinge schreiben kann, also Watson Studios Dokument "Using project-lib for Python. Bitte lesen Sie die Informationen in "content / wsj / analyse-data / project-lib-python.html)" und probieren Sie verschiedene andere Dinge aus.

Recommended Posts

Lesen und Schreiben von Dateien aus dem Notebook in Watson Studio in IBM Cloud Object Storage (ICOS) - unter Verwendung von project-lib-
Studie aus Python Lesen und Schreiben von Hour9-Dateien
Lesen und Schreiben von CSV-Dateien
Laden Sie Dateien mit SDK (Python-Version) auf Aspera hoch, das mit IBM Cloud Object Storage (ICOS) geliefert wird.
Installieren Sie Anaconda auf Ihrem Mac und laden Sie Ihr Jupyter (IPython) -Notebook in die Anaconda Cloud hoch
So beheben Sie die Probleme beim Lesen von Google Cloud Storage-Bildern von Django, die auf GAE bereitgestellt wurden
Einstellungen zum Lesen von S3-Dateien mit Pandas aus Jupyter Notebook unter AWS
Lesen und Schreiben von JSON-Dateien mit Python
Betreiben Sie den Cloud-Objektspeicher von Sakura von Python aus
[IBM Cloud] Ich habe versucht, über Cloud Funtions (Python) auf die Tabelle Db2 on Cloud zuzugreifen.
So installieren Sie Fast.ai auf einer Alibaba Cloud-GPU und führen es auf einem Jupyter-Notebook aus
Konvertieren der cURL-API in ein Python-Skript (mithilfe des IBM Cloud-Objektspeichers)