तक नहीं है मेरे पास एक बड़ा कोड है जो probability density function (पीडीएफ) से ली गई संभावनाओं के अनुसार एक बिंदु पर नमूने मानता है।numpy 1.9.0: ValueError: संभावनाएं 1
ऐसा करने के लिए मैं numpy.random.choice का उपयोग करता हूं जो numpy 1.8.0
तक ठीक काम करता है। यहाँ एक मेगावाट (फ़ाइल pdf_probs.txt
here डाउनलोड किया जा सकता) है:
import simplejson
import numpy as np
# Read probabilities from file.
f = open('pdf_probs.txt', 'r')
probs = simplejson.load(f)
f.close()
print sum(probs) # <-- Not *exactly* 1. but very close: 1.00000173042
# Define array.
arr = np.linspace(1., 100., len(probs))
# Get samples using the probabilities in probs.
samples = np.random.choice(arr, size=1000, replace=True, p=probs)
बात यह है कि numpy 1.9.0
साथ परीक्षण के बाद उपरोक्त कोड त्रुटि के साथ विफल है:
Traceback (most recent call last):
File "numpy_180_vs_190_np_random_choice.py", line 13, in <module>
samples = np.random.choice(arr, size=1000, replace=True, p=probs)
File "mtrand.pyx", line 1083, in mtrand.RandomState.choice (numpy/random/mtrand/mtrand.c:10106)
ValueError: probabilities do not sum to 1
पीडीएफ संभावनाओं का योग बिल्कुल पर राशि नहीं होगी 1. बहुत छोटी तैयारी का उपयोग करते समय दिखाई देने वाले छोटे विचलन दिए गए।
जो मैं numpy
(1.8.0
) के पिछले संस्करण को इकट्ठा कर सकता हूं उससे स्पष्ट रूप से नए 1.9.0
संस्करण की तुलना में बड़ी सहनशीलता थी, लेकिन मैं गलत हो सकता था।
यह numpy 1.8.0
के साथ क्यों काम करता है लेकिन 1.9.0
के साथ नहीं? मैं अपना कोड नए 1.9.0
संस्करण के साथ कैसे काम कर सकता हूं?
यहाँ सहिष्णुता परीक्षण करने के लिए परिवर्तन है: [1.9 संस्करण] (https://github.com/numpy/numpy/blob /maintenance/1.9.x/numpy/random/mtrand/mtrand.pyx#L1082) बनाम [1.8 संस्करण] (https://github.com/numpy/numpy/blob/maintenance/1.8.x/numpy/random/mtrand /mtrand.pyx#L1030)। – user2357112