數值數據的特徵預處理

2021-01-10 人工智慧遇見磐創

特徵預處理是數據挖掘中最重要的步驟。在這篇文章中,我將向你介紹特徵預處理的概念,它的重要性,不同的機器學習模型下的數值特徵的不同特徵預處理技術。

模型的質量在很大程度上取決於輸入模型的數據。當從數據挖掘過程中收集數據時,會丟失一些數據(我們將其稱為丟失值)。此外,它很容易受到噪音的影響。這都導致低質量數據的結果,正如你可能已經聽說過的,模型的好壞取決於它所訓練的數據。

這就是特徵預處理的由來,特徵預處理將原始數據轉換為機器學習模型可用的數據。

不同類型的機器學習模型

首先,讓我們看看機器學習模型的不同類別。這裡,我們將模型分為兩種類型:

基於樹的模型:基於樹的模型是一種監督學習模型,能夠在捕捉複雜非線性關係的同時提供高精度和穩定性。基於樹的決策樹模型有隨機森林模型和梯度增強決策樹模型。非樹模型:所有其他監督學習模型都屬於非樹模型的範疇。線性模型、K近鄰模型和神經網絡是基於非樹模型的一些例子。不同的數據類型或特徵

一個數據集可以包含各種數據類型或特徵。以下是一些最常見的數據類型:

數值特徵分類特徵和順序特徵日期和時間文本圖像不同的數據類型和不同的機器學習模型需要不同類型的特徵預處理。一些預處理方法對於所有數據類型都是通用的。

數值數據的特徵預處理

數值數據有測量或計數的意義。數值數據的例子包括僱員的工資、年齡和擁有的房屋數量。數值數據可以進一步分為兩種類型:離散型和連續型。在上面的例子中,一個員工的工資是連續的數據,一個人的年齡和擁有的房屋數量是離散的數據。

讓我們研究一下來自Kaggle的SF salary數據集中舊金山市的員工工資數據。

在這個數據集中,特徵BasePay, OvertimePay, OtherPay, TotalPay, TotalPayBenefits和Year是數值特徵。

讓我們選擇一個特徵並對其進行探索性數據分析。

這裡是TotalPay特徵的直方圖。

從上圖中我們可以看出,數據的分布是巨大的。值的範圍從0到50,000左右。

如果我們使用panda中的describe()函數看數據分布,我們得到:

count 148654.000000mean 74768.321972std 50517.005274min -618.13000025% 36168.99500050% 71426.61000075% 105839.135000max 567595.430000Name: TotalPay, dtype: float64為了有效地使用該特徵,我們需要使用以下任何一種方法對該特徵進行預處理。

1. 特徵縮放(歸一化)

特徵縮放是一種對數據的自變量或特徵範圍進行歸一化的方法。它通常被稱為標準化。與基於樹的模型相比,特徵縮放對非樹模型的影響更大。因此,如果你想使用非基於樹的模型獲得良好的結果,你應該考慮規範化你的數值特徵。

有不同的方法來歸一化特徵。以下是一些常見的例子:

Rescaling (Min-Max歸一化):這是一種最簡單的歸一化,將特徵重新劃分為[0,1]範圍。

下面是使用sklearn庫中的MinMaxScaler函數在python中執行Min-Max歸一化的代碼片段。

from sklearn.preprocessing import MinMaxScalerscaler = MinMaxScaler()TotalPayReshaped = df.TotalPay.as_matrix().reshape(-1, 1)df.TotalPay = scaler.fit_transform(TotalPayReshaped)df.hist(figsize=(15,6), column=[『TotalPay』])

對TotalPay特徵進行Min-Max歸一化後使用describe()查看的結果如下。我們可以看到TotalPay的最小值是0,最大值是1。

count 148654.000000mean 0.132673std 0.088905min 0.00000025% 0.06474250% 0.12679275% 0.187354max 1.000000Name: TotalPay, dtype: float64Standardization (Z-score歸一化):在這種歸一化中,對一個特徵進行縮放,使其均值為零,方差為1。

讓我們對原始的TotalPay特徵執行Z-score歸一化。下面是使用sklearn庫中的StandardScaler函數在python中執行此類歸一化的代碼片段。

from sklearn.preprocessing import StandardScalerscaler = StandardScaler()TotalPayReshaped = df.TotalPay.as_matrix().reshape(-1, 1)df.TotalPay = scaler.fit_transform(TotalPayReshaped)df.hist(figsize=(15,6), column=[『TotalPay』])

對TotalPay特徵進行Z-score歸一化後的結果如下。我們可以看到,TotalPay的均值接近於0,標準差為1。

count 1.486540e+05mean -2.707706e-15std 1.000003e+00min -1.492304e+0025% -7.640884e-0150% -6.615046e-0275% 6.150586e-01max 9.755700e+00Name: TotalPay, dtype: float642. 離群值刪除

在統計學中,離群點是一個與其他觀測值距離較遠的觀測點。 --維基百科

有時,通過從數據中刪除離群值,可以顯著提高機器學習模型的性能。對於非基於樹的模型也是如此。另一方面,基於樹的模型對離群值具有較強的魯棒性。

下面的代碼片段將從TotalPay特徵中刪除1%的數據。

x = df.TotalPayUPPERBOUND, LOWERBOUND = np.percentile(x, [1,99])y = np.clip(x, UPPERBOUND, LOWERBOUND)pd.DataFrame(y).hist()

去除離群值後使用describe()查看TotalPay特徵的結果如下。

count 148654.000000mean 74502.923277std 49644.336571min 286.97100025% 36168.99500050% 71426.61000075% 105839.135000max 207015.797400Name: TotalPay, dtype: float643. 排序變換

基於非樹的模型可以從秩變換中獲益。如果你沒有時間手動處理離群值,這是一種非常方便的技術。當變量是標稱變量時,排序變換特別有用,在標稱變量中,不同值之間的順序比值更重要。

可以使用scipy庫中的rankdata方法將特徵值轉換為對應排序後的索引。

4. 對數變換

當你希望降低數據的可變性時,對數變換是另一種常用的技術。對數變換的另一個流行用法是當數據分布高度傾斜時。

下面是用Python執行對數變換的代碼片段。

df['LogTotalPay'] = np.log(1+df.TotalPay)

對TotalPay特徵執行對數變換後使用describe()的結果如下。值的範圍從最小值-618.130和最大值567595.43更改為最小值0.00和最大值13.25。通過對這個特徵執行對數變換,我們已經減少了數據中的方差,即原始特徵的標準差約為50,500,而對數變換特徵的標準差為1.41。

count 148653.000000mean 10.739295std 1.413888min 0.00000025% 10.49599350% 11.17644675% 11.569692max 13.249166Name: LogTotalPay, dtype: float64在本文中,我討論了為什麼特徵預處理被認為是數據挖掘過程中的一個重要步驟。我列出了數據集中不同類型的特徵,並簡要討論了基於樹和非基於樹的模型。然後,通過代碼示例和直方圖圖,詳細闡述了數值特徵常用的特徵預處理技術,包括歸一化、離群點去除和對數變換等。

你最常用什麼預處理技術來處理數值特徵?為什麼?請在下面的評論中留下你的想法。

相關焦點

  • 數值數據的特徵工程
    數據饋送機器學習模型,越多越好,對嗎?好吧,有時數字數據不太適合提取,因此,本文將介紹多種方法,可以將原始數字轉換為更可口的東西。數值數據幾乎是福氣。為什麼差不多?好吧,因為它已經採用了機器學習模型可以攝取的格式。
  • 大數據的預處理、離散化要點羅列
    大數據預處理技術1.目前存在四種主流的數據預處理技術:數據清理、數據集成、數據規約和數據變換。2.數據處理的主要任務(1)數據處理的主要步驟:數據清理、數據集成、數據規約和數據變換。(2)數據清理例程通過填寫缺失值、光滑噪聲數據、識別或者刪除離群點並且解決不一致性來「清理數據」。
  • 題庫 | 神經網絡數據預處理方法有哪些?
    而 Kaiming 使用 ReLU 作為激活函數,就無法滿足數值的均值為 0 的條件,因此使用 Xavier 來初始化 ReLU 作為激活函數的網絡,效果也就不是那麼理想。其提出了 MSRA 的初始化方法,來解決該問題。 題目3:神經網絡數據預處理方法有哪些?
  • 機器學習中數據特徵的處理 歸一化vs標準化,哪個更好
    眾所周知,特徵工程是將原始數據轉換為數據集的過程。 有各種可用的功能工程技術。兩種最廣泛使用且最容易混淆的特徵工程技術是:標準化歸一化今天我們將探討這兩種技術,並了解數據分析師在解決數據科學問題時所做出的一些常見假設。
  • 監控視頻中的圖像預處理技術
    要在這樣速率變化的信道上穩定、高效地傳輸壓縮視頻圖像,除了依賴編碼器的碼率控制之外,還可以利用預處理的方法來輔助實現。在編碼前對圖像進行預處理,控制輸入到編碼器的視頻數據量,從而來間接控制編碼器輸出的碼率,其過程仍可參見圖1。  由圖1可見,不僅通過緩衝區的滿溢程度來控制量化步長,同時也加上了預處理對輸入的視頻數據進行控制。
  • 5個特徵選擇算法,讓你的數據處理得心應手
    全文共5462字,預計學習時長11分鐘圖片來源:https://unsplash.com/@seefromthesky數據科學是研究算法的學問。本文將會介紹一些處理數據時最常用的特徵選擇技術。維數的詛咒——過擬合維數的詛咒:隨著特徵空間維數的增加,配置數量將會以指數級增長,因此觀測量會下降如果數據中的列數多於行數,就能完美匹配訓練數據,但這卻並不適用於新樣本。因此這樣什麼也沒學到。2. 奧卡姆剃刀原理模型應當簡單易懂。
  • Nucleic Acids Res | 代謝組學數據預處理
    其中,對上述代謝組數據的預處理一直存在方法繁多、性能不一、缺乏評估等嚴重影響處理效能的關鍵問題(J Proteome Res. 13: 3114-20, 2014)。針對上述問題,浙江大學藥學院朱峰教授課題組,在其開發的數據歸一化工具NOREVA的基礎上,構建了用於時間序列和多類別代謝組學數據預處理的新型服務系統(https://idrblab.org/noreva/)。
  • 機器學習系列|從白富美相親看特徵預處理與選擇
    劇情二:「特徵預處理」的門道 李雷說完,便拿出自己的平板,給韓梅梅看自己某個項目中搜集的初始特徵。這些特徵被放在一張巨大的表裡。 韓梅梅看著這些密密麻麻的數字,心想:看李雷說得頭頭是道,但還是沒告訴我怎麼挑,不能讓他輕易繞過去。
  • 2.2w字長文詳解推薦系統之數據與特徵工程,碼起來慢慢看
    具體來說,我們會從推薦算法建模的一般流程、推薦系統依賴的數據源介紹、數據處理與特徵工程簡介、常用推薦算法之數據與特徵工程、推薦系統數據與特徵工程未來趨勢等5個部分來介紹相關知識點,期望本文的講解能夠讓讀者更加深入地理解推薦系統依賴的數據源的特點、數據預處理方法以及基於這些數據之上的特徵工程方法與技巧。
  • 特徵工程自動化 時間序列的數據是關鍵
    【IT168 資訊】今天介紹一個通用框架,用於開發時間序列模型,生成特徵並對數據進行預處理,並探索使這一過程自動化的潛力,以便將先進的機器學習算法應用於幾乎所有的時間序列問題。目前大多數機器學習算法都不具有時間意識,不容易應用於時間序列和預測問題。
  • 數據挖掘非常重要的一步:數據預處理
    為什麼數據處理很重要對數據挖掘熟悉的小夥伴,數據處理相關佔據了整個項目的工作時間60%以上的。數據的質量,直接決定了模型的預測和泛化能力的好壞。它涉及很多因素,包括:準確性、完整性、一致性、可信性和解釋性。
  • 使用scikit-learn進行特徵選擇
    #導入所需的庫文件import numpy as npimport pandas as pd#讀取並設置數據表data=pd.DataFrame(pd.read_excel('fs.xlsx'))#設置特徵和目標X = np.array(data[['loan_amnt
  • 不會做特徵工程的 AI 研究員不是好數據科學家!上篇 - 連續數據的...
    機器學習算法通常都是處理這些數值型矩陣或張量,因此大部分特徵工程技術都將原始數據轉換為一些數值型數來表示,使得它們能更好地被算法理解。從數據集的角度出發,特徵可以分為兩種主要的類型。一般地,原始特徵是直接從數據集中得到,沒有額外的操作或處理。導出特徵通常來自於特徵工程,即我們從現有數據屬性中提取的特徵。
  • OpenTutorials | fMRIprep(多模態磁共振數據預處理工具)詳解
    基於多模態磁共振數據的神經科學研究者常常面臨一個困境,自己的研究工作本來只是想藉助神經影像數據回答具體的科學問題,但卻耗費了大量的時間折騰數據,
  • LabVIEW的數值型數據對象
    在前面窗口中,數值型數據控制項位於「新式→數值」控制項子選板,如圖1所示。其中包括數值輸入/顯示控制項,時間標識輸入/顯示控制項,垂直/水平填充/指針滑動,垂直/水平進度條,旋鈕,儀表,液罐,溫度計,垂直/水平滾動條等。
  • 特徵工程方法—數據離散化
    數據離散化定義離散化是把無限空間中有限的個體映射到有限的空間中去,以此提高算法的時空效率。通俗地講,離散化是在不改變數據相對大小的條件下,對數據進行相應的縮小,但是離散化僅適用於只關注元素之間的大小關係而不關注元素本身的值。
  • 相對數值在數據分析中的運用
    編輯導語:在進行數據對比時,我們會用到相對數值的概念,相對數值可以明確我們在不同對象之間的關係;所以在數據分析中,我們經常會用到相對數值;本文作者分享了關於相對數值在數據分析中的運用,我們一起來看一下。
  • 不會做特徵工程的 AI 研究員不是好數據科學家!下篇 - 離散數據的...
    在上篇中,作者介紹了連續型數值數據的特徵工程處理方法。本篇為下篇,主要介紹離散數據的除了方法。雷鋒網(公眾號:雷鋒網) AI 科技評論對原文進行了編譯。而在本篇文章中,我們將繼續介紹另一種結構化數據的處理 —— 這種數據本質上是離散的,俗稱分類數據(categorical data)。由於在處理數值數據的時候,我們不必處理屬於某一分類類型的數據屬性中與每個類別值有關的額外的語義複雜性,因此處理數值數據通常比處理分類數據來得更加容易。
  • 「首席架構師推薦」數值計算庫一覽表
    CBLOPEX(塊局部最優預處理特徵值Xolvers)是一個用於特徵值問題的可伸縮(並行)解決方案的開源庫。FFTW(西方最快的傅立葉變換)是一個計算傅立葉和相關變換的軟體庫。hypre (High Performance preconditioning)是一個用於線性系統和預處理的可伸縮(並行)解決方案的例程開源庫。
  • 給水廠預處理用活性炭還是高錳酸鉀?
    從CODMn的數據來看,一期和二期工藝待濾水CODMn相差甚少,說明對氧化性物質的去除主要靠高錳酸鉀的強氧化作用;而三期待濾水CODMn高於一、二期,說明在相同投加量的情況下,高錳酸鉀的氧化性強於氯氣。圖3數據顯示,各期工藝預處理後對CODMn的去除效果相差不遠,一期略優於二期和三期工藝。