python第九章,計算生態概念
1,從資料處理到人工智慧。
資料表示 ->資料清洗->資料統計->資料視覺化->資料探勘->人工智慧
資料表示:採用合適方式用程式表達資料。
資料清理:資料歸一化,資料轉換,異常值處理。
資料統計:資料的概要理解,數量。分佈。中位數等。
資料視覺化:直觀展示資料內涵的方式。
資料探勘:從資料分析獲得知識,產生資料外的價值。
人工智慧:資料/語言/影象/視覺等方面深度分析與決策。
python庫之資料分析:
Numpy:表達n維陣列的最基礎庫,
- python介面使用,C語言實現,計算速度優異
- python資料分析及科學計算的基礎庫,支撐pandas等
- 提供直接的矩陣運算,廣播函式,線性代數等功能
- http://www.numpy.org
pandas:python資料分析高層次應用庫
- 提供了簡單易用的資料結構和資料分析工具
- 理解資料型別與索引的關係,操作索引即操作資料
- python最主要的資料分析功能庫,基於numpy開發
- http://pandas.pydata.org
SciPY:數學,科學和工程計算功能庫
- 提供了一批數學演算法及工程資料運算功能
- 類似Matlab,可用於如傅立葉變換,訊號處理等應用
- python最主要的科學計算功能庫,基於numpy開發
- http://www.scipy.org
python庫之資料視覺化:
Matplotlib
- 提供了超過一百種資料視覺化展示效果
- 通過matplotlib.pyplot子庫呼叫哥視覺化效果
- python最主要的資料視覺化功能庫,基於Numpy開發
- http://matolotilb.org
Seaborn:統計類資料視覺化功能庫
- 提供了一批高層次的統計類資料視覺化展示效果
- 主要展示資料間分佈,分類和線性關係等內容
- 基於Matplotlib開發,支援Numpy和pandas
- http://seaborn.pydata.org/
Mayavi:三維科學資料視覺化功能庫
- 提供了一批簡單易用的3D科學計算資料視覺化展示效果
- 目前版本是Mayavi2,三維視覺化最主要的第三方庫
- 支援Numpy,TVTK,Traits,Envisage等第三方庫
- http://docs.enthought.com/mayavi/mayavi/
python庫之文字處理
PyPDF2:用來處理pdf檔案的工具集
- 提供了一批處理PDF檔案的計算功能
- 支援獲取資訊,分割/整合檔案,加密解密等
- 完全python語言實現,不需要額外依賴,功能穩定
- http://mstamy2.githup.io/PyPDF2
NLTK:自然語言文字處理第三方庫:
- 提供了一批簡單用的自然語言文字處理功能
- 支援語言文字分類,標記,語法句法,語法分析等
- 最優秀的Python自然語言處理庫
- http://www.nltk.nltk.org/
python-docx:建立或更新Microsoft Word檔案的第三方庫
- 提供建立或更新.dox .docx等檔案的計算功能
- 增加並配置段落,圖片,表格,文字等,功能全面
- http://python-docx.readthedocs.io/en/latest/index.html
python庫之機器學習
Scikit-learn:機器學習方法工具集
- 提供一批統一的機器學習方法功能介面
- 提供聚類,分類,迴歸,強化學習等計算功能
- 機器學習最基本且最優秀的python第三方庫
- http://scikit-learn.org/
TensorFlow :AlphaGo背後的機器學習計算框架
- 谷歌公司推動的開源機器學習框架
- 將資料流圖作為基礎,圖節點代表運算,邊代表張量
- 應用機器學習方法的一種方式,支撐谷歌人工智慧應用
- http://www.tensorflow.org/
NXNet:基於神經網路的深度學習計算框架
- 提供可擴充套件的神經網路及深度學習計算功能
- 可用於自動駕駛,機器翻譯,語音識別等眾多領域
- https://mxnet.incubator.apache.org/
霍蘭德人格分析雷達圖
#HollandRadarDraw
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='SimHei'
radar_labels = np.array(['研究型(I)','藝術型(A)','社會型(S)',\
'企業型(E)','常規型(C)','現實型(R)']) #雷達標籤
nAttr = 6
data = np.array([[0.40, 0.32, 0.35, 0.30, 0.30, 0.88],
[0.85, 0.35, 0.30, 0.40, 0.40, 0.30],
[0.43, 0.89, 0.30, 0.28, 0.22, 0.30],
[0.30, 0.25, 0.48, 0.85, 0.45, 0.40],
[0.20, 0.38, 0.87, 0.45, 0.32, 0.28],
[0.34, 0.31, 0.38, 0.40, 0.92, 0.28]]) #資料值
data_labels = ('藝術家', '實驗員', '工程師', '推銷員', '社會工作者','記事員')
angles = np.linspace(0, 2*np.pi, nAttr, endpoint=False)
data = np.concatenate((data, [data[0]]))
angles = np.concatenate((angles, [angles[0]]))
fig = plt.figure(facecolor="white")
plt.subplot(111, polar=True)
plt.plot(angles,data,'o-', linewidth=1, alpha=0.2)
plt.fill(angles,data, alpha=0.25)
plt.thetagrids(angles*180/np.pi, radar_labels,frac = 1.2)
plt.figtext(0.52, 0.95, '霍蘭德人格分析', ha='center', size=20)
legend = plt.legend(data_labels, loc=(0.94, 0.80), labelspacing=0.1)
plt.setp(legend.get_texts(), fontsize='large')
plt.grid(True)
plt.savefig('holland_radar.jpg')
plt.show()
從Web解析到網路空間:
python庫之網路爬蟲:
Requests:最友好的網路爬蟲功能庫
- 提供了簡單易用的類HTTP協議網路爬蟲功能
- 支援連線池,SSL,Cookies,HTTP(s)代理等
- python最主要的頁面級網路爬蟲功能庫
- http://www.python-requests.org/
Scrapy:優秀的網路爬蟲框架
- 提供了構建網路爬蟲和定時網頁爬取,提供資料處理流程等
- 支援批量和定時網頁爬取,提供資料處理流程等
- python最主要且最專業的網路爬蟲框架
- https://scrapy.org
pyspider:強大的Web頁面爬取系統
- 提供了完整的網頁爬取系統構建功能
- 支援資料庫後端,訊息佇列,優先順序。分散式架構等
- python重要的網路爬蟲類第三方庫
- http://docs.pyspider.org
python庫Web資訊提取
beautiful Soup:HTML和XML的解析庫
- 提供瞭解析HTML和XML等Web資訊的功能
- 又名beauitfulsoup4或bs4,可以載入多種解析引擎
- 常與網路爬蟲庫搭配使用,如Scrapy,requests等。
Re:正則表示式解析和處理功能庫
- 提供了定義與解析正則表示式的一批通用功能
- 可用於各類場景,包括定點的Web資訊提取
- python最主要的標準庫之一,無需安裝
- https://docs.python.org/3.6/library/re.html
Python-Goose:提取文章型別Web頁面的功能庫
- 提供了對Web頁面中文章資訊/視訊等元資料的提取功能
- 針對特定型別Web頁面,應用覆蓋面較廣
- Python最主要的Web資訊提取庫
- https://github.com/grangier/python-goose
Python庫之Web網站開發
Diango:最流行的Web應用框架
- 提供了構建Web系統的基本應用框架
- MTV模式:構建(model)模板(Template)檢視(Views)
- Python最重要的Web應用框架,略微複雜的應用框架
- https://www.djangoproject.com
Pyramid:規模適中的Web應用框架
- 提供了簡單方便構建Web系統的應用框架
- 不大不小,規模適中,適合快速構建並適度擴充套件類應用
- python產品級Web應用框架,起步簡單可擴充套件性好
- https://trypyramid.com
Flask Web應用開發微框架
- 提供了最簡單構建Web系統的應用框架
- 特點是:簡單,規模小。快速
- Django > Pyramid > Flask
- http://flask.pocoo.org
python庫之網路應用開發
WeRoBot:微信公眾號開發框架
- 提供瞭解析微信伺服器及反饋訊息的功能
- 建立微信機器人的重要技術手段
- https://github.com/offu/WeRoBot
aip:百度AI開放平臺介面
- 語音,人臉,OCR,NLP,知識圖譜,影象搜尋等領域
- Python百度AI應用的最主要方式
- https://github.com/Baidu-AIP/python-sdk
MyQR:二維碼生成第三方庫
- 提供了生成二維碼的系列功能
- 基本二維碼,藝術二維碼和動態二維碼
- https://github.com/sylnsfar/qrcode
從人機互動到藝術設計
PyQt5:Qt開發框架的PYthon介面
- 提供了建立Qt5程式的Python API介面
- Qt是非常成熟的跨平臺桌面應用開發系統,完備GUI
- 推薦的Python GUI開發第三方庫
- https://www.riverbankcomputing.com/software/pyqt
wxPython:跨平臺GUI開發框架
- 提供了專用Python的跨平臺GUI開發框架
- 理解資料型別與索引的關係,操作索引即操作資料
- Python最主要的資料分析功能庫,基於NUmpy開發
- https://www.wxpython.org
PyGObject:使用GTK+開發GUI的功能庫
- 提供了整合GTK+,WebKitGTK+等庫的功能
- GTK+:跨平臺的一種使用者圖形介面GUI框架
- 例項:Anaconda採用該庫構建GUI
- https://pygobject.readthedocs.io
Python庫之遊戲開發
PyGame:簡單的遊戲開發功能庫
- 提供了基於SDL的簡單遊戲開發功能及實現引擎
- 理解遊戲對外部輸入的響應機制及角色構建和互動機制
- Python遊戲入門最主要的第三方庫
- http://www.pygame.org
Panda3D:開源,跨平臺的3D渲染和遊戲開發庫
- 一個3D遊戲引擎,提供Python和C++兩種介面
- 支援很多先進特性,發現貼圈,光澤貼圓,卡通渲染等
- 由迪士尼和卡尼集梅隆大學共同開發
- http://www.panda3d.org
cocos2d:構建2D遊戲 和圖形介面互動式應用的框架
- 提供了基於OpenGL的遊戲開發圖形渲染功能
- 支援GPU加速,採用樹形結構分層管理遊戲物件型別
- 適用與2D專業級遊戲開發
- http://python.cocos2d.org/
Python庫之虛擬現實
- VR Zero: 在樹莓派上開發VR應用的Python庫
- 提供大量與VR開發相關的功能
- 針對樹莓派的VR開發庫,支援裝置小型化,配置簡單化
- 非常適合初學者實踐VR開發及應用
- https://github.com/WayneKeenan/Python-vrzero
provr:Oculus Rift的Python開發庫
- 基於成熟的VR裝置,提供全套文件,工業級應用裝置
- Python+虛擬現實領域探索的一種思路
- https://github.com/cmbruns/pyovr
Vizard:基於Python的通用VR開發引擎
- 專業的企業級虛擬現實開發引擎
- 提供詳細的官方文件
- 支援多種主流的VR硬體裝置,具有一定通用性
- http://www.worldviz.com/vizard-virtual-reality-software
python庫之圖形藝術
Quads:迭代的藝術
- 對圖片進行四分迭代,形成畫素風
- 可以生成動圖或靜圖影象
- 簡單易用,具有很高展示度
- https://github.com/fogleman/Quads
ascill_art:ASCII藝術庫
- 將普通圖片轉為ASCII藝術風格
- 輸出可以是純文字或彩色文字
- 可採用圖片格式輸出
- https://docs.python.org/3/library/turtle.html
玫瑰花繪製
#RoseDraw.py
import turtle as t
# 定義一個曲線繪製函式
def DegreeCurve(n, r, d=1):
for i in range(n):
t.left(d)
t.circle(r, abs(d))
# 初始位置設定
s = 0.2 # size
t.setup(450*5*s, 750*5*s)
t.pencolor("black")
t.fillcolor("red")
t.speed(100)
t.penup()
t.goto(0, 900*s)
t.pendown()
# 繪製花朵形狀
t.begin_fill()
t.circle(200*s,30)
DegreeCurve(60, 50*s)
t.circle(200*s,30)
DegreeCurve(4, 100*s)
t.circle(200*s,50)
DegreeCurve(50, 50*s)
t.circle(350*s,65)
DegreeCurve(40, 70*s)
t.circle(150*s,50)
DegreeCurve(20, 50*s, -1)
t.circle(400*s,60)
DegreeCurve(18, 50*s)
t.fd(250*s)
t.right(150)
t.circle(-500*s,12)
t.left(140)
t.circle(550*s,110)
t.left(27)
t.circle(650*s,100)
t.left(130)
t.circle(-300*s,20)
t.right(123)
t.circle(220*s,57)
t.end_fill()
# 繪製花枝形狀
t.left(120)
t.fd(280*s)
t.left(115)
t.circle(300*s,33)
t.left(180)
t.circle(-300*s,33)
DegreeCurve(70, 225*s, -1)
t.circle(350*s,104)
t.left(90)
t.circle(200*s,105)
t.circle(-500*s,63)
t.penup()
t.goto(170*s,-30*s)
t.pendown()
t.left(160)
DegreeCurve(20, 2500*s)
DegreeCurve(220, 250*s, -1)
# 繪製一個綠色葉子
t.fillcolor('green')
t.penup()
t.goto(670*s,-180*s)
t.pendown()
t.right(140)
t.begin_fill()
t.circle(300*s,120)
t.left(60)
t.circle(300*s,120)
t.end_fill()
t.penup()
t.goto(180*s,-550*s)
t.pendown()
t.right(85)
t.circle(600*s,40)
# 繪製另一個綠色葉子
t.penup()
t.goto(-150*s,-1000*s)
t.pendown()
t.begin_fill()
t.rt(120)
t.circle(300*s,115)
t.left(75)
t.circle(300*s,100)
t.end_fill()
t.penup()
t.goto(430*s,-1070*s)
t.pendown()
t.right(30)
t.circle(-600*s,35)
t.done()