scikit-learn (पूर्व में scikits.learn, जिसे sklearn भी कहा जाता है) Python प्रोग्रामिंग भाषा के लिए एक मुफ्त और ओपन-सोर्स मशीन लर्निंग लाइब्रेरी है। इसमें विभिन्न वर्गीकरण, प्रतिगमन और क्लस्टरिंग एल्गोरिदम शामिल हैं, जिनमें सपोर्ट-वेक्टर मशीन, रैंडम फॉरेस्ट, ग्रेडिएंट बूस्टिंग, k-means और DBSCAN शामिल हैं, और इसे Python की संख्यात्मक और वैज्ञानिक लाइब्रेरी NumPy और SciPy के साथ अंतःक्रिया करने के लिए डिज़ाइन किया गया है। यह परियोजना NumFOCUS द्वारा वित्तीय रूप से प्रायोजित परियोजना है और दुनिया में सबसे व्यापक रूप से अपनाए गए मशीन लर्निंग फ्रेमवर्क में से एक है, विशेष रूप से शास्त्रीय (गैर-गहन) सीखने के कार्यों के लिए।
लाइब्रेरी पूर्वानुमानित मॉडल बनाने और मूल्यांकन करने के लिए एक सुसंगत इंटरफ़ेस प्रदान करती है, जिससे यह मशीन लर्निंग में प्रवेश का एक सामान्य बिंदु बन जाता है। इसका API डिज़ाइन estimator.fit() और estimator.predict() विधियों पर केंद्रित है, जिससे उपयोगकर्ता न्यूनतम कोड परिवर्तनों के साथ एल्गोरिदम के बीच स्विच कर सकते हैं।
इतिहास
यह परियोजना scikits.learn के रूप में शुरू हुई, जो 2007 में फ्रांसीसी डेटा वैज्ञानिक डेविड कॉर्नापो द्वारा Google Summer of Code पहल थी। यह नाम मशीन लर्निंग के लिए एक वैज्ञानिक टूलकिट के रूप में इसकी भूमिका से लिया गया है, जो मूल रूप से SciPy के तृतीय-पक्ष एक्सटेंशन के रूप में वितरित किया गया था। 2010 में, Saclay में फ्रांसीसी अनुसंधान संस्थान कंप्यूटर विज्ञान और स्वचालन के योगदानकर्ता फैबियन पेड्रेगोसा, गेल वारोक्स, एलेक्जेंडर ग्रैमफोर्ट और विंसेंट मिशेल ने नेतृत्व संभाला, और 1 फरवरी 2010 को पहला सार्वजनिक संस्करण जारी किया।
यह परियोजना NumFOCUS प्रायोजित परियोजना बन गई और 2019 तक इसके 1,400 से अधिक योगदानकर्ता थे, 2018 में दस्तावेज़ीकरण को 42 मिलियन विज़िट मिलीं। 2022 के Kaggle सर्वेक्षण में 173 देशों के लगभग 24,000 उत्तरदाताओं ने इसे सबसे व्यापक रूप से उपयोग किए जाने वाले मशीन लर्निंग फ्रेमवर्क के रूप में पहचाना। पहला स्थिर रिलीज़, संस्करण 1.0.0, 24 सितंबर 2021 को 2,100 से अधिक विलय किए गए पुल अनुरोधों के बाद सामने आया।
कार्यान्वयन और डिज़ाइन
scikit-learn मुख्य रूप से Python में लिखा गया है, जो उच्च-प्रदर्शन रैखिक बीजगणित के लिए NumPy पर निर्भर करता है। कुछ मुख्य एल्गोरिदम गति के लिए Cython में लागू किए गए हैं। सपोर्ट वेक्टर मशीनें LIBSVM के चारों ओर Cython रैपर का उपयोग करती हैं; लॉजिस्टिक रिग्रेशन और रैखिक सपोर्ट वेक्टर मशीनें LIBLINEAR के समान रैपर का उपयोग करती हैं। यह Python वैज्ञानिक स्टैक के साथ अंतःक्रिया करता है जिसमें SciPy, Pandas, Matplotlib और plotly शामिल हैं।
लाइब्रेरी एक सुसंगत एस्टीमेटर इंटरफ़ेस प्रदान करती है: fit() एक मॉडल को प्रशिक्षित करता है और predict() आउटपुट उत्पन्न करता है। यह सामान्य डेटा विज्ञान कार्यों के लिए उपयोगिताएँ भी प्रदान करता है जैसे कि ट्रेन-टेस्ट विभाजन, क्रॉस-वैलिडेशन, और ग्रिड खोज, साथ ही डेटा प्रीप्रोसेसिंग और मॉडल फिटिंग वर्कफ़्लो को घोषणात्मक रूप से संरचित करने के लिए एक पाइपलाइन तंत्र।
नवीनतम संस्करण, 1.8, 10 दिसंबर 2025 को जारी किया गया, जिसने मूल Array API समर्थन जोड़ा, जिससे PyTorch और CuPy सरणियों के माध्यम से सीधे GPU गणनाएँ संभव हो गईं। इस रिलीज़ ने रैखिक मॉडल फिटिंग दक्षता में भी सुधार किया।
एल्गोरिदम और क्षमताएँ
scikit-learn में वर्गीकरण, प्रतिगमन और क्लस्टरिंग के लिए स्थापित एल्गोरिदम की एक व्यापक सूची शामिल है। इनमें सपोर्ट-वेक्टर मशीन, रैंडम फॉरेस्ट, ग्रेडिएंट बूस्टिंग, k-means और DBSCAN शामिल हैं। यह एस्टीमेटरों के बीच सुसंगत विधियाँ प्रदान करता है: प्रशिक्षण के लिए fit() और अनुमान के लिए predict(), जिन्हें XGBoost और LightGBM जैसी लाइब्रेरी ने अपनाया है।
लाइब्रेरी सामान्य डेटा विज्ञान कार्यों के लिए उपयोगिता विधियाँ भी प्रदान करती है, जिसमें डेटा को प्रशिक्षण और परीक्षण सेट में विभाजित करना, क्रॉस-वैलिडेशन और ग्रिड खोज शामिल है। इसकी पाइपलाइन क्लास डेटा विज्ञान वर्कफ़्लो की घोषणात्मक संरचना को सक्षम बनाती है, जो प्रीप्रोसेसिंग चरणों को मॉडल फिटिंग के साथ जोड़ती है।
मुख्य एल्गोरिदम और एकीकरण
सपोर्ट वेक्टर मशीनें LIBSVM के चारों ओर Cython रैपर के माध्यम से लागू की जाती हैं, जबकि लॉजिस्टिक रिग्रेशन और रैखिक सपोर्ट वेक्टर मशीनें LIBLINEAR के समान रैपर का उपयोग करती हैं। लाइब्रेरी अन्य Python टूल्स के साथ एकीकृत होती है, जिसमें विज़ुअलाइज़ेशन के लिए Matplotlib और Plotly, डेटा हेरफेर के लिए pandas और वैज्ञानिक कंप्यूटिंग के लिए SciPy शामिल हैं।
वास्तविक दुनिया की तैनाती में, scikit-learn अक्सर डेटा हैंडलिंग के लिए Pandas और Numpy के साथ साथ काम करता है।grid_search