Alura > Cursos de Data Science > Cursos de Machine Learning > Conteúdos de Machine Learning > Primeiras aulas do curso Classificação: construindo modelos semi-supervisionados

Classificação: construindo modelos semi-supervisionados

Entendendo o problema - Apresentação

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.

O que vamos aprender?

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?

Entendendo o problema - Leitura de dados

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.

Leitura de dados

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
#pHTemperaturaSaborOdorGorduraTurbidezCorQualidade
06.6351010254alta
16.6360101253alta
28.5701111246NaN
39.5341101255NaN
46.6370000255média
...........................
10546.7451100247NaN
10556.7381010255NaN
10563.0401111255NaN
10576.8431010250NaN
10588.6550111255baixa

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.

Conclusão

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!

Entendendo o problema - Explorando os dados

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.

Explorando os dados

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()
#pHTemperaturaSaborOdorGorduraTurbidezCor
count1059.0000001059.0000001059.0000001059.0000001059.0000001059.0000001059.000000
mean6.63012344.2266290.5467420.4324830.6713880.491029251.840415
std1.39967910.0983640.4980460.4956550.4699300.5001564.307424
min3.00000034.0000000.0000000.0000000.0000000.000000240.000000
25%6.50000038.0000000.0000000.0000000.0000000.000000250.000000
50%6.70000041.0000001.0000000.0000001.0000000.000000255.000000
75%6.80000045.0000001.0000001.0000001.0000001.000000255.000000
max9.50000090.0000001.0000001.0000001.0000001.000000255.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.

Conclusão

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!

Sobre o curso Classificação: construindo modelos semi-supervisionados

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:

Aprenda Machine Learning acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas