當開始一個新的機器學習項目時,獲得機器學習數據集之後的第一步就是要了解它。我們可以通過執行探索性數據分析(EDA)來實現這一點。這包括找出每個變量的數據類型、目標變量的分布、每個預測變量的不同值的數量、數據集中是否有重複值或缺失值等。進行EDA探索機器學習數據集的過程往往是非常耗時的。
什麼是Pandas-Profiling?
Pandas-profiling是一個開源Python庫,它只需一行代碼即可為任何機器學習數據集生成漂亮的交互式報告。
pandas_profiling使用df.profile_report()擴展了DataFrame,以便進行快速數據分析。
每一列的以下統計數據(如果與列類型相關)都顯示在交互式HTML報告中:
類型推斷:檢測DataFrame中列的類型。概要:類型,唯一值,缺失值分位數統計信息,例如最小值,Q1,中位數,Q3,最大值,範圍,四分位數範圍描述性統計數據,例如均值,眾數,標準偏差,和,中位數絕對偏差,變異係數,峰度,偏度最常使用的值直方圖高度相關變量(Spearman,Pearson和Kendall矩陣)的相關性突出顯示缺失值矩陣,計數(count),熱圖和缺失值樹狀圖安裝Pandas-profiling
您可以使用pip軟體包管理器通過以下命令進行安裝:
pip install pandas-profiling[notebook,html]
您也可以直接從Github安裝最新版本(github.com/pandas-profiling/pandas-profiling/archive/master.zip)。
生成報告
在本文中,我將使用的機器學習數據集是Titanic。
加載Python庫
導入機器學習數據集
要生成報告,請運行以下Python代碼。
profile = ProfileReport(data, title="Titanic Dataset", html={'style': {'full_width': True}}, sort="None")
將報告作為IFrame包含在Notebook中
profile.to_notebook_iframe()
使用以下代碼將報告另存為HTML文件:
profile.to_file(output_file="your_report.html")
使用以下方式將數據保存為JSON:
# As a stringjson_data = profile.to_json()# As a fileprofile.to_file(output_file="your_report.json")
結果
現在我們知道了如何使用pandas-profiling生成報告,讓我們看一下結果。
概要
Pandas_profiling通過計算預測變量的總缺失單元格、重複行、不同值的數量、缺失值、zeros來創建預測變量的描述性概述。它還在警告部分標記具有高基數或缺失值的變量,如上圖所示。
類分布
數值特徵
對於數值特徵,除了有均值、標準差、最小值、最大值、四分位距(IQR)等詳細統計外,還繪製了直方圖,給出了常用值和極值的列表。
分類特徵
與數字特徵類似,對於分類特徵,它會計算通用值,長度,字符等。
交互
在交互部分,pandas_profiling庫自動為每一對變量生成交互圖。您可以通過從兩個標題中選擇特定的變量來獲取任何一對的交互關係圖。
相關矩陣
相關性是一種統計技術,它可以顯示變量對之間是否相關以及如何相關。
相關的主要結果稱為相關係數(或「r」)。它的範圍是從-1.0到+1.0。r越接近+1(或-1),這兩個變量的關係就越密切。如果r接近0,這意味著變量之間不相關。如果r是正的,這意味著一個變量變大,另一個變大。如果r是負的,這意味著隨著一個變大,另一個變小(通常稱為「逆相關」)。
在生成所有數值特徵的相關矩陣時,pandas_profiling庫為我們提供了所有流行的選項,包括Pearson的r,Spearman的ρ等。
缺點
pandas-profiling的主要缺點是針對大型機器學習數據集。隨著數據量的增加,生成報告的時間也增加了很多。
解決此問題的一種方法是為數據集的一部分生成概要報告。但是在執行此操作時,確保對數據進行隨機採樣非常重要,這樣它才能代表我們擁有的所有數據。我們可以這樣做:
如果您堅持要獲得關於整個數據集的報告,您可以使用最小模式來實現這一點。在最小模式下,生成的簡化報告比完整報告的信息要少,但對於大型數據集,生成的速度相對較快。簡化報告的代碼如下: