做者|Soner Yıldırım
編譯|VK
來源|Towards Data Sciencepython
探索性數據分析(EDA)是數據科學或機器學習管道的重要組成部分。爲了使用數據建立一個健壯且有價值的產品,你須要研究數據,理解變量之間的關係,以及數據的底層結構。數據可視化是EDA中最有效的工具之一。機器學習
在這篇文章中,咱們將嘗試使用可視化功能來研究客戶流失數據集:https://www.kaggle.com/sonalidasgupta95/churn-prediction-of-bank-customerside
咱們將建立許多不一樣的可視化效果,並嘗試在每個可視化中引入Matplotlib或Seaborn庫的一個特性。函數
咱們首先導入相關庫並將數據集讀入pandas數據幀。工具
import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns sns.set(style='darkgrid') %matplotlib inline df = pd.read_csv("/content/Churn_Modelling.csv") df.head()
該數據集包含10000個客戶(即行)和14個關於銀行客戶及其產品的特徵。這裏的目標是使用所提供的特徵來預測客戶是否會流失(即退出=1)。學習
讓咱們從catplot開始,這是Seaborn庫的一個分類圖。字體
sns.catplot(x='Gender', y='Age', data=df, hue='Exited', height=8, aspect=1.2)
研究發現:45到60歲的人比其餘年齡段的人更容易離職(即離開公司)。女性和男性之間沒有太大的差異。ui
hue參數用於根據類別變量區分數據點。編碼
下一個可視化是散點圖,它顯示了兩個數值變量之間的關係。讓咱們看看客戶的工資和餘額是否相關。.net
plt.figure(figsize=(12,8)) plt.title("Estimated Salary vs Balance", fontsize=16) sns.scatterplot(x='Balance', y='EstimatedSalary', data=df)
咱們第一次使用matplotlib.pyplot接口來建立Figure對象並設置標題。而後,咱們用Seaborn在這個圖形對象上畫出了實際的圖表。
研究結果:估計工資與餘額之間不存在有意義的關係或相關性。餘額彷佛具備正態分佈(不包括餘額爲零的客戶)。
下一個可視化是箱線圖,它顯示了一個變量在中位數和四分位數上的分佈。
plt.figure(figsize=(12,8)) ax = sns.boxplot(x='Geography', y='Age', data=df) ax.set_xlabel("Country", fontsize=16) ax.set_ylabel("Age", fontsize=16)
咱們還使用set_xlabel和set_ylabel調整了x和y軸的字體大小。
如下是箱線圖:
中值是全部點排序時中間的點。Q1(第一個或下四分位數)是數據集下半部分的中值。Q3(第三或上四分位數)是數據集上半部分的中值。
所以,箱線圖爲咱們提供了關於分佈和異常值的概念。在咱們建立的箱線圖中,頂部有許多異常值(用點表示)。
發現:年齡變量的分佈是右偏的。因爲上側的異常值,平均值大於中值。
在變量的單變量分佈中能夠觀察到右偏態。讓咱們建立一個distplot來觀察分佈。
plt.figure(figsize=(12,8)) plt.title("Distribution of Age", fontsize=16) sns.distplot(df['Age'], hist=False)
右邊的尾巴比左邊的重。緣由是咱們在箱線圖上觀察到的異常值。
distplot在默認狀況下也提供了一個直方圖,可是咱們使用hist參數更改了它。
Seaborn庫還提供了不一樣類型的pair圖,這些圖提供了變量之間成對關係的概述。讓咱們先從數據集中隨機抽取一個樣本,使曲線圖更具吸引力。原始數據集有10000個觀測值,咱們將選取一個包含100個觀測值和4個特徵的樣本。
subset=df[['CreditScore','Age','Balance','EstimatedSalary']].sample(n=100) g = sns.pairplot(subset, height=2.5)
在對角線上,咱們能夠看到變量的直方圖。網格的另外一部分表示變量與變量之間的關係。
另外一個觀察成對關係的工具是熱圖,它採用矩陣並生成彩色編碼圖。熱圖主要用於檢查特徵和目標變量之間的相關性。
讓咱們首先使用pandas的corr函數建立一些特徵的相關矩陣。
corr_matrix = df[['CreditScore','Age','Tenure','Balance', 'EstimatedSalary','Exited']].corr()
咱們如今能夠繪製這個矩陣。
plt.figure(figsize=(12,8)) sns.heatmap(corr_matrix, cmap='Blues_r', annot=True)
發現:「年齡」和「餘額」列與客戶流失呈正相關。
隨着數據量的增長,分析和探索數據變得愈來愈困難。可視化是探索性數據分析中的一個重要工具,當它被有效和恰當地使用時,它就有了強大的力量。可視化也有助於向你的聽衆傳達信息或告訴他們你的發現。
沒有一種適合全部類型的可視化方法,所以某些任務須要不一樣類型的可視化。根據任務的不一樣,不一樣的選擇可能更合適。全部可視化都有一個共同點,那就是它們是探索性數據分析和數據科學中講故事部分的好工具。
原文連接:https://towardsdatascience.com/a-practical-guide-for-data-visualization-9f1a87c0a4c2
歡迎關注磐創AI博客站:
http://panchuang.net/
sklearn機器學習中文官方文檔:
http://sklearn123.com/
歡迎關注磐創博客資源彙總站:
http://docs.panchuang.net/