Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro ao executar predict no vencedor

Ao tentar executar vencedor.predict(validacao_dados) o python me informa que meu modelo não foi "fitado" ainda, sendo que a função fit_and_predict já realiza a ação, será que pode ser relacionado ao fato de eu estar utilizando o jupyter notebook?

Segue a mensagem de erro e alguns trechos de código

NotFittedError                            Traceback (most recent call last)
<ipython-input-98-c27d18e5fc7b> in <module>()
      4     vencedor = modeloAdaBoost
      5 
----> 6 teste_real(vencedor, validacao_dados, validacao_marcacoes)

<ipython-input-95-d66529a04746> in teste_real(modelo, validacao_dados, validacao_marcacoes)
      1 def teste_real(modelo, validacao_dados, validacao_marcacoes):
----> 2     resultado = modelo.predict(validacao_dados)
      3     acertos = resultado == validacao_marcacoes
      4 
      5     total_acertos = sum(acertos)

C:\ProgramData\Anaconda3\lib\site-packages\sklearn\ensemble\weight_boosting.py in predict(self, X)
    600             The predicted classes.
    601         """
--> 602         pred = self.decision_function(X)
    603 
    604         if self.n_classes_ == 2:

C:\ProgramData\Anaconda3\lib\site-packages\sklearn\ensemble\weight_boosting.py in decision_function(self, X)
    658             class in ``classes_``, respectively.
    659         """
--> 660         check_is_fitted(self, "n_classes_")
    661         X = self._validate_X_predict(X)
    662 

C:\ProgramData\Anaconda3\lib\site-packages\sklearn\utils\validation.py in check_is_fitted(estimator, attributes, msg, all_or_any)
    766 
    767     if not all_or_any([hasattr(estimator, attr) for attr in attributes]):
--> 768         raise NotFittedError(msg % {'name': type(estimator).__name__})
    769 
    770 

NotFittedError: This AdaBoostClassifier instance is not fitted yet. Call 'fit' with appropriate arguments before using this method.
def fit_and_predict(modelo, treino_dados, treino_marcacoes, teste_dados, teste_marcacoes):
    modelo.fit(treino_dados, treino_marcacoes)

    resultado = modelo.predict(teste_dados)
    diferencas = resultado - teste_marcacoes

    acertos = [d for d in diferencas if d == 0]
    total_acertos = len(acertos)
    total_elementos = len(teste_dados)
    taxa_acerto = 100.0 * total_acertos / total_elementos

    print('Taxa de acerto: ', taxa_acerto)
    print('Total de elementos: ', total_elementos)
    return taxa_acerto
from sklearn.naive_bayes import MultinomialNB

modeloMultinomial = MultinomialNB()
resultadoMultinomial = fit_and_predict(modelo, treino_dados, treino_marcacoes, teste_dados, teste_marcacoes)
from sklearn.ensemble import AdaBoostClassifier

modeloAdaBoost = AdaBoostClassifier()
resultadoAdaBoost = fit_and_predict(modelo, treino_dados, treino_marcacoes, teste_dados, teste_marcacoes)
def teste_real(modelo, validacao_dados, validacao_marcacoes):
    resultado = modelo.predict(validacao_dados)
    acertos = resultado == validacao_marcacoes

    total_acertos = sum(acertos)
    total_elementos = len(validacao_marcacoes)

    taxa_acerto = 100.0 * taxa_acerto / total_elementos
1 resposta
solução!

Descobri que parte do erro era por conta que esqueci de alterar os nomes das variáveis "modelo"