Uma dúvida meio "noob" aqui.
Fiz o meu código (logo abaixo) mas agora estou com uma dúvida: como testar uma nova frase com o modelo já treinando?
# Lendo o CSV e imprimindo na tela
from sklearn.ensemble import AdaBoostClassifier
from sklearn.naive_bayes import MultinomialNB
from sklearn.multiclass import OneVsOneClassifier
from sklearn.svm import LinearSVC
from sklearn.multiclass import OneVsRestClassifier
import pandas as pd
from collections import Counter
import numpy as np
from sklearn.model_selection import cross_val_score
classificacoes = pd.read_csv('bands.csv')
# print(classificacoes)
# Colocando os textos em uma variavel
textos = classificacoes['texto']
# print(textos)
# Transformando palavras em strings
# cada linha se refere a um array com
# cada uma das palavras #minusculas separadas
palavrasIsoladas = textos.str.lower().str.split()
# print(palavrasIsoladas)
# Criando um unico array com todas as palavras unicas (dicionario)
dicionario = set()
for lista in palavrasIsoladas:
dicionario.update(lista)
# print(dicionario)
# imprime o total de palavras diferentes
totalDePalavras = len(dicionario)
# print(totalDePalavras)
# Associa cada palavra a uma posicao e armazena em um dicionario mapeado
palavraEposicao = dict(zip(dicionario, range(totalDePalavras)))
# print(palavraEposicao)
# Funcao que conta a presenca de cada palavra
# única presente no dicionario mapeado, no texto inteiro
def vetorizarPresencaPalavras(texto, palavraEposicao):
vetor = [0] * len(palavraEposicao)
for palavra in texto:
if palavra in palavraEposicao:
posicao = palavraEposicao[palavra]
vetor[posicao] += 1
return vetor
vetoresDeTexto = [vetorizarPresencaPalavras(
texto, palavraEposicao) for texto in palavrasIsoladas]
# print(vetoresDeTexto)
# Associa o texto ao autor
autor = classificacoes['classificacao']
# Armazena o texto e os autores
x = np.array(vetoresDeTexto)
y = np.array(autor)
# Define porcentagem de Treino
porcentagem_de_treino = 0.8
# Define o Tamanho dos dados de treino, a partir da porcentagem de #treino
tamanho_de_treino = int(porcentagem_de_treino * len(y))
tamanho_de_validacao = len(y) - tamanho_de_treino
# Pega os dados de treino
treino_dados = x[0:tamanho_de_treino]
treino_marcacoes = y[0:tamanho_de_treino]
# Pega os dados de validacao
validacao_dados = x[tamanho_de_treino:]
validacao_marcacoes = y[tamanho_de_treino:]
# Funcao que Treina os dados
def predict(nome, modelo, treino_dados, treino_marcacoes):
k = 10
scores = cross_val_score(modelo, treino_dados, treino_marcacoes, cv=k)
taxa_de_acerto = np.mean(scores)
msg = "Taxa de acerto do {0}: {1}".format(nome, taxa_de_acerto)
print(msg)
return taxa_de_acerto
# Utilizando o classificador OneVsRest
resultados = {}
modeloOneVsRest = OneVsRestClassifier(LinearSVC(random_state=0))
resultadoOneVsRest = predict(
"OneVsRest", modeloOneVsRest, treino_dados, treino_marcacoes)
resultados[resultadoOneVsRest] = modeloOneVsRest
# Utiliznado o classificador OneVsOne
modeloOneVsOne = OneVsOneClassifier(LinearSVC(random_state=0))
resultadoOneVsOne = predict(
"OneVsOne", modeloOneVsOne, treino_dados, treino_marcacoes)
resultados[resultadoOneVsOne] = modeloOneVsOne
# Utilizando o classificador MultinomialNb
modeloMultinomial = MultinomialNB()
resultadoMultinomial = predict(
"MultinomialNB", modeloMultinomial, treino_dados, treino_marcacoes)
resultados[resultadoMultinomial] = modeloMultinomial
# Utilizando o classificador Adaboost
modeloAdaBoost = AdaBoostClassifier()
resultadoAdaBoost = predict(
"AdaBoostClassifier", modeloAdaBoost, treino_dados, treino_marcacoes)
resultados[resultadoAdaBoost] = modeloAdaBoost