探索性數(shù)據(jù)分析(EDA)是數(shù)據(jù)科學(xué)或機器學(xué)習(xí)管道的重要組成部分。為了使用數(shù)據(jù)創(chuàng)建一個健壯且有價值的產(chǎn)品,你需要研究數(shù)據(jù),理解變量之間的關(guān)系,以及數(shù)據(jù)的底層結(jié)構(gòu)。數(shù)據(jù)可視化是EDA中最有效的工具之一。
在這篇文章中,我們將嘗試使用可視化功能來研究客戶流失數(shù)據(jù)集:https://www.kaggle.com/sonalidasgupta95/churn-prediction-of-bank-customers
我們將創(chuàng)建許多不同的可視化效果,并嘗試在每一個可視化中引入Matplotlib或Seaborn庫的一個特性。
我們首先導(dǎo)入相關(guān)庫并將數(shù)據(jù)集讀入pandas數(shù)據(jù)幀。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style='darkgrid')
%matplotlib inlinedf = pd.read_csv("/content/Churn_Modelling.csv")
df.head()
該數(shù)據(jù)集包含10000個客戶(即行)和14個關(guān)于銀行客戶及其產(chǎn)品的特征。這里的目標是使用所提供的特征來預(yù)測客戶是否會流失(即退出=1)。
讓我們從catplot開始,這是Seaborn庫的一個分類圖。
sns.catplot(x='Gender', y='Age', data=df, hue='Exited', height=8, aspect=1.2)
研究發(fā)現(xiàn):45到60歲的人比其他年齡段的人更容易離職(即離開公司)。女性和男性之間沒有太大的差別。
hue參數(shù)用于根據(jù)類別變量區(qū)分數(shù)據(jù)點。
下一個可視化是散點圖,它顯示了兩個數(shù)值變量之間的關(guān)系。讓我們看看客戶的工資和余額是否相關(guān)。
plt.figure(figsize=(12,8))
plt.title("Estimated Salary vs Balance", fontsize=16)
sns.scatterplot(x='Balance', y='EstimatedSalary', data=df)
我們第一次使用matplotlib.pyplot接口來創(chuàng)建Figure對象并設(shè)置標題。然后,我們用Seaborn在這個圖形對象上畫出了實際的圖表。
研究結(jié)果:估計工資與余額之間不存在有意義的關(guān)系或相關(guān)性。余額似乎具有正態(tài)分布(不包括余額為零的客戶)。
下一個可視化是箱線圖,它顯示了一個變量在中位數(shù)和四分位數(shù)上的分布。
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調(diào)整了x和y軸的字體大小。
以下是箱線圖:
中值是所有點排序時中間的點。Q1(第一個或下四分位數(shù))是數(shù)據(jù)集下半部分的中值。Q3(第三或上四分位數(shù))是數(shù)據(jù)集上半部分的中值。
因此,箱線圖為我們提供了關(guān)于分布和異常值的概念。在我們創(chuàng)建的箱線圖中,頂部有許多異常值(用點表示)。
發(fā)現(xiàn):年齡變量的分布是右偏的。由于上側(cè)的異常值,平均值大于中值。
在變量的單變量分布中可以觀察到右偏態(tài)。讓我們創(chuàng)建一個distplot來觀察分布。
plt.figure(figsize=(12,8))
plt.title("Distribution of Age", fontsize=16)
sns.distplot(df['Age'], hist=False)
右邊的尾巴比左邊的重。原因是我們在箱線圖上觀察到的異常值。
distplot在默認情況下也提供了一個直方圖,但是我們使用hist參數(shù)更改了它。
Seaborn庫還提供了不同類型的pair圖,這些圖提供了變量之間成對關(guān)系的概述。讓我們先從數(shù)據(jù)集中隨機抽取一個樣本,使曲線圖更具吸引力。原始數(shù)據(jù)集有10000個觀測值,我們將選取一個包含100個觀測值和4個特征的樣本。
subset=df[['CreditScore','Age','Balance','EstimatedSalary']].sample(n=100)
g = sns.pairplot(subset, height=2.5)
在對角線上,我們可以看到變量的直方圖。網(wǎng)格的另一部分表示變量與變量之間的關(guān)系。
另一個觀察成對關(guān)系的工具是熱圖,它采用矩陣并生成彩色編碼圖。熱圖主要用于檢查特征和目標變量之間的相關(guān)性。
讓我們首先使用pandas的corr函數(shù)創(chuàng)建一些特征的相關(guān)矩陣。
corr_matrix = df[['CreditScore','Age','Tenure','Balance',
'EstimatedSalary','Exited']].corr()
我們現(xiàn)在可以繪制這個矩陣。
plt.figure(figsize=(12,8))
sns.heatmap(corr_matrix, cmap='Blues_r', annot=True)
發(fā)現(xiàn):“年齡”和“余額”列與客戶流失呈正相關(guān)。
隨著數(shù)據(jù)量的增加,分析和探索數(shù)據(jù)變得越來越困難。可視化是探索性數(shù)據(jù)分析中的一個重要工具,當它被有效和恰當?shù)厥褂脮r,它就有了強大的力量。可視化也有助于向你的聽眾傳達信息或告訴他們你的發(fā)現(xiàn)。
沒有一種適合所有類型的可視化方法,因此某些任務(wù)需要不同類型的可視化。根據(jù)任務(wù)的不同,不同的選擇可能更合適。所有可視化都有一個共同點,那就是它們是探索性數(shù)據(jù)分析和數(shù)據(jù)科學(xué)中講故事部分的好工具。






