python - sklearn - Cross validation with multiple scores -
मैं recall , सटीक और विभिन्न क्लासिफायर के लिए एक क्रॉस सत्यापन टेस्ट के> एफ-मापन । scikit-learn के साथ आता है लेकिन दुर्भाग्य से इस तरह की विधि कई मान वापस नहीं करती है।
मैं तीन बार cross_val_score < / Em> लेकिन वह कुशल नहीं है क्या कोई बेहतर समाधान है?
अब तक मैंने इस फ़ंक्शन को लिखा है: sklearn आयात मीट्रिक डीआर अर्थ माध्यको से (एक्स, वाई, सीएलएफ, एसपीएफ): सेमी = एनपी। शून्य (एनएपी.युनीक (वाई)) ** 2) मैं, (ट्रेन, परीक्षा) एन्यूमरेट (स्फ़ी) में: clf.fit (एक्स [ट्रेन], y [ट्रेन]) y_pred = clf.predict (X [टेस्ट]) सेमी + = मेट्रिक्स.संस्थापन_मैट्रिक्स (वाई [टेस्ट], y_pred)। फ्लेटन () रिटर्न कंप्यूट_मेजर्स (* सेमी / स्कफ.एन_ फोल्ड्स) डीईफ़ कंप्यूट_आमेचर (टीपी, एफपी, एफएन, टीएन): "" "प्रभावशीलता उपाय "विशिष्टता = टीएन / (टीएन + एफपी) संवेदनशीलता = टीपी / (टीपी + एफएन) फिमेंजर = 2 * (विशिष्टता * संवेदनशीलता) / (विशिष्टता + संवेदनशीलता) रिटर्न सेंसिटिविटी, विशिष्टता, फ़ाइमोर कोड>
यह मूल रूप से भ्रम मैट्रिक्स मानों को बताता है और एक बार जब आप गलत पॉजिटिव , झूठे नकारात्मक आदि कर रहे हैं, तो आप आसानी से रिकॉल, सटीक आदि की गणना कर सकते हैं। .. लेकिन फिर भी मुझे यह समाधान पसंद नहीं है:)
आप जो समाधान प्रस्तुत करते हैं वह बिल्कुल cross_val_score
की कार्यक्षमता को दर्शाता है, जो पूरी तरह से आपकी स्थिति के अनुकूल है। यह सही रास्ते पर जाने की तरह लगता है
cross_val_score
तर्क को लेता है n_jobs =
, मूल्यांकन को समानांतर बनाना यदि यह आपको कुछ चाहिए, तो आपको sklearn.externals.joblib.Parallel
।
का उपयोग करते हुए समानांतर लूप के साथ लूप के लिए अपना स्थान बदलना चाहिए। साइकोकिट के मुद्दे ट्रैकर में कई अंकों की समस्या के बारे में चर्चा चल रही है एक प्रतिनिधि धागा पाया जा सकता है। इसलिए जब ऐसा लगता है कि विज्ञान-शिक्षा के भविष्य के संस्करण, स्कोरर के कई आउटपुट को अनुमति देगा, जैसा कि अब, यह असंभव है।
ए हैकी (अस्वीकरण!) चारों ओर जाने का तरीका यह कोड को cross_validation.py
में इतनी थोड़ी-थोड़ी बदलना है कि क्या आपका स्कोर एक संख्या है या नहीं, इसकी स्थिति जांचने के लिए। हालांकि, यह सुझाव बहुत ही संस्करण पर निर्भर है, इसलिए मैं इसे संस्करण 0.14
के लिए प्रस्तुत करूंगा।
1) IPython में, skelearn import cross_validation से टाइप करें, इसके बाद cross_validation ??
फ़ाइल नाम दर्ज करें और इसे एक संपादक में खोलें (आपको रूट निजी क्षेत्र की आवश्यकता हो सकती है)।
2) आपको मिलेगा, जहां मैंने पहले से प्रासंगिक लाइन (1066) को टैग किया है। यह बताता है कि
यदि नहीं है (अंक, संख्याएं। संख्या): मान बढ़ाने ("स्कोरिंग को एक संख्या वापस करनी चाहिए, इसके बजाय% s (% s) मिलती है।"% (Str (स्कोर) ), प्रकार (स्कोर)))
इन पंक्तियों को निकालने की आवश्यकता है एक बार वहां क्या था (यदि आप कभी भी वापस बदलना चाहते हैं) का ट्रैक रखने के लिए, इसे निम्नलिखित
से बदल दें, यदि नहीं है तो (स्कोर, संख्याएं।): पास = बढ़ाएँ ValueError ("स्कोरिंग को एक संख्या वापस करनी चाहिए, इसके बजाय% s (% s) मिलती है।"% (स्ट्र (स्कोर), टाइप (स्कोर)))
अगर आपका स्कोरर रिटर्न cross_val_score
कहीं और दबा नहीं कर सकता है, इसने आपकी समस्या को हल करना चाहिए कृपया मुझे बताएं कि यह मामला है।
Comments
Post a Comment