資料預處理 取樣

2021-08-14 19:13:55 字數 2566 閱讀 5956

取樣就是按照某種規則從資料集中挑選樣本資料。通常應用場景資料樣本過大,抽取少部分樣本來訓練或驗證,不僅可以節約計算機資源,在特定情況下也會提公升實驗效果。

隨機取樣是從被取樣資料集中隨機地抽取特定數量的資料,需要指定取樣的個數。隨機取樣分為有放回取樣無放回取樣

有放回取樣: 可能會出現重複資料

無放回取樣:取樣資料不會出現重複的樣本資料

系統取樣又稱等距取樣,就是將總體的取樣資料集按某一順序號分成n個部分,再從第一部分隨機抽取第k號資料,依次用相等間距從每一部分中各抽取乙個資料來組成樣本。使用場景主要針對按一定關係排好的資料。

系統樣本對於樣本的限定過大,往往針對於不同層級的取樣需要通過分層取樣實現。

分層取樣是先將取樣資料集分成若干個類別,再從每一類別內隨機抽取一定數量的資料,然後將這些資料組合在一起。分層取樣主要被用於生成訓練樣本的場景中。因為在監督學習中,正負樣本的比例是不可控的,當正負樣本的比例過大或過小時,對於樣本訓練結果都是有影響的,所以通常需要分層取樣來控制訓練樣本中的正負樣本比例。

分層取樣從每乙個層級中隨機的抽取出特定的資料,每個層級抽取的比例是可以自定義的。

注:random.randint(a, b),用於生成乙個指定範圍內的整數。其中引數a是下限,引數b是上限,生成的隨機數n: a <= n <= b

random.sample(sequence, k),從指定序列中隨機獲取指定長度的片斷。sample函式不會修改原有序列

import random

datamat = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

# 分布式取樣所用資料

datamat1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

datamat2 = [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 115, 114, 116, 117, 118, 119]

datamat3 = [1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,

1018, 1019]

# 放回式隨機取樣

def repetitionrandomsampling(datamat, number):

sample =

for i in range(number):

return sample

# 無放回式隨機取樣

def randomsampling(datamat, number):

try:

slice = random.sample(datamat, number)

return slice

except:

print("sample larger than population")

# 系統取樣

def systematicsampling(datamat, number):

length = len(datamat)

k = length / number

k = k.__int__()

sample =

i = 0

if k > 0:

while len(sample) != number:

i += 1

return sample

else:

return randomsampling(datamat, number)

# 分布式取樣

def stratifiedsampling(datamat1, datamat2, datamat3, number):

sample =

num = number / 3

num=num.__int__()

return sample

if __name__ == '__main__':

print("資料集:")

print(datamat)

print("無放回式取樣:")

slice = randomsampling(datamat, 8)

print(slice)

print("放回式取樣:")

sample = repetitionrandomsampling(datamat, 15)

print(sample)

print("系統取樣:")

sample = systematicsampling(datamat, 5);

print(sample)

print("分布式取樣:")

sample = stratifiedsampling(datamat1, datamat2, datamat3, 9);

print(sample)



自然語言處理中資料預處理的取樣

我們知道skip gram中,訓練樣本的形式是 input word,output word 其中output word是input word的上下文。為了減少模型噪音並加速訓練速度,我們在構造batch之前要對樣本進行取樣,剔除停用詞等噪音因素。對停用詞進行取樣,例如 你 我 以及 的 這類單詞進...

資料預處理

現實世界中資料大體上都是不完整,不一致的髒資料,無法直接進行資料探勘,或挖掘結果差強人意。為了提前資料探勘的質量產生了資料預處理技術。資料預處理有多種方法 資料清理,資料整合,資料變換,資料歸約等。這些資料處理技術在資料探勘之前使用,大大提高了資料探勘模式的質量,降低實際挖掘所需要的時間。一 資料清...

資料預處理

常見的資料預處理方法,以下通過sklearn的preprocessing模組來介紹 變換後各維特徵有0均值,單位方差。也叫z score規範化 零均值規範化 計算方式是將特徵值減去均值,除以標準差。sklearn.preprocessing scale x 一般會把train和test集放在一起做標...