簡體   English   中英

np.random.choice不會將采樣作為指定的概率進行。

[英]np.random.choice doesn't do sampling as designated probabilities.

我正在嘗試對樣本數據重新采樣以計算引導程序標准錯誤。 但是結果與我確定的概率不符。

對於numpy.random.choice(a,size = None,replace = True,p = None)中的'p',我提出了一個概率列表

[[中性],[快樂],[悲傷],[驚奇],[恐懼],[厭惡],[憤怒],[鄙視] [0.190872103、0.120820803、0.115160092、0.008137272、0.029541836、0.0、0.535467893、0.0] ]每個。

data = pd.read_csv(path+'shawshank_FER_entropy.csv', encoding = 'utf-8', delimiter='\t')

emo_list = ['neutral', 'happy', 'sad', 'surprise', 'fear', 'disgust', 'anger','contempt']

pb = data.andy
p = [float(pb.iloc[11]),float(pb.iloc[12]),float(pb.iloc[13]),float(pb.iloc[14]),float(pb.iloc[15]),float(pb.iloc[16]),float(pb.iloc[17]),float(pb.iloc[18])]

print(p)
emo_sample = np.random.choice(emo_list, 1000, p)

print(emo_sample)

unique, counts = np.unique(emo_sample, return_counts=True)
print(np.asarray((unique, counts)).T)

我希望結果是作為我指定的概率分布的1000個情感詞,但是結果如下所示均勻分布。

[['憤怒''128'] ['蔑視''140'] ['厭惡'101'] ['恐懼''134'] ['快樂''121'] ['中立''120'] [ 'sad''123'] ['surprise''133']]

您能解釋為什么我的代碼不使用我指定的概率嗎?

numpy.random.choice 的呼叫簽名為:

numpy.random.choice(a, size=None, replace=True, p=None)

請注意, p是第4個參數,而不是第3個。 因此emo_sample = np.random.choice(emo_list, 1000, p)p分配給replace參數而不是p參數:

numpy.random.choice(a, size=None, replace=p, p=None)

解決此問題的一種方法是使用關鍵字參數:

emo_sample = np.random.choice(emo_list, 1000, p=p)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM