Я пытаюсь выполнить перекрестное подтверждение с пакетом python «Оранжевый». Эта библиотека выглядит очень красиво, но у меня есть некоторые проблемы с ней.Перекрестная проверка с оранжевой библиотекой python
Для получения информации о версии, я использую Python 2.7 и Orange 2.7.8. Моя задача проста. Я хочу проверить модель с перекрестной проверкой с (1) дискретизацией для числовых атрибутов и (2) выбор функции.
Здесь важно обрабатывать дискретизацию и выбор функций в цикле взаимной проверки, как вы знаете. Другими словами, для каждого цикла перекрестной проверки (1) дискретизируйте только данные обучения и используйте один и тот же битнинг для тестовых данных и (2) получите важные функции из данных обучения и используйте функции для тестовых данных.
Изучив оранжевый, я закодировал следующий сценарий.
import Orange, orange, orngDisc, orngTest, orngStat, orngFSS
data = Orange.data.Table("test.tab") # has numeric, discrete features
nb = Orange.classification.bayes.NaiveLearner()
dBayes = orngDisc.DiscretizedLearner(nb, method=Orange.feature.discretization.Entropy(), name="disc nb")
# feature selection (three important features based on information gain)
fss = orngFSS.FilterBestN(n=3, measure=Orange.feature.scoring.InfoGain())
fBayes = orngFSS.FilteredLearner(dBayes, filter=fss, name="nb & fss")
learners = [nb, dBayes, fBayes]
results = orngTest.crossValidation(learners, data, folds=10, storeClassifiers=1, storeExamples=1)
# print accuracy for the three models (no errors in this block!)
print "\nLearner Accuracy #Atts"
for i in range(len(learners)):
print "%-15s %5.3f %5.2f" % (learners[i].name, orngStat.CA(results)[i], natt[i])
Короче говоря, Dataset («данные» в коде) содержит числовые и дискретные функции, и я хочу сделать дискретизацию (на основе энтропии), а затем функцию выбора (верхние 3 функции на основании коэффициента усиления информации) в пределах процесс перекрестной проверки.
Однако ошибка говорит об ошибке, возникающей при вычислении усиления информации для числовых функций. Я думаю, что выбор функции обрабатывается до дискретизации. Я думаю, что требуется небольшая модификация, но на оранжевом в Интернете нет примера, и я не имею очевидной идеи для модификации.
Можете ли вы дать мне несколько моментов для модификации? Спасибо.