20201020 資料卷與網路 (一)

課堂資料

課堂練習

MySQL / phpMyAdmin 安裝使用

生成兩個容器(MySQL & phpMyAdmin)

啟動 Docker

systemctl start docker

安裝MySQL

docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7.24

docker run -itd --[容器名字] -p 宿機端口:虛擬機端口 -e MYSQL_ROOT_PASSWORD=密碼 mysql ( image 名稱 )

安裝phpMyAdmin

docker run --name phpmyadmin -d --link mysql -e PMA_HOST="mysql" -p 8080:80 phpmyadmin/phpmyadmin

docker run --[容器名字] -d --link 欲連結容器名字 -e -p PMA_HOST="mysql" 宿機端口:虛擬機端口 phpmyadmin/phpmyadmin (image 名稱)

查看容器狀況

docker ps

進入容器

docker exec -it [容器名稱] bash

進入 MySQL

mysql -uroot -p 

MySQL 創建資料庫、資料表

建立 test1 資料庫

create database test1;

使用 test1 資料庫

use test1;

建立 mytable 資料表

create table mytable(school char(5),name char(10),id int);

顯示資料庫、資料表

show tables;

新增資料

insert into mytable(school, name, id) values ('NCTU','Jerry','123');

更新資料表

update mytable set name = 'HaHa' where id = '123';

查詢資料表 (選擇資料表 mytable 的所有欄位資料)

select * from mytable ;

ngrok 安裝及設定

cd
wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
ls
unzip ngrok-stable-linux-amd64.zip
ls

Connect your account

./ngrok authtoken 1loD2tDuWfBg45wOHPmIYh3EsW2_6QkBjZRdJSGPhH7jHnuKz
docker run -d -p 8080:80 myweb:0.1
curl 127.0.0.1:8080

Fire it up

To start a HTTP tunnel forwarding to your local port 80, run this next:

./ngrok http 8080

copyForwarding

鳶尾花

cd

創建資料夾

mkdir iris
cd iris

訓練並保存模型

vim train_model.py
import pickle
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn import tree

# simple demo for traing and saving model
iris=datasets.load_iris()
x=iris.data
y=iris.target

#labels for iris dataset
labels ={
  0: "setosa",
  1: "versicolor",
  2: "virginica"
}

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=.25)
classifier=tree.DecisionTreeClassifier()
classifier.fit(x_train,y_train)
predictions=classifier.predict(x_test)

#export the model
model_name = 'model.pkl'
print("finished training and dump the model as {0}".format(model_name))
pickle.dump(classifier, open(model_name,'wb'))
python train_model.py

安裝 Python

yum install python

安裝 epel-release

yum install epel-release

安裝 python-pip

yum install python-pip -y

更新 pip

pip install --upgrade pip

安裝 Sklearn

pip install sklearn

加載模型並調用 API

vim server.py
import pickle

from flask import Flask, request, jsonify

app = Flask(__name__)

# Load the model
model = pickle.load(open('model.pkl', 'rb'))
labels = {
  0: "versicolor",   
  1: "setosa",
  2: "virginica"
}

@app.route('/api', methods=['POST'])
def predict():
    # Get the data from the POST request.
    data = request.get_json(force = True)
    predict = model.predict(data['feature'])
    return jsonify(predict[0].tolist())

if __name__ == '__main__':
    app.run(debug = True, host = '0.0.0.0')
python server.py

安裝 Flask

pip install flask
vim client.py
import requests
# Change the value of experience that you want to test
url = 'http://127.0.0.1:5000/api'
feature = [[1.8, 3.0, 2.2, 0.2]]
labels ={
  0: "setosa",
  1: "versicolor",
  2: "virginica"
}

r = requests.post(url,json={'feature': feature})
print(labels[r.json()])
python client.py
cd /home/user

Docker 打包和運行

docker pull nitincypher/docker-ubuntu-python-pip

Last updated

Was this helpful?