機器學習和人工智能數據預處理和建模的工具Slik-wrangler
現在人工智能AI和機器學習已經走進我們的日常,并且逐漸改變著我們的生活。讓生活變得更便捷、更人性、更智能,更美好。但是現階段的人工智能(智障)還不完美,存在這樣或者那樣的問題,除了算法、模型和算力上的問題以外,最大的一個問題就是數據不準確的問題,訓練模型的數據存在缺失、存在著噪點,而往往這一丁點的數據噪聲會讓結果“謬以千里”。
為了解決這個問題,必須預先對數據進行數據清洗和預處理,而這卻是數據科學中最繁瑣,最惱人的工作。算法的學習可以在一行代碼中完成,模型的訓練工作也可能需要幾秒鐘或幾天不等的時間內自動完成。而歷來數據的處理缺失需要人工長時間來處理,如果自動對這些數據處理成了數據科學工作者迫切的需求,本文我們就介紹這樣一個工具Slik-wrangler。
在本文中將展示Slik-wrangler的一些基本用法。在介紹一些概念的同時,還會演示一些有用的函數,這些函數有助于數據清理和整理。
概述
為解決數據研究中的數據處理的煩惱產生了Slik-wrangler。它旨在幫助解決在處理任何形式的數據時基本數據整理和預處理的問題。Slik-wrangler項目有助于快速啟動監督學習,它自帶多種工具,可以輕松加載任何格式的數據、并進行清理和檢查。它提供了一種預處理數據和執行特征工程的快速方法。
數據預處理
數據預處理是將原始數據轉換為易于理解的格式的過程,這也是數據挖掘中的最重要一步。因為原始數據很難處理。在應用機器學習或數據挖掘算法之前,都需要檢查數據的質量。
在數據開學中,經常會提及一個概念“臟進臟出”(Garbage In、Garbage out)即如果你使用的是“壞”或“臟”數據來訓練模型,即使你的算法再高明,模型再好,出現的結果也是錯誤的。
所以原始數據必須做預處理,保證數據真實、正確且具有統計學意義。
數據預處理步驟
要對數據做預處理,必須遵循一定的步驟,以確保成功預處理數據:
- 數據加載(Data Loading)。
- 數據質量評估(Data quality assessment)。
- 數據清洗(Data cleaning)。
- 數據轉換(Data transformation)。
- 數據裁剪(Data reduction)。
下面我們以這些基本步驟為示例,介紹Slik-wrangler的基本功能。
安裝部署
Slik-wrangler支持安裝在Linux、MacOS和Windows。在支持版本Python(3.5+)環境下可以通過pip包管理器直接安裝。
pip install slik-wrangler
也可以在的多版本Python環境中安裝,比如通過Anaconda。首先,確認已安裝 Anaconda:
conda --version
創建新的虛擬環境并安裝Python 3.5 及更高版本:
conda create -n yourenvname python=3.7
激活環境:
source activate yourenvname
然后安裝Slik-wrangler和項目所需的其他軟件包
pip install slik_wrangler
測試安裝:
python
Python 3.7.1 (default, Dec 14 2018, 19:28:38)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
import slik_wrangler
數據加載
數據加載(導入)是處理任何數據集的第一步。Slik-wrangler提供loadfile模塊實現高效地讀取數據文件。
使用Pandas讀取文件時,需要指定要讀取的文件的特定擴展名。例如CSV、excel、parquet等。而使用loadfile載入數據,可以直接讀取具有不同文件擴展名的多個文件,無需指定擴展名。可以用函數read_file 加載 CSV、excel和parquet等不同類型的文件。只需指定的文件路徑,對不同擴展名數據文件loadfile可以自動適配處理。
from slik_wrangler import loadfile as lf
lf.read_file(path_to_dataset)
假設有一個包含大數據集的文件,比如有幾百萬行的數據集,可能需要將其拆分為較小文件(數據集),比如2w行??梢允褂胹plit_csv_file來進行處理。這對需要從文件中讀取的有限行數據進行分析的情況很有用。
from slik_wrangler import loadfile as lf
lf.split_csv_file(path_to_dataset, row_limit=20000)
數據質量評估 (DQA)
數據質量評估(DQA)是判定數據(或數據集)質量的過程。判定數據質量的過程可確保數據適合使用并滿足項目或業務流程所需的質量。slik-wrangler中提供了專門的模塊dqa用來進行數據質量評估,slik-dqa包含了用于數據質量檢查的多個功能。
其中data_cleanness_assessment ,用來檢查并顯示數據清潔程度的總體程度。
from slik_wrangler.dqa import data_cleanness_assessment
data_cleanness_assessment(dataset)
結果顯示數據集的干凈程度以及是否有任何需要解決的數據問題,比如示例數據集中主要存在數據缺失的問題,其中Cabin缺失數據高達77.2%。
slik-dqa還提供了用于檢查數據集特定問題獨立函數,例如:
- missing_value_assessment:缺失數據評估;
- duplicate_assessment:重復數據評估;
數據清洗
數據清理是格式化/清理數據以使其適合分析的過程。它包括處理缺失值、替換重復項以及更正、修復或刪除不相關的數據。這是實現數據滿足業務需求的最重要的預處理步驟。是slik-wrangler提供了一個有價值的API來清理的數據集,稱為預處理(約定import為pp):
from slik_wrangler import preprocessing as pp
識別和修復異常值
異常值會對數據分析和建模結果產生巨大影響。例如,如果對人群的年齡進行調查,并且如果有人輸1000作為他的年齡。這明顯就是錯誤的,如果不刪除或糾正,它會極大地扭曲結果(比如求平均年齡)。
slik-wrangler目前主要依靠四分位距方法來檢測數據集中存在的異常值,還使用不同的方法修復數據中存在的異常值,例如用數據點的平均值或中值替換異常值??梢宰远x要篩選的數字特征,并顯示一個表格,該表格連續標識至少“n”個異常值。
from slik_wrangler import preprocessing as pp
pp.detect_fix_outliers(data,target_column='Age',n=1)
識別缺失值
要檢查我們的數據集是否包含缺失值,可以使用check_nan函數。上面的dqa模塊中slik_wrangler.preprocessing也可顯示缺失數據信息的概述。我們可以對其缺失占比圖示顯示:
from slik_wrangler import preprocessing as pp
pp.check_nan(train, plot=True)
圖示方法比直接數字的效果要明顯得多。
處理缺失值
有幾種方法可以處理缺失值,可以刪除缺失值或用特定的值替換缺失值。slik-wranglerz使用handle_nan模塊智能高效地處理數據中的缺失值。handle_nan函數通過選擇一種策略來處理的數字特征,為fillna參數傳遞一個值來處理分類特征或默認使用mode填充。還可以使用threshold參數跨行和列刪除缺失值。
刪除缺失值可以使用以下替代方法之一:
- 刪除缺少值的行。
- 刪除包含缺失值的列。
用另一個值替換缺失值。通常采用以下策略:
- 對于數值,將缺失值替換為平均值或眾數。
- 對于分類值,將缺失值替換為列的最頻繁值(模式)或想要的任何值。
from slik_wrangler import preprocessing as pp
data = pp.handle_nan(
dataframe=titanic, target_name='Survived', strategy='mean',
fillna='mode', drop_outliers=True, thresh_x=50, thresh_y=75,
display_inline=True
)
以上示例中,我們設置去除掉記錄(行)閾值thresh_x中缺失值超過50%的值。設置一個字段(列)中thresh_y閾值thresh_y缺失值超過75%的列。
結果中對缺失超過75%的一列數據清除,原始數據由12列變為11列。
data.shape
(890, 11)
slik.preprocessing模塊用來進行對數據預處理,它可以實現一行代碼中清理數據。該函數通過刪除數據中存在的異常值、處理缺失值、特征化DateTime 列和映射相關列來清理您的數據。
from slik_wrangler import preprocessing as pp
pp.preprocess(
data= titanic, target_column='Survived', train=True,
display_inline=True, project_path='./Titanic', logging='display'
)
將預處理結果文件保存在指定的項目路徑中,本例中為當前路徑下的Titanic目錄。
總結
在機器學習ML和人工智能AI數據準備階段,數據預處理過程將其進行數據整理,評估,清洗和異常處理的過程。統計數據表明,數據科學家在數據預處理花費的時間大概占整個項目的80%還多。如果能將這部分繁瑣和耗時的過程自動化,這樣可以大大增加研究人員在數據分析EDA、算法和模型研究等其他事情的時間。
slik-wrangler非常適合從初學者到專家級數據科學家。通過使用 Slik-wrangler 進行數據預處理,可以實現自動評估數據質量和存在的問題,有效處理缺失值、處理異常值和列管理,從而建立數據模式,為進一步數據分析做好準備。