math - How to find the outliers of a Ruby array/hash of integers? -
यहां मेरा इनपुट है:
[{नाम: 'जॉन', आयु: 50 }, {नाम: 'बॉब', आयु: 50}, {नाम: 'पॉल', आयु: 0}, {नाम: 'अल्फ्रेड', आयु: 100}]
I चरम युगों को ढूंढना चाहते हैं, और मैं एक वेरिएबल के रूप में डालना चाहता हूं जो चरम सीमाओं को समझना चाहिए। इसलिए, उदाहरण के लिए मैं उस में डालूंगा कि मैं 10% सबसे चरम मूल्यों को ढूंढना चाहता हूं। तो उदाहरण के लिए आउटपुट कुछ ऐसा होगा:
# चरम न्यूनतम मान = & gt; [{नाम: 'पॉल', आयु: 0}] # चरम अधिकतम मान = & gt;
मैं यह कैसे कर सकता हूं?
मुझे कुछ संसाधन ऑनलाइन मिले जो मददगार हो सकते हैं, लेकिन ईमानदारी से मैं ' अपने आप उदाहरणों का पालन करने में सक्षम नहीं हैं:
यह एक तरीका है। < / P>
1.सोर्ट सूची:
a = [[नाम: 'जॉन', आयु: 50}, {नाम: 'बॉब', आयु: 50}, { नाम: 'पॉल', उम्र: 0}, {नाम: 'अल्फ्रेड', आयु: 100}] a = a.sort {| a, b | एक ['उम्र'] & lt; = & gt; बी ['उम्र']}
2. पहला तत्व अब न्यूनतम है, अंतिम अधिकतम है।
min, max = a [ 0], एक [-1]
ध्यान दें कि यह ऐसा करने का सबसे प्रभावी तरीका नहीं है, लेकिन छोटे सरणियों के लिए यह काफी अच्छा है।
Wrt आपकी संवेदनशीलता, उपरोक्त विधि प्रतिशत पी उपज के एल में लंबाई को गुणा करके, फिर दो से विभाजित करते हैं, और तत्वों को लेते हुए काम करते हैं
[0..l-1] के रूप में अपने निचले आउटलाइर और
[एल- (एल -1), एल -1]
के रूप में अपने ऊपरी आउटलायर्स
संपादित करें: काम किया गया उदाहरण
एल
सरणी की लंबाई है, p
आउटलाइअर का अनुपात है जो आप चाहते हैं।
l = (एल * पी) / 2
p = 0.2, L = 20
के लिए हम चाहते हैं चार आउटलेटर्स, न्यूनतम पर दो और अधिकतम पक्ष पर दो।
<पूर्व> एल = (एल * पी) / 2 = 2 मिनट = एक [0..1] अधिकतम = एक [(एल- (एल -1), एल -1] = एक [ (20- (2-1), 1 9] = एक [1 9, 1 9]
ध्यान दें कि इससे संकेत मिलता है कि मैंने आपको ऊपर बताए गए एक त्रुटि है - संभवतः अधिकतम एक [(एलएल), (एल -1)]
के बजाय।
Comments
Post a Comment