[PYTHON] Maschinelles Lernen mit Jupyter Notebook in einer OCI Always Free-Umgebung (17.12.2019)

Dieser Artikel ist ein Artikel vom 17. Dezember von "Oracle Cloud Infrastructure Adventskalender 2019". Es ist geschrieben als 2019-12-17).

Was Sie in diesem Artikel tun

Bauverfahren für die Umwelt

  1. Erstellen Sie ein virtuelles Cloud-Netzwerk

  2. Erstellen Sie eine Compute-Instanz

  3. Erstellen Sie eine autonome Datenbank (diesmal ADW)![Image01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/5a0120bc-05c4-6f3a- e99a-3e873a044f1e.jpeg)

  4. Einrichten der Jupyter Notebook-Umgebung auf der Compute-Instanz

  5. Stellen Sie von Jupyter Notebook aus eine Verbindung zur autonomen Datenbank her und führen Sie maschinelles Lernen durch

1. Erstellen Sie ein virtuelles Cloud-Netzwerk

Erstellen Sie ein Virtual Cloud Network (VCN) in der OCI-Webkonsole Der Schnellstart für virtuelle Netzwerke wurde seit dem 5. Dezember 2019 hinzugefügt Sie können problemlos einen VCN mit vier Eingabeelementen erstellen: "VCN-Name", "VCN-CIDR", "öffentliches Subnetz-CIDR" und "privates Subnetz-CIDR". image01.jpg (Wenn Sie beim Erstellen eines VCN mit Quickstart eine japanische Anzeige erstellen, lautet der Subnetzname etwa "Öffentliches Subnetz - ". Es wird empfohlen, die Anzeigesprache in Englisch zu ändern.)

2. Erstellen Sie eine Compute-Instanz

Erstellen Sie eine Compute-Instanz mit einem Image von Oracle Linux 7 --Klicken Sie auf "Form-, Netzwerk- und Speicheroptionen anzeigen" und in der Netzwerkkonfiguration auf 1. Wählen Sie das virtuelle Cloud-Netzwerk und das öffentliche Subnetz aus, die in erstellt wurden image02.JPG

3. Erstellen einer autonomen Datenbank (diesmal ADW)

Erstellen Sie einen Workload-Typ aus Autonome Datenbank erstellen, indem Sie Data Warehouse auswählen image04.JPG

Erstellen Sie einen funktionierenden Benutzer mit SQL Developer Web usw.

CREATE USER scott IDENTIFIED BY password; 

GRANT DWROLE TO scott;
GRANT UNLIMITED TABLESPACE TO scott;

GRANT
    SELECT ANY TABLE,
    UPDATE ANY TABLE,
    DELETE ANY TABLE,
    INSERT ANY TABLE
TO scott;

4. Einrichten der Jupyter Notebook-Umgebung auf der Compute-Instanz

Stellen Sie mit ssh (opc user) eine Verbindung zu der in 2. erstellten Compute-Instanz (Oracle Linux) her und installieren Sie Jupyter Notebook

4-1. Installieren Sie Python 3 4-1-1. EPEL-Repository-Installation von Python3.6

sudo yum install -y oracle-epel-release-el7 oracle-release-el7
sudo yum install -y python36
sudo yum install -y libSM.x86_64
sudo yum install -y libXext.x86_64
sudo yum install -y libXrender.x86_64

4-1-2. Mlevn (Einrichtung / Aktivierung der virtuellen Python-Umgebung)

python3.6 -m venv mlenv 
source mlenv/bin/activate

​ 4-1-3. Installieren Sie die Bibliothek, die für maschinelles Lernen verwendet wird (Bibliothek zum Ausführen dieses Verfahrens).

pip3 install --upgrade pip
pip3 install pandas
pip3 install seaborn
pip3 install sklearn

4-1-4 Installieren Sie Jupyter

python3 -m pip install jupyter

4-1-5 Installation und Konfiguration von Oracle Instant Client

sudo yum -y install oraclelinux-developer-release-el7
sudo yum -y install python-cx_Oracle
pip3 install cx_Oracle
sudo sh -c "echo /usr/lib/oracle/18.3/client64/lib > /etc/ld.so.conf.d/oracle-instantclient.conf"
sudo ldconfig

4-1-6. Herunterladen von Anmeldeinformationen für autonome Datenbankclients (Brieftasche) Klicken Sie im Detailbild der in 3. erstellten autonomen Datenbank auf "DB-Verbindung" und im Dialogfeld "Datenbankverbindung" auf "Brieftasche herunterladen", um die Zip-Datei herunterzuladen. image05.JPG Übertragen Sie die heruntergeladene Zip-Datei auf eine Compute-Instanz (z. B. scp) und entpacken Sie sie (beachten Sie das entpackte Verzeichnis. Beispiel: / home / opc / wallet) Bearbeiten Sie die Datei sqlnet.ora im entpackten Verzeichnis Ändern Sie "~ / network / admin", das in DIRECTORY in der Zeile "WALLET_LOCATION" angegeben ist, in das entpackte Verzeichnis.

sqlnet.ora


WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="/home/opc/wallet")))
SSL_SERVER_DN_MATCH=yes

4-1-7. Notebook ausführen Umgebungsvariablen festlegen (LD_LIBRARY_PATH ist der Pfad des Instanzclients, TNS_ADMIN ist das Verzeichnis, in das die Brieftasche entpackt wurde)

export LD_LIBRARY_PATH=/usr/lib/oracle/18.3/client64/lib:$LD_LIBRARY_PATH
export TNS_ADMIN=/home/opc/wallet
source mlenv/bin/activate
jupyter notebook --ip=0.0.0.0 &

Notieren Sie sich den Token-Schlüssel, der angezeigt wird, wenn Sie das Jupyter-Notizbuch ausführen

    To access the notebook, open this file in a browser:
        file:///home/opc/.local/share/jupyter/runtime/nbserver-2210-open.html
    Or copy and paste one of these URLs:
        http://compute01:8888/?token=0e701120a4e7319ae8b970ac069fbfee53e7b07f072cc2dc
     or http://127.0.0.1:8888/?token=0e701120a4e7319ae8b970ac069fbfee53e7b07f072cc2dc     ```

5.Stellen Sie von Jupyter Notebook aus eine Verbindung zur autonomen Datenbank her und führen Sie maschinelles Lernen durch

5-1.Richten Sie das Tunneln vom Client-PC in einer anderen SSH-Sitzung ein

$ ssh –i <private_key> opc@<public_IP_address> -L 8000:localhost:8888​


5-2.Öffnen Sie einen Webbrowser auf Ihrem lokalen Computer und greifen Sie auf die folgende URL zu
http://localhost:8000 
5-3.Wenn Sie zur Eingabe eines Tokens aufgefordert werden, geben Sie den Token-Schlüssel ein, der beim Ausführen des Jupyter-Notizbuchs angezeigt wird
![image06.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/bbf7a0a4-64f7-a9a5-0a5f-1ed216b319c3.jpeg)

![image07.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/b1949454-7e7c-4cd5-4d61-fc0e5c6bfb37.jpeg)

5-4.Stellen Sie über Jupyter Notebook eine Verbindung zur autonomen Datenbank her
Benutzername, Passwort und tnsnames der autonomen Datenbank in der entpackten Brieftasche.Überprüfen Sie den Verbindungsdienstnamen von ora und geben Sie ihn an

Beispiel für die Verbindung zur autonomen Datenbank und die Überprüfung der DB-Version

import cx_Oracle con = cx_Oracle.connect('scott/@orcl_medium') print(con.version) con.close()


Beispiel für die Verbindung mit einer autonomen Datenbank und die Überprüfung der Anzahl der SALES-Tabellen im sh-Schema

import cx_Oracle con = cx_Oracle.connect('scott/@orcl_medium') cur = con.cursor() # opens cursor for statements to use cur.execute('select count(*) from sh.sales') for result in cur: # prints all data print(result) con.close()


CUST nach Geschlecht aus der CUSTOMERS-Tabelle_Vergleiche GÜLTIG

import pandas.io.sql as psql import cx_Oracle import seaborn as sns %matplotlib inline

con = cx_Oracle.connect('scott/@orcl_medium')

sql = 'select CUST_GENDER,CUST_VALID from sh.customers' df = psql.read_sql(sql,con) sns.countplot('CUST_GENDER',hue='CUST_VALID',data=df)

Spaltennamen werden in Großbuchstaben geschrieben

con.close()


![image08.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/b0fd0ce8-514a-d38e-c19e-ca4228e4cd5a.jpeg)



####Maschinelles Lernen
scikit-Bibliotheksbaum und Scikit lernen-Verwenden der zufälligen Waldklasse feurig im Lernensemble
CUST in der Tabelle CUSTOMERS_Erstellen Sie ein Modell für maschinelles Lernen, das GÜLTIG vorhersagt

-Holen Sie sich Features und Zielvariablen mit der SELECT-Anweisung und speichern Sie sie in DataFrame

sql = 'select cust_id,cust_year_of_birth,CUST_GENDER,cust_postal_code,cust_valid from sh.customers' df = psql.read_sql(sql,con)


-Fehlende Wertebehandlung und kategoriale Variablen(Brief)Umwandlungsprozess

Verarbeitung fehlender Werte

df['CUST_YEAR_OF_BIRTH'] = df['CUST_YEAR_OF_BIRTH'].fillna(df['CUST_YEAR_OF_BIRTH'].median()) df['CUST_POSTAL_CODE'] = df['CUST_POSTAL_CODE'].fillna(df['CUST_POSTAL_CODE'].median())

Konvertierung kategorialer Variablen

df['CUST_VALID']=df['CUST_VALID'].apply(lambda x:1 if x == 'I' else 0) df['CUST_GENDER']=df['CUST_GENDER'].apply(lambda x:1 if x == 'M' else 0)


-Unterteilt in Trainingsdaten und Testdaten(Dieses Mal werden 90% als Trainingsdaten verwendet)

X = df.loc[:, ["CUST_YEAR_OF_BIRTH","CUST_GENDER","CUST_POSTAL_CODE"]] Y = df.loc[:, "CUST_VALID"] (train_X, test_X ,train_y, test_y) = train_test_split(X, Y, test_size = 0.1, random_state = 666)


-Erstellung eines Entscheidungsbaummodells, Überprüfung mit Testdaten, Bestätigung der Genauigkeit

clf = DecisionTreeClassifier(random_state=0) clf = clf.fit (train_X, train_y) #Erstelle ein Modell! pred = clf.predict(test_X) print("Prediction Score: {}".format(clf.score(test_X, test_y)))


-Erstellung und Validierung von zufälligen Waldmodellen mit Testdaten

from sklearn.ensemble import RandomForestClassifier clf = RandomForestClassifier(random_state=0) clf = clf.fit(train_X, train_y) pred = clf.predict(test_X)


-Ganzer Code für maschinelles Lernen


#### **`ml4py.py`**
```py

import pandas.io.sql as psql
import cx_Oracle
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import (roc_curve, auc, accuracy_score)
from sklearn.metrics import classification_report
con = cx_Oracle.connect('scott/<password>@orcl_medium')

sql = 'select cust_id,cust_year_of_birth,CUST_GENDER,cust_postal_code,cust_valid from sh.customers'
df = psql.read_sql(sql,con)
# Verarbeitung fehlender Werte
df['CUST_YEAR_OF_BIRTH'] = df['CUST_YEAR_OF_BIRTH'].fillna(df['CUST_YEAR_OF_BIRTH'].median())
df['CUST_POSTAL_CODE'] = df['CUST_POSTAL_CODE'].fillna(df['CUST_POSTAL_CODE'].median())

# Konvertierung kategorialer Variablen
df['CUST_VALID']=df['CUST_VALID'].apply(lambda x:1 if x == 'I' else 0)
df['CUST_GENDER']=df['CUST_GENDER'].apply(lambda x:1 if x == 'M' else 0)

X = df.loc[:, ["CUST_YEAR_OF_BIRTH","CUST_GENDER","CUST_POSTAL_CODE"]]
Y = df.loc[:, "CUST_VALID"]
(train_X, test_X ,train_y, test_y) = train_test_split(X, Y, test_size = 0.1, random_state = 666)

clf = DecisionTreeClassifier(random_state=0)
 clf = clf.fit (train_X, train_y) #Erstelle ein Modell!
pred = clf.predict(test_X)
fpr, tpr, thresholds = roc_curve(test_y, pred, pos_label=1)
auc(fpr, tpr)
accuracy_score(pred, test_y)
classification_report(pred, test_y, labels=None)
print("Prediction Score: {}".format(clf.score(test_X, test_y)))
 print ("Genauigkeit des Entscheidungsbaummodells: {: .6f}". Format (Genauigkeitscore (pred, test_y)))

from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier(random_state=0)
clf = clf.fit(train_X, train_y)
pred = clf.predict(test_X)
fpr, tpr, thresholds = roc_curve(test_y, pred, pos_label=1)
auc(fpr, tpr)
 print ("Random Forest Model Accuracy: {: .6f}". Format (Genauigkeitscore (pred, test_y)))
con.close() 

##Zusammenfassung und für die Zukunft Immer freie Umgebung(Recheninstanz und autonome Datenbank)Maschinelles Lernen mit Jupyter Notebook mit(Entscheidungsbaum / zufälliger Wald)Konnte durchgeführt werden.

Vom 5. Dezember 2019Mit Oracle Database sind Funktionen für maschinelles Lernen, geografische Daten und Diagrammdaten keine kostenpflichtige Option mehr und jetzt in der Standard Edition verfügbar. Oracle Machine Learning API für Python istcoming soonWeil es bedeutet Ich möchte vergleichen können, wann Oralce Machine Learning für Python veröffentlicht wird.

###Referenzinformationen

Recommended Posts

Maschinelles Lernen mit Jupyter Notebook in einer OCI Always Free-Umgebung (17.12.2019)
Lernen Sie maschinelles Lernen jederzeit und überall in der bedarfsgesteuerten Jupyter Notebook-Umgebung
Reflektieren Sie die von Miniconda erstellte virtuelle Umgebung im Jupyter-Notizbuch
So erstellen Sie schnell eine maschinelle Lernumgebung mit Jupyter Notebook mit UbuntuServer 16.04 LTS
Erstellen einer virtuellen Anaconda-Umgebung für die Verwendung mit Azure Machine Learning und Verknüpfen mit Jupyter
So erstellen Sie schnell eine maschinelle Lernumgebung mit Jupyter Notebook mit UbuntuServer 16.04 LTS mit anaconda
Erstellen Sie mit GCP + Docker + Jupyter Lab eine beliebige Umgebung für maschinelles Lernen
Aufbau einer KI / maschinellen Lernumgebung mit Python
Schnelle Schritte zum Erstellen einer maschinellen Lernumgebung mit Jupyter Notebook unter macOS Sierra mit anaconda
Ich wollte ein Jupyter-Notebook mit Docker in einer Pip-Umgebung (Opticspy) verwenden.
Erstellen einer Analyseumgebung mit Docker (Jupyter Notebook + PostgreSQL)
Angeben des Jupyter Notebook-Browsers in einer Windows-Umgebung
Versuchen Sie, die virtuelle Umgebung von conda mit Jupyter Notebook zu verwenden
Versuchen Sie es mit dem Jupyter Notebook von Azure Machine Learning
Erstellen Sie eine Python-Umgebung für maschinelles Lernen mit Containern
Aufbau einer virtuellen Umgebung mit Docker + Flask (Python) + Jupyter-Notebook
Erstellen Sie mit Python eine interaktive Umgebung für maschinelles Lernen
Zeichnen einer Baumstruktur mit D3.js in Jupyter Notebook
Erstellen Sie mit Python eine Entwicklungsumgebung für maschinelles Lernen
Erstellen Sie mit Winsows 10 eine maschinelle Lernumgebung von Grund auf neu
[Maschinelles Lernen] Starten Sie Spark mit iPython Notebook und probieren Sie MLlib aus
Neuerstellung der Umgebung für maschinelles Lernen mit Miniconda (Windows-Version)
Maschinelles Lernen mit Pokemon gelernt
Verwenden von Graphviz mit Jupyter Notebook
Maschinelles Lernen in Delemas (Praxis)
HTML in Jupyter-Notizbuch anzeigen
Erstellen Sie mit VirtualBox und Ubuntu eine Scikit-Lernumgebung für maschinelles Lernen
Verwenden Sie pip mit Jupyter Notebook
Mehrfachverarbeitungsfehler in Jupyter Notebook
Maschinelles Lernen mit Python! Vorbereitung
Installieren Sie Jupiter Notebook mit pip unter Windows in einer Proxy-Umgebung
Verwenden Sie Cython mit Jupyter Notebook
Spielen Sie mit Jupyter Notebook (IPython Notebook)
Maschinelles Lernen Minesweeper mit PyTorch
Ich möchte eine virtuelle Umgebung mit Jupyter Notebook verwenden!
Erstellen Sie eine maschinelle Lernumgebung
Wird in EDA für maschinelles Lernen verwendet
Schreiben Sie Diagramme in Echtzeit mit Matplotlib auf dem Jupyter-Notizbuch
Einstellungen der Python3-basierten maschinellen Lernumgebung auf dem Mac (Koexistenz mit Python2)
Beginnend mit maschinellem Python-Lernen
Wechseln Sie die virtuelle Umgebung mit Jupiter
Versuchen Sie es mit Kaggle leicht maschinell
jupyter notebook in python3.8 venv umgebung
Git-Management von Jupyter Notebook (ipynb) Unterschieden in JupyterLab für einfache Anzeige
Wie wäre es mit Anaconda zum Erstellen einer maschinellen Lernumgebung mit Python?
Erstellen einer Windows 7-Umgebung für eine Einführung in das maschinelle Lernen mit Python
Führen Sie eine morphologische Analyse in der von GCE gestarteten maschinellen Lernumgebung durch
So verwenden Sie das Jupyter-Notebook, ohne Ihre Umgebung mit Docker zu verschmutzen
Erstellen Sie mit PsychoPy + Jupyter Notebook eine komfortable Umgebung für psychologische Experimente / Analysen
Jupyter Notebook 6.0.2 kann nicht in der in Anaconda erstellten Python 2.7-Umgebung installiert werden
Visualisieren Sie den Entscheidungsbaum mit einem Jupyter-Notizbuch
Machen Sie einen Sound mit Jupyter Notebook
Ich habe maschinelles Lernen mit liblinear versucht
Maschinelles Lernen mit Python (1) Gesamtklassifizierung
Automatisieren Sie Routineaufgaben beim maschinellen Lernen
Einfache Jupyter-Umgebungskonstruktion mit Cloud9
Generieren Sie das Jupyter-Notizbuch ".ipynb" in Python
Klassifikation und Regression beim maschinellen Lernen