मैं मशीन लर्निंग के लिए नया हूं और मैं एक लेबल वाले डेटासेट दिए गए लेख के विषय की भविष्यवाणी करने की कोशिश कर रहा हूं जिसमें प्रत्येक में एक लेख में सभी शब्द शामिल हैं। कुल 11 अलग-अलग विषय हैं और प्रत्येक लेख में केवल एक ही विषय है। मैंने एक प्रक्रिया पाइपलाइन बनाई है:

classifier = Pipeline([
    ('vectorizer', CountVectorizer()),
    ('tfidf', TfidfTransformer()),
    ('clf', OneVsRestClassifier(XGBClassifier(objective="multi:softmax", num_class=11), n_jobs=-1)),
])

मैं सर्वोत्तम हाइपरपैरामीटर खोजने के लिए ग्रिडसर्चसीवी को लागू करने का प्रयास कर रहा हूं:

parameters = {'vectorizer__ngram_range': [(1, 1), (1, 2),(2,2)],
               'tfidf__use_idf': (True, False)}
gs_clf_svm = GridSearchCV(classifier, parameters, n_jobs=-1, cv=10, scoring='f1_micro')
gs_clf_svm = gs_clf_svm.fit(X, Y)

यह ठीक काम करता है, हालांकि, मैं XGBClassifier के हाइपरपैरामीटर को कैसे ट्यून करूं? मैंने नोटेशन का उपयोग करने का प्रयास किया है:

parameters = {'clf__learning_rate': [0.1, 0.01, 0.001]}

यह काम नहीं करता है क्योंकि GridSearchCV OneVsRestClassifier के हाइपरपैरामीटर की तलाश में है। XGBClassifier के हाइपरपैरामीटर को वास्तव में कैसे ट्यून करें? साथ ही, आप मेरी समस्या के लिए ट्यूनिंग के लायक कौन से हाइपरपैरामीटर सुझा रहे हैं?

1
SuShiS 7 अप्रैल 2020, 10:39

1 उत्तर

सबसे बढ़िया उत्तर

जैसा कि, पाइपलाइन OneVsRestClassifier में एक पैरामीटर learning_rate की तलाश में है, एक नहीं मिल सकता है (आश्चर्यजनक रूप से, क्योंकि मॉड्यूल में ऐसा कोई पैरामीटर नहीं है), और एक त्रुटि उत्पन्न करता है। चूंकि आप वास्तव में XGBClassifier का पैरामीटर learning_rate चाहते हैं, आपको एक स्तर और गहरा जाना चाहिए, अर्थात:

parameters = {'clf__estimator__learning_rate': [0.1, 0.01, 0.001]}
2
desertnaut 7 अप्रैल 2020, 09:16