2015-03-23 9 views
6

हमारे पास एक रेटिना डेटासेट है जिसमें रोगग्रस्त आंख की जानकारी 70 प्रतिशत जानकारी का गठन करती है जबकि गैर रोगग्रस्त आंख शेष 30 प्रतिशत का गठन करती है। हम एक डेटासेट चाहते हैं जिसमें रोगग्रस्त और गैर रोगग्रस्त नमूनों को संख्या में बराबर होना चाहिए। क्या कोई मदद उपलब्ध है जिसके साथ हम ऐसा कर सकते हैं?विज्ञान में नमूनाकरण के तहत कैसे प्रदर्शन करें?

उत्तर

1

एक संस्करण के रूप में आप स्टोकास्टिक विधि का उपयोग कर सकते हैं। मान लीजिए, आपके पास डेटासेट data है जो बड़ी संख्या में tuples (X, Y) है, जहां Y रोगग्रस्त आंख की जानकारी (0 या 1) है। आप अपने डेटासेट के लिए एक रैपर तैयार कर सकते हैं, जो सभी गैर रोगग्रस्त आंखों को पार करता है और संभाव्यता 0.3/0.7 के साथ रोगग्रस्त आंखों को पास करता है (आपको डेटासेट से केवल 30% रोगग्रस्त आंखों की आवश्यकता होती है)।

from random import random 


def wrapper(data): 
    prob = 0.3/0.7 

    for X, Y in data: 
     if Y == 0: 
      yield X, Y 
     else: 
      if random() < prob: 
       yield X, Y 


# now you can use the wrapper to extract needed information 
for X, Y in wrapper(your_dataset): 
    print X, Y 

सावधान रहें, आप कई बार एक जनरेटर के रूप में इस आवरण का उपयोग करें और समान परिणाम करना चाहते हैं की जरूरत है, तो आप समारोह random() उपयोग करने से पहले निश्चित यादृच्छिक बीज सेट करना होगा। इसके बारे में अधिक जानकारी: https://docs.python.org/2/library/random.html

9

मैं Pandas DataFrame और numpy.random.choice के साथ ऐसा करना चुनूंगा। इस तरह समान आकार के डेटा-सेट का उत्पादन करने के लिए यादृच्छिक नमूना करना आसान है। एक उदाहरण:

import pandas as pd 
import numpy as np 

data = pd.DataFrame(np.random.randn(7, 4)) 
data['Healthy'] = [1, 1, 0, 0, 1, 1, 1] 

इस डेटा में दो गैर-स्वस्थ और पांच स्वस्थ नमूने हैं। बेतरतीब ढंग से स्वस्थ आबादी से दो नमूनों लेने के लिए आप कार्य करें:

sample_size = sum(data.Healthy == 0) # Equivalent to len(data[data.Healthy == 0]) 
random_indices = np.random.choice(healthy_indices, sample_size, replace=False) 
:

healthy_indices = data[data.Healthy == 1].index 
random_indices = np.random.choice(healthy_indices, 2, replace=False) 
healthy_sample = data.loc[random_indices] 

स्वचालित रूप से गैर स्वस्थ समूह के रूप में एक ही आकार के एक subsample आप कर सकते हैं लेने के लिए

संबंधित मुद्दे