मैं अभी भी पहली बार मशीन लर्निंग का अध्ययन करने वाला एक नौसिखिया हूं। मैं अपने शोध में 4 वर्ग वर्गीकरण की समस्या से निपट रहा हूं। मैं सटीकता, सटीकता और रिकॉल की गणना करना चाहूंगा। चूंकि डेटा की संख्या कम है (लगभग 30), स्कोर ट्रेन-सेट और टेस्ट-सेट में विभाजित होने के तरीके से प्रभावित होता है। जब क्रॉस सत्यापन निष्पादित किया जाता है, तो विचरण बड़ा होता है। (उदाहरण के लिए सटीकता [०.८३३३३३३३ ०.७२७२७२७३ ०.४४४४४४४४] है) मैं इस क्लासिफायर का मूल्यांकन करने के लिए नुकसान में हूं। ऐसे मामले में, क्या मैं १०० या ५०० बार क्रॉस सत्यापन करता हूं और सत्यापन स्कोर के माध्य की गणना करता हूं? यह एक बहुत ही मूल प्रश्न है और खराब अंग्रेजी, मैं चाहता हूं कि आप इस प्रश्न का उत्तर दें।
ava = []
avp = []
avr = []
estimators = [("MinMaxScaler", MinMaxScaler()),
("SVC", SVC(kernel='linear', class_weight='balanced',
C=1, decision_function_shape='ovr'))]
pl = Pipeline(estimators)
for i in range(ITER):
accuracy = cross_val_score(pl, X, y, cv=StratifiedKFold(n_splits=3, shuffle=True))
precision = cross_val_score(pl, X, y, scoring='precision_macro', cv=StratifiedKFold(n_splits=3, shuffle=True))
recall = cross_val_score(pl, X, y, scoring='recall_macro', cv=StratifiedKFold(n_splits=3, shuffle=True))
ava.append(np.mean(accuracy))
avp.append(np.mean(precision))
avr.append(np.mean(recall))
print("cross-val-score accuracy {}times average: ".format(ITER), np.mean(ava), "\n")
print("cross-val-score precision {}times average: ".format(ITER), np.mean(avp), "\n")
print("cross-val-score recall {}times average: ".format(ITER), np.mean(avr), "\n")
1 उत्तर
सबसे पहले, SO में आपका स्वागत है!
30 नमूने वास्तव में छोटा डेटा है। k-fold CV के बजाय, leave-one-out करने पर विचार करें सीवी जहां आप अपने मॉडल को n
बार n-1
नमूनों पर प्रशिक्षित करते हैं, और हर बार एक नमूने पर परीक्षण करते हैं। मेट्रिक्स की गणना के अलावा, आप यह देख पाएंगे कि आपके मॉडल में कौन से नमूने गलत हैं और क्यों।
यदि आपका मॉडल नियतात्मक है, तो नमूनों की तुलना में अधिक तह चलाने का कोई प्रभाव नहीं पड़ेगा।
किसी भी मामले में, अपने डेटासेट के आकार को मैन्युअल रूप से या कृत्रिम रूप से बढ़ाने के तरीकों के बारे में सोचने का प्रयास करें।
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।