Olá, boa tarde. Eu estou desenvolvendo um projeto baseado nas aulas do curso de Machine Learning e ele está apresentando diversos erros que não estou conseguindo resolver. Os erros não apareceram enquanto eu desenvolvia os projetos das aulas, mas com dados diferentes eles surgiram e eu gostaria de saber como resolvê-los e o motivo deles estarem aparecendo, segue meu código:
!pip install nltk==3.5
import nltk
nltk.download('all')
import pandas as pd
from sklearn.model_selection import cross_val_score
from collections import Counter
import numpy as np
import nltk
from IPython.display import display
np.set_printoptions(threshold=np.inf, linewidth=np.nan)
pd.options.mode.chained_assignment = None
stopwords = nltk.corpus.stopwords.words("portuguese")
stemmer = nltk.stem.RSLPStemmer()
classificacoes = pd.read_csv("vincere.csv", encoding = "latin1", engine= 'python', delimiter =';', nrows = 98)
pd.options.display.max_columns = None
classificacoes.columns = classificacoes.columns.str.strip().str.lower().str.replace(' ', '_')
classificacoes["sexo"] = classificacoes["sexo"].str.strip().str.lower().str.replace(' ', '_')
classificacoes["local_anatomico"] = classificacoes["local_anatomico"].str.strip().str.lower().str.replace(' ', '_')
df = classificacoes
conditionlist = [
(df['idade'] <= 20) ,
(df['idade'] <= 30) ,
(df['idade'] <= 40) ,
(df['idade'] <= 50) ,
(df['idade'] <= 55) ,
(df['idade'] <= 60) ,
(df['idade'] <= 65) ,
(df['idade'] <= 70) ,
(df['idade'] <= 75) ,
(df['idade'] <= 80) ,
(df['idade'] <= 90) ,
(df['idade'] >= 91)]
choicelist = ['faixa1', 'faixa2', 'faixa3', 'faixa4', 'faixa5', 'faixa6' , 'faixa7', 'faixa8', 'faixa9', 'faixa10', 'faixa11', 'faixa12']
df['faixa_etaria'] = np.select(conditionlist, choicelist, default='Not Specified')
df["faixa_etaria"] = df["faixa_etaria"].str.strip().str.lower().str.replace(' ', '_')
X_df = df[["sexo", "local_anatomico", "faixa_etaria"]]
Y_df = classificacoes["diagnóstico_médico_(y)"].str.strip().str.lower().str.replace(' ', '_')
X_dummies = pd.get_dummies(X_df)
Y_dummies = pd.get_dummies(Y_df)
X = X_dummies.values
Y = Y_dummies.values
porcentagem_de_treino = 0.8
tamanho_de_treino = int(porcentagem_de_treino * len(Y))
treino_dados = X[:tamanho_de_treino]
treino_marcacoes = Y[:tamanho_de_treino]
validacao_dados = X[tamanho_de_treino:]
validacao_marcacoes = Y[tamanho_de_treino:]
def fit_and_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
resultados = {}
from sklearn.multiclass import OneVsRestClassifier
from sklearn.svm import LinearSVC
modeloOneVsRest = OneVsRestClassifier(LinearSVC(random_state = 0, max_iter=10000))
resultadoOneVsRest = fit_and_predict("OneVsRest", modeloOneVsRest, treino_dados, treino_marcacoes)
resultados[resultadoOneVsRest] = modeloOneVsRest
from sklearn.multiclass import OneVsOneClassifier
modeloOneVsOne = OneVsOneClassifier(LinearSVC(random_state = 0, max_iter=10000))
resultadoOneVsOne = fit_and_predict("OneVsOne", modeloOneVsOne, treino_dados, treino_marcacoes)
resultados[resultadoOneVsOne] = modeloOneVsOne
Os erros que aparecem ao executá-lo:
/usr/local/lib/python3.7/dist-packages/sklearn/multiclass.py:75: UserWarning: Label not 2 is present in all training examples.
str(classes[c]))
Taxa de Acerto do OneVsRest: 0.5375
Taxa de Acerto do OneVsOne: nan
/usr/local/lib/python3.7/dist-packages/sklearn/model_selection/_validation.py:536: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details:
ValueError: bad input shape (70, 22)
FitFailedWarning)
/usr/local/lib/python3.7/dist-packages/sklearn/model_selection/_validation.py:536: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details:
ValueError: bad input shape (71, 22)
FitFailedWarning)