जवाबों:
वैचारिक स्तर पर
क्लासिफायर करने का मतलब है कि इनपुट के रूप में डेटा सेट लेना, फिर एक क्लासिफायरिएटिंग को आउटपुट करना, जिसे संभावित क्लासिफायरियर के स्पेस से चुना जाता है। कई मामलों में, एक क्लासिफायरियर की पहचान की जाती है - जो कि अन्य संभावित क्लासिफायर से अलग है - मापदंडों के एक सेट द्वारा। आमतौर पर मापदंडों को एक अनुकूलन समस्या या कुछ अन्य संख्यात्मक प्रक्रिया को हल करके चुना जाता है। लेकिन, knn के मामले में, क्लासिफायर को प्रशिक्षण डेटा द्वारा ही पहचाना जाता है। तो, एक अमूर्त स्तर पर, एक knn क्लासिफायर फिटिंग बस प्रशिक्षण सेट भंडारण की आवश्यकता है।
कार्यान्वयन स्तर पर
एक नए डेटा बिंदु पर एक नाइट क्लासिफायर का मूल्यांकन करने के लिए प्रशिक्षण सेट में अपने निकटतम पड़ोसियों की खोज करने की आवश्यकता होती है, जो प्रशिक्षण सेट के बड़े होने पर एक महंगा ऑपरेशन हो सकता है। जैसा कि RUser ने उल्लेख किया है, इस खोज को गति देने के लिए कई तरकीबें हैं, जो आमतौर पर प्रशिक्षण सेट के आधार पर विभिन्न डेटा संरचनाएं बनाकर काम करती हैं। सामान्य विचार यह है कि नए बिंदुओं को वर्गीकृत करने के लिए आवश्यक कुछ कम्प्यूटेशनल काम वास्तव में पूरे बिंदुओं पर सामान्य हैं। इसलिए, यह काम समय से पहले किया जा सकता है और फिर प्रत्येक नए उदाहरण के लिए दोहराया जाने के बजाय फिर से उपयोग किया जा सकता है। इन चालों का उपयोग करके एक knn कार्यान्वयन प्रशिक्षण चरण के दौरान यह काम करेगा। उदाहरण के लिए, स्किकिट-लर्न fit()
फ़ंक्शन को कॉल के दौरान केडी-ट्री या बॉल ट्री का निर्माण कर सकता है।
चयन करना
आप इसे एक आलसी तरीके से लागू कर सकते हैं और किसी भाषा की खोज करते समय यह एक अच्छा अभ्यास करता है। ( मेरे ब्लॉग पोस्ट में से एक उदाहरण देखें )। लेकिन आप भविष्यवाणी (बहुत तेज) करने के लिए, डेटा को भी अनुक्रमित कर सकते हैं।
यदि फ़ीचर स्पेस में एक का आयाम था, तो इस फ़ीचर के अनुसार पॉइंट्स को छाँटने से आपको पड़ोसियों को बहुत तेज़ी से खोजने में मदद मिलेगी (उदाहरण के लिए डायकोटामिक खोज का उपयोग करके)। बड़े आयाम में, छंटाई का कोई प्राकृतिक सामान्यीकरण नहीं है, लेकिन आप (उदाहरण के अनुसार) क्वाडट्र्स का उपयोग करके अंक को अनुक्रमित कर सकते हैं ।
को देखते हुए स्रोत , आप देख सकते हैं कि विभिन्न तरीकों में scikit जानने लागू किया गया है। और कुछ शोध है , जो इन निकटतम पड़ोसी प्रश्नों को सुधारते रहते हैं।
हालांकि अन्य उत्तर देने वाले बिंदु निश्चित रूप से मान्य और दिलचस्प हैं, मैं एक और बात कड़ाई से सॉफ्टवेयर इंजीनियरिंग के बिंदु से देखना चाहता हूं:
उनके एपीआई के अनुरूप बनाने के लिए
स्केलेर के एस्टिमेटर्स को, अन्य चीजों के साथ, एक fit
विधि होनी चाहिए जो एक या दो सरणी-पसंद (इस पर निर्भर करती है कि यह एक पर्यवेक्षित / असुरक्षित अनुमानकर्ता है) और कार्यान्वयन-विशिष्ट विवरण ( स्रोत ) की एक संख्या है ।
इसलिए, भले ही knn की fit
विधि पूरी तरह से कुछ भी नहीं करने के लिए थी, यह संभवतः अभी भी मौजूद है, क्योंकि knn एक अनुमानक और स्केलेरर्स डेवलपर्स है, साथ ही साथ वे जिस कोड का योगदान करते हैं, वे अनुमान लगाने वालों से एक fit
विधि की अपेक्षा करते हैं ।