2015-06-18 3 views
1

У меня есть два классификатора для набора данных мультимедиа. Один для визуального материала и один для текстового материала. Я хочу объединить предсказания этих классификаторов, чтобы сделать окончательное предсказание. Я читал о мешках, наращивании и укладке ансамблей, и все это кажется полезным, и я хотел бы попробовать их. Тем не менее, я могу только найти довольно теоретические примеры для моей конкретной проблемы, ничего конкретного для меня, чтобы понять, как реально реализовать его (в python с scikit-learn). Мои два классификатора используют 10 KFold CV с классификацией SVM. Оба выводят список из n_samples = 1000 с прогнозами (1 или 0). Кроме того, я заставил их составить список вероятностей, на которых предсказания основаны, глядя, как это:Sklearn: Как создать ансамбль для двух бинарных классификаторов?

[[ 0.96761819 0.03238181] 
[ 0.96761819 0.03238181] 
    .... 
[ 0.96761819 0.03238181] 
[ 0.96761819 0.03238181]] 

Как бы я идти об объединении их в ансамбле. Что я должен использовать в качестве входных данных? Ive попытался объединить предсказания лейбла по горизонтали и ввести их как функции, но не повезло (то же самое для вероятностей).

Заранее благодарен!

ответ

3

Если вы ищете для объединения строго, я рекомендую используя brew, потому что он построен на вершине sklearn (это означает, что вы можете использовать ваши sklearn классификаторы), и, в последний раз я проверил, sklearn был хорошо подходит для создания ансамблей (Bagging, AdaBoost, RandomForest ...), но не так много правил комбинирования для вашего собственного ансамбля (например, гибридные ансамбли).

https://github.com/viisar/brew

from brew.base import Ensemble 
from brew.base import EnsembleClassifier 
from brew.combination.combiner import Combiner 

# create your Ensemble 
clfs = your_list_of_classifiers # [clf1, clf2] 
ens = Ensemble(classifiers = clfs) 

# create your Combiner 
# the rules can be 'majority_vote', 'max', 'min', 'mean' or 'median' 
comb = Combiner(rule='mean') 

# now create your ensemble classifier 
ensemble_clf = EnsembleClassifier(ensemble=ens, combiner=comb) 
ensemble_clf.predict(X) 
1

Это полностью зависит от метода ансамбля, который вы хотите реализовать. Вы взглянули на документацию sklearn-ensemble?

http://scikit-learn.org/stable/modules/classes.html#module-sklearn.ensemble

+0

Да, но это требует от меня предоставления классификаторов в качестве входных данных, правильно? У меня уже есть предсказания, результаты классификаторов. Поэтому я искал способ построить ансамбль из этого. Я понимаю, что это зависит от ансамбля, который я хочу реализовать, но на данный момент я даже не могу создать ни одного. – Lexxxxx

+0

Да, в этом суть метаклассификатора: использование различных классификаторов для улучшения прогнозов. Если вы хотите представить прогнозы как входные данные, вам придется использовать простой алгоритм обучения (например, классификатор), а не ансамблевый метод, потому что вы не являетесь ансамблевыми алгоритмами. –

+0

Ах, хорошо, это имеет смысл. Вы бы рекомендовали использовать ансамбли, а не то, что я пытаюсь сделать? – Lexxxxx

-2

Существует классификатор называется «VotingClassifier» в sklearn.ensemble, которые могут быть использованы для клуба несколько классификаторов и будут базироваться предсказанные этикетки на голосовании из зачислена классификаторов. Вот пример:

+0

Был ли пример? вы отвечаете на 2-летний вопрос, ответчик может не нуждаться в ответе, поэтому он должен быть достаточно ясным, чтобы помочь любому, у кого есть аналогичный вопрос – Julien

Смежные вопросы