資料分析與挖掘之資料預處理

2021-08-28 08:59:45 字數 4354 閱讀 3601

目錄

資料整合

簡單變換

資料規範化—標準化

1、離差標準化(歸一化)

2、z-score標準化(0-1標準化)

3、小數定標規範化

資料規範化—離散化

1、等寬離散化

2、等頻率離散化

3、優化離散

#資料整合

import numpy

a=numpy.array([[1,5,6],[9,4,3]])

b=numpy.array([[6,36,7],[2,3,39]])

c=numpy.concatenate((a,b)) #資料整合

1、資料變換的目的是將資料轉換為更方便分析的資料

2、簡單變換通常使用函式變換的方式進行,常見的函式變換包括:開方,平方,對數等;

資料規範化(歸一化)處理是資料探勘的一項基礎工作。不同評價指標往往具有不同的量綱,數值間的差別可能很大,不進行處理可能會影響到資料分析的結果。為了消除指標之間的量綱和取值範圍差異的影響,需要進行標準化處理,將資料按照比例進行縮放,使之落入乙個特定的區域,便於進行綜合分析。如將工資收入屬性值對映到[-1, 1]或者[0, 1]內。

一、中心化(又叫零均值化)和標準化(又叫歸一化)概念及目的?

1、在回歸問題和一些機器學習演算法中,以及訓練神經網路的過程中,通常需要對原始資料進行中心化(zero-centered或者mean-subtraction(subtraction表示減去))處理和標準化(standardization或normalization)處理。

意義:資料中心化和標準化在回歸分析中是取消由於量綱不同、自身變異或者數值相差較大所引起的誤差;對特殊模型資料標準化,能夠加速權重引數的收斂。對資料進行中心化預處理,這樣做的目的是要增加基向量的正交性。 原理

資料標準化:是指數值減去均值,再除以標準差;

資料中心化:是指變數減去它的均值。

目的:通過中心化和標準化處理,得到均值為0,標準差為1的服從標準正態分佈的資料。

下圖中以二維資料為例:左圖表示的是原始資料;中間的是中心化後的資料,資料被移動大原點周圍;右圖將中心化後的資料除以標準差,得到為標準化的資料,可以看出每個維度上的尺度是一致的(紅色線段的長度表示尺度)。

其實,在不同的問題中,中心化和標準化有著不同的意義,

也叫最大最小標準化,其核心思想是把原始資料的數值線性變換到[0,1]之間,公式如下:

其中,max、min分別為樣本資料的最大值、最小值。

優點:保留源資料存在的關係,消除不同資料之間的量綱影響,方便資料比較共同處理,比如在神經網路中,歸一化可以加快訓練網路的收斂性; 

缺點:極易受個別離群值影響,如果資料集中某個數值很大,其他各值歸一化後會接近0;此外,如果遇到超出[min,max]的值,會出現錯誤。

也叫標準差標準化,這種方法給予原始資料的均值(mean)和標準差(standard deviation)進行資料的標準化。經過處理的資料符合標準正態分佈,即均值為0,標準差為1。

其中μ為所有樣本資料的均值,σ為所有樣本資料的標準差。

優點:標準化是為了方便資料的下一步處理,而進行的資料縮放等變換,並不是為了方便與其他資料一同處理或比較,比如資料經過零-均值標準化後,更利於使用標準正態分佈的性質,進行處理 ;

該方法是通過移動特徵資料的小數字數,將其轉換到[-1,1]之間,移動的小數字由特徵值絕對值的最大值決定,公式如下:

k=log10(x的絕對值的最大值)

三種常用標準化的**實現:

#匯入資料

import pymysql

import numpy as npy

import pandas as pda

import matplotlib.pylab as pyl

pyl.rcparams['font.sans-serif']=['simhei'] # 用來正常顯示中文標籤

pyl.rcparams['axes.unicode_minus']=false # 用來正常顯示負號

conn=pymysql.connect(host="127.0.0.1",user="root",password="root",db="csdn")

sql="select hits,comment from hexun"

data=pda.read_sql(sql,conn)

#離差標準化

data2=(data-data.min())/(data.max()-data.min())

#標準差標準化

data3=(data-data.mean())/data.std()

#小數定標規範化--消除單位影響

k=npy.ceil(npy.log10(data.abs().max()))#絕對值的最大值(進1取整:1.1→2)

data4=data/10**k

離散化,把無限空間中有限的個體對映到有限的空間中去,以此提高演算法的時空效率。離散化指把連續型資料切分為若干「段」,也稱bin,是資料分析中常用的手段。切分的原則有等距,等頻,優化,或根據資料特點而定。在營銷資料探勘中,離散化得到普遍採用。究其原因,有這樣幾點:①演算法需要。例如決策樹,*****bayes等演算法本身不能直接使用連續型變數,連續型資料只有經離散處理後才能進入演算法引擎。這一點在使用具體軟體時可能不明顯。因為大多數資料探勘軟體內已經內建了離散化處理程式,所以從使用介面看,軟體可以接納任何形式的資料。但實際上,在運算決策樹或*****bayes模型前,軟體都要在後台對資料先作預處理。②離散化可以有效地克服資料中隱藏的缺陷:使模型結果更加穩定。例如,資料中的極端值是影響模型效果的乙個重要因素。極端值導致模型引數過高或過低,或導致模型被虛假現象「迷惑」,把原來不存在的關係作為重要模式來學習。而離散化,尤其是等距離散,可以有效地減弱極端值和異常值的影響,③有利於對非線性關係進行診斷和描述:對連續型資料進行離散處理後,自變數和目標變數之間的關係變得清晰化。如果兩者之間是非線性關係,可以重新定義離散後變數每段的取值,如採取0,1的形式, 由乙個變數派生為多個啞變數,分別確定每段和目標變數間的聯絡。這樣做,雖然減少了模型的自由度,但可以大大提高模型的靈活度。 即使在連續型自變數和目標變數之間的關係比較明確,例如可以用直線描述的情況下,對自變數進行離散處理也有若干優點。一是便於模型的解釋和使用,二是可以增加模型的區別能力。常見的正態假設是連續變數,離散化減少了對於分布假設的依賴性,因此離散資料有時更有效。

將連續型變數的取值範圍均勻劃成n等份,每份的間距相等。例如,客戶訂閱刊物的時間是乙個連續型變數,可以從幾天到幾年。採取等距切分可以把1年以下的客戶劃分成一組,1-2年的客戶為一組,2-3年為一組..,以此類分,組距都是一年。

:把觀察點均勻分為n等份,每份內包含的觀察點數相同。還取上面的例子,設該雜誌訂戶共有5萬人,等頻分段需要先把訂戶按訂閱時間按順序排列,排列好後可以按5000人一組,把全部訂戶均勻分為十段。 等距和等頻在大多數情況下導致不同的結果。等距可以保持資料原有的分布,段落越多對資料原貌保持得越好。等頻處理則把資料變換成均勻分布,但其各段內觀察值相同這一點是等距分割作不到的。

需要把自變數和目標變數聯絡起來考察。切分點是導致目標變數出現明顯變化的折點。常用的檢驗指標有卡方,資訊增益,基尼指數,或woe(要求目標變數是兩元變數)

#連續型資料離散化

#等寬離散化

data1=data[u"hits"].copy() #u避免變數轉換

data1=data1.fillna(data1.mean()) #缺失值均值替換

data2=data1.t #轉置

data3=data2.values #轉換成陣列

k=4 #等寬4份

c1=pda.cut(data3,k,labels=["低關注","一般","適中","**值"])

#等頻率離散化

k=[0,500,1000,3000,5000,20000,data2.max()] #等頻分層

c2=pda.cut(data3,k,labels=["低關注","一般","適中","較好","非常好","異常好 "])

MATLAB資料分析與挖掘 資料預處理篇

主要工作是刪除原始資料集中的無關資料 重複資料 平滑雜訊資料,篩選掉與挖掘主題無關的資料,處理缺失值 異常值等。資料探勘需要的資料往往分布在不同的資料來源中,資料整合就是將多個資料來源合併存放在乙個一致的資料儲存 如資料倉儲 中的過程。在資料整合時,來自多個資料來源的現實世界實體的表達形式是不一樣的...

資料探勘之資料預處理

現實情況中,你的資料可能是不完整的 缺少屬性值或某些感興趣的屬性或僅包含聚類資料 含雜訊的 包含錯誤或存在偏離期望的離群值 並且是不一致的。資料清理 填寫缺失的值 光滑雜訊資料 識別或刪除離群點並解決不一致性 資料整合 當資料來自多個資料來源時,而同乙個屬性在不同資料來源不同,合成時存在冗餘 資料規...

Python資料分析 資料預處理

資料預處理主要包括 資料清洗 資料整合 資料變換和資料規約。資料清洗主要是刪除原始資料中的無關資料 重複資料,平滑噪音資料,篩選掉和挖掘主題無關的資料,處理缺失值和異常值。處理缺失值資料方法有三類 刪除記錄 資料插補和不處理。其中資料插補方法如下 1 均值 中數值 眾數插補 根據屬性型別,用均值 中...