0

我正在尝试训练分类器来检测命令。我的数据中有 2000 个命令和 2000 个非命令。我使用 4000 (400) 个句子中的 10% 作为我的测试集,其余 3600 个句子作为分类器的训练集。我尝试应用 K-Fold 交叉验证的概念。我的部分代码如下:

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 次的分类器?

4

0 回答 0