scikit-learn ट्यूटोरियल
शुरू हो रही है scikit-learn से
खोज…
टिप्पणियों
scikit-learn
अजगर में लिखे गए डेटा विश्लेषण के लिए एक सामान्य-उद्देश्य वाला ओपन-सोर्स लाइब्रेरी है। यह अन्य अजगर पुस्तकालयों पर आधारित है: NumPy, SciPy, और matplotlib
scikit-learn
में मशीन लर्निंग के विभिन्न लोकप्रिय एल्गोरिदम के लिए कई कार्यान्वयन हैं।
स्किटिट-सीख की स्थापना
Scikit-learn के वर्तमान स्थिर संस्करण की आवश्यकता है :
- अजगर (> = 2.6 या> = 3.3),
- NumPy (> = 1.6.1),
- SciPy (> = 0.9)।
अधिकांश स्थापना के लिए pip
अजगर पैकेज प्रबंधक अजगर और उसके सभी निर्भरता को स्थापित कर सकता है:
pip install scikit-learn
हालांकि लिनक्स सिस्टम के लिए संभव निर्माण प्रक्रियाओं से बचने के लिए conda
पैकेज मैनेजर का उपयोग करने की सिफारिश की जाती है
conda install scikit-learn
यह जांचने के लिए कि आपके पास scikit-learn
, शेल में निष्पादित करें:
python -c 'import sklearn; print(sklearn.__version__)'
Windows और Mac OSX स्थापना:
कैनोपी और एनाकोंडा दोनों ही विंडोज़, मैक ओएसएक्स (लिनक्स के लिए भी प्रासंगिक) के लिए वैज्ञानिक अजगर पुस्तकालय के एक बड़े सेट के अलावा, स्किटिट-लर्न के एक हालिया संस्करण को शिप करते हैं ।
क्रॉस-सत्यापन के साथ एक क्लासिफायर ट्रेन करें
आईरिस डाटासेट का उपयोग:
import sklearn.datasets
iris_dataset = sklearn.datasets.load_iris()
X, y = iris_dataset['data'], iris_dataset['target']
डेटा को ट्रेन और टेस्ट सेट में विभाजित किया गया है। ऐसा करने के लिए, हम train_test_split
उपयोगिता फ़ंक्शन का उपयोग X
और y
(डेटा और लक्ष्य वैक्टर) को विभाजित करने के लिए करते हैं, विकल्प के साथ यादृच्छिक रूप से train_size=0.75
(प्रशिक्षण सेट में 75% डेटा होता है)।
प्रशिक्षण डेटासेट एक के-निकटतम पड़ोसी क्लासिफायर में खिलाया जाता है । क्लासिफायर का तरीका fit
मॉडल को डेटा में फिट करेगा।
from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.75)
from sklearn.neighbors import KNeighborsClassifier
clf = KNeighborsClassifier(n_neighbors=3)
clf.fit(X_train, y_train)
अंत में परीक्षण के नमूने पर गुणवत्ता की भविष्यवाणी:
clf.score(X_test, y_test) # Output: 0.94736842105263153
ट्रेन और टेस्ट सेट की एक जोड़ी का उपयोग करके हम डेटा विभाजन की मनमानी पसंद के कारण क्लासिफायर की गुणवत्ता का एक पक्षपाती अनुमान प्राप्त कर सकते हैं। क्रॉस-वैलिडेशन का उपयोग करके हम डेटा के विभिन्न ट्रेन / टेस्ट सबसेट पर क्लासिफायरफ़ायर को फिट कर सकते हैं और सभी सटीकता परिणामों पर औसत बना सकते हैं। फ़ंक्शन cross_val_score
क्रॉस-मान्यता का उपयोग करके इनपुट डेटा के लिए एक क्लासिफायरियर फिट बैठता है। इसे प्रयोग करने के लिए अलग-अलग विभाजन (सिलवटों) की संख्या के रूप में ले सकते हैं (नीचे दिए गए उदाहरण में 5)।
from sklearn.cross_validation import cross_val_score
scores = cross_val_score(clf, X, y, cv=5)
print(scores)
# Output: array([ 0.96666667, 0.96666667, 0.93333333, 0.96666667, 1. ])
print "Accuracy: %0.2f (+/- %0.2f)" % (scores.mean(), scores.std() / 2)
# Output: Accuracy: 0.97 (+/- 0.03)
पाइपलाइनों का निर्माण
डेटा में पैटर्न खोजना अक्सर डेटा-प्रोसेसिंग चरणों की एक श्रृंखला में बढ़ता है, जैसे, सुविधा चयन, सामान्यीकरण और वर्गीकरण। sklearn
, इसके लिए चरणों की एक पाइपलाइन का उपयोग किया जाता है।
उदाहरण के लिए, निम्न कोड एक पाइपलाइन दिखाता है जिसमें दो चरण होते हैं। पहली सुविधाओं को तराजू, और दूसरा परिणामस्वरूप संवर्धित डेटासेट पर एक क्लासिफायर ट्रेन करता है:
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
pipeline = make_pipeline(StandardScaler(), KNeighborsClassifier(n_neighbors=4))
एक बार पाइपलाइन बनने के बाद, आप इसे एक नियमित चरण (इसके विशिष्ट चरणों के आधार पर) की तरह उपयोग कर सकते हैं। यहाँ, उदाहरण के लिए, पाइपलाइन एक क्लासिफायरियर की तरह व्यवहार करती है। नतीजतन, हम इसका उपयोग इस प्रकार कर सकते हैं:
# fitting a classifier
pipeline.fit(X_train, y_train)
# getting predictions for the new data sample
pipeline.predict_proba(X_test)
इंटरफेस और कन्वेंशन:
विशेष कक्षाओं का उपयोग करके डेटा के साथ विभिन्न ऑपरेशन किए जाते हैं।
अधिकांश वर्ग निम्नलिखित समूहों में से एक हैं:
- वर्गीकरण समस्याओं को हल करने के लिए वर्गीकरण एल्गोरिदम (
sklearn.base.ClassifierMixin
से प्राप्त) - रिग्रेशन अल्गोरिद्म (
sklearn.base.RegressorMixin
से प्राप्त) निरंतर चर (रिग्रेशन समस्या) के पुनर्निर्माण की समस्या को हल करने के लिए - डेटा परिवर्तन (
sklearn.base.TransformerMixin
से प्राप्त) जो डेटा को प्रीप्रोसेस करता है
डेटा को numpy.array
s में संग्रहीत किया जाता है (लेकिन अन्य सरणी-जैसी ऑब्जेक्ट जैसे pandas.DataFrame
s को स्वीकार किया जाता है, यदि वे numpy.array
s के लिए परिवर्तनीय हैं)
डेटा में प्रत्येक ऑब्जेक्ट को सुविधाओं के सेट द्वारा वर्णित किया जाता है सामान्य सम्मेलन यह है कि डेटा नमूना को सरणी के साथ दर्शाया जाता है, जहां पहला आयाम डेटा नमूना आईडी है, दूसरा आयाम फीचर आईडी है।
import numpy
data = numpy.arange(10).reshape(5, 2)
print(data)
Output:
[[0 1]
[2 3]
[4 5]
[6 7]
[8 9]]
ऊपर sklearn
सम्मेलनों में डेटासेट में 5 ऑब्जेक्ट होते हैं, जिनमें से प्रत्येक में 2 सुविधाएँ होती हैं।
नमूना डेटासेट
परीक्षण में आसानी के लिए, sklearn
sklearn.datasets
मॉड्यूल में कुछ अंतर्निहित डेटासेट प्रदान करता है। उदाहरण के लिए, फिशर आइरिस डेटासेट लोड करें:
import sklearn.datasets
iris_dataset = sklearn.datasets.load_iris()
iris_dataset.keys()
['target_names', 'data', 'target', 'DESCR', 'feature_names']
आप पूर्ण विवरण, सुविधाओं के नाम और कक्षाओं के नाम ( target_names
) पढ़ सकते हैं। जिन्हें तार के रूप में संग्रहीत किया जाता है।
हम डेटा और कक्षाओं में रुचि रखते हैं, जो data
और target
क्षेत्रों में संग्रहीत हैं। सम्मेलन द्वारा उन लोगों को X
और y
रूप में दर्शाया जाता है
X, y = iris_dataset['data'], iris_dataset['target']
X.shape, y.shape
((150, 4), (150,))
numpy.unique(y)
array([0, 1, 2])
X
और y
आकार कहते हैं कि 4 विशेषताओं के साथ 150 नमूने हैं। प्रत्येक नमूना निम्न वर्गों में से एक का है: 0, 1 या 2।
X
और y
अब क्लासिफायर के प्रशिक्षण में इस्तेमाल किया जा सकता है, क्लासिफायर fit()
विधि को कॉल करके।
यहाँ sklearn.datasets
मॉड्यूल द्वारा उनके आकार और इच्छित उपयोग के साथ उपलब्ध कराए गए डेटासेट की पूरी सूची दी गई है:
के साथ लोड करें | विवरण | आकार | प्रयोग |
---|---|---|---|
load_boston() | बोस्टन घर की कीमतें डाटासेट | 506 | वापसी |
load_breast_cancer() | स्तन कैंसर विस्कॉन्सिन डाटासेट | 569 | वर्गीकरण (बाइनरी) |
load_diabetes() | मधुमेह के रोगी | 442 | वापसी |
load_digits(n_class) | अंकों का डेटासेट | 1797 | वर्गीकरण |
load_iris() | आइरिस डाटासेट | 150 | वर्गीकरण (बहु-वर्ग) |
load_linnerud() | Linnerud डाटासेट | 20 | बहुभिन्नरूपी प्रतिगमन |
ध्यान दें कि (स्रोत: http://scikit-learn.org/stable/datasets/) :
ये डेटासेट स्किकिट में कार्यान्वित विभिन्न एल्गोरिदम के व्यवहार को जल्दी से समझने के लिए उपयोगी हैं। वे हालांकि वास्तविक दुनिया मशीन सीखने के कार्यों के प्रतिनिधि होने के लिए अक्सर छोटे होते हैं।
इन अंतर्निहित खिलौना नमूना डेटासेट के अलावा, sklearn.datasets
बाहरी डेटासेट लोड करने के लिए उपयोगिता कार्य भी प्रदान करता है:
-
load_mlcomp
से लोड हो रहा है नमूना डेटासेट के लिए mlcomp.org भंडार (ध्यान दें कि डेटासेट की जरूरत है इससे पहले कि डाउनलोड किया जा करने के लिए)। यहाँ उपयोग का एक उदाहरण है। -
fetch_lfw_pairs
औरfetch_lfw_people
से जंगली (एलएफडब्ल्यू) जोड़े डेटासेट में लोड हो रहा है लेबल लगाए गए चेहरे के लिए http://vis-www.cs.umass.edu/lfw/ , चेहरा सत्यापन के लिए इस्तेमाल किया (resp। चेहरा पहचानने)। यह डेटासेट 200 एमबी से बड़ा है। यहाँ उपयोग का एक उदाहरण है।