iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 4
2
AI & Data

Python零基礎到Kaggle 系列 第 4

Python零基礎到kaggle-Day3

  • 分享至 

  • xImage
  •  

今日目標

今天來大概認識一下那些Python套件跟人工智慧是做什麼的
注意:這篇文章可以當名詞解釋,可以大略看過一遍,需要的時候再搜尋就可以囉

看完文章您將學到什麼

對Python套件們跟人工智慧大框架有初步理解

內文

由於Python套件實在太多,我們也沒必要一次全弄懂,所以我列出Python撰寫相關套件,大家也可以選有興趣的部分練習

Python從1991年開始蓬勃發展,在各領域都有它的蹤跡

數據搜集: BeautifulSoup, Scrapy...
網頁自動化,操控瀏覽器, 爬蟲: Selenium, Splinter, Requests, Lxml...
數據清理跟操作: Numpy, Scipy, Sympy, Pandas...
視覺化: Matplotlib, Seaborn, Plotly, Ggplot, Bokeh, Datashader, HoloViews, Cufflinks...
建模: Scikit-learn, TensorFlow, PyTorch, H2O.AI...
音訊處理: Librosa, Madmom, pyAudioAnalysis...
圖像處理: OpenCV-Python, Scikit-image, Pillow, SimpleITK, Mahotas...
圖片識別: Pytesseract...
資料庫: Psycopg, SQLAlchemy...
地圖應用: Folium...
網頁: Dijango, Flask, Dash, Web2Py, Bottle, CherryPy...
控制電腦: Pyautogui...
電子郵件模組: Smtplib...
編輯器: Spyder, Pycharm...
視窗化: Tkinter(單純視窗化), PyQt5(複雜視窗化), WxPython(介於前兩者視窗化), PySimpleGui, PySide2...
寫遊戲: Pygame, Pyglet, Panda3d, PyKyra, PyOpenGL...
寫APP: Kivy...
量子計算:Qiskit, QuTip...
自然語言處理: Nltk...
生物信息: Biopython...
天文學: Astropy...
Python2,3兼容包: Six, 2to3...
日期處理: Python-dateutil, Pytz...
Gradient boosting庫: XGBoost(之後章節會說明)...
監視進度: Tqdm...
編譯器: Numba...
平行計算: Dask...
包成exe: Pyinstaller...
DevOps工具: Ansible, Salt...

2020/5/15 更新
更詳細的可以參考:https://github.com/vinta/awesome-python
2021/8/15 更新
官網也很推:https://www.python.org/about/apps/

我們已經用過Anaconda,他包含的sklearn著重在機器學習:

Anaconda

Python 懶人包,包含上述套件, numpy, pandas…
含有機器學習套件Scikit-learn,編輯器Spyder,套件管理anaconda-navigator…

Scikit-learn(sklearn)

Python機器學習庫,包含六部分

  • 分類(Classification)
  • 回歸(Regression)
  • 分群(Clustering)
  • 降低維度(Dimensionality Reduction)
  • 模型選擇(Model Selection)
  • 前處理(Preprocess)

包含python機器學習的models跟整理好的資料集

Pytorch

由Facebook維護,跟Google的Tensorflow打對台的深度學習框架

框架演進

Caffee(UC Berkeley) -> Caffee2(Facebook)
Torch(NYU/Facebook) -> Pytorch(Facebook)
Theano(U Montreal) -> TensorFlow(Google)
Paddle(Baidu)
CNTK(Microsoft)
MXNet(Amazon)
Chainer(Preferred Networks)

深度學習

可以用Tensorflow, Keras(Tensorflow2), Chainer或Pytorch還有Mxnet

機器學習框架:Sklearn, XGBoost…
深度學習第一代框架: Caffe(機器視覺常用), Torch(Lua), Theano(上手快)…
深度學習第二代框架: TensorFlow(有高階 API Keras:Google,易用), CNTK, Caffe2, MXNet(輕量,可移植), Paddle…
深度學習第三代框架: 命令式深度學習框架:PyTorch(Python,GPU加速), MXNet 的Gluon API, TensorFlow2…
不過這些都是之後的事了,現在只要知道他們都是拿來寫Python的

而有幾個套件是我們一定會用到,要特別留意的

Numpy: 矩陣,線性代數,傅立葉轉換
SciPy: 為了實現matlab所有功能,建構在 NumPy 函式庫上
SymPy: SciPy 當中用來做符號運算的函式庫,可以用來計算微分、積分等等運算式
Pandas: 資料分析,建模,表格處理,裡面資料都像關聯式資料表形式
Matplotlib: 資料視覺化,也可以用seaborn繪製更精美的圖

反思回顧

Python包山包海,我想大家現在一定很亂吧,應用面太雜了,那我們跳脫應用面,從更直觀的方向出發吧

機器學習策略

零樣本學習(Zero-Shot Learning)

解決未知分類問題,不需訓練就能分類
https://zhuanlan.zhihu.com/p/139946395

監督式 (Supervised Learning)

給出資料跟標記,讓機器學習他們關係

非監督式 (Unsupervised Learning)

資料都沒標記的情況,目的把相似的聚在一起

半監督式 (Semi-Supervised Learning)

資料只有部分標記的情況,混合監督與非監督

自監督式(Self Supervised Learning)

不需要標籤,用現成訓練好模型預訓練,再微調,快速套用到目標任務,與半監督,遷移學習相關

終生機器學習(Lifelong Learning)

模仿人類學習,一個模型能處理不同task

元學習(Meta Learning)

學習如何學習,在以上各方法前做預處理

專有名詞介紹

統計(Statics)

用資料推些未知結果

資料探勘(Data Mining)

從大量資料找到有用的資訊

資料科學 (Data Science)

用資料來分析都可以叫資料科學

計算機視覺(Computer Vision, CV)

目的是對電腦編程,使其可以理解圖像中的特徵或場景,計算機視覺同圖像處理,機器學習有很多共同的主題

自然語言處理(Natural Language Processing, NLP)

是人工智慧和語言學領域的分支學科。此領域探討如何處理及運用自然語言;自然語言處理包括多方面和步驟,基本有認知、理解、生成等部分

人工智慧(Artificial Intelligence)

從大量資料讓電腦有看起來像人(有智慧)的反應
強人工智慧:真正具有知覺,自我意識
弱人工智慧:透過數據規則或其他方式看起來有智慧

機器學習(Machine Learning)

人工智慧的子集
不用明確撰寫程式規則,從過往資料(經驗)學習到其運算規則
討論各式不同函數與如何使用數據有效獲取函數參數的學科

聯邦機器學習(Federated machine learning/Federated Learning),聯邦學習,聯合學習,聯盟學習

機器學習框架,能有效幫助多個機構在滿足用戶隱私保護、數據安全和政府法規的要求下,進行數據使用和機器學習建模

人工神經網路(Artifical Neural Network)

機器學習的子集
分成輸入,隱藏,輸出三層,也稱2 layer NN,輸入層是第0層
各層間以激勵函式活化神經元

神經網絡 (Neural Network)

受生物啟發,它可以使電腦從觀測數據中學習
通過反向傳播算法用梯度下降訓練
主要是監督式學習
非監督學習演算法

深度神經網路 (Deep Neural Network)

隱藏層大於2以上的神經網路叫深度神經網路

深度學習 (Deep Learning)

機器學習的子集
它使用了多層次的非線性信息處理和抽象,用於有監督或無監督的特徵學習、表示、分類和模式識別
用深度神經網路做機器學習的方法叫深度學習
有特徵,缺乏反饋
深度學習是具有多級表示的表征學習方法(Representation Learning 如何自動找出表示數據的合適方式,以便更好地將輸入變換為正確的輸出)
一種實現機器學習的技術
神經網路隱藏層大於2稱為深度
機器學習的一類函數,通常為多層神經網路

強化學習 (Reinforcement Learning)

有反饋,缺乏適應
機器在一個環境中可以選擇執行幾個動作,不同的動作會影響這個還境,結果(獎勵或懲罰)會回饋給機器,機器會一直往結果好的地方持續校正

遷移學習 (Transfer Learning)

有適應
把已學訓練好的模型參數遷移到新的模型來幫助新模型訓練數據集
將學習到的應用到目標領域解決深度學習耗時問題,能解決小數據或個性化問題

由於範圍太廣,所以我把範圍縮小到Python到kaggle,而在這最重要的是先知道整個進程由廣到深是
主軸: 人工智慧-機器學習/聯邦機器學習-人工神經網路-深度學習-強化學習-遷移學習
支線: 計算機視覺(Computer Vision, CV),自然語言處理(Natural Language Processing, NLP)

參考資料

Numpy, Pandas 可以從這邊下載下來練習
https://github.com/eric999j/Udemy_Python_Hand_On
https://zh.wikipedia.org/wiki/Category:计算机视觉
https://zh.wikipedia.org/wiki/自然语言处理
https://mp.weixin.qq.com/s/sVts810Hyc-EqQj7JKHDMQ


上一篇
Python零基礎到kaggle-Day2
下一篇
Python零基礎到kaggle-Day4
系列文
Python零基礎到Kaggle 31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言