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

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

查看容器狀況
docker ps

進入容器
docker exec -it [容器名稱] bash

進入 MySQL
mysql -uroot -p
password
:root

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 upTo start a HTTP tunnel forwarding to your local port 80, run this next:
./ngrok http 8080


鳶尾花
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?