Respostas no Fórum
- AutorPosts
Olá Richard, não temos conteúdo implementado nesse assunto. Mas, pesquisando encontrei alguns artigos que podem lhe ajudar:
https://hal.archives-ouvertes.fr/hal-01484960/document
http://ceur-ws.org/Vol-2201/UYMS_YMO_2018_paper_34.pdf
https://hal.archives-ouvertes.fr/hal-01484960/document
Fabio
Olá Mbrazio, encontrei esse artigo no blog da Springboard, que vai complementar o seu entendimento sobre esse assunto:
https://in.springboard.com/blog/a-day-in-the-life-of-a-data-scientist-explained/
Adicionalmente, esse aqui também é interessante no qual alguns profissionais compartilham suas rotina como cientistas de dados, vale a pena dar uma conferida 🙂
https://www.kdnuggets.com/2017/11/day-life-data-scientist.html
Fabio
Olá Nikolas, segue a resposta do instrutor Denny:
Não precisa mudar o parâmetro do OneHotEncoder; com handle_unknown = ‘ignore’, você está dizendo para ele ignorar as categorias que não tenha visto no dataset de treinamento, mas se for algum outro tipo de erro relacionado ao tipo de dado por exemplo (que é o que houve), ele também vai ignorar a categoria, o que não é o comportamento desejado.
A outra transformação está correta, inclusive se você verificar o tipo de dado em previsores antes do column_transformer (com previsores.dtype), vai ver que é um objeto. Mas você pode simplificar um pouco o código já instanciando o novo_registro como array do tipo objeto:novo_registro = np.array([[39," State-gov",77516," Bachelors",13," Never-married"," Adm-clerical"," Not-in-family"," White"," Male",2174,0,40," United-States"]], object)
Parabéns por ter conseguido resolver esta última questão por conta, saber procurar as respostas pesquisando na internet é essencial para um bom profissional da área.
Olá Nikolas, segue a resposta do instrutor Denny:
Nikolas,
Você não deve fazer este reshape:
novo_registro = novo_registro.reshape(-1, 1)
porque os dados que o modelo recebe devem estar representados pelas instâncias nas linhas e atributos nas colunas. Então, o formato original já estava correto.
Ainda assim, depois do último LabelEncoder, faltou aplicar o ColumnTransformer que vai transformar as variáveis categóricas no formato one-hot, convertendo os 14 atributos originais para 108:
novo_registro = column_tranformer.transform(novo_registro).toarray()
e depois, finalmente, aplicar o scaler, mas novamente somente com o método transform:
novo_registro = scaler.transform(novo_registro)
Aí sim o registro pode ser passado ao modelo.
Olá Nikolas, segue a resposta do instrutor Denny:
Tem duas causas potenciais: A primeira, verifique quais são os nomes das colunas de base. Aqui, o Pandas criou uma coluna 0 sem nome onde colocou os índices das instâncias, o que desalinha todas as operações de LabelEncoder. Se este for o caso, carregue os dados de novo com base = pd.read_csv(‘census.csv’, index_col = 0).
A segunda, se você pedir pra verificar os valores da coluna workclass com base[‘workclass’].tolist(), vai verificar que todos os nomes têm um espaço na frente. Eu abri o arquivo census.csv e este é o caso para todas as categorias. Então, em seu novo registro, adicione um espaço na frente de todos os nomes de categorias.
Olá Nikolas, segue a resposta do instrutor Denny:
O novo registro deve primeiro passar por todo o processamento da mesma forma que o dataset usado no treinamento passou, ou seja, todas as etapas de LabelEncoder e o OneHotEncoder no final, mas desta vez usando o método transform já que fit é usado somente com os dados de treinamento. Entretanto, você precisa observar que, sempre que usa o método fit_transform na mesma instância do LabelEncoder (no caso, labelencoder_previsores), como foi mostrado na aula, ele perde a informação referente à variável que já havia processado. Para evitar isso, é preciso criar uma instância separada para cada variável, como por exemplo:
labelencoder_previsores_1 = LabelEncoder() labelencoder_previsores_3 = LabelEncoder() labelencoder_previsores_5 = LabelEncoder() [...] labelencoder_previsores_13 = LabelEncoder()
Aí você aplica cada instância separadamente a cada variável:
previsores[:,1] = labelencoder_previsores_1.fit_transform(previsores[:,1]) previsores[:,3] = labelencoder_previsores_3.fit_transform(previsores[:,3]) previsores[:,5] = labelencoder_previsores_5.fit_transform(previsores[:,5]) [...] previsores[:,13] = labelencoder_previsores_13.fit_transform(previsores[:,13])
E depois, no novo registro, somente o método transform:
novo_registro[:,1] = labelencoder_previsores_1.transform(novo_registro[:,1]) novo_registro[:,3] = labelencoder_previsores_3.transform(novo_registro[:,3]) novo_registro[:,5] = labelencoder_previsores_5.transform(novo_registro[:,5]) [...] novo_registro[:,13] = labelencoder_previsores_13.transform(novo_registro[:,13])
O ColumnTransformer não precisa mudar, já que ele processa mais de uma coluna por vez:
novo_registro = column_transformer.transform(novo_registro).toarray()
Aí é só chamar seu modelo com o método predict para classificar o novo registro.
- Esta resposta foi modificada 4 anos atrás por
Fábio Spak.
20 de abril de 2021 às 22:04 em resposta a: TypeError: ‘type’ object does not support item assignment #28373Boa noite Siddney, você esta utilizando qual IDE? Seria o Google Colab?
Fabio
Olá Adriano, esse erro pode corrigido com a atualização do código fonte, disponível no link abaixo:
https://iaexpert.academy/topic/importante-atualizacao-do-codigo-fonte-e-recursos-para-download/
Fabio
Olá Dougtaleb, é possível que você estivesse com o arquivo .csv na pasta, mesmo não tendo os arquivos .py, ele executaria o código que carrega o arquivo.
Fabio
Olá Dougtaleb, você precisa definir o diretório padrão de trabalho, ou seja, especificar para o Spyder onde estão salvos os arquivos do seu projeto. Veja na imagem abaixo onde você precisa especificar esse diretório.
Fabio
Olá Dougtaleb, eu imagino que isso ocorre com todo mundo, pois as vezes as ferramentas não funcionam como deveriam ou entram em conflito. Há um algum tempo atrás perdi algumas horas tentando instalar uma biblioteca, ao passo que, em um dado momento tudo funcionou. Ou seja, é normal e o bom é que sempre aprendemos uma coisa nova.
Quanto a execução do código, percebi que você esta executando todo o código de uma única vez. Para executar somente uma linha ou um trecho de código selecione e em seguida pressione F9.
Sim você pode utilizar o Jupyter Notebooks através na interface do anaconda ou abrindo o prompt do anaconda de digitando o comando jupyter notebook. Uma desvantagem dele para o Spyder é que você não terá a visualização gráfica da variáveis(painel canto superior direito) .
Você pode ainda utilizar o Google Colab ( https://colab.research.google.com/ ), que é muito útil quando precisamos treinar modelos que exigem um alto poder de processamento e GPU, porém ele funciona de maneira similar ao Jupyter notebooks.
Fabio
Olá Dougtaleb, fico me perguntando o que pode ter acontecido nessa instalação, estranho. Tente utilizar a versão abaixo, é anterior a essa que você instalou:
https://repo.anaconda.com/archive/Anaconda3-2020.11-Windows-x86_64.exe
Fabio
Olá Dougtaleb, esse erro é estranho, uma vez que, essa é uma biblioteca padrão no anaconda/spyder. Recomendo que você faça a desinstalação do anaconda e instale novamente.
Fabio
Olá Dougtaleb, analisando o último print acredito ter encontrado a origem do problema. Corrija o import abaixo:
from sklearn.impute import SimpleImputer
Pois parece que você digitou imput ao invés de impute com ‘e’ no final.
Fabio
Olá Dougtaleb, acredito que a biblioteca não esta instalada, Por favor, digite o comando abaixo no prompt do Anaconda:
pip install scikit-learn
Fabio
- Esta resposta foi modificada 4 anos atrás por
- AutorPosts