Нужно ли создавать новый классификатор для каждого сгиба при перекрестной валидации K-Fold?

Я пытаюсь обучить классификатор для выявления императивов. В моих данных 2000 императивов и 2000 необязательных. Я использовал 10% от 4000 (400) в качестве своего набора тестов, а остальные 3600 предложений - в качестве набора для обучения классификаторов. Я попытался применить концепцию K-Fold Cross Validation. Часть моего кода ниже:

featuresets = [(document_features(d, word_features), c) for (d, c) in train]
train_set, test_set = featuresets[360:], featuresets[:360] 
#first 360 (first 10% of the data)sentences be the first test_set 

classifier = nltk.NaiveBayesClassifier.train(train_set)
a=nltk.classify.accuracy(classifier, test_set)

train_set2, test_set2= featuresets[:360]+featuresets[720:], 
featuresets[360:720] #second 10% of the sentences to be the second test_set 
classifier2 = classifier.train(train_set2)
b=nltk.classify.accuracy(classifier2, test_set2)

train_set3, test_set3 = featuresets[:720]+featuresets[1080:], 
featuresets[720:1080]
#Third 10% of the data be the third test_set 
classifier3 = classifier2.train(train_set3)
c=nltk.classify.accuracy(classifier3, test_set3)

train_set4, test_set4 = featuresets[:1080]+featuresets[1440:], 
featuresets[1080:1440]
#Fourth 10% of the data be the Fourth test_set 
classifier4 = classifier3.train(train_set4)
d=nltk.classify.accuracy(classifier4, test_set4)

Я повторил один и тот же учебный процесс 10 раз (я показал только 4 раза в своем коде), потому что 10 различных частей данных должны быть как минимум проверочными данными, по крайней мере, для перекрестной проверки в K-кратных сроках.

Вопрос, который у меня возникает, заключается в том, что я не знаю, следует ли мне каждый раз создавать новый классификатор (classifier = nltk.NaiveBayesClassifier.train(train_set)), обучите его и рассчитайте среднюю оценку точности по каждому из отдельных классификаторов, чтобы получить оценку точности. Или я должен просто обучить ранее обученный классификатор новым данным (точно так же, как я делаю сейчас), чтобы последний классификатор был обученным 10 раз?

0 ответов

Другие вопросы по тегам