Несколько месяцев назад я открыл вопрос на GitHub по этой теме. Можно добавить соответствующий код в текущую основную ветку scikit-learn.
Пользователь @larsmans около года назад добавил экспериментальный класс SemisupervisedNB
в файл sklearn/naive_bayes.py
. Этот код находится в ветке emnb
его разветвленного репозитория scikit-learn, и доступ к нему можно получить здесь а>.
Основной код находится в двух файлах:
Файл naive_bayes.py
в текущей ветке master должен быть заменен более старым из ветки emnb
.
Необходимо редактирование класса LabelBinarizer
, которое можно найти в файле sklearn/preprocessing.py
в ветке master. Весь класс должен быть заменен его определением в ветке emnb
@larsmans. Там он находится в файле sklearn/preprocessing/__init__.py
.
Несмотря на то, что код наивных байесовских классификаторов за год не сильно изменился, в них были добавлены некоторые исправления ошибок. Поэтому имеет смысл сохранить текущие версии файла naive_bayes.py
и класса LabelBinarizer
, а вместо этого дать экспериментальным версиям другие имена.
Я только что создал свой собственный форк репозитория scikit-learn и добавил экспериментальные файлы поверх текущей стабильной ветки 0.13.X
. Эта ветка называется 0.13.X-emnb
и доступна здесь. Если вы посмотрите на три моих последних коммита (1 и 2 и 3), вы увидите, какие файлы я изменил и создал заново.
Поскольку SemisupervisedNB
не работает вместе с самыми последними версиями других классификаторов, я только что добавил новый модуль рядом с naive_bayes.py
под названием semisupervised_naive_bayes.py
. Там вы найдете более старые версии классификаторов в переименованных версиях, например. SemiMultinomialNB
вместо MultinomialNB
, чтобы они не конфликтовали с самыми последними версиями классификаторов. Точно так же я добавил класс SemisupervisedLabelBinarizer
рядом с LabelBinarizer
(выбор имени немного неудачен, но, по крайней мере, понятно, для чего он должен использоваться).
Итак, если вы хотите использовать полууправляемые версии классификаторов, используйте модуль sklearn.semisupervised_naive_bayes
. Для текущих версий используйте модуль sklearn.naive_bayes
.
Но, пожалуйста, имейте в виду, что это очень экспериментально. Это просто настройка для того, чтобы этот старый код работал. Я не искал баги.
person
pemistahl
schedule
31.01.2013
SemiSupervisedNB
работать. Однако я пока не проверял, влияют ли описанные изменения в ветке master на другие классификаторы или код. Пробуйте с осторожностью! - person pemistahl   schedule 29.01.2013SemiSupervisedNB
в текущую основную ветку? Вы также должны скопировать классLabelBinarizer
изsklearn/preprocessing/__init__.py
вsklearn/preprocessing.py
и заменить класс с тем же именем в последнем файле. Пожалуйста, прочитайте вопрос на GitHub более внимательно. Тогда должно быть понятно, я думаю. - person pemistahl   schedule 31.01.2013