自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

50種常用的matplotlib可視化,再也不用擔(dān)心模型背著我亂跑了

大數(shù)據(jù) 數(shù)據(jù)可視化
最近 Machine Learning Plus 的作者介紹了 50 種最常用的 matplotlib 可視化圖表,而本文簡要介紹了這篇文章,詳細的 50 種可視化需要查閱原文。

數(shù)據(jù)分析與機器學(xué)習(xí)中常需要大量的可視化,因此才能直觀了解模型背地里都干了些什么。而在可視化中,matplotlib 算得上是最常用的工具,不論是對數(shù)據(jù)有個預(yù)先的整體了解,還是可視化預(yù)測效果,matplotlib 都是不可缺失的模塊。最近 Machine Learning Plus 的作者介紹了 50 種最常用的 matplotlib 可視化圖表,而本文簡要介紹了這篇文章,詳細的 50 種可視化需要查閱原文。

[[255418]]

50 種可視化圖原地址:https://www.machinelearningplus.com/plots/top-50-matplotlib-visualizations-the-master-plots-python

介紹

該表格主要介紹了 7 種不同的 matplotlib 可視化類別,讀者可根據(jù)目的選擇不同的圖。例如,如果你想要繪制兩個變量之間的關(guān)系,查看下面 Correlation 部分;或者如果你想展示某個變量的動態(tài)變化,查看下面的 Change 部分。

  • 一個美麗的圖表應(yīng)該:
  • 提供準確、有需求的信息,不歪曲事實;
  • 設(shè)計簡單,獲取時不會太費力;
  • 美感是為了支持這些信息,而不是為了掩蓋這些信息;
  • 不要提供太過豐富的信息與太過復(fù)雜的結(jié)構(gòu)。

如下所示為 7 種不同類型的可視化圖表:協(xié)相關(guān)性主要描述的是不同變量之間的相互關(guān)系;偏差主要展現(xiàn)出不同變量之間的差別;排序主要是一些有序的條形圖、散點圖或斜線圖等;分布就是繪制概率與統(tǒng)計中的分布圖,包括離散型的直方圖和連續(xù)型的概率密度分布圖等。后面還有變量的時序變化圖和類別圖等常見的可視化制圖類別。

可視化

可視化

配置

在繪制這 50 種可視化圖之前,我們需要配置一下依賴項以及通用設(shè)定,當(dāng)然后面有一些獨立的美圖會修改通用設(shè)定。如果讀者看中了某種可視化圖,那么用這些配置再加上對應(yīng)的可視化代碼就能嵌入到我們自己的項目中。

如下所示 pandas 與 numpy 主要用于讀取和處理數(shù)據(jù),matplotlib 與 seaborn 主要用于可視化數(shù)據(jù)。其中 seaborn 其實是 matplotlib 上的一個高級 API 封裝,在大多數(shù)情況下使用 seaborn 就能做出很有吸引力的圖,而使用 matplotlib 能制作更具特色的圖。

  1. # !pip install brewer2mpl 
  2. import numpy as np 
  3. import pandas as pd 
  4. import matplotlib as mpl 
  5. import matplotlib.pyplot as plt 
  6. import seaborn as sns 
  7. import warnings; warnings.filterwarnings(action='once'
  8.  
  9. large = 22med = 16small = 12 
  10. params = {'axes.titlesize': large, 
  11.           'legend.fontsize': med, 
  12.           'figure.figsize': (16, 10), 
  13.           'axes.labelsize': med, 
  14.           'axes.titlesize': med, 
  15.           'xtick.labelsize': med, 
  16.           'ytick.labelsize': med, 
  17.           'figure.titlesize': large} 
  18. plt.rcParams.update(params) 
  19. plt.style.use('seaborn-whitegrid') 
  20. sns.set_style("white") 
  21. %matplotlib inline 
  22.  
  23. # Version 
  24. print(mpl.__version__)  #> 3.0.0 
  25. print(sns.__version__)  #> 0.9.0 

制圖示意

前面列出了 7 大類共 50 種不同的可視化圖,但我們無法一一介紹,因此我們從協(xié)相關(guān)性、偏差、分布、時序變化和群組圖中各選擇了一個示例,它們能展示不同數(shù)據(jù)在不同情況下的可視化需求。

1. 相關(guān)圖(Correllogram)

若有兩種變量,且它們的值為離散的,那么二維相關(guān)圖可以表示兩個變量所有可能組合之間的相關(guān)性。當(dāng)然如果是單變量,那么自身所有可能的組合也可以組成一個相關(guān)圖:

  1. # Import Dataset 
  2. df = pd.read_csv("https://github.com/selva86/datasets/raw/master/mtcars.csv") 
  3.  
  4. # Plot 
  5. plt.figure(figsize=(12,10), dpi80
  6. sns.heatmap(df.corr(), xticklabels=df.corr().columns, yticklabels=df.corr().columns, cmap='RdYlGn'center=0annot=True
  7.  
  8. # Decorations 
  9. plt.title('Correlogram of mtcars', fontsize=22
  10. plt.xticks(fontsize=12
  11. plt.yticks(fontsize=12
  12. plt.show() 

2. 面積圖(Area Chart)

通過使用不同的顏色表示水平軸和線之間的區(qū)域,面積圖不僅強調(diào)峰值和低谷值,同時還強調(diào)它們持續(xù)的時間:即峰值持續(xù)時間越長,面積越大。

  1. import numpy as np 
  2. import pandas as pd 
  3.  
  4. # Prepare Data 
  5. df = pd.read_csv("https://github.com/selva86/datasets/raw/master/economics.csv", parse_dates=['date']).head(100) 
  6. x = np.arange(df.shape[0]) 
  7. y_returns = (df.psavert.diff().fillna(0)/df.psavert.shift(1)).fillna(0) * 100 
  8.  
  9. # Plot 
  10. plt.figure(figsize=(16,10), dpi80
  11. plt.fill_between(x[1:], y_returns[1:], 0, where=y_returns[1:] >= 0, facecolor='green'interpolate=Truealpha=0.7) 
  12. plt.fill_between(x[1:], y_returns[1:], 0, where=y_returns[1:] <= 0, facecolor='red'interpolate=Truealpha=0.7) 
  13.  
  14. # Annotate 
  15. plt.annotate('Peak \n1975', xy=(94.0, 21.0), xytext=(88.0, 28), 
  16.              bbox=dict(boxstyle='square'fc='firebrick'), 
  17.              arrowprops=dict(facecolor='steelblue'shrink=0.05), fontsize=15color='white'
  18.  
  19.  
  20. # Decorations 
  21. xtickvals = [str(m)[:3].upper()+"-"+str(y) for y,m in zip(df.date.dt.year, df.date.dt.month_name())] 
  22. plt.gca().set_xticks(x[::6]) 
  23. plt.gca().set_xticklabels(xtickvals[::6], rotation=90fontdict={'horizontalalignment': 'center', 'verticalalignment': 'center_baseline'}) 
  24. plt.ylim(-35,35) 
  25. plt.xlim(1,100) 
  26. plt.title("Month Economics Return %", fontsize=22
  27. plt.ylabel('Monthly returns %') 
  28. plt.grid(alpha=0.5) 
  29. plt.show() 

 

3. 密度圖(Density Plot)

在概率論與統(tǒng)計學(xué)習(xí)方法中,可視化概率密度就變得非常重要了。這種密度圖正是可視化連續(xù)型隨機變量分布的利器,分布曲線上的每一個點都是概率密度,分布曲線下的每一段面積都是特定情況的概率。如下所示,通過將它們按「response」變量分組,我們可以了解 X 軸和 Y 軸之間的關(guān)系。

  1. # Import Data 
  2. df = pd.read_csv("https://github.com/selva86/datasets/raw/master/mpg_ggplot2.csv") 
  3.  
  4. # Draw Plot 
  5. plt.figure(figsize=(16,10), dpi80
  6. sns.kdeplot(df.loc[df['cyl'] == 4, "cty"], shade=Truecolor="g"label="Cyl=4"alpha=.7) 
  7. sns.kdeplot(df.loc[df['cyl'] == 5, "cty"], shade=Truecolor="deeppink"label="Cyl=5"alpha=.7) 
  8. sns.kdeplot(df.loc[df['cyl'] == 6, "cty"], shade=Truecolor="dodgerblue"label="Cyl=6"alpha=.7) 
  9. sns.kdeplot(df.loc[df['cyl'] == 8, "cty"], shade=Truecolor="orange"label="Cyl=8"alpha=.7) 
  10.  
  11. # Decoration 
  12. plt.title('Density Plot of City Mileage by n_Cylinders', fontsize=22
  13. plt.legend() 
  14. plt.show() 

此外值得注意的是,深度學(xué)習(xí),尤其是深度生成模型中的分布極其復(fù)雜,它們是不能直接可視化的,我們一般會通過 T-SNE 等降維方法可視化。

4. 時序變化圖(Time Series Plot)

時序變化圖也是機器學(xué)習(xí)中最常見的一種可視化圖表,不論是可視化損失函數(shù)還是準確率,都需要這種時序變化圖的幫助。這種圖主要關(guān)注某個變量怎樣隨時間變化而變化,以下展示了從 1949 到 1969 航空客運量的變化:

  1. # Import Data 
  2. df = pd.read_csv('https://github.com/selva86/datasets/raw/master/AirPassengers.csv') 
  3.  
  4. # Draw Plot 
  5. plt.figure(figsize=(16,10), dpi80
  6. plt.plot('date', 'traffic', data=dfcolor='tab:red'
  7.  
  8. # Decoration 
  9. plt.ylim(50, 750) 
  10. xtick_location = df.index.tolist()[::12] 
  11. xtick_labels = [x[-4:] for x in df.date.tolist()[::12]] 
  12. plt.xticks(ticks=xtick_locationlabels=xtick_labelsrotation=0fontsize=12horizontalalignment='center'alpha=.7) 
  13. plt.yticks(fontsize=12alpha=.7) 
  14. plt.title("Air Passengers Traffic (1949 - 1969)", fontsize=22
  15. plt.grid(axis='both'alpha=.3) 
  16.  
  17. # Remove borders 
  18. plt.gca().spines["top"].set_alpha(0.0)     
  19. plt.gca().spines["bottom"].set_alpha(0.3) 
  20. plt.gca().spines["right"].set_alpha(0.0)     
  21. plt.gca().spines["left"].set_alpha(0.3)    
  22. plt.show() 

5. 樹狀圖(Dendrogram)

樹狀圖是另一個比較有用的圖表,層次聚類或決策樹等算法可以使用它完成優(yōu)美的可視化。樹形圖是以樹的圖形表示數(shù)據(jù)或模型結(jié)構(gòu),以父層和子層的結(jié)構(gòu)來組織對象,是枚舉法的一種表達方式。下圖展示了一種神似層次聚類算法的圖表:

  1. import scipy.cluster.hierarchy as shc 
  2.  
  3. # Import Data 
  4. df = pd.read_csv('https://raw.githubusercontent.com/selva86/datasets/master/USArrests.csv') 
  5.  
  6. # Plot 
  7. plt.figure(figsize=(16, 10), dpi80)   
  8. plt.title("USArrests Dendograms", fontsize=22)   
  9. dend = shc.dendrogram(shc.linkage(df[['Murder', 'Assault', 'UrbanPop', 'Rape']], method='ward'), labels=df.State.values, color_threshold=100)   
  10. plt.xticks(fontsize=12
  11. plt.show() 

【本文是51CTO專欄機構(gòu)“機器之心”的原創(chuàng)文章,微信公眾號“機器之心( id: almosthuman2014)”】

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2021-06-08 07:48:26

數(shù)據(jù) Python開發(fā)

2021-12-21 09:05:46

命令Linux敲錯

2020-06-15 08:03:17

大文件OOM內(nèi)存

2015-05-29 09:01:48

2019-09-04 10:00:07

手機人臉識別

2020-04-10 09:55:28

Git 工具黑魔法

2021-08-13 22:38:36

大數(shù)據(jù)互聯(lián)網(wǎng)技術(shù)

2019-12-14 15:50:51

編程元知識代碼開發(fā)

2022-09-14 08:02:25

加密算法Bcryp

2016-08-09 16:17:37

高德地圖TFBOYS大數(shù)據(jù)

2015-10-22 10:38:43

Wi-Fi燃氣報警器

2018-10-11 15:51:32

ChromeGoogle瀏覽器

2021-06-11 07:14:04

QQ音樂微信翻譯

2018-03-15 09:57:00

PythonMatplotlib數(shù)據(jù)可視化

2023-09-12 13:39:08

2020-04-30 09:01:27

路由器安全網(wǎng)絡(luò)安全路由器

2020-03-02 00:01:25

Linux字符目錄

2024-12-24 12:00:00

Matplotlib可視化分析Python

2019-07-23 09:08:43

Python操作系統(tǒng)高考
點贊
收藏

51CTO技術(shù)棧公眾號