Ⅰ 超值一篇分享,Docker:從入門到實戰過程全記錄
作者 | 天元浪子
來源 | CSDN博客
想要真正理解Docker,就不得不從虛擬化技術的發展歷程說起。普遍認為虛擬化技術經歷了物理機時代、虛擬機時代,目前已經進入到了容器化時代。可以說,Docker是虛擬化技術不斷發展的必然結果。
那麼,什麼是容器呢?容器和虛擬機有什麼不同?Docker和容器又是什麼關系呢?搞明白這幾個問題,Docker的概念就清晰了。
1.1 虛擬機和容器
藉助於VMWare等軟體,可以在一台計算機上創建多個虛擬機,每個虛擬機都擁有獨立的操作系統,可以各自獨立的運行程序。這種分身術雖然隔離度高(操作系統級),使用方便(類似物理機),但佔用存儲資源多(GB級)、啟動速度慢(分鍾級)的缺點也是顯而易見的。
相較於虛擬機,容器(Container)是一種輕量型的虛擬化技術,它虛擬的是最簡運行環境(類似於沙盒)而非操作系統,啟動速度快(秒級)、佔用存儲資源少(KB級或MB級),容器間隔離度為進程級。在一台計算機上可以運行上千個容器,這是容器技術對虛擬機的碾壓式優勢。
1.2 容器、鏡像和Docker
Docker是一個開源的應用容器引擎,可以創建容器以及基於容器運行的程序。Docker可以讓開發者打包他們的應用和依賴包到一個輕量級、可移植的容器中,然後發布到任何流行的Linux機器上,也可以實現虛擬化。
聽起來很簡單,但是在Docker和容器之間,還隱藏著一個鏡像的概念,令初學者頗感困惑。本質上,Docker鏡像是一個特殊的文件系統,它提供容器運行時所需的程序、庫、資源、配置等文件。Docker鏡像類似於一個py文件,它需要Docker的運行時(類似於Python解釋器)運行。鏡像被運行時,即創建了一個鏡像的實例,一個實例就是一個容器。
1.3 Docker 和 k8s
作為容器引擎,Docker為容器化的應用程序提供了開放的標准,使得開發者可以用管理應用程序的方式來管理基礎架構,實現快速交付、測試和部署代碼。隨著容器的大量使用,又產生了如何協調、調度和管理容器的問題,Docker的容器編排應運而生。
k8s是Google開源的一個容器編排引擎,它支持自動化部署、大規模可伸縮、應用容器化管理,是一個開源的,用於管理雲平台中多個主機上的容器化的應用,k8s的目標是讓部署容器化的應用簡單並且高效,k8s提供了應用部署、規劃、更新、維護的一種機制。
Docker和k8sr都是以containerd(容器化標准)作為運行時,因此使用Docker創建的鏡像完全可以在k8s中無障礙的使用。
2.1 在ubuntu中安裝
在linux系統中安裝Docker非常簡單,官方為我們提供了一鍵安裝腳本。這個方法也適用於Debian或CentOS等發行版。
安裝過程如果出現超時,不要灰心,多試幾次,總會成功的。安裝完成後,Docker只能被root用戶使用,可以使用下面的命令取消許可權限制:
然後,重啟docker服務:
最後,關閉當前的命令行,重新打開新的命令行就可以了。
順便提一下,如果在CentOS下安裝,可能會出現一堆類似於下面的錯誤:
這是由於docker和Podman沖突造成的,需要先卸載Podman:
2.2 在Win10中安裝
Docker的運行,依賴linux的環境,官方提供了Docker Desktop for Windows,但是它需要安裝Hyper-V,Hyper-V是微軟開發的虛擬機,類似於 VMWare 或 VirtualBox,僅適用於 Windows 10。這個虛擬機一旦啟用,QEMU、VirtualBox 或 VMWare Workstation 15 及以下版本將無法使用!如果你必須在電腦上使用其他虛擬機(例如開發 Android 應用必須使用的模擬器),請不要使用 Hyper-V!
我的電腦是win10家庭版,不能直接安裝hyper-v,需要將下面的命令保存到cmd文件中:
然後在cmd文件上點擊右鍵,選擇使用管理員運行。執行完畢後會重啟,在重啟的過程中進行安裝。
2.3 Hello world
docker服務啟動的情況下,運行下面的命令:
此命令的含義是:
第一次運行時,因為本地沒有ubuntu:20.04鏡像,docker會自動從鏡像伺服器下載。下載過程可能需要多試幾次,只要成功一次,以後執行就不再需要下載了。
docker官方還提供了一個hello-world鏡像,可以直接運行:
此命令省略了鏡像版本和運行參數,docker使用latest作為版本,即最新版本。
從hello world的例子中,也可以體驗到,docker實例的運行是非常快的。
docker官方的鏡像庫比較慢,在進行鏡像操作之前,需要將鏡像源設置為國內的站點。
新建文件/etc/docker/daemon.json,輸入如下內容:
然後重啟docker的服務:
3.1 列出本地所有鏡像
執行命令 docker images 可以查看
當前我本地只有剛才安裝的兩個鏡像。
3.2 從鏡像庫中查找鏡像
執行命令 docker search 鏡像名稱可以從docker鏡像庫中查找鏡像。
最好選擇官方(OFFICIAL)的鏡像,這樣的鏡像最穩定一些。
3.3 下載新的鏡像
執行命令docker pull 鏡像名稱:版本號即可下載新的鏡像。
鏡像下載後,就可以使用鏡像來創建容器了。
4.1 啟動容器
執行命令docker run即可啟動容器,也就是創建某個鏡像的實例。docker run命令非常復雜,可以先執行一個docker run --help來查看幫助:
比如我們要執行python的shell,需要添加-it參數,即:docker run -it python:3.8
4.2 將宿主機的文件掛載到容器
docker容器與宿主機是隔離的,要想讓容器內的程序能訪問宿主機上的文件,需要通過-v參數將宿主機的文件掛載到容器中。
比如我們在宿主機上有一個hello.py,可以列印hello,想要在python容器中執行,就需要進行掛載。-v後還需要接兩個參數,分別是宿主機的目錄和容器內的目錄,兩者使用:分隔,路徑必須都是絕對路徑。
我的hello.py保存在主目錄的/docker_test目錄中,將這個目錄掛載到容器的/docker_test目錄,然後在容器內執行python /docker_test/hello.py:
4.3 容器的埠映射
我們修改一下hello.py,創建一個socket服務端,並監聽5000埠,當有客戶端連接時,列印客戶端的地址,先客戶端發送hello,然後關閉連接:
在容器內執行:
接下來,嘗試用telnet命令連接,結果卻是失敗的。原因是,127.0.0.1是宿主機的ip地址,5000是容器的埠,這與我們的習慣稍微有些不同。事實上,docker的容器是非常輕量的,它並沒有自己的網路,要想訪問容器的埠,需要進行埠映射,將容器的某埠映射到宿主機的埠,客戶端連接時,只要與宿主機的埠進行連接就可以了。
需要注意的是,上面的代碼創建的伺服器,無論如何也不可能被客戶端連接,因為代碼中綁定了127.0.0.1的ip,在容器中運行時,需要綁定所有ip,即0.0.0.0。
然後,再使用-p參數,-p還需要三個參數,即宿主機的ip地址、宿主機的埠、容器的埠,三者之間使用:分隔。一般的,可以將宿主機的ip地址省略,只寫宿主機的埠:容器的埠即可。
這樣,就將容器的5000埠映射到了宿主機的5001埠,使用:
即可與容器中的伺服器進行連接。
4.4 容器管理
上面的服務運行之後,可以使用docker ps命令,查看運行中的容器:
顯示的內容有下面幾列:
要想結束容器,可以使用docker kill 容器ID命令。
一般而言,當我們的程序開發完成後,會連同程序文件與運行環境一起製作成一個新的鏡像。
要製作鏡像,需要編寫Dockerfile。DockeFile由多個命令組成,常用的命令有:
注意,Docker鏡像中有一個層的概念,每執行一個RUN命令,就會創建一個層,層過多會導致鏡像文件體積增大。盡量在RUN命令中使用&&連接多條shell命令,減少RUN命令的個數,可以有效減小鏡像文件的體積。
5.1 自製顯示文本文件內容鏡像
編寫cat.py,接收一個文件名,由python讀取文件並顯示文件的內容:
這個例子比較簡單,縮寫Dockerfile如下:
這個Dockerfile的含義是:
需要說明的是,ENTRYPOINT有兩種寫法:
這里採用第二種寫法,是因為我們要在外部給容器傳遞參數。執行命令編譯Docker鏡像:
這個命令中,-t的含義是目標,即生成的鏡像名為hello,版本號為1.0,別忘了最後那個.,這叫到上下文路徑,是指 docker 在構建鏡像,有時候想要使用到本機的文件(比如復制),docker build 命令得知這個路徑後,會將路徑下的所有內容打包。
這樣,我們的第一個鏡像就製作完成了,使用下面的命令執行它:
即可看到~/docker_test/cat/files/test.txt的內容。
5.2 自製web伺服器鏡像
我們使用tornado開發一個網站,而python的官方鏡像是沒有tornado庫的,這就需要在製作鏡像時進行安裝。
測試的ws.py如下:
編寫Dockerfile文件如下:
在此我們驗證一下CMD與ENTRYPOINT的區別。在Dockerfile所在有目錄下執行如下命令:
執行完成後,再使用docker images使用就可以看到生成的鏡像了,然後使用下面的命令運行:
在瀏覽器中輸入宿主機的ip和8000埠,就可以看到頁面了。
在這個例子中,我使用的運行命令是CMD,如果在docker run中指定的其他的命令,此命令就不會被執行,如:
此時,容器中被執行的是python命令,而不是我們的服務。在更多情況下,我們希望在docker run命令中為我們的服務傳參,而不是覆蓋執行命令,那麼,我們應該使用ENTRYPOINT而不是CMD:
上面這種寫法,是不支持傳遞參數的,ENTRYPOINT和CMD還支持另一種寫法:
使用這種寫法,docker run命令中的參數才可以傳遞給hello.py:
這個命令中,--port=9000被作為參數傳遞到hello.py中,因此容器內的埠就成了9000。
在生產環境中運行時,不會使用-it選項,而是使用-d選項,讓容器在後台運行:
這種方式下,即使當前的控制台被關閉,該容器也不會停止。
5.3 自製apscheler服務鏡像
接下來,製作一個使用apscheler編寫的服務鏡像,代碼如下:
Dockerfile也是信手拈來:
生成鏡像:
應該可以運行了,文件復制需要兩個目錄,在運行時,可以使用兩次-v來掛載不同的目錄:
前面用到的官方python鏡像大小足足882MB,在這個基礎上,再安裝用到的第三方庫,添加項目需要的圖片等資源,大小很容易就超過1個G,這么大的鏡像,網路傳給客戶非常的不方便,因此,減小鏡像的體積是非常必要的工作。
docker hub上有個一python:3.8-alpine鏡像,大小隻有44.5MB。之所以小,是因為alpine是一個採用了busybox架構的操作系統,一般用於嵌入式應用。我嘗試使用這個鏡像,發現安裝一般的庫還好,但如果想安裝numpy等就會困難重重,甚至網上都找不到解決方案。
還是很回到基本的路線上來,主流的操作系統鏡像,ubuntu的大小為72.9MB,centos的大小為209MB——這也算是我更喜歡使用ubuntu的一個重要原因吧!使用ubuntu作為基礎鏡像,安裝python後的大小為139MB,再安裝pip後的大小一下子上升到了407MB,要是再安裝點其他東西,很容易就趕上或超過python官方鏡像的大小了。
看來,尋常路線是很難壓縮鏡像文件體積了。幸好,還有一條曲線救國的路可走,這就是多階段構建法。
多階段構建的思想其實很簡單,先構建一個大而全的鏡像,然後只把鏡像中有用的部分拿出來,放在一個新的鏡像里。在我們的場景下,pip只在構建鏡像的過程中需要,而對運行我們的程序卻一點用處也沒有。我們只需要安裝pip,再用pip安裝第三方庫,然後將第三方庫從這個鏡像中復制到一個只有python,沒有pip的鏡像中,這樣,pip佔用的268MB空間就可以被節省出來了。
1、在ubuntu鏡像的基礎上安裝python:
然後運行:
這樣,就生成了python:3.8-ubuntu鏡像。
2、在python:3.8-ubuntu的基礎上安裝pip:
然後運行:
這樣,就生成了python:3.8-ubuntu-pip鏡像。
3、多階段構建目標鏡像:
這個dockerfile需要解釋一下了,因為它有兩個FROM命令。
第一個是以python:3.8-ubuntu-pip鏡像為基礎,安裝numpy,當然,在實際應用中,把所有用到的第三方庫出寫在這里。
第二個FROM是以FROM python:3.8-ubuntu鏡像為基礎,將第三方庫統統復制過來,COPY命令後的–from=0的意思是從第0階段進行復制。實際應用中再從上下文中復製程序代碼,添加需要的ENTRYPOINT等。
最後,再運行:
這然,用於我們項目的鏡像就做好了。比使用官方python鏡像構建的版本,小了大約750MB。
到此,我們的鏡像已經製作好了,可是,鏡像文件在哪,如何在生產環境下運行呢?
剛才使用docker images命令時,已經看到了生成的鏡像:
我們可以使用docker save命令將鏡像保存到指定的文件中,保存的文件是一個.tar格式的壓縮文件:
將hello.tar復制到生產環境的機器上,然後執行導入命令:
就可以使用了。
Ⅱ 如何訪問docker容器的web
需要前目錄建立三文件
1).gitignore
node_moles/*
2)package.json
{
"name": "docker-centos-hello",
"private": true,
"version": "0.0.1",
"description": "Node.js Hello world app on CentOS using docker",
"author": "Daniel Gasienica ",
"dependencies": {
"express": "3.2.4"
}
}
3)server.js
var express = require('express'),
app = express(),
redis = require('redis'),
RedisStore = require('connect-redis')(express),
server = require('http').createServer(app);
app.configure(function() {
app.use(express.cookieParser('keyboard-cat'));
app.use(express.session({
store: new RedisStore({
host: process.env.REDIS_HOST || 'localhost',
port: process.env.REDIS_PORT || 6379,
db: process.env.REDIS_DB || 0
}),
cookie: {
expires: false,
maxAge: 30 * 24 * 60 * 60 * 1000
}
}));
});
app.get('/', function(req, res) {
res.json({
status: "ok"
});
});
var port = process.env.HTTP_PORT || 3000;
server.listen(port);
console.log('Listening on port ' + port);
配置Dockerfile
我需要通Dockerfile配置我docker鏡像
FROM ubuntu:14.04
MAINTAINER zengjinlong
RUN apt-get update
#Install Redis
RUN apt-get -y -qq install python redis-server
RUN apt-get -y -qq install wget
#Install Node
RUN cd /opt && \
wget && \
tar -xzf node-v0.10.33-linux-x64.tar.gz && \
mv node-v0.10.33-linux-x64 node && \
cd /usr/local/bin && \
ln -s /opt/node/bin/* . && \
rm -f /opt/node-v0.10.33-linux-x64.tar.gz
#Set the working directory
WORKDIR /src
j
CMD ["/bin/bash"]
Dockerfile通docker build建立我鏡像
docker build -t minimicall/node_web:0.1 .
需要說明需要靈根據ubuntu真實環境變化間指令例,我第執行候告訴我找python redis-server我想應該我apt 源太out所我加RUN apt-get update.解決問題
我wget候說沒指令我安裝wget.nodejs址我nodejs官網查找所碰問題具體問題具體析
查看我建立鏡像
micall@micall-ThinkPad:~/docker/nodejs_web_app$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
minimicall/node_web 0.1 730770dff17f 6 minutes ago 268.7 MB
centos centos6 70441cac1ed5 2 weeks ago 215.8 MB
ubuntu 14.04 5506de2b643b 4 weeks ago 199.3 MB
啟我鏡像:
sudo docker run -i -t --rm \
> -p 3000:3000 \
> -v `pwd`:/src \
> minimicall/node_web:0.1
候我已經進入鏡像啟容器面
root@d80a2ed6b4c0:/src#
執行列命令
root@d80a2ed6b4c0:/src# npm install --quiet > /dev/null
npm WARN engine [email protected]: wanted: {"node":"<0.9.0"} (current: {"node":"0.10.33","npm":"1.4.28"})
root@d80a2ed6b4c0:/src# npm install -g nodemon --quiet > /dev/null
root@d80a2ed6b4c0:/src# ls
Dockerfile Dockerfile~ index.js~ package.json server.js src
Dockerfile.centos index.js node_moles package.json~ server.js~
root@d80a2ed6b4c0:/src# nodemon server.js
22 Nov 14:37:31 - [nodemon] v1.2.1
22 Nov 14:37:31 - [nodemon] to restart at any time, enter `rs`
22 Nov 14:37:31 - [nodemon] watching: *.*
22 Nov 14:37:31 - [nodemon] starting `node server.js`
Listening on port 3000
候用瀏覽器打:結
{
"status": "ok"
}
Ⅲ 想做Python Web 開發,需要掌握哪些技能
Python的學習內容還是比較多的,我們將學習的過程劃分為4個階段,每個階段學習對應的內容,具體的學習順序如下:
Python學習順序:
①Python軟體開發基礎
掌握計算機的構成和工作原理
會使用Linux常用工具
熟練使用Docker的基本命令
建立Python開發環境,並使用print輸出
使用Python完成字元串的各種操作
使用Python re模塊進行程序設計
使用Python創建文件、訪問、刪除文件
掌握import 語句、From…import 語句、From…import* 語句、方法的引用、Python中的包
能夠使用Python面向對象方法開發軟體
能夠自己建立資料庫,表,並進行基本資料庫操作
掌握非關系資料庫MongoDB的使用,掌握Redis開發
能夠獨立完成TCP/UDP服務端客戶端軟體開發,能夠實現ftp、http伺服器,開發郵件軟體
能開發多進程、多線程軟體
能夠獨立完成後端軟體開發,深入理解Python開發後端的精髓
能夠獨立完成前端軟體開發,並和後端結合,熟練掌握使用Python進行全站Web開發的技巧
能夠使用Python熟練編寫爬蟲軟體
能夠熟練使用Python庫進行數據分析
招聘網站Python招聘職位數據爬取分析
掌握使用Python開源人工智慧框架進行人工智慧軟體開發、語音識別、人臉識別
掌握基本設計模式、常用演算法
掌握軟體工程、項目管理、項目文檔、軟體測試調優的基本方法
②Python軟體開發進階
③Python全棧式WEB工程師
④Python多領域開發
互聯網行業目前還是最熱門的行業之一,學習IT技能之後足夠優秀是有機會進入騰訊、阿里、網易等互聯網大廠高薪就業的,發展前景非常好,普通人也可以學習。
想要系統學習,你可以考察對比一下開設有相關專業的熱門學校,好的學校擁有根據當下企業需求自主研發課程的能力,中博軟體學院、南京課工場、南京北大青鳥等開設python專業的學校都是不錯的,建議實地考察對比一下。
祝你學有所成,望採納。
Ⅳ 請問怎麼學習Python
這里整理了一份Python開發的學習路線,可按照這份大綱來安排學習計劃~
第一階段:專業核心基礎
階段目標:
1. 熟練掌握Python的開發環境與編程核心知識
2. 熟練運用Python面向對象知識進行程序開發
3. 對Python的核心庫和組件有深入理解
4. 熟練應用SQL語句進行資料庫常用操作
5. 熟練運用Linux操作系統命令及環境配置
6. 熟練使用MySQL,掌握資料庫高級操作
7. 能綜合運用所學知識完成項目
知識點:
Python編程基礎、Python面向對象、Python高級進階、MySQL資料庫、Linux操作系統。
1、Python編程基礎,語法規則,函數與參數,數據類型,模塊與包,文件IO,培養扎實的Python編程基本功,同時對Python核心對象和庫的編程有熟練的運用。
2、Python面向對象,核心對象,異常處理,多線程,網路編程,深入理解面向對象編程,異常處理機制,多線程原理,網路協議知識,並熟練運用於項目中。
3、類的原理,MetaClass,下劃線的特殊方法,遞歸,魔術方法,反射,迭代器,裝飾器,UnitTest,Mock。深入理解面向對象底層原理,掌握Python開發高級進階技術,理解單元測試技術。
4、資料庫知識,範式,MySQL配置,命令,建庫建表,數據的增刪改查,約束,視圖,存儲過程,函數,觸發器,事務,游標,PDBC,深入理解資料庫管理系統通用知識及MySQL資料庫的使用與管理。為Python後台開發打下堅實基礎。
5、Linux安裝配置,文件目錄操作,VI命令,管理,用戶與許可權,環境配置,Docker,Shell編程Linux作為一個主流的伺服器操作系統,是每一個開發工程師必須掌握的重點技術,並且能夠熟練運用。
第二階段:PythonWEB開發
階段目標:
1. 熟練掌握Web前端開發技術,HTML,CSS,JavaScript及前端框架
2. 深入理解Web系統中的前後端交互過程與通信協議
3. 熟練運用Web前端和Django和Flask等主流框架完成Web系統開發
4. 深入理解網路協議,分布式,PDBC,AJAX,JSON等知識
5. 能夠運用所學知識開發一個MiniWeb框架,掌握框架實現原理
6. 使用Web開發框架實現貫穿項目
知識點:
Web前端編程、Web前端高級、Django開發框架、Flask開發框架、Web開發項目實戰。
1、Web頁面元素,布局,CSS樣式,盒模型,JavaScript,JQuery與Bootstrap掌握前端開發技術,掌握JQuery與BootStrap前端開發框架,完成頁面布局與美化。
2、前端開發框架Vue,JSON數據,網路通信協議,Web伺服器與前端交互熟練使用Vue框架,深入理解HTTP網路協議,熟練使用Swagger,AJAX技術實現前後端交互。
3、自定義Web開發框架,Django框架的基本使用,Model屬性及後端配置,Cookie與Session,模板Templates,ORM數據模型,Redis二級緩存,RESTful,MVC模型掌握Django框架常用API,整合前端技術,開發完整的WEB系統和框架。
4、Flask安裝配置,App對象的初始化和配置,視圖函數的路由,Request對象,Abort函數,自定義錯誤,視圖函數的返回值,Flask上下文和請求鉤子,模板,資料庫擴展包Flask-Sqlalchemy,資料庫遷移擴展包Flask-Migrate,郵件擴展包Flask-Mail。掌握Flask框架的常用API,與Django框架的異同,並能獨立開發完整的WEB系統開發。
第三階段:爬蟲與數據分析
階段目標:
1. 熟練掌握爬蟲運行原理及常見網路抓包工具使用,能夠對HTTP及HTTPS協議進行抓包分析
2. 熟練掌握各種常見的網頁結構解析庫對抓取結果進行解析和提取
3. 熟練掌握各種常見反爬機制及應對策略,能夠針對常見的反爬措施進行處理
4. 熟練使用商業爬蟲框架Scrapy編寫大型網路爬蟲進行分布式內容爬取
5. 熟練掌握數據分析相關概念及工作流程
6. 熟練掌握主流數據分析工具Numpy、Pandas和Matplotlib的使用
7. 熟練掌握數據清洗、整理、格式轉換、數據分析報告編寫
8. 能夠綜合利用爬蟲爬取豆瓣網電影評論數據並完成數據分析全流程項目實戰
知識點:
網路爬蟲開發、數據分析之Numpy、數據分析之Pandas。
1、爬蟲頁面爬取原理、爬取流程、頁面解析工具LXML,Beautifulfoup,正則表達式,代理池編寫和架構、常見反爬措施及解決方案、爬蟲框架結構、商業爬蟲框架Scrapy,基於對爬蟲爬取原理、網站數據爬取流程及網路協議的分析和了解,掌握網頁解析工具的使用,能夠靈活應對大部分網站的反爬策略,具備獨立完成爬蟲框架的編寫能力和熟練應用大型商業爬蟲框架編寫分布式爬蟲的能力。
2、Numpy中的ndarray數據結構特點、numpy所支持的數據類型、自帶的數組創建方法、算術運算符、矩陣積、自增和自減、通用函數和聚合函數、切片索引、ndarray的向量化和廣播機制,熟悉數據分析三大利器之一Numpy的常見使用,熟悉ndarray數據結構的特點和常見操作,掌握針對不同維度的ndarray數組的分片、索引、矩陣運算等操作。
3、Pandas裡面的三大數據結構,包括Dataframe、Series和Index對象的基本概念和使用,索引對象的更換及刪除索引、算術和數據對齊方法,數據清洗和數據規整、結構轉換,熟悉數據分析三大利器之一Pandas的常見使用,熟悉Pandas中三大數據對象的使用方法,能夠使用Pandas完成數據分析中最重要的數據清洗、格式轉換和數據規整工作、Pandas對文件的讀取和操作方法。
4、matplotlib三層結構體系、各種常見圖表類型折線圖、柱狀圖、堆積柱狀圖、餅圖的繪制、圖例、文本、標線的添加、可視化文件的保存,熟悉數據分析三大利器之一Matplotlib的常見使用,熟悉Matplotlib的三層結構,能夠熟練使用Matplotlib繪制各種常見的數據分析圖表。能夠綜合利用課程中所講的各種數據分析和可視化工具完成股票市場數據分析和預測、共享單車用戶群里數據分析、全球幸福指數數據分析等項目的全程實戰。
第四階段:機器學習與人工智慧
階段目標:
1. 理解機器學習相關的基本概念及系統處理流程
2. 能夠熟練應用各種常見的機器學習模型解決監督學習和非監督學習訓練和測試問題,解決回歸、分類問題
3. 熟練掌握常見的分類演算法和回歸演算法模型,如KNN、決策樹、隨機森林、K-Means等
4. 掌握卷積神經網路對圖像識別、自然語言識別問題的處理方式,熟悉深度學習框架TF裡面的張量、會話、梯度優化模型等
5. 掌握深度學習卷積神經網路運行機制,能夠自定義卷積層、池化層、FC層完成圖像識別、手寫字體識別、驗證碼識別等常規深度學習實戰項目
知識點:
1、機器學習常見演算法、sklearn數據集的使用、字典特徵抽取、文本特徵抽取、歸一化、標准化、數據主成分分析PCA、KNN演算法、決策樹模型、隨機森林、線性回歸及邏輯回歸模型和演算法。熟悉機器學習相關基礎概念,熟練掌握機器學習基本工作流程,熟悉特徵工程、能夠使用各種常見機器學習演算法模型解決分類、回歸、聚類等問題。
2、Tensorflow相關的基本概念,TF數據流圖、會話、張量、tensorboard可視化、張量修改、TF文件讀取、tensorflow playround使用、神經網路結構、卷積計算、激活函數計算、池化層設計,掌握機器學習和深度學習之前的區別和練習,熟練掌握深度學習基本工作流程,熟練掌握神經網路的結構層次及特點,掌握張量、圖結構、OP對象等的使用,熟悉輸入層、卷積層、池化層和全連接層的設計,完成驗證碼識別、圖像識別、手寫輸入識別等常見深度學習項目全程實戰。