取樣就是按照某種規則從資料集中挑選樣本資料。通常應用場景資料樣本過大,抽取少部分樣本來訓練或驗證,不僅可以節約計算機資源,在特定情況下也會提公升實驗效果。
隨機取樣是從被取樣資料集中隨機地抽取特定數量的資料,需要指定取樣的個數。隨機取樣分為有放回取樣和無放回取樣。
有放回取樣: 可能會出現重複資料
無放回取樣:取樣資料不會出現重複的樣本資料
系統取樣又稱等距取樣,就是將總體的取樣資料集按某一順序號分成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集放在一起做標...