連續(xù)數(shù)據(jù)離散化之等頻法
????等頻法是將相同數(shù)量的記錄放在每個(gè)區(qū)間,保證每個(gè)區(qū)間的數(shù)量基本一致。即將屬性值分為具有相同寬度的區(qū)間,區(qū)間的個(gè)數(shù)k根據(jù)實(shí)際情況來(lái)決定。比如有60個(gè)樣本,我們要將其分為k=3部分,則每部分的長(zhǎng)度為20個(gè)樣本。
? ? 我們隨機(jī)產(chǎn)生200個(gè)人的年齡數(shù)據(jù),然后通過(guò)等寬離散化,并進(jìn)行可視化。這里主要使用的是pandas庫(kù)中的qcut
函數(shù)。其缺點(diǎn)是邊界易出現(xiàn)重復(fù)值,如果為了刪除重復(fù)值可以設(shè)置?duplicates=‘drop’,但易出現(xiàn)于分片個(gè)數(shù)少于指定個(gè)數(shù)的問(wèn)題。其函數(shù)定義如下:
知識(shí)點(diǎn):
pd.qcut(x, q, labels=None, retbins=False, precision=3, duplicates='raise')
x :一維數(shù)組或者Serise
q : 表示分位數(shù)的整數(shù)或者數(shù)組,
如果是分位數(shù)的整數(shù),例如10用于十分位,4用于四分位
如果是分位數(shù)數(shù)組,例如[0,0.25,0.5,0.75,1]用于四分位數(shù)
labels : 數(shù)組或者布爾值,默認(rèn)為none,用于指定每個(gè)箱體的標(biāo)簽
如果是數(shù)組,長(zhǎng)度要與分箱個(gè)數(shù)一致,比如用四分位數(shù)分箱,需要指定四個(gè)標(biāo)簽
如果為False,則僅返回分箱的整數(shù)指示符,即當(dāng)前數(shù)據(jù)位于哪個(gè)箱子中
rebines :布爾值,可選。 是否顯示分箱的分界值。(由于是按照分位數(shù)進(jìn)行分箱,在不知道分位數(shù)具體數(shù)值的情況下,可以通過(guò)這個(gè)參數(shù)設(shè)置顯示分界值即分位數(shù)的具體數(shù)值)
precision:整數(shù),默認(rèn)3,存儲(chǔ)和顯示分箱標(biāo)簽的精度。
duplicates:如果分箱臨界值不唯一,則引發(fā)ValueError或丟棄非唯一
pd.qcut()的參數(shù)就是這些了,并不是所有的參數(shù)都常用,下邊我們通過(guò)代碼示例來(lái)看一下常用參數(shù)的應(yīng)用。
我們利用pandas的qcut函數(shù)來(lái)進(jìn)行案例講解:

根據(jù)上面可以看出,每個(gè)區(qū)間數(shù)量大致相同。