Dieser Artikel ist ein Artikel vom 17. Dezember von "Oracle Cloud Infrastructure Adventskalender 2019". Es ist geschrieben als 2019-12-17).
Erstellen Sie ein virtuelles Cloud-Netzwerk
Erstellen Sie eine Compute-Instanz
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)
Einrichten der Jupyter Notebook-Umgebung auf der Compute-Instanz
Stellen Sie von Jupyter Notebook aus eine Verbindung zur autonomen Datenbank her und führen Sie maschinelles Lernen durch
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".
(Wenn Sie beim Erstellen eines VCN mit Quickstart eine japanische Anzeige erstellen, lautet der Subnetzname etwa "Öffentliches Subnetz -
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
Erstellen Sie einen Workload-Typ aus Autonome Datenbank erstellen, indem Sie Data Warehouse auswählen
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;
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. Ü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-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/
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/
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/
sql = 'select CUST_GENDER,CUST_VALID from sh.customers' df = psql.read_sql(sql,con) sns.countplot('CUST_GENDER',hue='CUST_VALID',data=df)
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
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())
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