Tuesday 30 January 2018

चलती - औसत सरणी - जावा


जावा में एक सरल चलती औसत कार्यान्वयन। कई अवसरों पर मैं अपने जावा अनुप्रयोगों में सरल मीट्रिक की गणना करना चाहता था, उदाहरण के लिए प्रति घंटे हिट की संख्या, या त्रुटियों को समय अवधि में सरल मीट्रिक की गणना करना बहुत मुश्किल नहीं है, यह बस है अतिरिक्त कार्य और मैं उस समय समस्या डोमेन पर खर्च करना चाहता हूं मुझे आश्चर्य है कि जावा में मीट्रिक के लिए कोई भी व्यापक रूप से स्वीकार किए गए समाधान नहीं मिले I ने मेट्रिक्स खोज लिया था लेकिन यह थोड़ा जटिल और प्रतीत नहीं हुआ था - मैं वास्तव में चाहता था चलती औसत की गणना करने से मैंने कुछ और समस्या के बारे में सोचा और निर्णय लिया कि यह एक कठिन समस्या नहीं है। यहां मेरा समाधान है.यह खिड़की अद्यतन आवृत्ति आकार की एक सरणी बनाकर काम करता है, फिर एक थ्रेड ने अगले इंडेक्स पर गिनती को सरणी में सेट कर दिया है। अद्यतन आवृत्ति अंतराल के लिए गिनती बस सरणी -1 - सरणी i 1 है, जो कि सबसे हाल ही में गिनती सबसे छोटा है, 10 मिनट के अंतराल के लिए, सबसे पुराना गिनती 1 साल ठीक 10 मिनट पुरानी है। हमारे कोड का औसत पहले हमें परमाणु लोंग का उपयोग करके एक काउंटर की ज़रूरत होगी। इस काउंटर को उन घटनाओं के आधार पर बढ़ाया जाना चाहिए, जो आपको कम्प्यूटिंग में रुचि रखते हैं जैसे कि एक आरईएसईई सेवा के लिए POST अनुरोध। हमें काउंटर तक पहुंच के कार्यान्वयन की आवश्यकता है और वह GetCount इंटरफ़ेस के माध्यम से पूरा किया यहाँ मैं एक 5 मिनट की खिड़की के साथ एक औसत औसत बनाऊँगा जो प्रत्येक सेकंड अपडेट करता है। और मौजूदा औसत प्राप्त करने के लिए हम केवल getAverage विधि को कॉल करते हैं। एक महत्वपूर्ण कार्यान्वयन विवरण है कि कैसे विंडो को विभाजित करके सरणी आकार निर्धारित किया जाता है अद्यतन आवृत्ति से तो एक बार-बार अद्यतन आवृत्ति के साथ एक बड़ी खिड़की एक महत्वपूर्ण मात्रा में स्मृति का उपभोग कर सकती है इस उदाहरण में सरे का आकार 300 उचित है, हालांकि, अगर हमने 1 सेकंड के अंतराल के साथ 24 घंटे चलती औसत बनाया तो आकार 86400 ए होगा 24 घंटे की अवधि के लिए और अधिक उचित अद्यतन आवृत्ति 288 के हर 5 मिनट के सरणी आकार हो सकती है। खिड़की को चुनने और अद्यतन आवृत्ति का दूसरा विचार है विंडो आवृत्ति से दिखाई देता है उदाहरण के लिए, 6 सेकंड अपडेट आवृत्ति के साथ एक 2 मिनट की खिड़की ठीक है, लेकिन एक 7 सेकंड अपडेट आवृत्ति नहीं है, क्योंकि यह 120 से विभाज्य नहीं है I विंडो अवैध अपडेट आवृत्ति शून्य नहीं है। कार्यान्वयन के लिए एक चलती औसत चलती औसत की आवश्यकता होती है, जो बहुत ही कुशल नहीं है। एक बेहतर समाधान कई औसत में एक धागा को साझा करना होगा। अपडेट मैंने यहां एक धागा साझा करने के लिए कोड को अपडेट किया है। मूलतः, एक प्रारंभिक स्थिति समस्या है जो हमारे पास डेटा नहीं है अभी तक पूरी विंडो के लिए उदाहरण के लिए यदि आपके पास 5 मिनट की खिड़की है और केवल 15 सेकेंड का आंकड़ा यह क्रियान्वयन नल हो जाता है जब तक कि हम 5 मिनट के डेटा न हो जाएं एक और तरीका औसत का आकलन करना है मान लीजिए कि हमारे पास 30 सेकंड में 10 की गिनती है, तो हम औसतन 2 मिनट में 40 का अनुमान लगा सकते हैं लेकिन अधूरे आंकड़ों को extrapolating द्वारा महत्वपूर्ण त्रुटि का खतरा है उदाहरण के लिए, अगर 2 सेकंड में 20 हिट्स की एक फट हो तो हम 1200 प्रति 2 मिनट का अनुमान लगाएंगे, जो सभी संभावनाओं में ज जरा रास्ता है। आपके अंदर के लिए सभी सरलीएं चलती हैं, इसलिए आप हमेशा एक ही औसत को एक पूरे सरणी के लिए प्राप्त करते हैं, आपको इसके बजाय 0 से बाहरी की वर्तमान संख्या को बदलना चाहिए। औसत को अपने भीतर के जम्मू में अपडेट किया जा रहा है, इसका मतलब है कि यह हर नए लूप के पिछले मूल्यों को ओवरराइड करेगा, यह इंडेक्स के रूप में मैं का उपयोग करके भीतरी एक के बजाय बाहरी के अंदर होना चाहिए। आप औसत गणना करने के लिए औसत जे को विभाजित कर रहे हैं, प्रत्येक नए आंतरिक लूप जे आप पहली राशि से विभाजित करेंगे 0 मेरा मानना ​​है कि आप जम्मू 1 का उपयोग करने के लिए मतलब है, सूचकांक वर्तमान लम्बाई के समान नहीं है। समस्या निवारण के लिए टिप। लूप एरे के लिए चर का उपयोग करने से बचें, आप इसके बजाय उपयोग करना चाहिए। अपनी समस्या को पुन: उत्पन्न करने के लिए आप हमें अपने मौजूदा कोड के बजाय पृथक समस्या दे सकते हैं यानी IIMGINE अगर त्रुटि आपके इनपुट में है, तो हम यह कैसे मान सकते हैं कि आप वास्तव में उनको इस्तेमाल करते हैं। उत्तर 4 अक्टूबर 13 20 54. आप सभी डेटा हर बार आपको इंट जी के लिए लेना चाहिए I औसत लंबाई 2 0 जी औसत लैंग 2 जम्मू numDataPoints जम्मू या आपके अंदरूनी औसत के लिए कुछ इसी प्रकार। इसके अलावा, बढ़ते हुए मैं राशि जम्मू को मामले को संभालने के लिए संशोधित किया जाना चाहिए जब जम्मू है 0 विशेष रूप से, यह संभवतः चलती रहना चाहिए औसत मैं योग औसत लंबाई और इसे लागू किया जाना चाहिए चलती औसत के लिए मैं औसत लूप के बाहर स्लॉट। उत्तर 4 अक्टूबर 13 20 42. अगली बार, आप इसे पोस्ट करने से पहले काम से बाहर काम के बारे में टिप्पणी लेते हैं लेकिन जब से तुम इस पर बहुत अच्छा लग रहे हो, आप कैसे जायेंगे डेटा के माध्यम से, और ऐसा करें कि आपको यह सुनिश्चित करने की कोशिश करनी चाहिए कि प्रत्येक लूप सही बिंदु पर रोक रहा है, और याद रखें कि यदि आप अधिक संख्या में नहीं रुकेंगे, जैसे जब आप आंतरिक पाश कर रहे हैं और आप केवल 4 के बजाय 3 नंबर प्राप्त करें, कार्यक्रम को भी रोकना आवश्यक है यह सुनिश्चित कर लें कि आपका कोड इस बात की जांच कर रहा है। उत्तर दें 4 अक्टूबर 13 20 56. किसी भी अतिरिक्त विवरण के बिना, आपको संभवत: एक अवांछित चलती औसत की आवश्यकता है I सरणी ओ ओ 0 मी एन के साथ च लंबाई N, यह केवल सरणी के पिछले कश्मीर प्रविष्टियों का मतलब है, ऊपर और ए को शामिल करते हुए, यदि ऐसा नहीं है, तो ए 0 के माध्यम से i मैं समावेशी से 1 मूल्यों का औसत। थोड़ा सा विचार आपको दिखाएगा कि आपको हर समय सभी के मूल्यों को जोड़ने की जरूरत नहीं है, बस समय बिताने की जरूरत है, और अगले बिंदु तक चलते समय यह चलती औसत है, उस मूल्य को घटाना जो नया स्थान बदलता है और नया जोड़ता है इसे बदल दिया जाएगा कि मूल्य पहले के -1 अंक के दौरान, आप केवल राशि के लिए नया मूल्य जोड़ सकते हैं और 1. इस प्रक्रिया में किसी भी बिंदु से अपने काउंटर को बढ़ाएंगे, चलती औसत मौजूदा गणना मूल्य से विभाजित है उत्तर दिया 4 अक्टूबर 13 21 05. एक चलती औसत में, आपको किसी प्रकार का विंडो आकार होना चाहिए। आपका विंडो आकार औसत है, इसलिए यह कुछ इस तरह दिखता है। लूप के लिए वर्तमान डेटा पर शुरू होता है और औसत लंबाई वापस चला जाता है डेटा अंक और उन्हें जोड़ता है जब आपके पास पर्याप्त होगा तब आपके पास केवल एक चलती औसत होगी डेटा अंक और औसतन औसत लंबाई से विभाजित राशि होगी। नोट नहीं सिर्फ सुडो कोड का परीक्षण किया गया है, लेकिन यह विचार है। उत्तर 4 अक्टूबर 13 21 05। आपका उत्तर .2017 स्टैक एक्सचेंज, इंक। अनिवार्य रूप से एक सरणी इस तरह के मूल्यों के ऊपर। सरणी के ऊपर सरलीकृत है, मैं अपने असली कोड में 1 मिलियन सेकेंड का मूल्य एकत्र कर रहा हूं और मुझे एक एल्गोरिथ्म पर आउटपुट को संसाधित करने की आवश्यकता है, जो मैंने एक बिंदु से पहले निकटतम शिखर खोजने के लिए लिखा था मेरा तर्क विफल रहता है क्योंकि मेरे उपरोक्त उदाहरण, 0 36 वास्तविक शिखर है, लेकिन मेरा एल्गोरिदम पीछे की ओर देखता है और चरम के रूप में बहुत अंतिम संख्या 0 25 देखता है, क्योंकि इससे पहले 0 24 में कमी आई है। लक्ष्य इन मानों को लेना है और एल्गोरिथम को लागू करना है जो उन्हें थोड़ा सा चिकना कर देगा ताकि मेरे पास अधिक रैखिक मान हो जाए यानी मैं अपने परिणामों को curvy होना पसंद नहीं करता, नहीं jaggedy। मुझे अपने मूल्यों पर एक घातीय हिलाने वाले औसत फिल्टर को लागू करने के लिए कहा गया है मैं यह कैसे कर सकता हूँ यह सचमुच है मेरे लिए गणितीय समीकरणों को पढ़ने के लिए कठिन है, मैं कोड के साथ बहुत बेहतर काम करता हूं। मैं कैसे प्रक्रिया करता हूं मेरी सरणी में मान, एक घातीय चलती औसत गणना को लागू करने के लिए भी उन्हें लागू करने के लिए। 8 फरवरी को 20 से 20 में 27। एक घातीय चलती औसत की गणना करने के लिए आपको कुछ राज्य को आस-पास रखने की आवश्यकता है और आपको ट्यूनिंग पैरामीटर की आवश्यकता है यह थोड़ा सा वर्ग संभालने की आवश्यकता है आप जावा 5 या बाद के संस्करण का उपयोग कर रहे हैं। आप चाहते हैं कि क्षय पैरामीटर के साथ इंस्टीटिएट करें, ट्यूनिंग 0 और 1 के बीच होना चाहिए और तब औसत के लिए फिल्टर का उपयोग करना चाहिए। जब ​​किसी पृष्ठ को कुछ गणितीय पुनरावृत्ति पर पढ़ना चाहिए, तो सभी को वास्तव में पता होना चाहिए कि इसे कब बदलना है कोड यह है कि गणितज्ञों को सरणियों में अनुक्रमित और सबस्क्रिप्ट के साथ क्रम लिखना चाहते हैं वे कुछ अन्य नोटेशन भी हैं, जो कि मदद नहीं करते हैं, लेकिन ईएमए बहुत सरल है क्योंकि आपको केवल एक पुराना मूल्य याद रखना जरूरी है, कोई जटिल राज्य सरणियों की आवश्यकता नहीं है। उत्तर फरवरी 8 12 से 20 42. टीकेकोहेरन बहुत अच्छा नहीं है जब चीजें आसान हो सकती हैं, तो एक नया अनुक्रम के साथ शुरू होने पर, एक नया एवरेजर प्राप्त करें नोट करें कि औसत अनुक्रम में पहले कुछ शब्द थोड़ी देर के आसपास कूदेंगे सीमा प्रभाव, लेकिन आप अन्य मूविंग एल्स के साथ मिलते हैं लेकिन, एक अच्छा फायदा यह है कि आप चलने वाले औसत तर्क को एवरेजर और प्रयोग में अपने बाकी प्रोग्राम को बहुत परेशान किए बिना लपेट कर सकते हैं। 9 फरवरी से 12 बजे 06। I आपके प्रश्नों को समझने में कठिन समय आ रहा है, लेकिन मैं किसी भी तरह से जवाब देने की कोशिश करूंगा। 1 अगर आपका एल्गोरिथम 0 0 के स्थान पर 0 25 से मिलता है, तो यह गलत है यह गलत है क्योंकि यह एक मोनोटोनिक वृद्धि या कमी करता है जो हमेशा ऊपर जा रहा है या हमेशा नीचे जा रहा है जब तक आप अपने सभी डेटा का औसत नहीं करते, आपके डेटा अंक --- जैसा कि आप उन्हें प्रस्तुत करते हैं --- नॉनलाइन है यदि आप वास्तव में समय में दो बिंदुओं के बीच अधिकतम मान प्राप्त करना चाहते हैं, तो अपने सरणी को tmin से tmax में और फिर से ढूंढें उस सबरेरा का अधिकतम .2 अब, चलती औसत की अवधारणा बहुत सरल है कि मेरी निम्न सूची 1 4, 1 5, 1 4, 1 5, 1 5 है, मैं इसे दो नंबरों की औसत 1 45, 1 45, 1 45, 1 5 ध्यान दें कि पहली संख्या 1 5 के औसत है डी 1 4 सेकंड और प्रथम संख्या दूसरी नई सूची 1 4 और 1 5 की औसत तीसरी और दूसरी पुरानी सूची तीसरी नई सूची 1 5 और 1 4 चौथा और तीसरे की औसत है, और इसी पर मैं यह अवधि बना सकता था तीन या चार, या एन नोटिस कैसे डेटा बहुत चिकना है काम पर चलती औसत को देखने का एक अच्छा तरीका है Google वित्त में जाने के लिए, एक स्टॉक का चयन करें टेस्ला मोटर्स को बहुत अस्थिर TSLA का प्रयास करें और चार्ट के निचले भाग में तकनीकी पर क्लिक करें दी गई अवधि के साथ औसत, और घातीय बढ़ते औसत, उनके मतभेदों की तुलना करने के लिए। एक्सपेन्नेएन्टल मूविंग एवरेज केवल इसका एक और विस्तार है, लेकिन नए आंकड़ों के मुकाबले पुराना आंकड़े कम होते हैं, यह पीठ की ओर चिकनाई के पूर्वाग्रह का एक तरीका है कृपया कृपया विकिपीडिया को पढ़ें प्रविष्टि। तो, यह एक उत्तर की तुलना में अधिक टिप्पणी है, लेकिन थोड़ा टिप्पणी बॉक्स सिर्फ छोटे भाग्य के लिए था.अगर आपको गणित के साथ परेशानी हो रही है, तो आप घाट के बजाए एक सरल चलती औसत के साथ जा सकते हैं तो आप जो आउटपुट प्राप्त करते हैं आखिरी एक्स शर्तें बांटेंगी एक्स द्वारा एक्स टेस्टेड स्यूडोकोड द्वारा एड। नोट करें कि आपको डेटा के शुरुआती और अंत भागों को संभालना होगा क्योंकि स्पष्ट रूप से आप पिछले 5 शब्दों को औसत नहीं कर सकते जब आप अपने दूसरे डेटा बिंदु पर हों, इसके अलावा, इस चलती गणना की अधिक कुशल तरीके हैं औसत योग राशि - सबसे पुराना नवीनतम, लेकिन यह है कि क्या हो रहा है की अवधारणा को प्राप्त करना है। उत्तर 8 फरवरी, 20, 41 41।

No comments:

Post a Comment