Olá, tudo bem? Eu sou o João Miranda e serei seu instrutor durante este curso!
Audiodescrição: João se descreve como um homem branco, de cabelos médios pretos presos em coque, com as laterais raspadas, barba preta, e olhos pretos. Ele veste uma camisa preta e está sentado em frente a uma parede clara iluminada em degradê de verde e azul.
Neste curso, vamos desenvolver um projeto de classificação utilizando machine learning com a técnica de aprendizado semi-supervisionado. Vamos explorar o que é esse método e quais são os principais algoritmos usados nessa abordagem.
Abordaremos como realizar a classificação de dados, mesmo quando a maioria não está rotulada, e como comparar o desempenho de diferentes modelos para escolher o mais eficaz.
Não focaremos na otimização de hiperparâmetros dos modelos, mas sim na apresentação dos conceitos do aprendizado semi-supervisionado. Para acompanhar o conteúdo, é importante que você já tenha conhecimento de classificação em machine learning.
Vamos começar?
Nós, como pessoas cientistas de dados, fomos contratados por uma indústria de laticínios para garantir a qualidade do leite na produção dos seus produtos.
Com o suporte de uma pessoa supervisora, utilizaremos machine learning para classificar amostras de leite em qualidade baixa, média e alta. Para isso, a empresa nos forneceu uma base de dados em um arquivo CSV, disponível na atividade Preparando o ambiente. É importante baixar o arquivo qualidade_leite.csv
antes de prosseguir.
Nossa primeira tarefa é ler e explorar as informações da base de dados. Para isso, usaremos o ambiente do Google Colab e a biblioteca Pandas.
No Google Colab, selecionaremos no menu lateral esquerdo a opção "Arquivos", clicaremos em "Fazer upload para o armazenamento da sessão" e faremos o upload do arquivo qualidade_leite.csv
.
Como vamos utilizar a biblioteca Pandas, precisamos do caminho onde o arquivo foi salvo, então, copiaremos o caminho utilizando a opção "Copiar caminho" após clicar nos três pontos ao lado do nome do arquivo.
Feito isso, importaremos a biblioteca Pandas em uma primeira célula com o comando abaixo:
import pandas as pd
Executaremos a célula com "Ctrl + Enter". Na segunda célula, faremos a leitura da base de dados usando a função pd.read_csv()
, armazenando os dados na variável dados
. Entre os parênteses de read_csv()
e aspas simples, colaremos o caminho do arquivo e executaremos o código com "Ctrl + Enter".
dados = pd.read_csv('/content/qualidade_leite.csv')
Com os dados carregados, podemos visualizá-los escrevendo a variável dados
e executando a célula.
dados
# | pH | Temperatura | Sabor | Odor | Gordura | Turbidez | Cor | Qualidade |
---|---|---|---|---|---|---|---|---|
0 | 6.6 | 35 | 1 | 0 | 1 | 0 | 254 | alta |
1 | 6.6 | 36 | 0 | 1 | 0 | 1 | 253 | alta |
2 | 8.5 | 70 | 1 | 1 | 1 | 1 | 246 | NaN |
3 | 9.5 | 34 | 1 | 1 | 0 | 1 | 255 | NaN |
4 | 6.6 | 37 | 0 | 0 | 0 | 0 | 255 | média |
... | ... | ... | ... | ... | ... | ... | ... | ... |
1054 | 6.7 | 45 | 1 | 1 | 0 | 0 | 247 | NaN |
1055 | 6.7 | 38 | 1 | 0 | 1 | 0 | 255 | NaN |
1056 | 3.0 | 40 | 1 | 1 | 1 | 1 | 255 | NaN |
1057 | 6.8 | 43 | 1 | 0 | 1 | 0 | 250 | NaN |
1058 | 8.6 | 55 | 0 | 1 | 1 | 1 | 255 | baixa |
Abaixo da tabela retornada, temos a informação de 1059 linhas e 8 colunas na base de dados. Vamos identificar cada uma das colunas?
Observamos informações como pH, temperatura, sabor, odor, gordura e turbidez do leite, todas em formato numérico, indicando qualidade baixa (0) ou alta (1). A coluna de cor, também em formato numérico, representa a tonalidade do leite, e a coluna de qualidade é a que classificaremos. Notamos nessa coluna a presença de valores nulos, representados por NaN.
A partir dessa visualização inicial, conseguimos entender grande parte dos nossos dados. Mas embora possamos visualizar as primeiras e últimas linhas da base de dados, precisamos explorá-la mais profundamente para identificar dados nulos e inconsistências que possam afetar o modelo de machine learning.
Essa exploração será abordada no próximo vídeo!
Já realizamos a leitura da nossa base de dados, que será usada na construção de modelos de machine learning para classificar a qualidade do leite entre baixa, média e alta. Porém, durante a análise inicial, identificamos dados nulos na coluna referente à qualidade do leite, o que pode afetar negativamente o desempenho dos nossos modelos.
Modelos de machine learning necessitam de fontes de informações consistentes para reconhecer padrões nos dados. Portanto, dados nulos ou inconsistentes podem levar o modelo a aprender padrões incorretos.
Além disso, ainda não sabemos se outras colunas numéricas da base de dados contêm dados nulos ou inconsistentes, isto é, fora da realidade. Esses valores fora da realidade também podem prejudicar o aprendizado do modelo, pois ele entenderá que a fonte de informação incorreta será o certo a se entender a partir do padrão dos dados e utilizará essa fonte como uma verdade a ser aplicada na classificação dos dados.
Para descobrir se há dados nulos ou inconsistentes na nossa base de dados, utilizaremos a biblioteca Pandas. Começaremos com o método info()
, que informa a quantidade de dados nulos em cada coluna.
dados.info()
Executando a célula acima, obtivemos o seguinte retorno:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1059 entries, 0 to 1058
Data columns (total 8 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 pH 1059 non-null float64
1 Temperatura 1059 non-null int64
2 Sabor 1059 non-null int64
3 Odor 1059 non-null int64
4 Gordura 1059 non-null int64
5 Turbidez 1059 non-null int64
6 Cor 1059 non-null int64
7 Qualidade 424 non-null object
dtypes: float64(1), int64(6), object(1)
memory usage: 66.3+ KB
Observamos que todas as colunas, exceto a de qualidade, não apresentam dados nulos. Na coluna "Qualidade", temos apenas 424 dados não nulos, enquanto o restante é nulo.
Para verificar a presença de categorias inconsistentes na coluna de qualidade, utilizaremos o método value_counts()
. Primeiro, escrevemos dados['Quantidade']
e depois fazemos a contagem das categorias. Entre parênteses, passamos dropna=False
; se não utilizarmos esse parâmetro, o modelo irá eliminar os dados nulos da contagem.
dados['Qualidade'].value_counts(dropna=False)
Retorno da célula:
NaN 635
baixa 184
média 149
alta 91
Name: Qualidade, dtype: int64
Ao executar a célula, percebemos que a maioria dos dados na coluna são nulos, o que pode comprometer a eficácia do nosso modelo de machine learning. Precisaremos tratar esses dados ou adotar estratégias para utilizá-los.
Avaliaremos agora a consistência dos dados numéricos da base de dados com o método describe()
. Com dados.describe()
, analisamos a distribuição numérica, incluindo valores mínimos e máximos.
dados.describe()
# | pH | Temperatura | Sabor | Odor | Gordura | Turbidez | Cor |
---|---|---|---|---|---|---|---|
count | 1059.000000 | 1059.000000 | 1059.000000 | 1059.000000 | 1059.000000 | 1059.000000 | 1059.000000 |
mean | 6.630123 | 44.226629 | 0.546742 | 0.432483 | 0.671388 | 0.491029 | 251.840415 |
std | 1.399679 | 10.098364 | 0.498046 | 0.495655 | 0.469930 | 0.500156 | 4.307424 |
min | 3.000000 | 34.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 240.000000 |
25% | 6.500000 | 38.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 250.000000 |
50% | 6.700000 | 41.000000 | 1.000000 | 0.000000 | 1.000000 | 0.000000 | 255.000000 |
75% | 6.800000 | 45.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 255.000000 |
max | 9.500000 | 90.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 255.000000 |
Na tabela, temos as informações de distribuição de cada uma das colunas da base de dados. Na primeira linha, encontramos a contagem, que é 1059 para todas as colunas. Em seguida, temos a informação da média, que nem sempre fará sentido; por exemplo, em "Sabor" e "Turbidez", como são valores de 0 e 1, não faz tanto sentido analisar a média.
Portanto, vamos explorar somente os valores que fazem sentido, isto é, os valores de mínimo e máximo. Caso os valores de uma coluna estejam fora dos valores de mínimo e máximo, eles serão dados inconsistentes. Por exemplo: o pH é um valor que varia de 0 a 14, então o mínimo deve ser 0 e o máximo 14.
Verificamos que os valores para pH, temperatura, sabor, odor, gordura e turbidez estão dentro de intervalos lógicos. A coluna de cor também apresenta valores máximos condizentes com o esperado.
Concluímos que, exceto pela coluna de qualidade, não há dados nulos ou inconsistentes nas colunas numéricas. No próximo passo, buscaremos estratégias para lidar com os dados nulos na coluna de qualidade e prosseguir com a construção do nosso modelo de machine learning. Este será o foco da próxima aula!
O curso Classificação: construindo modelos semi-supervisionados possui 116 minutos de vídeos, em um total de 47 atividades. Gostou? Conheça nossos outros cursos de Machine Learning em Data Science, ou leia nossos artigos de Data Science.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.