【機器學習】嘿馬機器學習(科學計算庫)第5篇:Matplotlib,學習目標【附代碼文檔】

本教程的知識點為:機器學習(常用科學計算庫的使用)基礎定位 機器學習概述 機器學習概述 1.5 機器學習算法分類 1 監(jiān)督學習 機器學習概述 1.7 Azure機器學習模型搭建實驗 Azure平臺簡介 Matplotlib 3.2 基礎繪圖功能 — 以折線圖為例 1 完善原始折線圖 — 給圖形添加輔助功能 Matplotlib 3.3 常見圖形繪制 1 常見圖形種類及意義 Numpy 4.2 N維數(shù)組-ndarray 1 ndarray的屬性 Numpy 4.4 ndarray運算 問題 Pandas 5.1Pandas介紹 1 Pandas介紹 Pandas 5.3 基本數(shù)據(jù)操作 1 索引操作 Pandas 5.6 文件讀取與存儲 1 CSV Pandas 5.8 高級處理-數(shù)據(jù)離散化 1 為什么要離散化 Pandas 5.12 案例 1 需求

完整筆記資料代碼->:https://gitee.com/yinuo112/AI/tree/master/機器學習/嘿馬機器學習(科學計算庫)/note.md

感興趣的小伙伴可以自取哦~


全套教程部分目錄:


部分文件圖片:

Matplotlib

學習目標

  • 應用Matplotlib的基本功能實現(xiàn)圖形顯示
  • 應用Matplotlib實現(xiàn)多圖顯示
  • 應用Matplotlib實現(xiàn)不同畫圖種類

3.3 常見圖形繪制

學習目標

  • 目標

    • 掌握常見統(tǒng)計圖及其意義

Matplotlib能夠繪制折線圖干跛、散點圖、柱狀圖、直方圖沽一、餅圖郁岩。

我們需要知道不同的統(tǒng)計圖的意義卸亮,以此來決定選擇哪種統(tǒng)計圖來呈現(xiàn)我們的數(shù)據(jù)。

1 常見圖形種類及意義

  • 折線圖:以折線的上升或下降來表示統(tǒng)計數(shù)量的增減變化的統(tǒng)計圖

特點:能夠顯示數(shù)據(jù)的變化趨勢倚舀,反映事物的變化情況细睡。(變化)

api:plt.plot(x, y)

  • 散點圖:用兩組數(shù)據(jù)構成多個坐標點谷羞,考察坐標點的分布,判斷兩變量之間是否存在某種關聯(lián)或總結坐標點的分布模式。

特點:判斷變量之間是否存在數(shù)量關聯(lián)趨勢,展示離群點(分布規(guī)律)

api:plt.scatter(x, y)

  • 柱狀圖:排列在工作表的列或行中的數(shù)據(jù)可以繪制到柱狀圖中溜徙。

特點:繪制連離散的數(shù)據(jù),能夠一眼看出各個數(shù)據(jù)的大小,比較數(shù)據(jù)之間的差別洒宝。(統(tǒng)計/對比)

api:plt.bar(x, width, align='center', **kwargs)

Parameters:    
x : 需要傳遞的數(shù)據(jù)

width : 柱狀圖的寬度

align : 每個柱狀圖的位置對齊方式
    {‘center’, ‘edge’}, optional, default: ‘center’

**kwargs :
color:選擇柱狀圖的顏色
  • 直方圖:由一系列高度不等的縱向條紋或線段表示數(shù)據(jù)分布的情況。 一般用橫軸表示數(shù)據(jù)范圍萌京,縱軸表示分布情況雁歌。

特點:繪制連續(xù)性的數(shù)據(jù)展示一組或者多組數(shù)據(jù)的分布狀況(統(tǒng)計)

api:matplotlib.pyplot.hist(x, bins=None)

Parameters:    
x : 需要傳遞的數(shù)據(jù)
bins : 組距
  • 餅圖:用于表示不同分類的占比情況,通過弧度大小來對比各種分類知残。

特點:分類數(shù)據(jù)的占比情況(占比)

api:plt.pie(x, labels=,autopct=,colors)

Parameters:  
x:數(shù)量靠瞎,自動算百分比
labels:每部分名稱
autopct:占比顯示指定%1.2f%%
colors:每部分顏色

2 散點圖繪制

需求:探究房屋面積和房屋價格的關系

房屋面積數(shù)據(jù):

x = [225.98, 247.07, 253.14, 457.85, 241.58, 301.01,  20.67, 288.64,
       163.56, 120.06, 207.83, 342.75, 147.9 ,  53.06, 224.72,  29.51,
        21.61, 483.21, 245.25, 399.25, 343.35]

房屋價格數(shù)據(jù):

y = [196.63, 203.88, 210.75, 372.74, 202.41, 247.61,  24.9 , 239.34,
       140.32, 104.15, 176.84, 288.23, 128.79,  49.64, 191.74,  33.1 ,
        30.74, 400.02, 205.35, 330.64, 283.45]

代碼:

  
  
# 0.準備數(shù)據(jù)
  
  
x = [225.98, 247.07, 253.14, 457.85, 241.58, 301.01,  20.67, 288.64,
       163.56, 120.06, 207.83, 342.75, 147.9 ,  53.06, 224.72,  29.51,
        21.61, 483.21, 245.25, 399.25, 343.35]
y = [196.63, 203.88, 210.75, 372.74, 202.41, 247.61,  24.9 , 239.34,
       140.32, 104.15, 176.84, 288.23, 128.79,  49.64, 191.74,  33.1 ,
        30.74, 400.02, 205.35, 330.64, 283.45]

  
  
# 1.創(chuàng)建畫布
  
  
plt.figure(figsize=(20, 8), dpi=100)

  
  
# 2.繪制散點圖
  
  
plt.scatter(x, y)

  
  
# 3.顯示圖像
  
  
plt.show()

3 柱狀圖繪制

需求-對比每部電影的票房收入

電影數(shù)據(jù)如下圖所示:

電影票房數(shù)據(jù)
  • 準備數(shù)據(jù)
['雷神3:諸神黃昏','正義聯(lián)盟','東方快車謀殺案','尋夢環(huán)游記','全球風暴', '降魔傳','追捕','七十七天','密戰(zhàn)','狂獸','其它']
[73853,57767,22354,15969,14839,8725,8716,8318,7916,6764,52222]
  • 繪制柱狀圖

代碼:

  
  
# 0.準備數(shù)據(jù)
  
  
  
  
# 電影名字
  
  
movie_name = ['雷神3:諸神黃昏','正義聯(lián)盟','東方快車謀殺案','尋夢環(huán)游記','全球風暴','降魔傳','追捕','七十七天','密戰(zhàn)','狂獸','其它']
  
  
# 橫坐標
  
  
x = range(len(movie_name))
  
  
# 票房數(shù)據(jù)
  
  
y = [73853,57767,22354,15969,14839,8725,8716,8318,7916,6764,52222]

  
  
# 1.創(chuàng)建畫布
  
  
plt.figure(figsize=(20, 8), dpi=100)

  
  
# 2.繪制柱狀圖
  
  
plt.bar(x, y, width=0.5, color=['b','r','g','y','c','m','y','k','c','g','b'])

  
  
# 2.1b修改x軸的刻度顯示
  
  
plt.xticks(x, movie_name)

  
  
# 2.2 添加網(wǎng)格顯示
  
  
plt.grid(linestyle="--", alpha=0.5)

  
  
# 2.3 添加標題
  
  
plt.title("電影票房收入對比")

  
  
# 3.顯示圖像
  
  
plt.show()

參考鏈接:

[

4 小結

  • 折線圖【知道】

    • 能夠顯示數(shù)據(jù)的變化趨勢,反映事物的變化情況。(變化)
    • plt.plot()
  • 散點圖【知道】

    • 判斷變量之間是否存在數(shù)量關聯(lián)趨勢,展示離群點(分布規(guī)律)
    • plt.scatter()
  • 柱狀圖【知道】

    • 繪制連離散的數(shù)據(jù),能夠一眼看出各個數(shù)據(jù)的大小,比較數(shù)據(jù)之間的差別乏盐。(統(tǒng)計/對比)
    • plt.bar(x, width, align="center")
  • 直方圖【知道】

    • 繪制連續(xù)性的數(shù)據(jù)展示一組或者多組數(shù)據(jù)的分布狀況(統(tǒng)計)
    • plt.hist(x, bins)
  • 餅圖【知道】

    • 用于表示不同分類的占比情況佳窑,通過弧度大小來對比各種分類
    • plt.pie(x, labels, autopct, colors)

Numpy

學習目標

  • 了解Numpy運算速度上的優(yōu)勢
  • 知道數(shù)組的屬性,形狀父能、類型
  • 應用Numpy實現(xiàn)數(shù)組的基本操作
  • 應用隨機數(shù)組的創(chuàng)建實現(xiàn)正態(tài)分布應用
  • 應用Numpy實現(xiàn)數(shù)組的邏輯運算
  • 應用Numpy實現(xiàn)數(shù)組的統(tǒng)計運算
  • 應用Numpy實現(xiàn)數(shù)組之間的運算

4.1 Numpy優(yōu)勢

學習目標

  • 目標

    • 了解Numpy運算速度上的優(yōu)勢
    • 知道Numpy的數(shù)組內(nèi)存塊風格
    • 知道Numpy的并行化運算

1 Numpy介紹

Numpy

Numpy(Numerical Python)是一個開源的Python科學計算庫神凑,用于快速處理任意維度的數(shù)組

Numpy支持常見的數(shù)組和矩陣操作何吝。對于同樣的數(shù)值計算任務溉委,使用Numpy比直接使用Python要簡潔的多。

Numpy使用ndarray對象來處理多維數(shù)組爱榕,該對象是一個快速而靈活的大數(shù)據(jù)容器瓣喊。

2 ndarray介紹

NumPy provides an N-dimensional array type, the ndarray, 
which describes a collection of “items” of the same type.

NumPy提供了一個N維數(shù)組類型ndarray,它描述了相同類型的“items”的集合黔酥。

學生成績數(shù)據(jù)

用ndarray進行存儲:

import numpy as np

  
  
# 創(chuàng)建ndarray
  
  
score = np.array(
[[80, 89, 86, 67, 79],
[78, 97, 89, 67, 81],
[90, 94, 78, 67, 74],
[91, 91, 90, 67, 69],
[76, 87, 75, 67, 86],
[70, 79, 84, 67, 84],
[94, 92, 93, 67, 64],
[86, 85, 83, 67, 80]])

score

返回結果:

array([[80, 89, 86, 67, 79],
       [78, 97, 89, 67, 81],
       [90, 94, 78, 67, 74],
       [91, 91, 90, 67, 69],
       [76, 87, 75, 67, 86],
       [70, 79, 84, 67, 84],
       [94, 92, 93, 67, 64],
       [86, 85, 83, 67, 80]])

提問:

使用Python列表可以存儲一維數(shù)組藻三,通過列表的嵌套可以實現(xiàn)多維數(shù)組,那么為什么還需要使用Numpy的ndarray呢跪者?

3 ndarray與Python原生list運算效率對比

在這里我們通過一段代碼運行來體會到ndarray的好處

import random
import time
import numpy as np
a = []
for i in range(100000000):
    a.append(random.random())

  
  
# 通過%time魔法方法, 查看當前行的代碼運行一次所花費的時間
  
  
%time sum1=sum(a)

b=np.array(a)

%time sum2=np.sum(b)

其中第一個時間顯示的是使用原生Python計算時間,第二個內(nèi)容是使用numpy計算時間:

CPU times: user 852 ms, sys: 262 ms, total: 1.11 s
Wall time: 1.13 s
CPU times: user 133 ms, sys: 653 μs, total: 133 ms
Wall time: 134 ms

從中我們看到ndarray的計算速度要快很多棵帽,節(jié)約了時間。

機器學習的最大特點就是大量的數(shù)據(jù)運算渣玲,那么如果沒有一個快速的解決方案岖寞,那可能現(xiàn)在python也在機器學習領域達不到好的效果。

計算量大

Numpy專門針對ndarray的操作和運算進行了設計柜蜈,所以數(shù)組的存儲效率和輸入輸出性能遠優(yōu)于Python中的嵌套列表,數(shù)組越大指巡,Numpy的優(yōu)勢就越明顯淑履。

思考:

ndarray為什么可以這么快?

4 ndarray的優(yōu)勢

4.1 內(nèi)存塊風格

ndarray到底跟原生python列表有什么不同呢藻雪,請看一張圖:

numpy內(nèi)存地址

從圖中我們可以看出ndarray在存儲數(shù)據(jù)的時候秘噪,數(shù)據(jù)與數(shù)據(jù)的地址都是連續(xù)的,這樣就給使得批量操作數(shù)組元素時速度更快勉耀。

這是因為ndarray中的所有元素的類型都是相同的指煎,而Python列表中的元素類型是任意的,所以ndarray在存儲元素時內(nèi)存可以連續(xù)便斥,而python原生list就只能通過尋址方式找到下一個元素至壤,這雖然也導致了在通用性能方面Numpy的ndarray不及Python原生list,但在科學計算中枢纠,Numpy的ndarray就可以省掉很多循環(huán)語句像街,代碼使用方面比Python原生list簡單的多。

4.2 ndarray支持并行化運算(向量化運算)

numpy內(nèi)置了并行運算功能,當系統(tǒng)有多個核心時镰绎,做某種計算時脓斩,numpy會自動做并行計算

4.3 效率遠高于純Python代碼

Numpy底層使用C語言編寫,內(nèi)部解除了GIL(全局解釋器鎖)畴栖,其對數(shù)組的操作速度不受Python解釋器的限制随静,所以,其效率遠高于純Python代碼吗讶。

5 小結

  • numpy介紹【了解】

    • 一個開源的Python科學計算庫
    • 計算起來要比python簡潔高效
    • Numpy使用ndarray對象來處理多維數(shù)組
  • ndarray介紹【了解】

    • NumPy提供了一個N維數(shù)組類型ndarray燎猛,它描述了相同類型的“items”的集合。
    • 生成numpy對象:np.array()
  • ndarray的優(yōu)勢【掌握】

    • 內(nèi)存塊風格

      • list -- 分離式存儲,存儲內(nèi)容多樣化
      • ndarray -- 一體式存儲,存儲類型必須一樣
    • ndarray支持并行化運算(向量化運算)

    • ndarray底層是用C語言寫的,效率更高,釋放了GIL

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末关翎,一起剝皮案震驚了整個濱河市扛门,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌纵寝,老刑警劉巖论寨,帶你破解...
    沈念sama閱讀 212,294評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異爽茴,居然都是意外死亡葬凳,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,493評論 3 385
  • 文/潘曉璐 我一進店門室奏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來火焰,“玉大人,你說我怎么就攤上這事胧沫〔颍” “怎么了?”我有些...
    開封第一講書人閱讀 157,790評論 0 348
  • 文/不壞的土叔 我叫張陵绒怨,是天一觀的道長纯赎。 經(jīng)常有香客問我,道長南蹂,這世上最難降的妖魔是什么犬金? 我笑而不...
    開封第一講書人閱讀 56,595評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮六剥,結果婚禮上晚顷,老公的妹妹穿的比我還像新娘。我一直安慰自己疗疟,他們只是感情好该默,可當我...
    茶點故事閱讀 65,718評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著策彤,像睡著了一般权均。 火紅的嫁衣襯著肌膚如雪顿膨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,906評論 1 290
  • 那天叽赊,我揣著相機與錄音恋沃,去河邊找鬼。 笑死必指,一個胖子當著我的面吹牛囊咏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播塔橡,決...
    沈念sama閱讀 39,053評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼梅割,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了葛家?” 一聲冷哼從身側響起户辞,我...
    開封第一講書人閱讀 37,797評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎癞谒,沒想到半個月后底燎,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,250評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡弹砚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,570評論 2 327
  • 正文 我和宋清朗相戀三年双仍,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片桌吃。...
    茶點故事閱讀 38,711評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡朱沃,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出茅诱,到底是詐尸還是另有隱情逗物,我是刑警寧澤,帶...
    沈念sama閱讀 34,388評論 4 332
  • 正文 年R本政府宣布瑟俭,位于F島的核電站翎卓,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏尔当。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,018評論 3 316
  • 文/蒙蒙 一蹂安、第九天 我趴在偏房一處隱蔽的房頂上張望椭迎。 院中可真熱鬧,春花似錦田盈、人聲如沸畜号。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,796評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽简软。三九已至蛮拔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間痹升,已是汗流浹背建炫。 一陣腳步聲響...
    開封第一講書人閱讀 32,023評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留疼蛾,地道東北人肛跌。 一個月前我還...
    沈念sama閱讀 46,461評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像察郁,于是被迫代替她去往敵國和親衍慎。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,595評論 2 350

推薦閱讀更多精彩內(nèi)容