[](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
[](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
[](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
[-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
# Explore a Caixa de Ferramentas de IA Responsável
## Instruções
Nesta lição, você aprendeu sobre o Toolbox de IA Responsável, um "projeto de código aberto e orientado pela comunidade para ajudar cientistas de dados a analisar e melhorar sistemas de IA." Para esta tarefa, explore um dos [notebooks](https://github.com/microsoft/responsible-ai-toolbox/blob/main/notebooks/responsibleaidashboard/getting-started.ipynb) do Toolbox de IA Responsável e relate suas descobertas em um artigo ou apresentação.
Nesta lição, você aprendeu sobre a Caixa de Ferramentas de IA Responsável, um "projeto de código aberto e dirigido pela comunidade para ajudar cientistas de dados a analisar e melhorar sistemas de IA." Para esta tarefa, explore um dos [notebooks](https://github.com/microsoft/responsible-ai-toolbox/blob/main/notebooks/responsibleaidashboard/tabular/getting-started.ipynb) da Caixa de Ferramentas RAI e relate suas descobertas em um artigo ou apresentação.
| | Um artigo ou apresentação em PowerPoint é apresentado discutindo os sistemas do Fairlearn, o notebook que foi executado e as conclusões obtidas a partir da execução | Um artigo é apresentado sem conclusões | Nenhum artigo é apresentado |
| | Um artigo ou apresentação em powerpoint é apresentado discutindo os sistemas do Fairlearn, o notebook que foi executado e as conclusões tiradas da execução | Um artigo é apresentado sem conclusões | Nenhum artigo é apresentado |
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução.
> ### [Esta lição está disponível em R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### Introdução
### Introdução
Até agora, você explorou o que é regressão com dados de exemplo coletados do conjunto de dados de preços de abóbora que usaremos ao longo desta lição. Você também os visualizou usando Matplotlib.
Até agora, você explorou o que é regressão com dados de exemplo coletados do conjunto de dados de preços de abóboras que usaremos ao longo desta lição. Você também os visualizou usando Matplotlib.
Agora você está pronto para mergulhar mais fundo na regressão para aprendizado de máquina. Embora a visualização permita que você compreenda os dados, o verdadeiro poder do aprendizado de máquina vem do _treinamento de modelos_. Modelos são treinados com dados históricos para capturar automaticamente as dependências dos dados e permitem prever resultados para novos dados que o modelo ainda não viu.
Agora você está pronto para aprofundar em regressão para ML. Enquanto a visualização permite entender os dados, o verdadeiro poder do Machine Learning vem do _treinamento de modelos_. Modelos são treinados com dados históricos para capturar automaticamente dependências dos dados, e eles permitem prever resultados para novos dados, que o modelo não viu antes.
Nesta lição, você aprenderá mais sobre dois tipos de regressão: _regressão linear básica_ e _regressão polinomial_, juntamente com algumas das matemáticas subjacentes a essas técnicas. Esses modelos nos permitirão prever os preços das abóboras dependendo de diferentes dados de entrada.
Nesta lição, você aprenderá mais sobre dois tipos de regressão: _regressão linear básica_ e _regressão polinomial_, junto com um pouco da matemática que fundamenta essas técnicas. Esses modelos nos permitirão prever preços de abóboras dependendo de diferentes dados de entrada.
[](https://youtu.be/CRxFT8oTDMg "ML para iniciantes - Entendendo a Regressão Linear")
[](https://youtu.be/CRxFT8oTDMg "ML para iniciantes - Entendendo Regressão Linear")
> 🎥 Clique na imagem acima para um breve vídeo sobre regressão linear.
> 🎥 Clique na imagem acima para um breve vídeo com visão geral da regressão linear.
> Ao longo deste currículo, assumimos conhecimento mínimo de matemática e buscamos torná-lo acessível para estudantes de outras áreas. Fique atento a notas, 🧮 chamadas, diagramas e outras ferramentas de aprendizado para ajudar na compreensão.
> Ao longo deste currículo, assumimos conhecimento mínimo de matemática e buscamos torná-lo acessível para estudantes de outras áreas, então fique atento às notas, 🧮 chamadas, diagramas e outras ferramentas de aprendizagem para ajudar na compreensão.
### Pré-requisito
### Pré-requisitos
Você já deve estar familiarizado com a estrutura dos dados de abóbora que estamos analisando. Você pode encontrá-los pré-carregados e pré-limpos no arquivo _notebook.ipynb_ desta lição. No arquivo, o preço da abóbora é exibido por alqueire em um novo data frame. Certifique-se de que pode executar esses notebooks em kernels no Visual Studio Code.
Você já deve estar familiarizado com a estrutura dos dados de abóboras que estamos examinando. Você pode encontrá-los pré-carregados e pré-limpados no arquivo _notebook.ipynb_ desta lição. No arquivo, o preço da abóbora é exibido por alqueire em um novo dataframe. Certifique-se de conseguir executar esses notebooks em kernels no Visual Studio Code.
### Preparação
Como lembrete, você está carregando esses dados para fazer perguntas sobre eles.
Como lembrete, você está carregando esses dados para poder fazer perguntas sobre eles.
- Qual é o melhor momento para comprar abóboras?
- Qual preço posso esperar por uma caixa de abóboras em miniatura?
- Devo comprá-las em cestas de meio alqueire ou em caixas de 1 1/9 alqueire?
- Qual preço posso esperar de uma caixa de abóboras miniatura?
- Devo comprá-las em cestas de meio alqueire ou por caixas de 1 1/9 alqueires?
Vamos continuar explorando esses dados.
Na lição anterior, você criou um dataframe do Pandas e o preencheu com parte do conjunto de dados original, padronizando os preços por alqueire. Ao fazer isso, no entanto, você só conseguiu reunir cerca de 400 pontos de dados e apenas para os meses de outono.
Na lição anterior, você criou um dataframe Pandas e o preencheu com parte do conjunto de dados original, padronizando o preço por alqueire. Fazendo isso, porém, você conseguiu reunir cerca de 400 pontos de dados e apenas para os meses de outono.
Dê uma olhada nos dados que pré-carregamos no notebook que acompanha esta lição. Os dados estão pré-carregados e um gráfico de dispersão inicial é traçado para mostrar os dados por mês. Talvez possamos obter um pouco mais de detalhes sobre a natureza dos dados ao limpá-los mais.
Dê uma olhada nos dados que pré-carregamos no notebook acompanhadodesta lição. Os dados estão pré-carregados e um gráfico de dispersão inicial é traçado para mostrar os dados de meses. Talvez possamos obter um pouco mais de detalhes sobre a natureza dos dados limpando-os mais.
## Uma linha de regressão linear
Como você aprendeu na Lição 1, o objetivo de um exercício de regressão linear é ser capaz de traçar uma linha para:
Como você aprendeu na Lição 1, o objetivo de um exercício de regressão linear é poder traçar uma linha para:
- **Mostrar relações entre variáveis**. Mostrar a relação entre variáveis
- **Fazer previsões**. Fazer previsões precisas sobre onde um novo ponto de dados cairia em relação a essa linha.
É típico da **Regressão de Mínimos Quadrados** traçar esse tipo de linha. O termo 'mínimos quadrados' significa que todos os pontos de dados ao redor da linha de regressão são elevados ao quadrado e depois somados. Idealmente, essa soma final é o menor possível, porque queremos um número baixo de erros, ou `mínimos quadrados`.
É típico da **Regressão dos Mínimos Quadrados** desenhar esse tipo de linha. O termo "Mínimos Quadrados" refere-se ao processo de minimizar o erro total em nosso modelo. Para cada ponto de dados, medimos a distância vertical (chamada resíduo) entre o ponto real e nossa linha de regressão.
Elevamos essas distâncias ao quadrado por duas razões principais:
Fazemos isso porque queremos modelar uma linha que tenha a menor distância cumulativa de todos os nossos pontos de dados. Também elevamos os termos ao quadrado antes de somá-los, pois estamos preocupados com sua magnitude, em vez de sua direção.
1. **Magnitude sobre direção:** Queremos tratar um erro de -5 da mesma forma que um erro de +5. Quadrar torna todos os valores positivos.
> **🧮 Mostre-me a matemática**
2. **Penalização de outliers:** Quadrar atribui mais peso a erros maiores, forçando a linha a ficar mais próxima dos pontos que estão longe.
Depois somamos todos esses valores quadrados. Nosso objetivo é encontrar a linha específica onde essa soma final é a menor possível — daí o nome "Mínimos Quadrados".
> **🧮 Mostre a matemática**
>
> Esta linha, chamada de _linha de melhor ajuste_, pode ser expressa por [uma equação](https://en.wikipedia.org/wiki/Simple_linear_regression):
> Essa linha, chamada_linha de melhor ajuste_, pode ser expressa por [uma equação](https://en.wikipedia.org/wiki/Simple_linear_regression):
>
> ```
> Y = a + bX
> ```
>
> `X` é a 'variável explicativa'. `Y` é a 'variável dependente'. A inclinação da linha é `b` e `a` é o intercepto no eixo Y, que se refere ao valor de `Y` quando `X = 0`.
> `X` é a 'variável explicativa'. `Y` é a 'variável dependente'. A inclinação da linha é `b` e `a` é a interceptação no eixo y, que se refere ao valor de `Y` quando `X = 0`.
>
>
>
>
> Primeiro, calcule a inclinação `b`. Infográfico por [Jen Looper](https://twitter.com/jenlooper)
>
> Em outras palavras, e referindo-se à pergunta original dos dados de abóbora: "prever o preço de uma abóbora por alqueire por mês", `X` se referiria ao preço e `Y` ao mês de venda.
> Em outras palavras, e referindo-se à pergunta original dos dados das abóboras: "prever o preço de uma abóbora por alqueire por mês", `X` se referiria ao preço e `Y` ao mês de venda.
>
>
>
>
> Calcule o valor de Y. Se você está pagando cerca de $4, deve ser abril! Infográfico por [Jen Looper](https://twitter.com/jenlooper)
>
> A matemática que calcula a linha deve demonstrar a inclinação da linha, que também depende do intercepto, ou onde `Y` está situado quando `X = 0`.
> A matemática que calcula a linha deve demonstrar a inclinação da linha, que também depende da interceptação, ou de onde `Y` está situado quando `X = 0`.
>
> Você pode observar o método de cálculo desses valores no site [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Também visite [este calculador de mínimos quadrados](https://www.mathsisfun.com/data/least-squares-calculator.html) para ver como os valores dos números impactam a linha.
> Você pode observar o método de cálculo desses valores no site [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Visite também [este calculador de mínimos quadrados](https://www.mathsisfun.com/data/least-squares-calculator.html) para ver como os valores numéricos impactam a linha.
## Correlação
Outro termo importante para entender é o **Coeficiente de Correlação** entre as variáveis X e Y fornecidas. Usando um gráfico de dispersão, você pode visualizar rapidamente esse coeficiente. Um gráfico com pontos de dados espalhados em uma linha ordenada tem alta correlação, mas um gráfico com pontos de dados espalhados por toda parte entre X e Y tem baixa correlação.
Mais um termo para entender é o **Coeficiente de Correlação** entre as variáveis X e Y dadas. Usando um gráfico de dispersão, você pode rapidamente visualizar esse coeficiente. Um gráfico com pontos de dados alinhados em uma linha bem definida tem alta correlação, mas um gráfico com pontos de dados espalhados entre X e Y tem baixa correlação.
Um bom modelo de regressão linear será aquele que tem um Coeficiente de Correlação alto (mais próximo de 1 do que de 0) usando o método de Mínimos Quadrados com uma linha de regressão.
Um bom modelo de regressão linear será aquele com um alto Coeficiente de Correlação (mais próximo de 1 do que de 0) usando o método de Regressão dos Mínimos Quadrados com uma linha de regressão.
✅ Execute o notebook que acompanha esta lição e observe o gráfico de dispersão de Mês para Preço. Os dados que associam Mês ao Preço para vendas de abóbora parecem ter alta ou baixa correlação, de acordo com sua interpretação visual do gráfico de dispersão? Isso muda se você usar uma medida mais detalhada em vez de `Mês`, como*dia do ano* (ou seja, número de dias desde o início do ano)?
✅ Execute o notebook que acompanha esta lição e observe o gráfico de dispersão de Mês para Preço. Os dados associando Mês a Preço para vendas de abóbora parecem ter alta ou baixa correlação, segundo sua interpretação visual do gráfico? Isso muda se você usar uma medida mais detalhada em vez de `Mês`, por exemplo,*dia do ano* (ou seja, número de dias desde o início do ano)?
No código abaixo, assumiremos que limpamos os dados e obtivemos um dataframe chamado `new_pumpkins`, semelhante ao seguinte:
No código abaixo, assumiremos que limpamos os dados e obtivemos um dataframe chamado `new_pumpkins`, semelhante ao seguinte:
ID | Mês | DiaDoAno | Variedade | Cidade | Embalagem | Preço Baixo | Preço Alto | Preço
> O código para limpar os dados está disponível em [`notebook.ipynb`](../../../../2-Regression/3-Linear/notebook.ipynb). Realizamos os mesmos passos de limpeza da lição anterior e calculamos a coluna `DiaDoAno` usando a seguinte expressão:
> O código para limpar os dados está disponível em [`notebook.ipynb`](notebook.ipynb). Fizemos os mesmos passos de limpeza da lição anterior e calculamos a coluna `DayOfYear` usando a seguinte expressão:
Agora que você entende a matemática por trás da regressão linear, vamos criar um modelo de regressão para ver se conseguimos prever qual embalagem de abóboras terá os melhores preços. Alguém comprando abóboras para um campo de abóboras de feriado pode querer essa informação para otimizar suas compras de embalagens de abóboras para o campo.
Agora que você entende a matemática por trás da regressão linear, vamos criar um modelo de Regressão para ver se conseguimos prever qual embalagem de abóboras terá os melhores preços. Alguém comprando abóboras para uma horta para o feriado pode querer essa informação para otimizar suas compras de embalagens de abóbora para a horta.
## Procurando por Correlação
## Procurando Correlação
[](https://youtu.be/uoRq-lW2eQo "ML para iniciantes - Procurando por Correlação: A Chave para Regressão Linear")
[](https://youtu.be/uoRq-lW2eQo "ML para iniciantes - Procurando Correlação: A Chave para Regressão Linear")
> 🎥 Clique na imagem acima para um breve vídeo sobre correlação.
> 🎥 Clique na imagem acima para um breve vídeo com visão geral de correlação.
Na lição anterior, você provavelmente viu que o preço médio para diferentes meses se parece com isto:
<imgalt="Preço médio por mês"src="../../../../translated_images/pt-BR/barchart.a833ea9194346d76.webp"width="50%"/>
Isso sugere que deve haver alguma correlação, e podemos tentar treinar um modelo de regressão linear para prever a relação entre `Mês` e `Preço`, ou entre `DiaDoAno` e `Preço`. Aqui está o gráfico de dispersão que mostra a última relação:
Isso sugere que deveria haver alguma correlação, e podemos tentar treinar um modelo de regressão linear para prever a relação entre `Month` e `Price`, ou entre `DayOfYear` e `Price`. Aqui está o gráfico de dispersão que mostra essa última relação:
<imgalt="Gráfico de dispersão de Preço vs. Dia do Ano"src="../../../../translated_images/pt-BR/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
Parece que a correlação é bem pequena, -0.15 por `Mês` e -0.17 por `DiaDoAno`, mas pode haver outra relação importante. Parece que há diferentes agrupamentos de preços correspondendo a diferentes variedades de abóbora. Para confirmar essa hipótese, vamos plotar cada categoria de abóbora usando uma cor diferente. Passando um parâmetro `ax` para a função de plotagem `scatter`, podemos plotar todos os pontos no mesmo gráfico:
Parece que a correlação é bem pequena, -0,15 pelo `Month` e -0,17 pelo `DayOfMonth`, mas pode haver outra relação importante. Parece que existem diferentes grupos de preços correspondendo a diferentes variedades de abóboras. Para confirmar essa hipótese, vamos traçar cada categoria de abóbora usando uma cor diferente. Passando um parâmetro `ax` para a função `scatter` podemos traçar todos os pontos no mesmo gráfico:
```python
ax=None
@ -130,15 +142,15 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
<imgalt="Gráfico de dispersão de Preço vs. Dia do Ano"src="../../../../translated_images/pt-BR/scatter-dayofyear-color.65790faefbb9d54f.webp"width="50%"/>
Nossa investigação sugere que a variedade tem mais efeito no preço geral do que a data de venda. Podemos ver isso com um gráfico de barras:
Nossa investigação sugere que a variedade tem mais efeito no preço geral do que a própria data de venda. Podemos ver isso com um gráfico de barras:
<imgalt="Gráfico de dispersão de Preço vs. Dia do Ano"src="../../../../translated_images/pt-BR/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
Se agora calcularmos a correlação entre `Preço` e `DiaDoAno` usando a função `corr`, obteremos algo como `-0.27` - o que significa que treinar um modelo preditivo faz sentido.
Se agora calcularmos a correlação entre `Price` e `DayOfYear` usando a função `corr`, obteremos algo como `-0.27` — o que significa que faz sentido treinar um modelo preditivo.
> Antes de treinar um modelo de regressão linear, é importante garantir que nossos dados estejam limpos. A regressão linear não funciona bem com valores ausentes, portanto, faz sentido eliminar todas as células vazias:
> Antes de treinar um modelo de regressão linear, é importante garantir que nossos dados estejam limpos. A regressão linear não funciona bem com valores ausentes, portanto faz sentido eliminar todas as células vazias:
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
Outra abordagem seria preencher esses valores vazios com valores médios da coluna correspondente.
Outra abordagem seria preencher esses valores vazios com a média da respectiva coluna.
## Regressão Linear Simples
[](https://youtu.be/e4c_UP2fSjg "ML para iniciantes - Regressão Linear e Polinomial usando Scikit-learn")
> 🎥 Clique na imagem acima para um breve vídeo sobre regressão linear e polinomial.
> 🎥 Clique na imagem acima para um breve vídeo com visão geral de regressão linear e polinomial.
Para treinar nosso modelo de regressão linear, usaremos a biblioteca **Scikit-learn**.
Para treinar nosso modelo de Regressão Linear, usaremos a biblioteca **Scikit-learn**.
```python
from sklearn.linear_model import LinearRegression
@ -171,31 +183,31 @@ from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
```
Começamos separando os valores de entrada (features) e a saída esperada (label) em arrays numpy separados:
Começamos separando os valores de entrada (features) e a saída esperada (rótulo) em arrays numpy separados:
```python
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
> Note que tivemos que realizar `reshape` nos dados de entrada para que o pacote de regressão linear os entendesse corretamente. A regressão linear espera um array 2D como entrada, onde cada linha do array corresponde a um vetor de características de entrada. No nosso caso, como temos apenas uma entrada, precisamos de um array com formato N×1, onde N é o tamanho do conjunto de dados.
> Observe que tivemos que realizar um `reshape` nos dados de entrada para que o pacote de Regressão Linear os entendesse corretamente. Regressão Linear espera um array 2D como entrada, onde cada linha corresponde a um vetor de características de entrada. No nosso caso, como temos apenas uma entrada, precisamos de um array com forma N×1, onde N é o tamanho do conjunto de dados.
Depois, precisamos dividir os dados em conjuntos de treino e teste, para que possamos validar nosso modelo após o treinamento:
Em seguida, precisamos dividir os dados em conjuntos de treino e teste, para que possamos validar nosso modelo após o treinamento:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
```
Finalmente, treinar o modelo de regressão linear real leva apenas duas linhas de código. Definimos o objeto `LinearRegression` e ajustamos aos nossos dados usando o método `fit`:
Finalmente, o treinamento do modelo de Regressão Linear em si leva apenas duas linhas de código. Definimos o objeto `LinearRegression`, e o ajustamos aos nossos dados usando o método `fit`:
```python
lin_reg = LinearRegression()
lin_reg.fit(X_train,y_train)
```
O objeto `LinearRegression` após o ajuste (`fit`) contém todos os coeficientes da regressão, que podem ser acessados usando a propriedade `.coef_`. No nosso caso, há apenas um coeficiente, que deve ser em torno de `-0.017`. Isso significa que os preços parecem cair um pouco com o tempo, mas não muito, cerca de 2 centavos por dia. Também podemos acessar o ponto de interseção da regressão com o eixo Y usando `lin_reg.intercept_` - será em torno de `21` no nosso caso, indicando o preço no início do ano.
O objeto `LinearRegression` após o `fit` contém todos os coeficientes da regressão, que podem ser acessados usando a propriedade `.coef_`. No nosso caso, há apenas um coeficiente, que deve estar em torno de `-0.017`. Isso significa que os preços parecem cair um pouco com o tempo, mas não muito, cerca de 2 centavos por dia. Também podemos acessar o ponto de interseção da regressão com o eixo Y usando `lin_reg.intercept_` - que será em torno de `21` no nosso caso, indicando o preço no início do ano.
Para ver quão preciso nosso modelo é, podemos prever preços em um conjunto de dados de teste e, em seguida, medir quão próximas nossas previsões estão dos valores esperados. Isso pode ser feito usando a métrica de erro quadrático médio (MSE), que é a média de todas as diferenças quadradas entre o valor esperado e o valor previsto.
Para ver quão preciso nosso modelo é, podemos prever os preços em um conjunto de dados de teste, e então medir o quão próximas estão nossas previsões dos valores esperados. Isso pode ser feito usando a métrica de erro médio quadrático (MSE), que é a média de todas as diferenças quadráticas entre o valor esperado e o valor previsto.
```python
pred = lin_reg.predict(X_test)
@ -203,36 +215,37 @@ pred = lin_reg.predict(X_test)
Nosso erro parece estar em torno de 2 pontos, o que equivale a ~17%. Não é muito bom. Outro indicador da qualidade do modelo é o **coeficiente de determinação**, que pode ser obtido assim:
Nosso erro parece estar em torno de 2 pontos, o que é ~17%. Nada muito bom. Outro indicador da qualidade do modelo é o **coeficiente de determinação**, que pode ser obtido assim:
```python
score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)
```
Se o valor for 0, significa que o modelo não leva os dados de entrada em consideração e age como o *pior preditor linear*, que é simplesmente o valor médio do resultado. O valor 1 significa que podemos prever perfeitamente todos os resultados esperados. No nosso caso, o coeficiente está em torno de 0,06, o que é bastante baixo.
Se o valor for 0, significa que o modelo não leva em conta os dados de entrada, e age como o *pior preditor linear*, que é simplesmente o valor médio do resultado. O valor 1 significa que podemos prever perfeitamente todas as saídas esperadas. No nosso caso, o coeficiente está em torno de 0.06, o que é bem baixo.
Também podemos plotar os dados de teste junto com a linha de regressão para entender melhor como a regressão funciona no nosso caso:
Também podemos plotar os dados de teste junto com a linha da regressão para ver melhor como a regressão funciona no nosso caso:
Outro tipo de Regressão Linear é a Regressão Polinomial. Embora às vezes haja uma relação linear entre as variáveis - quanto maior o volume da abóbora, maior o preço - às vezes essas relações não podem ser representadas como um plano ou linha reta.
Outro tipo de Regressão Linear é a Regressão Polinomial. Embora às vezes haja uma relação linear entre as variáveis - quanto maior a abóbora em volume, maior o preço - às vezes essas relações não podem ser representadas por um plano ou uma linha reta.
✅ Aqui estão [alguns exemplos](https://online.stat.psu.edu/stat501/lesson/9/9.8) de dados que poderiam usar Regressão Polinomial.
✅ Aqui estão [mais alguns exemplos](https://online.stat.psu.edu/stat501/lesson/9/9.8) de dados que poderiam usar Regressão Polinomial
Observe novamente a relação entre Data e Preço. Esse gráfico de dispersão parece que deveria ser analisado necessariamente por uma linha reta? Os preços não podem flutuar? Nesse caso, você pode tentar a regressão polinomial.
Dê outra olhada na relação entre Data e Preço. Esse gráfico de dispersão parece que necessariamente deveria ser analisado por uma linha reta? Os preços não podem flutuar? Nesse caso, você pode tentar regressão polinomial.
✅ Polinômios são expressões matemáticas que podem consistir em uma ou mais variáveis e coeficientes.
✅ Polinômios são expressões matemáticas que podem consistir de uma ou mais variáveis e coeficientes
A regressão polinomial cria uma linha curva para ajustar melhor os dados não lineares. No nosso caso, se incluirmos uma variável `DayOfYear` ao quadrado nos dados de entrada, devemos ser capazes de ajustar nossos dados com uma curva parabólica, que terá um mínimo em um determinado ponto do ano.
A regressão polinomial cria uma linha curva para ajustar melhor dados não lineares. No nosso caso, se incluirmos uma variável `DayOfYear` ao quadrado nos dados de entrada, poderemos ajustar nossos dados com uma curva parabólica, que terá um mínimo em um certo ponto dentro do ano.
O Scikit-learn inclui uma [API de pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) útil para combinar diferentes etapas de processamento de dados. Um **pipeline** é uma cadeia de **estimadores**. No nosso caso, criaremos um pipeline que primeiro adiciona características polinomiais ao nosso modelo e, em seguida, treina a regressão:
O Scikit-learn inclui uma útil [API pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) para combinar diferentes etapas do processamento de dados. Um **pipeline** é uma cadeia de **estimadores**. No nosso caso, vamos criar um pipeline que primeiro adiciona características polinomiais ao nosso modelo, e depois treina a regressão:
```python
from sklearn.preprocessing import PolynomialFeatures
Usar `PolynomialFeatures(2)` significa que incluiremos todos os polinômios de segundo grau dos dados de entrada. No nosso caso, isso significará apenas `DayOfYear`<sup>2</sup>, mas, dado duas variáveis de entrada X e Y, isso adicionará X<sup>2</sup>, XY e Y<sup>2</sup>. Também podemos usar polinômios de grau superior, se quisermos.
Usar `PolynomialFeatures(2)` significa que incluiremos todos os polinômios de segundo grau dos dados de entrada. No nosso caso, isso significará apenas `DayOfYear`<sup>2</sup>, mas dado duas variáveis de entrada X e Y, isso adicionará X<sup>2</sup>, XY e Y<sup>2</sup>. Também podemos usar polinômios de grau mais elevado se quisermos.
Os pipelines podem ser usados da mesma maneira que o objeto original `LinearRegression`, ou seja, podemos usar `fit` no pipeline e, em seguida, usar `predict` para obter os resultados da previsão. Aqui está o gráfico mostrando os dados de teste e a curva de aproximação:
Pipelines podem ser usados da mesma forma que o objeto original `LinearRegression`, ou seja, podemos `fit` o pipeline, e depois usar `predict` para obter os resultados da previsão. Aqui está o gráfico mostrando os dados de teste e a curva de aproximação:
Usando Regressão Polinomial, podemos obter um MSE ligeiramente menor e um coeficiente de determinação maior, mas não significativamente. Precisamos levar em conta outras características!
Usando Regressão Polinomial, podemos obter um MSE ligeiramente menor e coeficiente de determinação maior, mas não significativamente. Precisamos levar em conta outras características!
> Você pode ver que os preços mínimos das abóboras são observados em algum momento próximo ao Halloween. Como você explicaria isso?
> Você pode ver que os preços mínimos das abóboras são observados mais ou menos perto do Halloween. Como você pode explicar isso?
🎃 Parabéns, você acabou de criar um modelo que pode ajudar a prever o preço das abóboras para torta. Você provavelmente pode repetir o mesmo procedimento para todos os tipos de abóbora, mas isso seria tedioso. Vamos aprender agora como levar em conta a variedade de abóbora no nosso modelo!
🎃 Parabéns, você acabou de criar um modelo que pode ajudar a prever o preço das abóboras para torta. Provavelmente, você pode repetir o mesmo procedimento para todos os tipos de abóbora, mas isso seria tedioso. Vamos aprender agora como levar a variedade de abóbora em consideração no nosso modelo!
## Características Categóricas
No mundo ideal, queremos ser capazes de prever preços para diferentes variedades de abóbora usando o mesmo modelo. No entanto, a coluna `Variety` é um pouco diferente de colunas como `Month`, porque contém valores não numéricos. Essas colunas são chamadas de **categóricas**.
No mundo ideal, queremos ser capazes de prever preços para diferentes variedades de abóbora usando o mesmo modelo. Contudo, a coluna `Variety` é um pouco diferente de colunas como `Month`, porque contém valores não numéricos. Essas colunas são chamadas de **categóricas**.
[](https://youtu.be/DYGliioIAE0 "ML para iniciantes - Previsões com características categóricas usando Regressão Linear")
[](https://youtu.be/DYGliioIAE0 "ML para iniciantes - Predições com regressão linear para características categóricas")
> 🎥 Clique na imagem acima para um breve vídeo sobre o uso de características categóricas.
> 🎥 Clique na imagem acima para um vídeo curto sobre o uso de características categóricas.
Aqui você pode ver como o preço médio depende da variedade:
<imgalt="Preço médio por variedade" src="../../../../translated_images/pt-BR/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
<imgalt="Average price by variety" src="../../../../translated_images/pt-BR/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
Para levar a variedade em conta, primeiro precisamos convertê-la para forma numérica, ou **codificá-la**. Existem várias maneiras de fazer isso:
Para levar a variedade em consideração, primeiro precisamos convertê-la para forma numérica, ou **codificá-la**. Existem várias formas de fazer isso:
* A **codificação numérica simples** criará uma tabela de diferentes variedades e, em seguida, substituirá o nome da variedade por um índice nessa tabela. Essa não é a melhor ideia para regressão linear, porque a regressão linear leva o valor numérico real do índice e o adiciona ao resultado, multiplicando por algum coeficiente. No nosso caso, a relação entre o número do índice e o preço é claramente não linear, mesmo que garantamos que os índices sejam ordenados de alguma forma específica.
* A **codificação one-hot** substituirá a coluna `Variety` por 4 colunas diferentes, uma para cada variedade. Cada coluna conterá `1` se a linha correspondente for de uma determinada variedade e `0` caso contrário. Isso significa que haverá quatro coeficientes na regressão linear, um para cada variedade de abóbora, responsável pelo "preço inicial" (ou melhor, "preço adicional") para aquela variedade específica.
* A simples **codificação numérica** construirá uma tabela das diferentes variedades, e depois substituirá o nome da variedade por um índice nessa tabela. Isso não é a melhor ideia para regressão linear, porque a regressão linear considera o valor numérico real do índice, e o adiciona ao resultado, multiplicando por algum coeficiente. No nosso caso, a relação entre o número do índice e o preço é claramente não linear, mesmo que nos certifiquemos que os índices estão ordenados de algum jeito específico.
* A **codificação one-hot** substituirá a coluna `Variety` por 4 colunas diferentes, uma para cada variedade. Cada coluna conterá `1` se a linha correspondente corresponder àquela variedade, e `0` caso contrário. Isso significa que haverá quatro coeficientes na regressão linear, um para cada variedade de abóbora, responsáveis pelo "preço inicial" (ou melhor, "preço adicional") para aquela variedade em particular.
O código abaixo mostra como podemos codificar uma variedade usando one-hot:
O código abaixo mostra como podemos codificar one-hot uma variedade:
Para treinar a regressão linear usando a variedade codificada como one-hot nos dados de entrada, só precisamos inicializar os dados `X` e `y` corretamente:
Para treinar a regressão linear usando a variedade codificada one-hot como entrada, só precisamos inicializar os dados `X` e `y` corretamente:
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
O restante do código é o mesmo que usamos acima para treinar a Regressão Linear. Se você tentar, verá que o erro médio quadrático é aproximadamente o mesmo, mas obtemos um coeficiente de determinação muito maior (~77%). Para obter previsões ainda mais precisas, podemos levar em conta mais características categóricas, bem como características numéricas, como `Month` ou `DayOfYear`. Para obter um grande array de características, podemos usar `join`:
O restante do código é o mesmo que usamos acima para treinar Regressão Linear. Se você tentar, verá que o erro médio quadrático é mais ou menos o mesmo, mas obtemos um coeficiente de determinação muito maior (~77%). Para obter previsões ainda mais precisas, podemos levar mais características categóricas em consideração, assim como características numéricas, como `Month` ou `DayOfYear`. Para obter um grande array de características, podemos usar `join`:
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@ -306,31 +319,31 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
y = new_pumpkins['Price']
```
Aqui também levamos em conta `City` e o tipo de `Package`, o que nos dá um MSE de 2.84 (10%) e um coeficiente de determinação de 0.94!
Aqui também levamos em conta `City` e tipo de `Package`, o que nos dá MSE de 2.84 (10%), e determinação 0.94!
## Juntando tudo
Para criar o melhor modelo, podemos usar dados combinados (categóricos codificados como one-hot + numéricos) do exemplo acima junto com a Regressão Polinomial. Aqui está o código completo para sua conveniência:
Para fazer o melhor modelo, podemos usar dados combinados (categóricos codificados one-hot + numéricos) do exemplo acima junto com a Regressão Polinomial. Aqui está o código completo para sua conveniência:
```python
# set up training data
# preparar dados de treinamento
X = pd.get_dummies(new_pumpkins['Variety']) \
.join(new_pumpkins['Month']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
# make train-test split
# fazer divisão treino-teste
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
Isso deve nos dar o melhor coeficiente de determinação de quase 97% e MSE=2.23 (~8% de erro de previsão).
Isso deve nos dar o melhor coeficiente de determinação de quase 97%, e MSE=2.23 (~8% de erro de previsão).
| Modelo | MSE | Determinação |
|--------|-----|--------------|
|-------|-----|---------------|
| `DayOfYear` Linear | 2.77 (17.2%) | 0.07 |
| `DayOfYear` Polinomial | 2.73 (17.0%) | 0.08 |
| `Variety` Linear | 5.24 (19.7%) | 0.77 |
| Todas as características Linear | 2.84 (10.5%) | 0.94 |
| Todas as características Polinomial | 2.23 (8.25%) | 0.97 |
🏆 Muito bem! Você criou quatro modelos de Regressão em uma única lição e melhorou a qualidade do modelo para 97%. Na seção final sobre Regressão, você aprenderá sobre Regressão Logística para determinar categorias.
🏆 Muito bem! Você criou quatro modelos de Regressão em uma lição, e melhorou a qualidade do modelo para 97%. Na seção final sobre Regressão, você aprenderá sobre Regressão Logística para determinar categorias.
---
## 🚀Desafio
@ -357,9 +370,9 @@ Teste várias variáveis diferentes neste notebook para ver como a correlação
Nesta lição, aprendemos sobre Regressão Linear. Existem outros tipos importantes de Regressão. Leia sobre as técnicas Stepwise, Ridge, Lasso e Elasticnet. Um bom curso para aprender mais é o [curso de Aprendizado Estatístico de Stanford](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning).
Nesta lição aprendemos sobre Regressão Linear. Existem outros tipos importantes de Regressão. Leia sobre as técnicas Stepwise, Ridge, Lasso e Elasticnet. Um bom curso para estudar e aprender mais é o [curso de Aprendizado Estatístico da Stanford](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
## Tarefa
@ -367,5 +380,7 @@ Nesta lição, aprendemos sobre Regressão Linear. Existem outros tipos importan
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se tradução profissional humana. Não nos responsabilizamos por quaisquer equívocos ou interpretações erradas decorrentes do uso desta tradução.
Nesta segunda lição de classificação, você explorará mais maneiras de classificar dados numéricos. Você também aprenderá sobre as implicações de escolher um classificador em vez de outro.
Nesta segunda aula de classificação, você explorará mais maneiras de classificar dados numéricos. Você também aprenderá sobre as ramificações de escolher um classificador em vez de outro.
Assumimos que você completou as lições anteriores e possui um conjunto de dados limpo na sua pasta `data`, chamado _cleaned_cuisines.csv_, localizado na raiz desta pasta de 4 lições.
Pressupomos que você tenha concluído as lições anteriores e possua um conjunto de dados limpo na sua pasta `data` chamado _cleaned_cuisines.csv_ na raiz desta pasta de 4 aulas.
### Preparação
@ -14,14 +14,14 @@ Carregamos seu arquivo _notebook.ipynb_ com o conjunto de dados limpo e o dividi
## Um mapa de classificação
Anteriormente, você aprendeu sobre as várias opções disponíveis para classificar dados usando o guia de referência da Microsoft. O Scikit-learn oferece um guia semelhante, mas mais detalhado, que pode ajudar ainda mais a restringir seus estimadores (outro termo para classificadores):
Anteriormente, você aprendeu sobre as várias opções que existem ao classificar dados usando a folha de dicas da Microsoft. O Scikit-learn oferece uma folha de dicas semelhante, mas mais granular, que pode ajudar ainda mais a afunilar seus estimadores (outro termo para classificadores):

> Dica: [visite este mapa online](https://scikit-learn.org/stable/tutorial/machine_learning_map/) e clique nos caminhos para ler a documentação.

> Dica: [visite este mapa online](https://scikit-learn.org/stable/tutorial/machine_learning_map/) e clique ao longo do caminho para ler a documentação.
### O plano
Este mapa é muito útil quando você tem uma compreensão clara dos seus dados, pois pode 'percorrer' seus caminhos para tomar uma decisão:
Este mapa é muito útil assim que você tiver uma compreensão clara dos seus dados, pois pode “percorrer” seus caminhos até uma decisão:
- Temos >50 amostras
- Queremos prever uma categoria
@ -29,12 +29,12 @@ Este mapa é muito útil quando você tem uma compreensão clara dos seus dados,
- Temos menos de 100K amostras
- ✨ Podemos escolher um Linear SVC
- Se isso não funcionar, já que temos dados numéricos
- Podemos tentar um ✨ KNeighbors Classifier
- Se isso não funcionar, tentar ✨ SVC e ✨ Ensemble Classifiers
- Podemos tentar um classificador ✨ KNeighbors
- Se isso não funcionar, tente ✨ SVC e ✨ Classificadores Ensemble
Este é um caminho muito útil a seguir.
Este é um caminho muito útil para seguir.
## Exercício - dividir os dados
## Exercício - divida os dados
Seguindo este caminho, devemos começar importando algumas bibliotecas para usar.
@ -50,25 +50,25 @@ Seguindo este caminho, devemos começar importando algumas bibliotecas para usar
O agrupamento por Vetores de Suporte (SVC) é um membro da família de técnicas de ML chamada Máquinas de Vetores de Suporte (SVM). Neste método, você pode escolher um 'kernel' para decidir como agrupar os rótulos. O parâmetro 'C' refere-se à 'regularização', que regula a influência dos parâmetros. O kernel pode ser um dos [vários](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC); aqui o configuramos como 'linear' para garantir que utilizamos o Linear SVC. A probabilidade, por padrão, é 'false'; aqui a configuramos como 'true' para obter estimativas de probabilidade. Configuramos o estado aleatório como '0' para embaralhar os dados e obter probabilidades.
Support-Vector clustering (SVC) é um membro da família de máquinas de suporte vetorial (Support-Vector machines) de técnicas de ML (saiba mais sobre elas abaixo). Neste método, você pode escolher um 'kernel' para decidir como agrupar as etiquetas. O parâmetro 'C' refere-se à 'regularização', que regula a influência dos parâmetros. O kernel pode ser um de [vários](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC); aqui definimos como 'linear' para garantir que aproveitamos o linear SVC. A probabilidade tem padrão 'false'; aqui definimos como 'true' para reunir estimativas de probabilidade. Definimos o estado aleatório para '0' para embaralhar os dados para obter probabilidades.
### Exercício - aplicar um Linear SVC
### Exercício - aplique um Linear SVC
Comece criando um array de classificadores. Você adicionará progressivamente a este array enquanto testamos.
Comece criando um array de classificadores. Você irá adicionar progressivamente a esse array conforme testamos.
@ -88,7 +88,7 @@ Comece criando um array de classificadores. Você adicionará progressivamente a
print(classification_report(y_test,y_pred))
```
O resultado é muito bom:
O resultado é bem bom:
```output
Accuracy (train) for Linear SVC: 78.6%
@ -107,11 +107,11 @@ Comece criando um array de classificadores. Você adicionará progressivamente a
## Classificador K-Neighbors
K-Neighbors faz parte da família de métodos de ML chamada "neighbors", que pode ser usada tanto para aprendizado supervisionado quanto não supervisionado. Neste método, um número pré-definido de pontos é criado e os dados são agrupados ao redor desses pontos, de forma que rótulos generalizados possam ser previstos para os dados.
K-Neighbors faz parte da família "neighbors" de métodos de ML, que podem ser usados tanto para aprendizagem supervisionada quanto não supervisionada. Neste método, um número predefinido de pontos é criado e os dados são agrupados em torno desses pontos para que rótulos generalizados possam ser previstos para os dados.
### Exercício - aplicar o classificador K-Neighbors
### Exercício - aplique o classificador K-Neighbors
O classificador anterior foi bom e funcionou bem com os dados, mas talvez possamos obter uma melhor precisão. Tente um classificador K-Neighbors.
O classificador anterior foi bom e funcionou bem com os dados, mas talvez possamos obter uma melhor precisão. Experimente um classificador K-Neighbors.
1. Adicione uma linha ao seu array de classificadores (adicione uma vírgula após o item Linear SVC):
@ -138,21 +138,21 @@ O classificador anterior foi bom e funcionou bem com os dados, mas talvez possam
✅ Saiba mais sobre [K-Neighbors](https://scikit-learn.org/stable/modules/neighbors.html#neighbors)
## Classificador de Vetores de Suporte
## Classificador Support Vector
Classificadores de Vetores de Suporte fazem parte da família de [Máquinas de Vetores de Suporte](https://wikipedia.org/wiki/Support-vector_machine), que são usadas para tarefas de classificação e regressão. SVMs "mapeiam exemplos de treinamento para pontos no espaço" para maximizar a distância entre duas categorias. Dados subsequentes são mapeados neste espaço para que sua categoria possa ser prevista.
Os classificadores Support-Vector fazem parte da família de métodos de ML [Support-Vector Machine](https://wikipedia.org/wiki/Support-vector_machine) usados para tarefas de classificação e regressão. SVMs "mapeiam exemplos de treinamento para pontos no espaço" para maximizar a distância entre duas categorias. Dados subsequentes são mapeados neste espaço para que sua categoria possa ser prevista.
### Exercício - aplicar um Classificador de Vetores de Suporte
### Exercício - aplique um classificador Support Vector
Vamos tentar obter uma precisão um pouco melhor com um Classificador de Vetores de Suporte.
Vamos tentar uma precisão um pouco melhor com um classificador Support Vector.
1. Adicione uma vírgula após o item K-Neighbors e, em seguida, adicione esta linha:
1. Adicione uma vírgula após o item K-Neighbors e depois adicione esta linha:
```python
'SVC': SVC(),
```
O resultado é muito bom!
O resultado é bastante bom!
```output
Accuracy (train) for SVC: 83.2%
@ -169,11 +169,11 @@ Vamos tentar obter uma precisão um pouco melhor com um Classificador de Vetores
weighted avg 0.84 0.83 0.83 1199
```
✅ Saiba mais sobre [Vetores de Suporte](https://scikit-learn.org/stable/modules/svm.html#svm)
✅ Saiba mais sobre [Support-Vectors](https://scikit-learn.org/stable/modules/svm.html#svm)
## Classificadores Ensemble
Vamos seguir o caminho até o final, mesmo que o teste anterior tenha sido muito bom. Vamos tentar alguns 'Classificadores Ensemble', especificamente Random Forest e AdaBoost:
Vamos seguir o caminho até o fim, embora o teste anterior tenha sido muito bom. Vamos tentar alguns 'Classificadores Ensemble', especificamente Random Forest e AdaBoost:
✅ Saiba mais sobre [Classificadores Ensemble](https://scikit-learn.org/stable/modules/ensemble.html)
Este método de aprendizado de máquina "combina as previsões de vários estimadores base" para melhorar a qualidade do modelo. No nosso exemplo, usamos Random Trees e AdaBoost.
Este método de Machine Learning "combina as previsões de vários estimadores base" para melhorar a qualidade do modelo. No nosso exemplo, usamos Random Trees e AdaBoost.
- [Random Forest](https://scikit-learn.org/stable/modules/ensemble.html#forest), um método de média, constrói uma 'floresta' de 'árvores de decisão' com elementos aleatórios para evitar overfitting. O parâmetro n_estimators é configurado para o número de árvores.
- [Random Forest](https://scikit-learn.org/stable/modules/ensemble.html#forest), um método de média, constrói uma 'floresta' de 'árvores de decisão' infundidas com aleatoriedade para evitar overfitting. O parâmetro n_estimators é definido para o número de árvores.
- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) ajusta um classificador a um conjunto de dados e, em seguida, ajusta cópias desse classificador ao mesmo conjunto de dados. Ele foca nos pesos dos itens classificados incorretamente e ajusta o ajuste para o próximo classificador corrigir.
- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) ajusta um classificador a um conjunto de dados e então ajusta cópias desse classificador ao mesmo conjunto de dados. Ele foca nos pesos dos itens classificados incorretamente e ajusta o ajuste para o próximo classificador corrigir.
---
## 🚀Desafio
Cada uma dessas técnicas possui um grande número de parâmetros que você pode ajustar. Pesquise os parâmetros padrão de cada uma e pense sobre o que ajustar esses parâmetros significaria para a qualidade do modelo.
Cada uma dessas técnicas tem um grande número de parâmetros que você pode ajustar. Pesquise os parâmetros padrão de cada uma e pense sobre o que ajustar esses parâmetros significaria para a qualidade do modelo.
Há muitos termos técnicos nestas lições, então reserve um momento para revisar [esta lista](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) de terminologia útil!
Há muita terminologia nestas lições, então reserve um minuto para revisar [esta lista](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) de termos úteis!
## Tarefa
## Tarefa
[Exploração de parâmetros](assignment.md)
[Brincando com parâmetros](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução.
Este documento foi traduzido usando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
"\n---\n\n**Aviso Legal**:\nEste documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Aviso Legal**:\nEste documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos empenhemos pela precisão, favor observar que traduções automáticas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado como a fonte autorizada. Para informações críticas, recomenda-se tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
"\n---\n\n**Aviso Legal**: \nEste documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Aviso Legal**: \nEste documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos empenhemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
> Este repositório inclui mais de 50 traduções que aumentam significativamente o tamanho do download. Para clonar sem as traduções, use checkout esparso:
>
> Este repositório inclui traduções para mais de 50 idiomas, o que aumenta significativamente o tamanho do download. Para clonar sem as traduções, use checkout esparso:
Estamos com uma série de aprendizado com IA no Discord, saiba mais e junte-se a nós em [Learn with AI Series](https://aka.ms/learnwithai/discord) de 18 a 30 de setembro de 2025. Você receberá dicas sobre como usar o GitHub Copilot para Ciência de Dados.
Estamos realizando uma série de aprendizado no Discord com IA, saiba mais e junte-se a nós em [Learn with AI Series](https://aka.ms/learnwithai/discord) de 18 a 30 de setembro de 2025. Você receberá dicas e truques de como usar o GitHub Copilot para Ciência de Dados.


# Aprendizado de Máquina para Iniciantes - Um Currículo
> 🌍 Viaje ao redor do mundo enquanto exploramos Aprendizado de Máquina através das culturas do mundo 🌍
> 🌍 Viaje pelo mundo enquanto exploramos o aprendizado de máquina por meio das culturas do mundo 🌍
Os Cloud Advocates da Microsoft têm o prazer de oferecer um currículo de 12 semanas, com 26 lições, totalmente sobre **Aprendizado de Máquina**. Neste currículo, você aprenderá sobre o que às vezes é chamado de **aprendizado de máquina clássico**, usando principalmente a biblioteca Scikit-learn e evitando aprendizado profundo, que é abordado em nosso [currículo de IA para iniciantes](https://aka.ms/ai4beginners). Combine essas lições com nosso ['Currículo de Ciência de Dados para Iniciantes'](https://aka.ms/ds4beginners), também!
Os Cloud Advocates da Microsoft têm o prazer de oferecer um currículo de 12 semanas, com 26 lições sobre **Aprendizado de Máquina**. Neste currículo, você aprenderá sobre o que às vezes é chamado de **aprendizado de máquina clássico**, usando principalmente a biblioteca Scikit-learn e evitando o deep learning, que é abordado no nosso [currículo AI para Iniciantes](https://aka.ms/ai4beginners). Combine estas lições com nosso [currículo Ciência de Dados para Iniciantes](https://aka.ms/ds4beginners), também!
Viaje conosco ao redor do mundo enquanto aplicamos essas técnicas clássicas a dados de diversas áreas do globo. Cada lição inclui questionários pré e pós-lição, instruções escritas para completar a lição, uma solução, uma tarefa e mais. Nossa pedagogia baseada em projetos permite que você aprenda construindo, uma maneira comprovada de fixar novas habilidades.
Viaje conosco pelo mundo aplicando essas técnicas clássicas a dados de várias regiões do planeta. Cada lição inclui quizzes pré e pós-aula, instruções escritas para completar a lição, uma solução, uma tarefa e muito mais. Nossa pedagogia baseada em projetos permite que você aprenda enquanto constrói, uma forma comprovada de fixar novos conhecimentos.
**✍️ Nosso sincero agradecimento aos autores** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu e Amy Boyd
**✍️ Nossos sinceros agradecimentos aos autores** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu e Amy Boyd
**🎨 Agradecimentos também aos nossos ilustradores** Tomomi Imura, Dasani Madipalli e Jen Looper
**🎨 Agradecimentos também aos ilustradores** Tomomi Imura, Dasani Madipalli e Jen Looper
**🙏 Agradecimentos especiais 🙏 aos autores, revisores e colaboradores de conteúdo embaixadores estudantis Microsoft**, notadamente Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila e Snigdha Agarwal
**🙏 Agradecimentos especiais 🙏 aos nossos autores, revisores e colaboradores do Microsoft Student Ambassador**, especialmente Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila e Snigdha Agarwal
**🤩 Gratidão extra aos Embaixadores Estudantis Microsoft Eric Wanjau, Jasleen Sondhi e Vidushi Gupta pelas nossas lições em R!**
**🤩 Gratidão extra aos Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi e Vidushi Gupta pelas nossas lições em R!**
# Começando
Siga estes passos:
1. **Fork do Repositório**: Clique no botão "Fork" no canto superior direito desta página.
1. **Faça um Fork do Repositório**: Clique no botão "Fork" no canto superior direito desta página.
2. **Clone o Repositório**: `git clone https://github.com/microsoft/ML-For-Beginners.git`
> [encontre todos os recursos adicionais deste curso em nossa coleção Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> [encontre todos os recursos adicionais para este curso em nossa coleção Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> 🔧 **Precisa de ajuda?**Verifique nosso [Guia de Solução de Problemas](TROUBLESHOOTING.md) para soluções comuns em instalação, configuração e execução das lições.
> 🔧 **Precisa de ajuda?**Confira nosso [Guia de Solução de Problemas](TROUBLESHOOTING.md) para resolver dúvidas comuns sobre instalação, configuração e execução de lições.
**[Estudantes](https://aka.ms/student-page)**, para usar este currículo, faça o fork do repositório inteiro para sua conta no GitHub e complete os exercícios sozinho ou em grupo:
**[Estudantes](https://aka.ms/student-page)**, para usar este currículo, faça um fork do repositório completo na sua conta do GitHub e complete os exercícios sozinho ou em grupo:
- Comece com um questionário pré-aula.
- Leia a aula e complete as atividades, pausando e refletindo em cada verificação de conhecimento.
- Tente criar os projetos compreendendo as lições ao invés de apenas rodar o código da solução; entretanto, esse código está disponível nas pastas `/solution` de cada lição orientada a projeto.
- Faça o questionário pós-aula.
- Complete o desafio.
- Complete a tarefa.
- Após completar um grupo de lições, visite o [Fórum de Discussão](https://github.com/microsoft/ML-For-Beginners/discussions) e "aprenda em voz alta" preenchendo a rubrica PAT apropriada. Um 'PAT' é uma Ferramenta de Avaliação de Progresso, uma rubrica que você preenche para avançar seu aprendizado. Você também pode reagir a outros PATs para aprendermos juntos.
- Comece com um quiz pré-lectura.
- Leia a aula e complete as atividades, pausando e refletindo em cada checagem de conhecimento.
- Tente criar os projetos compreendendo as lições ao invés de executar diretamente o código da solução; no entanto, esse código está disponível nas pastas `/solution` de cada lição orientada a projeto.
- Faça o quiz pós-lectura.
- Realize o desafio.
- Faça a tarefa.
- Após terminar um grupo de lições, visite o [Fórum de Discussão](https://github.com/microsoft/ML-For-Beginners/discussions) e "aprenda em voz alta" preenchendo a rubrica PAT apropriada. Um 'PAT' é uma Ferramenta de Avaliação de Progresso na qual você registra seu aprendizado. Você também pode reagir aos PATs de outras pessoas para aprendermos juntos.
> Para estudo adicional, recomendamos seguir estes módulos e trilhas de aprendizagem do [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott).
> Para estudos adicionais, recomendamos seguir os [módulos e trilhas de aprendizado Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott).
**Professores**, incluímos [algumas sugestões](for-teachers.md) sobre como usar este currículo.
@ -79,102 +89,102 @@ Siga estes passos:
## Vídeos explicativos
Algumas das lições estão disponíveis em vídeo curto. Você pode encontrá-los embutidos nas lições ou na [playlist ML for Beginners no canal Microsoft Developer no YouTube](https://aka.ms/ml-beginners-videos) clicando na imagem abaixo.
Algumas lições estão disponíveis em vídeo de formato curto. Você pode encontrar todos esses vídeos embutidos nas lições, ou na [playlist ML para Iniciantes no canal Microsoft Developer no YouTube](https://aka.ms/ml-beginners-videos), clicando na imagem abaixo.
[](https://aka.ms/ml-beginners-videos)
[](https://aka.ms/ml-beginners-videos)
> 🎥 Clique na imagem acima para ver um vídeo sobre o projeto e as pessoas que o criaram!
> 🎥 Clique na imagem acima para assistir a um vídeo sobre o projeto e as pessoas que o criaram!
---
## Pedagogia
Escolhemos dois princípios pedagógicos ao construir este currículo: garantir que seja **baseado em projetos práticos** e que inclua **questionários frequentes**. Além disso, este currículo tem um **tema** comum para dar coesão.
Escolhemos dois princípios pedagógicos ao construir este currículo: garantir que seja prático **baseado em projetos** e que inclua **quizzes frequentes**. Além disso, este currículo tem um **tema** comum para dar coesão.
Garantindo que o conteúdo se alinhe com projetos, o processo se torna mais envolvente para os alunos e a retenção dos conceitos será aumentada. Além disso, um questionário de baixa pressão antes da aula define a intenção do estudante para aprender o tema, enquanto um segundo questionário após a aula assegura retenção adicional. Este currículo foi projetado para ser flexível e divertido, podendo ser feito inteiro ou em partes. Os projetos começam pequenos e tornam-se cada vez mais complexos ao longo do ciclo de 12 semanas. Este currículo também inclui um posfácio sobre aplicações reais de ML, que pode ser usado como crédito extra ou base para discussão.
Garantindo que o conteúdo esteja alinhado a projetos, o processo torna-se mais envolvente para os alunos, e a retenção dos conceitos será aumentada. Além disso, um quiz de baixa pressão antes da aula define a intenção do estudante para aprender o tópico, enquanto um segundo quiz após a aula assegura maior retenção. Este currículo foi projetado para ser flexível e divertido, podendo ser feito integralmente ou parcialmente. Os projetos começam pequenos e se tornam progressivamente mais complexos ao longo do ciclo de 12 semanas. O currículo inclui também um pós-escrito sobre aplicações reais de ML, que pode ser usado como crédito extra ou como base para discussão.
> Encontre nosso [Código de Conduta](CODE_OF_CONDUCT.md), [Contribuindo](CONTRIBUTING.md), [Tradução](TRANSLATIONS.md) e [Solução de Problemas](TROUBLESHOOTING.md). Agradecemos seu feedback construtivo!
> Encontre nossas diretrizes de [Código de Conduta](CODE_OF_CONDUCT.md), [Contribuição](CONTRIBUTING.md), [Tradução](TRANSLATIONS.md) e [Solução de Problemas](TROUBLESHOOTING.md). Aguardamos seu feedback construtivo!
> **Uma nota sobre idiomas**: Estas lições são escritas principalmente em Python, mas muitas também estão disponíveis em R. Para completar uma lição em R, vá para a pasta `/solution` e procure as lições em R. Elas incluem uma extensão .rmd que representa um arquivo **R Markdown**, que pode ser definido simplesmente como a incorporação de `blocos de código` (de R ou outras linguagens) e um `cabeçalho YAML` (que orienta como formatar saídas, como PDF) em um `documento Markdown`. Como tal, serve como um framework de autoria exemplar para ciência de dados pois permite que você combine seu código, sua saída e seus pensamentos, escrevendo-os em Markdown. Além disso, documentos R Markdown podem ser renderizados para formatos de saída como PDF, HTML ou Word.
> **Uma nota sobre os quizzes**: Todos os quizzes estão contidos na [pasta Quiz App](../../quiz-app), totalizando 52 quizzes de três perguntas cada. Eles são vinculados dentro das lições, mas o aplicativo de quiz pode ser executado localmente; siga as instruções na pasta `quiz-app` para hospedar localmente ou implantar no Azure.
| Número da Lição | Tópico | Agrupamento de Lições | Objetivos de Aprendizagem | Lição Vinculada | Autor |
| 01 | Introdução ao aprendizado de máquina | [Introdução](1-Introduction/README.md) | Aprenda os conceitos básicos por trás do aprendizado de máquina | [Lição](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | A História do aprendizado de máquina | [Introdução](1-Introduction/README.md) | Aprenda a história subjacente a este campo | [Lição](1-Introduction/2-history-of-ML/README.md) | Jen e Amy |
| 03 | Justiça e aprendizado de máquina | [Introdução](1-Introduction/README.md) | Quais são as questões filosóficas importantes sobre justiça que os alunos devem considerar ao criar e aplicar modelos de ML? | [Lição](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | Técnicas para aprendizado de máquina | [Introdução](1-Introduction/README.md) | Quais técnicas os pesquisadores de ML usam para construir modelos de ML? | [Lição](1-Introduction/4-techniques-of-ML/README.md) | Chris e Jen |
| 05 | Introdução à regressão | [Regressão](2-Regression/README.md) | Comece com Python e Scikit-learn para modelos de regressão | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | Preços de abóboras na América do Norte 🎃 | [Regressão](2-Regression/README.md) | Visualize e limpe dados em preparação para ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) |Jen • Eric Wanjau |
| 07 | Preços de abóboras na América do Norte 🎃 | [Regressão](2-Regression/README.md) | Construa modelos de regressão linear e polinomial | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen e Dmitry • Eric Wanjau |
| 08 | Preços de abóboras na América do Norte 🎃 | [Regressão](2-Regression/README.md) | Construa um modelo de regressão logística | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | Um App Web 🔌 | [App Web](3-Web-App/README.md) | Crie um app web para usar seu modelo treinado | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | Introdução à classificação | [Classificação](4-Classification/README.md) | Limpe, prepare e visualize seus dados; introdução à classificação | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen e Cassie • Eric Wanjau |
| 11 | Culinárias deliciosas asiáticas e indianas 🍜 | [Classificação](4-Classification/README.md) | Introdução aos classificadores | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen e Cassie • Eric Wanjau |
| 12 | Culinárias deliciosas asiáticas e indianas 🍜 | [Classificação](4-Classification/README.md) | Mais classificadores | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen e Cassie • Eric Wanjau |
| 13 | Culinárias deliciosas asiáticas e indianas 🍜 | [Classificação](4-Classification/README.md) | Crie um app web recomendador usando seu modelo | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | Introdução ao clustering | [Clustering](5-Clustering/README.md) | Limpe, prepare e visualize seus dados; Introdução ao clustering | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 15 | Explorando gostos musicais nigerianos 🎧 | [Clustering](5-Clustering/README.md) | Explore o método de clustering K-Means | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau |
| 16 | Introdução ao processamento de linguagem natural ☕️ | [Processamento de linguagem natural](6-NLP/README.md) | Aprenda o básico sobre PLN construindo um bot simples | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | Tarefas comuns de PLN ☕️ | [Processamento de linguagem natural](6-NLP/README.md) | Aprofunde seu conhecimento em PLN entendendo tarefas comuns necessárias ao lidar com estruturas linguísticas | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | Tradução e análise de sentimento ♥️ | [Processamento de linguagem natural](6-NLP/README.md) | Tradução e análise de sentimento com Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | Hotéis românticos da Europa ♥️ | [Processamento de linguagem natural](6-NLP/README.md) | Análise de sentimento com avaliações de hotéis 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | Hotéis românticos da Europa ♥️ | [Processamento de linguagem natural](6-NLP/README.md) | Análise de sentimento com avaliações de hotéis 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | Introdução à previsão de séries temporais | [Séries temporais](7-TimeSeries/README.md) | Introdução à previsão de séries temporais | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 22 | ⚡️ Consumo de Energia Mundial ⚡️ - previsão de séries com ARIMA | [Séries temporais](7-TimeSeries/README.md) | Previsão de séries temporais com ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ Consumo de Energia Mundial ⚡️ - previsão de séries com SVR | [Séries temporais](7-TimeSeries/README.md) | Previsão de séries temporais com Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | Introdução ao aprendizado por reforço | [Aprendizado por reforço](8-Reinforcement/README.md) | Introdução ao aprendizado por reforço com Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | Ajude Peter a evitar o lobo! 🐺 | [Aprendizado por reforço](8-Reinforcement/README.md) | Aprendizado por reforço Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| Posfácio | Cenários e aplicações do aprendizado de máquina no mundo real | [ML in the Wild](9-Real-World/README.md) | Aplicações interessantes e reveladoras do ML clássico | [Lição](9-Real-World/1-Applications/README.md) | Equipe |
| Posfácio | Depuração de modelos em ML usando o dashboard RAI | [ML in the Wild](9-Real-World/README.md) | Depuração de modelos em aprendizado de máquina usando componentes do dashboard Responsible AI | [Lição](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> **Uma nota sobre idiomas**: Essas lições são principalmente escritas em Python, mas muitas também estão disponíveis em R. Para completar uma lição em R, vá para a pasta `/solution` e procure as lições de R. Elas incluem uma extensão .rmd que representa um arquivo **R Markdown**, que pode ser simplesmente definido como uma incorporação de `trechos de código` (de R ou outras linguagens) e um `cabeçalho YAML` (que orienta como formatar saídas como PDF) em um `documento Markdown`. Como tal, serve como uma estrutura exemplar para autoria em ciência de dados, pois permite combinar seu código, sua saída e seus pensamentos permitindo que você os escreva em Markdown. Além disso, documentos R Markdown podem ser exportados para formatos de saída como PDF, HTML ou Word.
> **Uma nota sobre quizzes**: Todos os quizzes estão contidos na pasta [Quiz App](../../quiz-app), com um total de 52 quizzes, cada um com três perguntas. Eles são vinculados dentro das lições, mas o aplicativo de quiz pode ser executado localmente; siga as instruções na pasta `quiz-app` para hospedar localmente ou implantar no Azure.
| Número da Lição | Tópico | Agrupamento da Lição | Objetivos de Aprendizado | Lição Vinculada | Autor |
| 01 | Introdução ao aprendizado de máquina | [Introdução](1-Introduction/README.md) | Aprenda os conceitos básicos por trás do aprendizado de máquina | [Lição](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | A história do aprendizado de máquina | [Introdução](1-Introduction/README.md) | Conheça a história por trás deste campo | [Lição](1-Introduction/2-history-of-ML/README.md) | Jen e Amy |
| 03 | Justiça e aprendizado de máquina | [Introdução](1-Introduction/README.md) | Quais são as questões filosóficas importantes sobre justiça que os alunos devem considerar ao construir e aplicar modelos de ML? | [Lição](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | Técnicas para aprendizado de máquina | [Introdução](1-Introduction/README.md) | Quais técnicas os pesquisadores de ML usam para construir modelos de ML? | [Lição](1-Introduction/4-techniques-of-ML/README.md) | Chris e Jen |
| 05 | Introdução à regressão | [Regressão](2-Regression/README.md)| Comece com Python e Scikit-learn para modelos de regressão| [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | Preços de abóboras na América do Norte 🎃 | [Regressão](2-Regression/README.md)| Visualize e limpe dados em preparação para ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | Preços de abóboras na América do Norte 🎃 | [Regressão](2-Regression/README.md) | Construa modelos de regressão linear e polinomial | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen e Dmitry • Eric Wanjau |
| 08 | Preços de abóboras na América do Norte 🎃 | [Regressão](2-Regression/README.md) | Construa um modelo de regressão logística | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | Um App Web 🔌 | [App Web](3-Web-App/README.md) | Construa um app web para usar seu modelo treinado | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | Introdução à classificação | [Classificação](4-Classification/README.md) | Limpe, prepare e visualize seus dados; introdução à classificação | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen e Cassie • Eric Wanjau |
| 11 | Culinárias deliciosas asiáticas e indianas 🍜 | [Classificação](4-Classification/README.md)| Introdução aos classificadores | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen e Cassie • Eric Wanjau |
| 12 | Culinárias deliciosas asiáticas e indianas 🍜 | [Classificação](4-Classification/README.md)| Mais classificadores | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen e Cassie • Eric Wanjau |
| 13 | Culinárias deliciosas asiáticas e indianas 🍜 | [Classificação](4-Classification/README.md) | Construa um app web recomendador usando seu modelo | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | Introdução ao clustering | [Clustering](5-Clustering/README.md) | Limpe, prepare e visualize seus dados; introdução ao clustering | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 15 | Explorando gostos musicais nigerianos 🎧 | [Clustering](5-Clustering/README.md) | Explore o método de clustering K-Means | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau |
| 16 | Introdução ao processamento de linguagem natural ☕️ | [Processamento de linguagem natural](6-NLP/README.md) | Aprenda o básico sobre PLN construindo um bot simples |[Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | Tarefas comuns de PLN ☕️ | [Processamento de linguagem natural](6-NLP/README.md) | Aprofunde seu conhecimento em PLN entendendo tarefas comuns necessárias ao lidar com estruturas linguísticas| [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | Tradução e análise de sentimentos ♥️ | [Processamento de linguagem natural](6-NLP/README.md) | Tradução e análise de sentimentos com Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | Hotéis românticos da Europa ♥️ | [Processamento de linguagem natural](6-NLP/README.md) | Análise de sentimento com avaliações de hotéis 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | Hotéis românticos da Europa ♥️ | [Processamento de linguagem natural](6-NLP/README.md) | Análise de sentimento com avaliações de hotéis 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | Introdução à previsão de séries temporais | [Séries temporais](7-TimeSeries/README.md) | Introdução à previsão de séries temporais | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 22 | ⚡️ Uso de energia mundial ⚡️ - previsão de séries temporais com ARIMA | [Séries temporais](7-TimeSeries/README.md) | Previsão de séries temporais com ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ Uso de energia mundial ⚡️ - previsão de séries temporais com SVR | [Séries temporais](7-TimeSeries/README.md) | Previsão de séries temporais com Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | Introdução ao aprendizado por reforço | [Aprendizado por reforço](8-Reinforcement/README.md) | Introdução ao aprendizado por reforço com Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | Ajude Peter a evitar o lobo! 🐺 | [Aprendizado por reforço](8-Reinforcement/README.md) | Aprendizado por reforço Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| Pós-Escrito | Cenários e aplicações reais de ML | [ML na prática](9-Real-World/README.md) | Aplicações reais interessantes e reveladoras do ML clássico | [Lição](9-Real-World/1-Applications/README.md) | Equipe |
| Pós-Escrito | Depuração de modelos em ML usando painel RAI | [ML na prática](9-Real-World/README.md) | Depuração de modelos em Machine Learning usando componentes do painel Responsible AI | [Lição](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [encontre todos os recursos adicionais para este curso em nossa coleção Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
## Acesso offline
Você pode executar esta documentação offline usando o [Docsify](https://docsify.js.org/#/). Faça um fork deste repositório, [instale o Docsify](https://docsify.js.org/#/quickstart) em sua máquina local e então, na pasta raiz deste repositório, digite `docsify serve`. O site será servido na porta 3000 em seu localhost: `localhost:3000`.
Você pode executar esta documentação offline usando [Docsify](https://docsify.js.org/#/). Faça um fork deste repositório, [instale o Docsify](https://docsify.js.org/#/quickstart) em sua máquina local e então na pasta raiz deste repositório, digite `docsify serve`. O site será servido na porta 3000 no seu localhost: `localhost:3000`.
## PDFs
Encontre um pdf do currículo com links [aqui](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf).
Encontre um PDF do currículo com links [aqui](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf).
## 🎒 Outros Cursos
## 🎒 Outros Cursos
Nossa equipe produz outros cursos! Confira:
<!-- CO-OP TRANSLATOR OTHER COURSES START -->
### LangChain
[](https://aka.ms/langchain4j-for-beginners)
[](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
[](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
[](https://aka.ms/langchain4j-for-beginners)
[](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
[](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
---
### Azure / Edge / MCP / Agentes
[](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
@ -188,7 +198,7 @@ Nossa equipe produz outros cursos! Confira:
---
### Aprendizado Central
### Aprendizado Fundamental
[](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
@ -200,24 +210,29 @@ Nossa equipe produz outros cursos! Confira:
---
### Série Copilot
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
Se você ficar preso ou tiver alguma dúvida sobre como criar aplicativos de IA. Junte-se a outros aprendizes e desenvolvedores experientes nas discussões sobre MCP. É uma comunidade acolhedora onde perguntas são bem-vindas e o conhecimento é compartilhado livremente.
Se você ficar preso ou tiver alguma dúvida sobre a construção de aplicativos de IA. Junte-se a outros aprendizes e desenvolvedores experientes nas discussões sobre MCP. É uma comunidade acolhedora onde perguntas são bem-vindas e o conhecimento é compartilhado livremente.
Se você tiver feedback sobre o produto ou encontrar erros durante o desenvolvimento, visite:
Se você tiver feedback sobre o produto ou erros durante a construção, visite:
[](https://aka.ms/foundry/forum)
- Reveja os notebooks após cada lição para melhor compreensão.
- Pratique implementar algoritmos por conta própria.
- Explore conjuntos de dados do mundo real usando os conceitos aprendidos.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, é recomendada a tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução.
Este documento foi traduzido usando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, por favor, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
Nesta lição, aprendeu sobre a Caixa de Ferramentas de IA Responsável, um "projeto de código aberto e orientado pela comunidade para ajudar cientistas de dados a analisar e melhorar sistemas de IA." Para esta tarefa, explore um dos [notebooks](https://github.com/microsoft/responsible-ai-toolbox/blob/main/notebooks/responsibleaidashboard/getting-started.ipynb) da RAI Toolbox e relate as suas descobertas num artigo ou apresentação.
Nesta lição, aprendeu sobre a Caixa de Ferramentas de IA Responsável, um "projeto de código aberto, orientado pela comunidade, para ajudar cientistas de dados a analisar e melhorar sistemas de IA." Para esta tarefa, explore um dos [cadernos](https://github.com/microsoft/responsible-ai-toolbox/blob/main/notebooks/responsibleaidashboard/tabular/getting-started.ipynb) da Caixa de Ferramentas RAI e reporte as suas descobertas num artigo ou apresentação.
| | Um artigo ou apresentação em PowerPoint é apresentado discutindo os sistemas do Fairlearn, o notebook que foi executado e as conclusões obtidas a partir da sua execução | Um artigo é apresentado sem conclusões | Nenhum artigo é apresentado |
| | Um artigo ou apresentação em powerpoint é apresentado discutindo os sistemas Fairlearn, o caderno que foi executado, e as conclusões tiradas da execução | Um artigo é apresentado sem conclusões | Nenhum artigo é apresentado |
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, é importante notar que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes da utilização desta tradução.
Este documento foi traduzido utilizando o serviço de tradução automática [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos por garantir a precisão, por favor tenha em conta que as traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional efetuada por um ser humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução.
# Construir um modelo de regressão usando Scikit-learn: quatro abordagens de regressão
# Construir um modelo de regressão usando Scikit-learn: regressão de quatro formas

## Nota para iniciantes
A regressão linear é usada quando queremos prever um **valor numérico** (por exemplo, preço de casa, temperatura ou vendas). Funciona encontrando uma linha reta que melhor representa a relação entre as características de entrada e a saída.
Nesta lição, focamos em entender o conceito antes de explorar técnicas de regressão mais avançadas.

> Infográfico por [Dasani Madipalli](https://twitter.com/dasani_decoded)
> ### [Esta lição está disponível em R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### Introdução
### Introdução
Até agora, exploraste o que é regressão com dados de exemplo retirados do conjunto de dados de preços de abóboras que utilizaremos ao longo desta lição. Também já os visualizaste utilizando o Matplotlib.
Até agora exploraste o que é regressão com dados de exemplo recolhidos do conjunto de dados de preços de abóboras que iremos usar ao longo desta lição. Também os visualizaste usando Matplotlib.
Agora estás pronto para mergulhar mais fundo na regressão para Machine Learning. Embora a visualização permita compreender os dados, o verdadeiro poder do Machine Learning vem do _treinamento de modelos_. Os modelos são treinados com dados históricos para capturar automaticamente as dependências dos dados, permitindo prever resultados para novos dados que o modelo ainda não viu.
Agora estás pronto para mergulhar mais fundo na regressão para ML. Enquanto a visualização permite fazer sentido dos dados, o verdadeiro poder do Machine Learning vem do _treino de modelos_. Os modelos são treinados com dados históricos para capturar automaticamente dependências dos dados, e permitem prever resultados para novos dados, que o modelo ainda não viu.
Nesta lição, aprenderás mais sobre dois tipos de regressão: _regressão linear básica_ e _regressão polinomial_, juntamente com algumas das matemáticas subjacentes a estas técnicas. Esses modelos permitirão prever os preços das abóboras dependendo de diferentes dados de entrada.
Nesta lição, vais aprender mais sobre dois tipos de regressão: _regressão linear básica_ e _regressão polinomial_, juntamente com alguma matemática subjacente a estas técnicas. Esses modelos permitir-nos-ão prever preços de abóboras dependendo de diferentes dados de entrada.
[](https://youtu.be/CRxFT8oTDMg "ML para iniciantes - Compreendendo a Regressão Linear")
[](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression")
> 🎥 Clica na imagem acima para uma breve visão geral sobre regressão linear.
> 🎥 Clica na imagem acima para um vídeo curto sobre regressão linear.
> Ao longo deste currículo, assumimos um conhecimento mínimo de matemática e procuramos torná-lo acessível para estudantes de outras áreas. Por isso, presta atenção às notas, 🧮 chamadas, diagramas e outras ferramentas de aprendizagem para ajudar na compreensão.
> Ao longo deste currículo, assumimos conhecimentos mínimos de matemática e procuramos torná-lo acessível a estudantes de outras áreas, por isso observa as notas, 🧮 chamadas, diagramas e outras ferramentas de aprendizagem para ajudar na compreensão.
### Pré-requisitos
Deves estar familiarizado, neste momento, com a estrutura dos dados de abóboras que estamos a analisar. Podes encontrá-los pré-carregados e pré-limpos no ficheiro _notebook.ipynb_ desta lição. No ficheiro, o preço das abóboras é exibido por alqueire num novo _data frame_. Certifica-te de que consegues executar estes _notebooks_ em _kernels_ no Visual Studio Code.
Deves estar familiarizado agora com a estrutura dos dados das abóboras que estamos a examinar. Podes encontrá-los pré-carregados e pré-limpos no ficheiro _notebook.ipynb_ desta lição. No ficheiro, o preço da abóbora é apresentado por alqueire num novo dataframe. Certifica-te de que consegues executar estes notebooks em kernels no Visual Studio Code.
### Preparação
Como lembrete, estás a carregar estes dados para fazer perguntas sobre eles.
Como lembrete, estás a carregar estes dados para poder colocar-lhes questões.
- Qual é a melhor altura para comprar abóboras?
- Qual é a melhor época para comprar abóboras?
- Que preço posso esperar por uma caixa de abóboras miniatura?
- Devo comprá-las em cestos de meio alqueire ou em caixas de 1 1/9 de alqueire?
- Devo comprá-las em cestos de meio alqueire ou por caixas de 1 1/9 alqueires?
Vamos continuar a explorar estes dados.
Na lição anterior, criaste um _data frame_ com Pandas e preencheste-o com parte do conjunto de dados original, padronizando os preços por alqueire. No entanto, ao fazer isso, só conseguiste reunir cerca de 400 pontos de dados e apenas para os meses de outono.
Na lição anterior, criaste um dataframe Pandas e populaste-o com uma parte do conjunto de dados original, padronizando os preços por alqueire. Ao fazer isso, no entanto, só conseguiste recolher cerca de 400 pontos de dados e apenas para os meses de outono.
Dá uma olhada nos dados que pré-carregámos no _notebook_ que acompanha esta lição. Os dados estão pré-carregados e um gráfico de dispersão inicial é traçado para mostrar os dados por mês. Talvez possamos obter mais detalhes sobre a natureza dos dados ao limpá-los mais.
Dá uma vista de olhos aos dados que pré-carregámos no notebook acompanhante desta lição. Os dados estão pré-carregados e um gráfico de dispersão inicial é apresentado para mostrar dados mensais. Talvez possamos obter um pouco mais de detalhe sobre a natureza dos dados limpando-os melhor.
## Uma linha de regressão linear
@ -43,82 +48,88 @@ Como aprendeste na Lição 1, o objetivo de um exercício de regressão linear
- **Mostrar relações entre variáveis**. Mostrar a relação entre variáveis.
- **Fazer previsões**. Fazer previsões precisas sobre onde um novo ponto de dados cairia em relação a essa linha.
É típico da **Regressão dos Mínimos Quadrados** traçar este tipo de linha. O termo 'mínimos quadrados' significa que todos os pontos de dados ao redor da linha de regressão são elevados ao quadrado e depois somados. Idealmente, essa soma final é o menor possível, porque queremos um número baixo de erros, ou `mínimos quadrados`.
É típico da **Regressão dos Mínimos Quadrados** traçar esse tipo de linha. O termo "Mínimos Quadrados" refere-se ao processo de minimizar o erro total no nosso modelo. Para cada ponto de dados, medimos a distância vertical (chamada residual) entre o ponto real e a nossa linha de regressão.
Elevamos ao quadrado essas distâncias por duas razões principais:
1. **Magnitude em vez de Direção:** Queremos tratar um erro de -5 igual a um erro de +5. Elevando ao quadrado, todos os valores tornam-se positivos.
Fazemos isso porque queremos modelar uma linha que tenha a menor distância cumulativa de todos os nossos pontos de dados. Também elevamos os termos ao quadrado antes de somá-los, pois estamos preocupados com a magnitude e não com a direção.
2. **Penalização de Outliers:** Elevar ao quadrado dá mais peso a erros maiores, forçando a linha a ficar mais próxima dos pontos mais afastados.
> **🧮 Mostra-me a matemática**
Depois somamos todos esses valores ao quadrado. O nosso objetivo é encontrar a linha específica onde essa soma final é mínima (o menor valor possível) — daí o nome "Mínimos Quadrados".
> **🧮 Mostra-me a matemática**
>
> Esta linha, chamada de _linha de melhor ajuste_, pode ser expressa por [uma equação](https://en.wikipedia.org/wiki/Simple_linear_regression):
> Esta linha, chamada de _linha de melhor ajuste_ pode ser expressa por [uma equação](https://en.wikipedia.org/wiki/Simple_linear_regression):
>
> ```
> Y = a + bX
> ```
>
> `X` é a 'variável explicativa'. `Y` é a 'variável dependente'. A inclinação da linha é `b` e `a` é o intercepto em Y, que se refere ao valor de `Y` quando `X = 0`.
> `X` é a 'variável explicativa'. `Y` é a 'variável dependente'. A inclinação da linha é `b` e `a` é o intercepto no eixo y, que se refere ao valor de `Y` quando `X = 0`.
>
>
>
>
> Primeiro, calcula-se a inclinação `b`. Infográfico por [Jen Looper](https://twitter.com/jenlooper)
> Primeiro, calcula a inclinação `b`. Infográfico por [Jen Looper](https://twitter.com/jenlooper)
>
> Em outras palavras, e referindo-se à pergunta original sobre os dados das abóboras: "prever o preço de uma abóbora por alqueire por mês", `X` referir-se-ia ao preço e `Y` ao mês de venda.
> Por outras palavras, e referindo-nos à pergunta original dos nossos dados de abóboras: "prever o preço de uma abóbora por alqueire por mês", `X` referir-se-ia ao preço e `Y` ao mês de venda.
>
>
>
>
> Calcula o valor de Y. Se estás a pagar cerca de $4, deve ser abril! Infográfico por [Jen Looper](https://twitter.com/jenlooper)
> Calcula o valor de Y. Se estiveres a pagar cerca de 4 dólares, deve ser abril! Infográfico por [Jen Looper](https://twitter.com/jenlooper)
>
> A matemática que calcula a linha deve demonstrar a inclinação da linha, que também depende do intercepto, ou onde `Y` está situado quando `X = 0`.
> A matemática que calcula a linha deve demonstrar a inclinação da linha, que também depende do intercepto, ou seja, onde `Y` se encontra quando `X = 0`.
>
> Podes observar o método de cálculo desses valores no site [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Também visita [este calculador de mínimos quadrados](https://www.mathsisfun.com/data/least-squares-calculator.html) para ver como os valores dos números impactam a linha.
> Podes observar o método de cálculo destes valores no site [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Visita também [este calculador de mínimos quadrados](https://www.mathsisfun.com/data/least-squares-calculator.html) para ver como os valores dos números afetam a linha.
## Correlação
Outro termo a compreender é o **Coeficiente de Correlação** entre as variáveis X e Y fornecidas. Usando um gráfico de dispersão, podes visualizar rapidamente este coeficiente. Um gráfico com pontos de dados dispersos numa linha ordenada tem alta correlação, mas um gráfico com pontos de dados espalhados por todo o lado entre X e Y tem baixa correlação.
Mais um termo para entender é o **Coeficiente de Correlação** entre variáveis X e Y dadas. Usando um gráfico de dispersão, podes visualizar rapidamente esse coeficiente. Um gráfico com pontos dispersos em linha organizada tem alta correlação, mas um gráfico com pontos dispersos por todo o lado entre X e Y tem baixa correlação.
Um bom modelo de regressão linear será aquele que tem um Coeficiente de Correlação alto (mais próximo de 1 do que de 0) usando o método de Regressão dos Mínimos Quadrados com uma linha de regressão.
Um bom modelo de regressão linear será aquele que tem um Coeficiente de Correlação alto (mais perto de 1 do que de 0) usando o método de Regressão dos Mínimos Quadrados com uma linha de regressão.
✅ Executa o _notebook_ que acompanha esta lição e observa o gráfico de dispersão de Mês para Preço. Os dados que associam Mês ao Preço das vendas de abóboras parecem ter alta ou baixa correlação, de acordo com a tua interpretação visual do gráfico de dispersão? Isso muda se usares uma medida mais detalhada em vez de `Mês`, por exemplo,*dia do ano* (ou seja, número de dias desde o início do ano)?
✅ Executa o notebook que acompanha esta lição e olha para o gráfico de dispersão Mês para Preço. Os dados que associam Mês a Preço para vendas de abóbora parecem ter correlação alta ou baixa, segundo a tua interpretação visual do gráfico de dispersão? Isso muda se usares uma medida mais detalhada em vez de `Mês`, p.ex.*dia do ano* (ou seja, número de dias desde o início do ano)?
No código abaixo, assumiremos que limpámos os dados e obtivemos um _dataframe_ chamado `new_pumpkins`, semelhante ao seguinte:
No código abaixo, assumiremos que limpámos os dados e obtivemos um dataframe chamado `new_pumpkins`, semelhante ao seguinte:
ID | Mês | DiaDoAno | Variedade | Cidade | Embalagem | Preço Baixo | Preço Alto | Preço
70 | 9 | 267 | TIPO PARA TORTA | BALTIMORE | caixas de 1 1/9 alqueire | 15.0 | 15.0 | 13.636364
71 | 9 | 267 | TIPO PARA TORTA | BALTIMORE | caixas de 1 1/9 alqueire | 18.0 | 18.0 | 16.363636
72 | 10 | 274 | TIPO PARA TORTA | BALTIMORE | caixas de 1 1/9 alqueire | 18.0 | 18.0 | 16.363636
73 | 10 | 274 | TIPO PARA TORTA | BALTIMORE | caixas de 1 1/9 alqueire | 17.0 | 17.0 | 15.454545
74 | 10 | 281 | TIPO PARA TORTA | BALTIMORE | caixas de 1 1/9 alqueire | 15.0 | 15.0 | 13.636364
> O código para limpar os dados está disponível em [`notebook.ipynb`](../../../../2-Regression/3-Linear/notebook.ipynb). Realizámos os mesmos passos de limpeza da lição anterior e calculámos a coluna `DiaDoAno` usando a seguinte expressão:
> O código para limpar os dados está disponível em [`notebook.ipynb`](notebook.ipynb). Fizemos os mesmos passos de limpeza da lição anterior, e calculámos a coluna `DayOfYear` usando a seguinte expressão:
Agora que tens uma compreensão da matemática por trás da regressão linear, vamos criar um modelo de Regressão para ver se conseguimos prever qual embalagem de abóboras terá os melhores preços. Alguém que compra abóboras para um campo de abóboras de feriado pode querer esta informação para otimizar as suas compras de embalagens de abóboras para o campo.
Agora que tens uma compreensão da matemática por detrás da regressão linear, vamos criar um modelo de Regressão para ver se conseguimos prever qual embalagem de abóboras terá os melhores preços de abóbora. Alguém a comprar abóboras para uma decoração de abóboras de feriado pode querer essa informação para otimizar as suas compras de embalagens de abóboras para a decoração.
## Procurando por Correlação
## Procurar Correlação
[](https://youtu.be/uoRq-lW2eQo "ML para iniciantes - Procurando por Correlação: A Chave para a Regressão Linear")
[](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression")
> 🎥 Clica na imagem acima para uma breve visão geral sobre correlação.
> 🎥 Clica na imagem acima para um vídeo curto sobre correlação.
Na lição anterior, provavelmente viste que o preço médio para diferentes meses parece assim:
Na lição anterior de certeza que viste que o preço médio para diferentes meses parece assim:
<imgalt="Preço médio por mês" src="../../../../translated_images/pt-PT/barchart.a833ea9194346d76.webp"width="50%"/>
<imgalt="Average price by month" src="../../../../translated_images/pt-PT/barchart.a833ea9194346d76.webp"width="50%"/>
Isto sugere que deve haver alguma correlação, e podemos tentar treinar um modelo de regressão linear para prever a relação entre `Mês` e `Preço`, ou entre `DiaDoAno` e `Preço`. Aqui está o gráfico de dispersão que mostra a última relação:
<imgalt="Gráfico de dispersão de Preço vs. Dia do Ano" src="../../../../translated_images/pt-PT/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
<imgalt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/pt-PT/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
Vamos verificar se há correlação usando a função `corr`:
Vamos ver se existe correlação usando a função `corr`:
Parece que a correlação é bastante pequena, -0.15 por`Mês` e -0.17 por`DiaDoAno`, mas pode haver outra relação importante. Parece que há diferentes agrupamentos de preços correspondentes a diferentes variedades de abóboras. Para confirmar esta hipótese, vamos traçar cada categoria de abóbora usando uma cor diferente. Passando um parâmetro `ax` para a função de plotagem `scatter`, podemos traçar todos os pontos no mesmo gráfico:
Parece que a correlação é bastante pequena, -0.15 pelo `Mês` e -0.17 pelo `DiaDoAno`, mas pode haver outra relação importante. Parece que existem diferentes aglomerados de preços correspondendo a várias variedades de abóboras. Para confirmar esta hipótese, vamos traçar cada categoria de abóbora usando uma cor diferente. Passando um parâmetro `ax` para a função de plotagem `scatter` podemos colocar todos os pontos no mesmo gráfico:
```python
ax=None
@ -128,42 +139,42 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
<imgalt="Gráfico de dispersão de Preço vs. Dia do Ano" src="../../../../translated_images/pt-PT/scatter-dayofyear-color.65790faefbb9d54f.webp"width="50%"/>
<imgalt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/pt-PT/scatter-dayofyear-color.65790faefbb9d54f.webp"width="50%"/>
A nossa investigação sugere que a variedade tem mais efeito no preço geral do que a data de venda. Podemos ver isso com um gráfico de barras:
A nossa investigação sugere que a variedade tem mais efeito sobre o preço global do que a data real de venda. Podemos ver isto com um gráfico de barras:
<imgalt="Gráfico de dispersão de Preço vs. Dia do Ano" src="../../../../translated_images/pt-PT/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
<imgalt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/pt-PT/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
Se agora calcularmos a correlação entre `Preço` e `DiaDoAno` usando a função `corr`, obteremos algo como `-0.27` - o que significa que treinar um modelo preditivo faz sentido.
> Antes de treinar um modelo de regressão linear, é importante garantir que os nossos dados estão limpos. A regressão linear não funciona bem com valores ausentes, por isso faz sentido eliminar todas as células vazias:
> Antes de treinar um modelo de regressão linear, é importante garantir que os nossos dados estão limpos. A regressão linear não funciona bem com valores em falta, por isso faz sentido eliminar todas as células vazias:
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
Outra abordagem seria preencher esses valores vazios com valores médios da coluna correspondente.
Outra abordagem seria preencher esses valores vazios com a média da coluna correspondente.
## Regressão Linear Simples
[](https://youtu.be/e4c_UP2fSjg "ML para iniciantes - Regressão Linear e Polinomial usando Scikit-learn")
[](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn")
> 🎥 Clica na imagem acima para uma breve visão geral sobre regressão linear e polinomial.
> 🎥 Clica na imagem acima para um vídeo curto sobre regressão linear e polinomial.
Para treinar o nosso modelo de Regressão Linear, utilizaremos a biblioteca **Scikit-learn**.
Para treinar o nosso modelo de Regressão Linear, vamos usar a biblioteca **Scikit-learn**.
```python
from sklearn.linear_model import LinearRegression
@ -171,31 +182,31 @@ from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
```
Começamos separando os valores de entrada (características) e a saída esperada (rótulo) em arrays numpy separados:
Começamos por separar os valores de entrada (características) e a saída esperada (rótulo) em arrays numpy separados:
```python
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
> Nota que tivemos de realizar `reshape` nos dados de entrada para que o pacote de Regressão Linear os compreendesse corretamente. A Regressão Linear espera um array 2D como entrada, onde cada linha do array corresponde a um vetor de características de entrada. No nosso caso, como temos apenas uma entrada, precisamos de um array com forma N×1, onde N é o tamanho do conjunto de dados.
> Note que tivemos de fazer `reshape` na entrada de dados para que o pacote Linear Regression a entendesse corretamente. A Regressão Linear espera uma matriz 2D como entrada, onde cada linha da matriz corresponde a um vetor de características de entrada. No nosso caso, como temos apenas uma entrada - precisamos de um array com forma N×1, onde N é o tamanho do conjunto de dados.
Depois, precisamos dividir os dados em conjuntos de treino e teste, para que possamos validar o nosso modelo após o treino:
Depois, precisamos de dividir os dados em conjuntos de treino e teste, para que possamos validar o nosso modelo depois do treino:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
```
Finalmente, treinar o modelo de Regressão Linear propriamente dito leva apenas duas linhas de código. Definimos o objeto `LinearRegression` e ajustamo-lo aos nossos dados usando o método `fit`:
Por fim, treinar o modelo real de Regressão Linear ocupa apenas duas linhas de código. Definimos o objeto `LinearRegression` e ajustamo-lo aos nossos dados usando o método `fit`:
```python
lin_reg = LinearRegression()
lin_reg.fit(X_train,y_train)
```
O objeto `LinearRegression` após o ajuste (`fit`) contém todos os coeficientes da regressão, que podem ser acessados usando a propriedade `.coef_`. No nosso caso, há apenas um coeficiente, que deve ser em torno de `-0.017`. Isso significa que os preços parecem cair um pouco com o tempo, mas não muito, cerca de 2 cêntimos por dia. Também podemos acessar o ponto de interseção da regressão com o eixo Y usando `lin_reg.intercept_` - será em torno de `21` no nosso caso, indicando o preço no início do ano.
O objeto `LinearRegression` após ser `fit`-ado contém todos os coeficientes da regressão, que podem ser acedidos usando a propriedade `.coef_`. No nosso caso, há apenas um coeficiente, que deverá estar em torno de `-0.017`. Isso significa que os preços parecem diminuir um pouco com o tempo, mas não muito, cerca de 2 cêntimos por dia. Podemos também aceder ao ponto de interseção da regressão com o eixo Y usando `lin_reg.intercept_` - será cerca de `21` no nosso caso, indicando o preço no início do ano.
Para ver quão preciso é o nosso modelo, podemos prever preços num conjunto de dados de teste e depois medir quão próximas estão as nossas previsões dos valores esperados. Isso pode ser feito usando a métrica de erro quadrático médio (MSE), que é a média de todas as diferenças ao quadrado entre o valor esperado e o previsto.
Para ver o quão preciso é o nosso modelo, podemos prever preços num conjunto de dados de teste e então medir quão próximas as nossas previsões estão dos valores esperados. Isto pode ser feito usando a métrica de erro quadrático médio (MSE), que é a média de todas as diferenças ao quadrado entre o valor esperado e o previsto.
```python
pred = lin_reg.predict(X_test)
@ -203,36 +214,38 @@ pred = lin_reg.predict(X_test)
O nosso erro parece estar em torno de 2 pontos, o que equivale a ~17%. Não é muito bom. Outro indicador da qualidade do modelo é o **coeficiente de determinação**, que pode ser obtido assim:
O nosso erro parece estar em torno de 2 pontos, o que é ~17%. Não é muito bom. Outro indicador da qualidade do modelo é o **coeficiente de determinação**, que pode ser obtido assim:
```python
score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)
```
Se o valor for 0, significa que o modelo não considera os dados de entrada e age como o *pior preditor linear*, que é simplesmente o valor médio do resultado. O valor 1 significa que conseguimos prever perfeitamente todos os resultados esperados. No nosso caso, o coeficiente é cerca de 0,06, o que é bastante baixo.
Também podemos traçar os dados de teste juntamente com a linha de regressão para visualizar melhor como a regressão funciona no nosso caso:
Se o valor for 0, significa que o modelo não considera os dados de entrada e atua como o *pior preditor linear*, que é simplesmente a média dos resultados. O valor 1 significa que conseguimos predizer perfeitamente todas as saídas esperadas. No nosso caso, o coeficiente está em torno de 0.06, que é bastante baixo.
Podemos também fazer um gráfico dos dados de teste juntamente com a linha de regressão para ver melhor como funciona a regressão no nosso caso:
Outro tipo de Regressão Linear é a Regressão Polinomial. Embora às vezes exista uma relação linear entre variáveis - quanto maior o volume da abóbora, maior o preço - em outras situações essas relações não podem ser representadas como um plano ou linha reta.
Outro tipo de Regressão Linear é a Regressão Polinomial. Embora por vezes exista uma relação linear entre variáveis - quanto maior a abóbora em volume, maior o preço - às vezes essas relações não podem ser representadas como um plano ou linha reta.
✅ Aqui estão [alguns exemplos adicionais](https://online.stat.psu.edu/stat501/lesson/9/9.8) de dados que poderiam usar Regressão Polinomial.
✅ Aqui estão [alguns exemplos adicionais](https://online.stat.psu.edu/stat501/lesson/9/9.8) de dados que poderiam utilizar Regressão Polinomial.
Observe novamente a relação entre Data e Preço. Este gráfico de dispersão parece que deveria ser analisado necessariamente por uma linha reta? Os preços não podem flutuar? Neste caso, pode-se tentar a regressão polinomial.
Observe novamente a relação entre Data e Preço. Este gráfico de dispersão parece algo que deveria necessariamente ser analisado por uma linha reta? Os preços não podem flutuar? Neste caso, pode tentar regressão polinomial.
✅ Polinómios são expressões matemáticas que podem consistir em uma ou mais variáveis e coeficientes.
A regressão polinomial cria uma linha curva para se ajustar melhor a dados não lineares. No nosso caso, se incluirmos uma variável `DayOfYear` ao quadrado nos dados de entrada, deveremos ser capazes de ajustar os dados com uma curva parabólica, que terá um mínimo em determinado ponto do ano.
A regressão polinomial cria uma linha curva para se ajustar melhor aos dados não lineares. No nosso caso, se incluirmos uma variável `DayOfYear` ao quadrado nos dados de entrada, deveremos conseguir ajustar os nossos dados com uma curva parabólica, que terá um mínimo num certo ponto ao longo do ano.
O Scikit-learn inclui uma [API de pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) útil para combinar diferentes etapas de processamento de dados. Um **pipeline** é uma cadeia de **estimadores**. No nosso caso, criaremos um pipeline que primeiro adiciona características polinomiais ao modelo e, em seguida, treina a regressão:
O Scikit-learn inclui uma API útil [pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) para combinar diferentes etapas do processamento de dados. Um **pipeline** é uma cadeia de **estimadores**. No nosso caso, vamos criar um pipeline que primeiramente adiciona características polinomiais ao nosso modelo e depois treina a regressão:
```python
from sklearn.preprocessing import PolynomialFeatures
Usar `PolynomialFeatures(2)` significa que incluiremos todos os polinómios de segundo grau dos dados de entrada. No nosso caso, isso significará apenas `DayOfYear`<sup>2</sup>, mas, dado duas variáveis de entrada X e Y, isso adicionará X<sup>2</sup>, XY e Y<sup>2</sup>. Também podemos usar polinómios de grau superior, se quisermos.
Usar `PolynomialFeatures(2)` significa que iremos incluir todos os polinómios de segundo grau a partir dos dados de entrada. No nosso caso, isso significará apenas `DayOfYear`<sup>2</sup>, mas dado dois variáveis de entrada X e Y, isto adicionará X<sup>2</sup>, XY e Y<sup>2</sup>. Podemos também usar polinómios de grau superior, se desejarmos.
Os pipelines podem ser usados da mesma forma que o objeto original `LinearRegression`, ou seja, podemos usar `fit` no pipeline e, em seguida, usar `predict` para obter os resultados da previsão. Aqui está o gráfico mostrando os dados de teste e a curva de aproximação:
Pipelines podem ser usados da mesma forma que o objeto original `LinearRegression`, ou seja, podemos `fit` o pipeline, e depois usar `predict` para obter os resultados das previsões. Aqui está o gráfico mostrando os dados de teste e a curva de aproximação:
Usando a Regressão Polinomial, conseguimos um MSE ligeiramente mais baixo e um coeficiente de determinação mais alto, mas não significativamente. Precisamos levar em conta outras características!
Usando a Regressão Polinomial, podemos obter um MSE ligeiramente mais baixo e um coeficiente de determinação mais alto, mas não significativamente. Precisamos de considerar outras características!
> Pode-se observar que os preços mínimos das abóboras ocorrem por volta do Halloween. Como explicaria isso?
> Pode ver que os preços mínimos das abóboras ocorrem por volta do Halloween. Como pode explicar isso?
🎃 Parabéns, acabou de criar um modelo que pode ajudar a prever o preço das abóboras para tartes. Provavelmente poderia repetir o mesmo procedimento para todos os tipos de abóbora, mas isso seria trabalhoso. Vamos agora aprender como levar em conta a variedade de abóbora no nosso modelo!
🎃 Parabéns, acabou de criar um modelo que pode ajudar a prever o preço das abóboras para torta. Provavelmente pode repetir o mesmo procedimento para todos os tipos de abóboras, mas isso seria trabalhoso. Vamos agora aprender como considerar a variedade da abóbora no nosso modelo!
## Características Categóricas
No mundo ideal, queremos ser capazes de prever preços para diferentes variedades de abóbora usando o mesmo modelo. No entanto, a coluna `Variety` é um pouco diferente de colunas como `Month`, porque contém valores não numéricos. Essas colunas são chamadas de**categóricas**.
No mundo ideal, queremos ser capazes de prever preços para diferentes variedades de abóbora usando o mesmo modelo. No entanto, a coluna `Variety` é algo diferente de colunas como `Month`, porque contém valores não numéricos. Estas colunas são chamadas**categóricas**.
[](https://youtu.be/DYGliioIAE0 "ML para principiantes - Previsões com características categóricas usando Regressão Linear")
[](https://youtu.be/DYGliioIAE0 "ML para iniciantes - Previsões de Características Categóricas com Regressão Linear")
> 🎥 Clique na imagem acima para um breve vídeo sobre o uso de características categóricas.
> 🎥 Clique na imagem acima para um vídeo curto sobre o uso de características categóricas.
Aqui pode ver como o preço médio depende da variedade:
<imgalt="Preço médio por variedade" src="../../../../translated_images/pt-PT/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
<imgalt="Average price by variety" src="../../../../translated_images/pt-PT/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
Para levar a variedade em conta, primeiro precisamos convertê-la para uma forma numérica, ou **codificá-la**. Existem várias formas de fazer isso:
Para considerar a variedade, primeiro precisamos convertê-la para forma numérica, ou **codificá-la**. Existem várias formas de o fazer:
* A **codificação numérica simples** criará uma tabela com as diferentes variedades e, em seguida, substituirá o nome da variedade por um índice nessa tabela. Esta não é a melhor ideia para regressão linear, porque a regressão linear considera o valor numérico do índice e adiciona-o ao resultado, multiplicando por algum coeficiente. No nosso caso, a relação entre o número do índice e o preço é claramente não linear, mesmo que garantamos que os índices estejam ordenados de uma forma específica.
* A **codificação one-hot** substituirá a coluna `Variety` por 4 colunas diferentes, uma para cada variedade. Cada coluna conterá `1` se a linha correspondente for de uma determinada variedade, e `0` caso contrário. Isso significa que haverá quatro coeficientes na regressão linear, um para cada variedade de abóbora, responsáveis pelo "preço inicial" (ou melhor, "preço adicional") para essa variedade específica.
* Uma simples **codificação numérica** construiria uma tabela das diferentes variedades, e depois substituiria o nome da variedade pelo índice nessa tabela. Esta não é a melhor ideia para regressão linear, porque a regressão linear utiliza o valor numérico real do índice e adiciona-o ao resultado, multiplicando por algum coeficiente. No nosso caso, a relação entre o número do índice e o preço é claramente não linear, mesmo se nos certificarmos que os índices são ordenados de uma forma específica.
* A **codificação one-hot** substitui a coluna `Variety` por 4 colunas diferentes, uma para cada variedade. Cada coluna conterá `1` se a linha correspondente for da variedade dada, e `0` caso contrário. Isto significa que haverá quatro coeficientes na regressão linear, um para cada variedade de abóbora, responsável pelo "preço inicial" (ou melhor, "preço adicional") para essa variedade em particular.
O código abaixo mostra como podemos codificar uma variedade usando one-hot encoding:
O código abaixo mostra como podemos codificar one-hot uma variedade:
Para treinar a regressão linear usando a variedade codificada como one-hot nos dados de entrada, só precisamos inicializar os dados `X` e `y` corretamente:
Para treinar a regressão linear utilizando a variedade codificada one-hot como entrada, só precisamos inicializar corretamente os dados `X` e `y`:
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
O restante do código é o mesmo que usamos acima para treinar a Regressão Linear. Se experimentar, verá que o erro quadrático médio é aproximadamente o mesmo, mas obtemos um coeficiente de determinação muito mais alto (~77%). Para obter previsões ainda mais precisas, podemos levar em conta mais características categóricas, bem como características numéricas, como `Month` ou `DayOfYear`. Para obter um grande conjunto de características, podemos usar `join`:
O resto do código é o mesmo que usamos acima para treinar a Regressão Linear. Se tentar, verá que o erro quadrático médio é aproximadamente o mesmo, mas obtemos um coeficiente de determinação muito maior (~77%). Para obter previsões ainda mais precisas, podemos considerar mais características categóricas, bem como variáveis numéricas, como `Month` ou `DayOfYear`. Para obter um único grande array de características, podemos usar `join`:
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@ -306,31 +319,31 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
y = new_pumpkins['Price']
```
Aqui também levamos em conta `City` e o tipo de `Package`, o que nos dá um MSE de 2,84 (10%) e um coeficiente de determinação de 0,94!
Aqui também consideramos `City` e o tipo de `Package`, o que nos dá um MSE de 2.84 (10%) e determinação 0.94!
## Resumindo tudo
## Juntando tudo
Para criar o melhor modelo, podemos usar dados combinados (categóricos codificados como one-hot + numéricos) do exemplo acima juntamente com a Regressão Polinomial. Aqui está o código completo para sua conveniência:
Para fazer o melhor modelo, podemos usar dados combinados (categóricos codificados one-hot + numéricos) do exemplo acima juntamente com a Regressão Polinomial. Aqui está o código completo para sua conveniência:
```python
# set up training data
# preparar dados de treino
X = pd.get_dummies(new_pumpkins['Variety']) \
.join(new_pumpkins['Month']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
# make train-test split
# fazer divisão treino-teste
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
Isso deve nos dar o melhor coeficiente de determinação de quase 97% e MSE=2,23 (~8% de erro de previsão).
Isto deverá dar-nos o melhor coeficiente de determinação de quase 97%, e MSE=2.23 (~8% de erro de previsão).
| Modelo | MSE | Determinação |
|--------|-----|--------------|
| `DayOfYear` Linear | 2,77 (17,2%) | 0,07 |
| `DayOfYear` Polinomial | 2,73 (17,0%) | 0,08 |
| `Variety` Linear | 5,24 (19,7%) | 0,77 |
| Todas as características Linear | 2,84 (10,5%) | 0,94 |
| Todas as características Polinomial | 2,23 (8,25%) | 0,97 |
| Linear com `DayOfYear` | 2.77 (17.2%) | 0.07 |
| Polinomial com `DayOfYear` | 2.73 (17.0%) | 0.08 |
| Linear com `Variety` | 5.24 (19.7%) | 0.77 |
| Linear com todas as características | 2.84 (10.5%) | 0.94 |
| Polinomial com todas as características | 2.23 (8.25%) | 0.97 |
🏆 Muito bem! Criou quatro modelos de Regressão numa única lição e melhorou a qualidade do modelo para 97%. Na seção final sobre Regressão, aprenderá sobre Regressão Logística para determinar categorias.
🏆 Muito bem! Criou quatro modelos de regressão numa só lição, e melhorou a qualidade do modelo para 97%. Na secção final sobre Regressão, irá aprender sobre Regressão Logística para determinar categorias.
---
## 🚀Desafio
@ -357,15 +370,17 @@ Teste várias variáveis diferentes neste notebook para ver como a correlação
Nesta lição aprendemos sobre Regressão Linear. Existem outros tipos importantes de Regressão. Leia sobre as técnicas Stepwise, Ridge, Lasso e Elasticnet. Um bom curso para aprender mais é o [curso de Aprendizagem Estatística de Stanford](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning).
Nesta lição aprendemos sobre Regressão Linear. Existem outros tipos importantes de Regressão. Leia sobre as técnicas Stepwise, Ridge, Lasso e Elasticnet. Um bom curso para estudar e aprender mais é o [curso de Aprendizagem Estatística de Stanford](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
## Tarefa
[Crie um Modelo](assignment.md)
[Construa um Modelo](assignment.md)
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, é importante ter em conta que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes da utilização desta tradução.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, por favor, tenha em conta que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes do uso desta tradução.
Nesta segunda lição sobre classificação, vais explorar mais formas de classificar dados numéricos. Também vais aprender sobre as implicações de escolher um classificador em vez de outro.
Nesta segunda lição de classificação, irá explorar mais formas de classificar dados numéricos. Também aprenderá sobre as ramificações de escolher um classificador em vez de outro.
Assumimos que completaste as lições anteriores e tens um conjunto de dados limpo na tua pasta `data`, chamado _cleaned_cuisines.csv_, na raiz desta pasta de 4 lições.
Assumimos que completou as lições anteriores e que tem um conjunto de dados limpo na sua pasta `data` chamado _cleaned_cuisines.csv_ na raiz desta pasta de 4 lições.
### Preparação
Carregámos o teu ficheiro _notebook.ipynb_ com o conjunto de dados limpo e dividimo-lo em dataframes X e y, prontos para o processo de construção do modelo.
Carregámos o seu ficheiro _notebook.ipynb_ com o conjunto de dados limpo e dividimo-lo em dataframes X e y, prontos para o processo de construção do modelo.
## Um mapa de classificação
Anteriormente, aprendeste sobre as várias opções disponíveis para classificar dados utilizando o guia da Microsoft. O Scikit-learn oferece um guia semelhante, mas mais detalhado, que pode ajudar ainda mais a restringir os estimadores (outro termo para classificadores):
Anteriormente, aprendeu sobre as várias opções que tem ao classificar dados utilizando o cheat sheet da Microsoft. O Scikit-learn oferece um cheat sheet semelhante, mas mais granular, que pode ajudar a restringir ainda mais os seus estimadores (outro termo para classificadores):

> Dica: [visita este mapa online](https://scikit-learn.org/stable/tutorial/machine_learning_map/) e explora os caminhos para ler a documentação.

> Dica: [visite este mapa online](https://scikit-learn.org/stable/tutorial/machine_learning_map/) e clique ao longo do percurso para ler a documentação.
### O plano
Este mapa é muito útil quando tens uma compreensão clara dos teus dados, pois podes 'percorrer' os seus caminhos até uma decisão:
Este mapa é muito útil quando tem uma compreensão clara dos seus dados, pois pode 'percorrer' os seus caminhos até uma decisão:
- Temos >50 amostras
- Queremos prever uma categoria
- Temos dados rotulados
- Temos menos de 100K amostras
- ✨ Podemos escolher um Linear SVC
- Se isso não funcionar, como temos dados numéricos:
- Podemos tentar um ✨ KNeighbors Classifier
- Se isso não funcionar, tentar ✨ SVC e ✨ Ensemble Classifiers
- Se isso não funcionar, uma vez que temos dados numéricos
- Podemos tentar um ✨ KNeighbors Classifier
- Se isso não funcionar, tente ✨ SVC e ✨ Ensemble Classifiers
Este é um caminho muito útil a seguir.
## Exercício - dividir os dados
Seguindo este caminho, devemos começar por importar algumas bibliotecas para usar.
Seguindo este percurso, devemos começar por importar algumas bibliotecas para usar.
1. Importa as bibliotecas necessárias:
1. Importe as bibliotecas necessárias:
```python
from sklearn.neighbors import KNeighborsClassifier
@ -50,31 +50,31 @@ Seguindo este caminho, devemos começar por importar algumas bibliotecas para us
O clustering por Support-Vector (SVC) é um membro da família de técnicas de ML chamadas Support-Vector Machines (aprende mais sobre estas abaixo). Neste método, podes escolher um 'kernel' para decidir como agrupar os rótulos. O parâmetro 'C' refere-se à 'regularização', que regula a influência dos parâmetros. O kernel pode ser um de [vários](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC); aqui definimos como 'linear' para garantir que utilizamos o Linear SVC. A probabilidade por padrão é 'falsa'; aqui definimos como 'verdadeira' para obter estimativas de probabilidade. Definimos o estado aleatório como '0' para embaralhar os dados e obter probabilidades.
O Support-Vector clustering (SVC) é um método da família de máquinas de vetores de suporte (Support-Vector machines) em ML (saiba mais sobre estes abaixo). Neste método, pode escolher um 'kernel' para decidir como agrupar as etiquetas. O parâmetro 'C' refere-se à 'regularização', que regula a influência dos parâmetros. O kernel pode ser um de [vários](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC); aqui definimo-lo como 'linear' para garantir que utilizamos o SVC linear. A probabilidade é por defeito 'false'; aqui definimo-la como 'true' para recolher estimativas de probabilidade. Definimos o estado aleatório para '0' para embaralhar os dados e obter probabilidades.
### Exercício - aplicar um Linear SVC
Começa por criar um array de classificadores. Vais adicionar progressivamente a este array à medida que testamos.
Comece por criar um array de classificadores. Irá adicionar progressivamente a este array conforme formos testando.
2. Treina o teu modelo utilizando o Linear SVC e imprime um relatório:
2. Treine o seu modelo usando o Linear SVC e imprima um relatório:
```python
n_classifiers = len(classifiers)
@ -107,13 +107,13 @@ Começa por criar um array de classificadores. Vais adicionar progressivamente a
## Classificador K-Neighbors
K-Neighbors faz parte da família de métodos de ML "neighbors", que podem ser usados tanto para aprendizagem supervisionada como não supervisionada. Neste método, é criado um número pré-definido de pontos e os dados são agrupados em torno desses pontos, de forma que rótulos generalizados possam ser previstos para os dados.
K-Neighbors faz parte da família "neighbors" de métodos ML, que podem ser usados para aprendizagem supervisionada e não supervisionada. Neste método, um número predefinido de pontos é criado e os dados são agrupados à volta destes pontos de forma a prever etiquetas generalizadas para os dados.
### Exercício - aplicar o classificador K-Neighbors
O classificador anterior foi bom e funcionou bem com os dados, mas talvez possamos obter uma melhor precisão. Experimenta um classificador K-Neighbors.
O classificador anterior foi bom, e funcionou bem com os dados, mas talvez consigamos melhor precisão. Experimente um classificador K-Neighbors.
1. Adiciona uma linha ao teu array de classificadores (adiciona uma vírgula após o item Linear SVC):
1. Adicione uma linha ao seu array de classificadores (adicione uma vírgula após o item Linear SVC):
```python
'KNN classifier': KNeighborsClassifier(C),
@ -136,23 +136,23 @@ O classificador anterior foi bom e funcionou bem com os dados, mas talvez possam
weighted avg 0.76 0.74 0.74 1199
```
✅ Aprende sobre [K-Neighbors](https://scikit-learn.org/stable/modules/neighbors.html#neighbors)
✅ Saiba mais sobre [K-Neighbors](https://scikit-learn.org/stable/modules/neighbors.html#neighbors)
## Classificador Support Vector
Os classificadores Support-Vector fazem parte da família [Support-Vector Machine](https://wikipedia.org/wiki/Support-vector_machine) de métodos de ML que são usados para tarefas de classificação e regressão. Os SVMs "mapeiam exemplos de treino para pontos no espaço" para maximizar a distância entre duas categorias. Dados subsequentes são mapeados neste espaço para que a sua categoria possa ser prevista.
Os classificadores Support-Vector fazem parte da família de métodos ML [Support-Vector Machine](https://wikipedia.org/wiki/Support-vector_machine) que são usados para tarefas de classificação e regressão. Os SVMs "mapeiam exemplos de treino para pontos no espaço" para maximizar a distância entre duas categorias. Os dados subsequentes são mapeados neste espaço para que a sua categoria possa ser prevista.
### Exercício - aplicar um classificador Support Vector
Vamos tentar obter uma precisão um pouco melhor com um classificador Support Vector.
1. Adiciona uma vírgula após o item K-Neighbors e, em seguida, adiciona esta linha:
1. Adicione uma vírgula após o item K-Neighbors, e depois adicione esta linha:
```python
'SVC': SVC(),
```
O resultado é muito bom!
O resultado é bastante bom!
```output
Accuracy (train) for SVC: 83.2%
@ -169,18 +169,18 @@ Vamos tentar obter uma precisão um pouco melhor com um classificador Support Ve
weighted avg 0.84 0.83 0.83 1199
```
✅ Aprende sobre [Support-Vectors](https://scikit-learn.org/stable/modules/svm.html#svm)
✅ Saiba mais sobre [Support-Vectors](https://scikit-learn.org/stable/modules/svm.html#svm)
## Classificadores Ensemble
Vamos seguir o caminho até ao fim, mesmo que o teste anterior tenha sido muito bom. Vamos experimentar alguns 'Classificadores Ensemble', especificamente Random Forest e AdaBoost:
Vamos seguir o percurso até ao fim, embora o teste anterior tenha sido bastante bom. Vamos experimentar alguns 'Classificadores Ensemble', especificamente Random Forest e AdaBoost:
```python
'RFST': RandomForestClassifier(n_estimators=100),
'ADA': AdaBoostClassifier(n_estimators=100)
```
O resultado é muito bom, especialmente para Random Forest:
O resultado é muito bom, especialmente para o Random Forest:
```output
Accuracy (train) for RFST: 84.5%
@ -210,31 +210,33 @@ Accuracy (train) for ADA: 72.4%
weighted avg 0.73 0.72 0.72 1199
```
✅ Aprende sobre [Classificadores Ensemble](https://scikit-learn.org/stable/modules/ensemble.html)
✅ Saiba mais sobre [Classificadores Ensemble](https://scikit-learn.org/stable/modules/ensemble.html)
Este método de Machine Learning "combina as previsões de vários estimadores base" para melhorar a qualidade do modelo. No nosso exemplo, utilizámos Random Trees e AdaBoost.
Este método de Aprendizagem Automática "combina as previsões de vários estimadores base" para melhorar a qualidade do modelo. No nosso exemplo, usamos Árvores Aleatórias e AdaBoost.
- [Random Forest](https://scikit-learn.org/stable/modules/ensemble.html#forest), um método de média, constrói uma 'floresta' de 'árvores de decisão' com infusão de aleatoriedade para evitar overfitting. O parâmetro n_estimators é definido como o número de árvores.
- [Random Forest](https://scikit-learn.org/stable/modules/ensemble.html#forest), um método de média, constrói uma 'floresta' de 'árvores de decisão' com aleatoriedade para evitar o sobreajuste. O parâmetro n_estimators é definido para o número de árvores.
- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) ajusta um classificador a um conjunto de dados e, em seguida, ajusta cópias desse classificador ao mesmo conjunto de dados. Foca-se nos pesos dos itens classificados incorretamente e ajusta o ajuste para o próximo classificador corrigir.
- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) ajusta um classificador a um conjunto de dados e depois ajusta cópias desse classificador ao mesmo conjunto de dados. Foca-se nos pesos dos itens classificados incorretamente e ajusta o ajuste para o classificador seguinte corrigir.
---
## 🚀Desafio
Cada uma destas técnicas tem um grande número de parâmetros que podes ajustar. Pesquisa os parâmetros padrão de cada uma e pensa no que ajustar esses parâmetros significaria para a qualidade do modelo.
Cada uma destas técnicas tem um número grande de parâmetros que pode ajustar. Pesquise os parâmetros por defeito de cada uma e pense no que ajustar estes parâmetros significaria para a qualidade do modelo.
Há muito jargão nestas lições, por isso tira um momento para rever [esta lista](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) de terminologia útil!
Há muita terminologia nestas lições, por isso reserve um minuto para rever [esta lista](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) de termos úteis!
## Tarefa
## Tarefa
[Exploração de parâmetros](assignment.md)
[Jogar com parâmetros](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução automática [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes do uso desta tradução.
Este documento foi traduzido utilizando o serviço de tradução automática [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, note que traduções automáticas podem conter erros ou imprecisões. O documento original, na sua língua nativa, deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional realizada por um tradutor humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes da utilização desta tradução.
"\n---\n\n**Aviso Legal**: \nEste documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, é importante notar que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes da utilização desta tradução.\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Aviso Legal**:\nEste documento foi traduzido utilizando o serviço de tradução automática [Co-op Translator](https://github.com/Azure/co-op-translator). Embora empenhemos esforços para garantir a precisão, tenha em atenção que traduções automáticas podem conter erros ou imprecisões. O documento original no seu idioma nativo deve ser considerado a fonte oficial e autorizada. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
"\n---\n\n**Aviso**:\nEste documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, é importante ter em conta que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se uma tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes da utilização desta tradução.\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Aviso Legal**:\nEste documento foi traduzido utilizando o serviço de tradução automática [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, por favor tenha em conta que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional realizada por um ser humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes da utilização desta tradução.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
> Este repositório inclui mais de 50 traduções em várias línguas, o que aumenta significativamente o tamanho do download. Para clonar sem as traduções, use checkout esparso:
> **Prefere clonar localmente?**
>
> Este repositório inclui mais de 50 traduções de idiomas, o que aumenta significativamente o tamanho do download. Para clonar sem traduções, utilize o checkout esparso:
Temos uma série de aprendizagem sobre IA em curso no Discord, saiba mais e junte-se a nós em [Série Aprender com IA](https://aka.ms/learnwithai/discord) de 18 a 30 de setembro de 2025. Receberá dicas e truques de utilização do GitHub Copilot para Ciência de Dados.
Temos uma série contínua no Discord para aprender com IA, saiba mais e junte-se a nós em [Learn with AI Series](https://aka.ms/learnwithai/discord) de 18 a 30 de setembro de 2025. Receberá dicas e truques para usar o GitHub Copilot para Ciência de Dados.


# Aprendizagem Automática para Iniciantes - Um Currículo
> 🌍 Viaje pelo mundo enquanto exploramos Aprendizagem Automática por meio das culturas do mundo 🌍
> 🌍 Viaje pelo mundo enquanto exploramos a Aprendizagem Automática através das culturas mundiais 🌍
Os Cloud Advocates da Microsoft têm o prazer de oferecer um currículo de 12 semanas, 26 lições, todo sobre **Aprendizagem Automática**. Neste currículo, aprenderá acerca do que às vezes é chamado de **aprendizagem automática clássica**, usando principalmente o Scikit-learn como biblioteca e evitando aprendizagem profunda, que é abordada no nosso [currículo de IA para Iniciantes](https://aka.ms/ai4beginners). Combine estas lições com o nosso ['Currículo de Ciência de Dados para Iniciantes'](https://aka.ms/ds4beginners)!
Os Cloud Advocates da Microsoft têm o prazer de oferecer um currículo de 12 semanas, com 26 lições, inteiramente sobre **Aprendizagem Automática**. Neste currículo, aprenderá sobre aquilo que é por vezes chamado de **aprendizagem automática clássica**, usando principalmente a biblioteca Scikit-learn e evitando aprendizagem profunda, que é abordada no nosso [currículo AI for Beginners](https://aka.ms/ai4beginners). Combine estas lições com o nosso [currículo Ciência de Dados para Iniciantes](https://aka.ms/ds4beginners), também!
Viaje connosco pelo mundo enquanto aplicamos estas técnicas clássicas a dados de muitas regiões do planeta. Cada lição inclui quizzes pré e pós-lição, instruções escritas para completar a lição, uma solução, um desafio e mais. A nossa pedagogia baseada em projetos permite aprender enquanto constrói, uma forma comprovada de fixação de novas competências.
Viaje connosco pelo mundo enquanto aplicamos estas técnicas clássicas a dados de várias regiões. Cada lição inclui quizzes pré e pós-lição, instruções escritas para completar a lição, uma solução, um desafio, e mais. A nossa pedagogia baseada em projetos permite aprender fazendo, uma forma comprovada para fixar novas competências.
**✍️ Um sincero agradecimento aos nossos autores** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu e Amy Boyd
**✍️ Sinceros agradecimentos aos nossos autores** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu e Amy Boyd
**🎨 Obrigado também aos nossos ilustradores** Tomomi Imura, Dasani Madipalli e Jen Looper
**🎨 Agradecimentos também aos nossos ilustradores** Tomomi Imura, Dasani Madipalli, e Jen Looper
**🙏 Agradecimentos especiais 🙏 aos nossos autores, revisores e colaboradores de conteúdo Microsoft Student Ambassadors**, nomeadamente Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila e Snigdha Agarwal
**🙏 Agradecimentos especiais 🙏 aos nossos autores, revisores e colaboradores da Microsoft Student Ambassador**, nomeadamente Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, e Snigdha Agarwal
**🤩 Agradecimento extra aos Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi e Vidushi Gupta pelas nossas lições em R!**
**🤩 Agradecimento extra aos Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, e Vidushi Gupta pelas nossas lições de R!**
# Começar
@ -58,34 +68,34 @@ Siga estes passos:
> [encontre todos os recursos adicionais para este curso na nossa coleção Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> 🔧 **Precisa de ajuda?** Consulte o nosso [Guia de Resolução de Problemas](TROUBLESHOOTING.md) para soluções a problemas comuns na instalação, configuração e execução das lições.
> 🔧 **Precisa de ajuda?** Consulte o nosso [Guia de Resolução de Problemas](TROUBLESHOOTING.md) para soluções comuns sobre instalação, configuração e execução das lições.
**[Estudantes](https://aka.ms/student-page)**, para usar este currículo, faça fork de todo o repositório para a sua conta GitHub e realize os exercícios sozinho ou em grupo:
**[Estudantes](https://aka.ms/student-page)**, para usar este currículo, faça fork do repositório completo para a sua conta GitHub e complete os exercícios sozinho ou em grupo:
- Comece com um quiz pré-aula.
- Leia a aula e realize as atividades, pausando e refletindo em cada verificação de conhecimento.
- Tente criar os projetos compreendendo as lições em vez de copiar o código da solução; contudo, esse código está disponível nas pastas `/solution` em cada lição orientada a projetos.
- Realize o quiz pós-aula.
- Leia a aula e complete as atividades, pausando e refletindo em cada verificação de conhecimento.
- Tente criar os projetos compreendendo as lições em vez de simplesmente executar o código da solução; contudo, esse código está disponível nas pastas `/solution` em cada lição orientada a projetos.
- Faça o quiz pós-aula.
- Complete o desafio.
- Realize a tarefa.
- Após completar um grupo de lições, visite o [Fórum de Discussão](https://github.com/microsoft/ML-For-Beginners/discussions) e "aprenda em voz alta" preenchendo a rubric PAT apropriada. Um 'PAT' é uma Ferramenta de Avaliação de Progresso que consiste numa rúbrica que preenche para aprofundar a aprendizagem. Também pode reagir a outras PATs para aprendermos juntos.
- Conclua a tarefa.
- Após completar um grupo de lições, visite o [Fórum de Discussão](https://github.com/microsoft/ML-For-Beginners/discussions) e "aprenda em voz alta" preenchendo a rubrica PAT apropriada. Um 'PAT' é uma Ferramenta de Avaliação de Progresso que preenche para aprofundar o seu aprendizado. Também pode reagir a outros PATs para aprendermos juntos.
> Para estudo adicional, recomendamos seguir estes módulos e percursos de aprendizagem [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott).
> Para estudo adicional, recomendamos seguir estes módulos e trajetórias de aprendizagem do [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott).
**Professores**, incluímos [algumas sugestões](for-teachers.md) sobre como usar este currículo.
---
## Videoaulas
## Vídeos de acompanhamento
Algumas lições estão disponíveis em vídeo curto. Pode encontrar todos eles integrados nas lições, ou na [playlist ML para Iniciantes no canal Microsoft Developer do YouTube](https://aka.ms/ml-beginners-videos) clicando na imagem abaixo.
Algumas das lições estão disponíveis em formato vídeo curto. Pode encontrá-los embutidos nas lições, ou na [playlist ML for Beginners no canal Microsoft Developer do YouTube](https://aka.ms/ml-beginners-videos) clicando na imagem abaixo.
[](https://aka.ms/ml-beginners-videos)
[](https://aka.ms/ml-beginners-videos)
@ -97,72 +107,73 @@ Algumas lições estão disponíveis em vídeo curto. Pode encontrar todos eles
## Pedagogia
Escolhemos dois princípios pedagógicos na construção deste currículo: garantir que é prático e**baseado em projetos** e que inclui **quizzes frequentes**. Além disso, este currículo tem um **tema comum** para lhe dar coesão.
Escolhemos dois princípios pedagógicos ao construir este currículo: garantir que é prático**baseado em projetos** e que inclui **quizzes frequentes**. Além disso, este currículo tem um **tema** comum para lhe dar coesão.
Ao garantir que o conteúdo está alinhado com projetos, o processo torna-se mais envolvente para os estudantes e a retenção dos conceitos será ampliada. Além disso, um quiz de baixo risco antes da aula define a intenção do estudante para aprender um tópico, enquanto um segundo quiz após a aula assegura retenção adicional. Este currículo foi desenhado para ser flexível e divertido, podendo ser feito na totalidade ou parcialmente. Os projetos começam pequenos e tornam-se progressivamente complexos até ao final do ciclo de 12 semanas. Este currículo inclui também um posfácio sobre aplicações reais de ML, que pode ser usado como crédito extra ou como base para discussão.
Ao garantir que o conteúdo está alinhado com projetos, o processo torna-se mais envolvente para os alunos e a retenção de conceitos será aumentada. Além disso, um quiz de baixo risco antes da aula define a intenção do aluno para aprender um tema, enquanto um segundo quiz após a aula assegura maior retenção. Este currículo foi projetado para ser flexível e divertido, podendo ser feito integralmente ou apenas parcialmente. Os projetos começam pequenos e tornam-se progressivamente mais complexos até ao final do ciclo de 12 semanas. Este currículo também inclui um posfácio sobre aplicações reais de Aprendizagem Automática, que pode ser usado como crédito extra ou base para discussões.
> Consulte as nossas orientações para [Código de Conduta](CODE_OF_CONDUCT.md), [Contribuições](CONTRIBUTING.md), [Traduções](TRANSLATIONS.md) e [Resolução de Problemas](TROUBLESHOOTING.md). Agradecemos o seu feedback construtivo!
> Consulte as nossas diretrizes [Código de Conduta](CODE_OF_CONDUCT.md), [Contribuição](CONTRIBUTING.md), [Tradução](TRANSLATIONS.md), e [Resolução de Problemas](TROUBLESHOOTING.md). Agradecemos o seu feedback construtivo!
## Cada lição inclui
- sketchnote opcional
- vídeo suplementar opcional
- videoaula (apenas algumas lições)
- [quiz de aquecimento pré-lecture](https://ff-quizzes.netlify.app/en/ml/)
- vídeo de acompanhamento (apenas algumas lições)
- [quiz de aquecimento pré-aula](https://ff-quizzes.netlify.app/en/ml/)
- lição escrita
- para lições baseadas em projeto, guias passo-a-passo para construir o projeto
- para lições baseadas em projeto, guias passo a passo sobre como construir o projeto
> **Uma nota sobre as línguas**: Estas lições são principalmente escritas em Python, mas muitas também estão disponíveis em R. Para completar uma lição em R, vá à pasta `/solution` e procure pelas lições em R. Elas incluem uma extensão .rmd que representa um ficheiro **R Markdown**, que pode ser simplesmente definido como uma incorporação de `blocos de código` (em R ou outras linguagens) e um `cabeçalho YAML` (que orienta como formatar as saídas como PDF) num `documento Markdown`. Como tal, serve como um exemplar de ambiente de autor para ciência de dados, pois permite combinar o código, a sua saída e os seus pensamentos escrevendo-os em Markdown. Além disso, documentos R Markdown podem ser convertidos para formatos de saída como PDF, HTML ou Word.
> **Uma nota sobre quizzes**: Todos os quizzes estão contidos na [pasta Quiz App](../../quiz-app), totalizando 52 quizzes de três perguntas cada. Eles estão ligados dentro das lições, mas a aplicação de quiz pode ser executada localmente; siga as instruções na pasta `quiz-app` para hospedar localmente ou implementar no Azure.
| Número da Lição | Tópico | Agrupamento da Lição | Objetivos de Aprendizagem | Lição Ligada | Autor |
| 01 | Introdução ao machine learning | [Introdução](1-Introduction/README.md) | Aprender os conceitos básicos por trás do machine learning | [Lição](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | A História do machine learning | [Introdução](1-Introduction/README.md) | Aprender a história por trás desta área | [Lição](1-Introduction/2-history-of-ML/README.md) | Jen e Amy |
| 03 | Justiça e machine learning | [Introdução](1-Introduction/README.md) | Quais são as questões filosóficas importantes sobre justiça que os alunos devem considerar ao construir e aplicar modelos ML? | [Lição](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | Técnicas para machine learning | [Introdução](1-Introduction/README.md) | Quais técnicas os investigadores de ML utilizam para construir modelos ML? | [Lição](1-Introduction/4-techniques-of-ML/README.md) | Chris e Jen |
| 05 | Introdução à regressão | [Regressão](2-Regression/README.md) | Começar com Python e Scikit-learn para modelos de regressão | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | Preços de abóbora na América do Norte 🎃 | [Regressão](2-Regression/README.md) | Visualizar e limpar dados em preparação para ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | Preços de abóbora na América do Norte 🎃 | [Regressão](2-Regression/README.md) | Construir modelos de regressão linear e polinomial | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen e Dmitry • Eric Wanjau |
| 08 | Preços de abóbora na América do Norte 🎃 | [Regressão](2-Regression/README.md) | Construir um modelo de regressão logística | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | Uma App Web 🔌 | [App Web](3-Web-App/README.md) | Construir uma app web para usar o seu modelo treinado | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | Introdução à classificação | [Classificação](4-Classification/README.md) | Limpar, preparar e visualizar os seus dados; introdução à classificação | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen e Cassie • Eric Wanjau |
| 11 | Deliciosas cozinhas asiáticas e indianas 🍜 | [Classificação](4-Classification/README.md) | Introdução aos classificadores | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen e Cassie • Eric Wanjau |
| 12 | Deliciosas cozinhas asiáticas e indianas 🍜 | [Classificação](4-Classification/README.md) | Mais classificadores | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen e Cassie • Eric Wanjau |
| 13 | Deliciosas cozinhas asiáticas e indianas 🍜 | [Classificação](4-Classification/README.md) | Construir uma app web recomendadora usando o seu modelo | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | Introdução ao clustering | [Clustering](5-Clustering/README.md) | Limpar, preparar e visualizar os seus dados; Introdução ao clustering | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 15 | Explorando gostos musicais da Nigéria 🎧 | [Clustering](5-Clustering/README.md) | Explorar o método de clustering K-Means | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau |
| 16 | Introdução ao processamento de linguagem natural ☕️ | [Processamento de linguagem natural](6-NLP/README.md) | Aprender o básico sobre NLP construindo um bot simples | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | Tarefas comuns de NLP ☕️ | [Processamento de linguagem natural](6-NLP/README.md) | Aprofundar o seu conhecimento de NLP compreendendo tarefas comuns necessárias quando se trata de estruturas linguísticas | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | Tradução e análise de sentimento ♥️ | [Processamento de linguagem natural](6-NLP/README.md) | Tradução e análise de sentimento com Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | Hotéis românticos da Europa ♥️ | [Processamento de linguagem natural](6-NLP/README.md) | Análise de sentimento com avaliações de hotéis 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | Hotéis românticos da Europa ♥️ | [Processamento de linguagem natural](6-NLP/README.md) | Análise de sentimento com avaliações de hotéis 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | Introdução à previsão de séries temporais | [Séries temporais](7-TimeSeries/README.md) | Introdução à previsão de séries temporais | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 22 | ⚡️ Consumo de energia mundial ⚡️ - previsão com ARIMA | [Séries temporais](7-TimeSeries/README.md) | Previsão de séries temporais com ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ Consumo de energia mundial ⚡️ - previsão com SVR | [Séries temporais](7-TimeSeries/README.md) | Previsão de séries temporais com Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | Introdução ao reinforcement learning | [Aprendizagem por reforço](8-Reinforcement/README.md) | Introdução ao reinforcement learning com Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | Ajude o Peter a evitar o lobo! 🐺 | [Aprendizagem por reforço](8-Reinforcement/README.md) | Aprendizagem por reforço Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| Posfácio | Cenários e aplicações reais de ML | [ML na prática](9-Real-World/README.md) | Aplicações reais interessantes e reveladoras do ML clássico | [Lição](9-Real-World/1-Applications/README.md) | Equipa |
| Posfácio | Depuração de modelos em ML usando painel RAI | [ML na prática](9-Real-World/README.md) | Depuração de modelos em Machine Learning usando componentes do painel Responsible AI | [Lição](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> **Uma nota sobre idiomas**: Estas lições são escritas principalmente em Python, mas muitas também estão disponíveis em R. Para completar uma lição em R, vá à pasta `/solution` e procure lições em R. Elas incluem uma extensão .rmd que representa um ficheiro **R Markdown** que pode ser simplesmente definido como uma incorporação de `blocos de código` (de R ou outras linguagens) e um `cabeçalho YAML` (que orienta como formatar as saídas como PDF) num `documento Markdown`. Como tal, serve como um excelente framework de autoria para ciência de dados, pois permite combinar o seu código, a sua saída e os seus pensamentos, permitindo escrevê-los em Markdown. Além disso, documentos R Markdown podem ser renderizados para formatos de saída como PDF, HTML ou Word.
> **Uma nota sobre quizzes**: Todos os quizzes estão contidos na [pasta Quiz App](../../quiz-app), com um total de 52 quizzes de três perguntas cada. Eles estão ligados a partir das lições, mas a aplicação de quiz pode ser executada localmente; siga as instruções na pasta `quiz-app` para hospedar localmente ou fazer deploy para Azure.
| Número da Lição | Tema | Agrupamento de Lições | Objetivos de Aprendizagem | Lição Ligada | Autor |
| 01 | Introdução ao machine learning | [Introdução](1-Introduction/README.md) | Aprender os conceitos básicos por detrás do machine learning | [Lição](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | A História do machine learning | [Introdução](1-Introduction/README.md) | Conhecer a história que sustenta esta área | [Lição](1-Introduction/2-history-of-ML/README.md) | Jen e Amy |
| 03 | Justiça e machine learning | [Introdução](1-Introduction/README.md) | Quais são as questões filosóficas importantes sobre a justiça que os estudantes devem considerar ao construir e aplicar modelos ML? | [Lição](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | Técnicas para machine learning | [Introdução](1-Introduction/README.md) | Que técnicas os investigadores de ML usam para construir modelos de ML? | [Lição](1-Introduction/4-techniques-of-ML/README.md) | Chris e Jen |
| 05 | Introdução à regressão | [Regressão](2-Regression/README.md) | Começar com Python e Scikit-learn para modelos de regressão | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | Preços de abóboras norte-americanas 🎃 | [Regressão](2-Regression/README.md) | Visualizar e limpar dados em preparação para ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | Preços de abóboras norte-americanas 🎃 | [Regressão](2-Regression/README.md) | Construir modelos de regressão linear e polinomial | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen e Dmitry • Eric Wanjau |
| 08 | Preços de abóboras norte-americanas 🎃 | [Regressão](2-Regression/README.md) | Construir um modelo de regressão logística | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | Uma App Web 🔌 | [App Web](3-Web-App/README.md) | Construir uma app web para usar o seu modelo treinado | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | Introdução à classificação | [Classificação](4-Classification/README.md) | Limpar, preparar, e visualizar os seus dados; introdução à classificação | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen e Cassie • Eric Wanjau |
| 11 | Culinárias asiáticas e indianas deliciosas 🍜 | [Classificação](4-Classification/README.md) | Introdução a classificadores | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen e Cassie • Eric Wanjau |
| 12 | Culinárias asiáticas e indianas deliciosas 🍜 | [Classificação](4-Classification/README.md) | Mais classificadores | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen e Cassie • Eric Wanjau |
| 13 | Culinárias asiáticas e indianas deliciosas 🍜 | [Classificação](4-Classification/README.md) | Construir uma app web recomendadora usando o seu modelo | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | Introdução a clustering | [Clustering](5-Clustering/README.md) | Limpar, preparar e visualizar os seus dados; Introdução ao clustering | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 15 | Explorando gostos musicais nigerianos 🎧 | [Clustering](5-Clustering/README.md) | Explorar o método de clustering K-Means | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau |
| 16 | Introdução ao processamento de linguagem natural ☕️ | [Processamento de Linguagem Natural](6-NLP/README.md) | Aprender o básico sobre NLP construindo um bot simples | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | Tarefas comuns de NLP ☕️ | [Processamento de Linguagem Natural](6-NLP/README.md) | Aprofundar o seu conhecimento em NLP compreendendo tarefas comuns ao lidar com estruturas de linguagem | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | Tradução e análise de sentimento ♥️ | [Processamento de Linguagem Natural](6-NLP/README.md) | Tradução e análise de sentimento com Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | Hotéis românticos da Europa ♥️ | [Processamento de Linguagem Natural](6-NLP/README.md) | Análise de sentimento com críticas a hotéis 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | Hotéis românticos da Europa ♥️ | [Processamento de Linguagem Natural](6-NLP/README.md) | Análise de sentimento com críticas a hotéis 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | Introdução à previsão de séries temporais | [Séries Temporais](7-TimeSeries/README.md) | Introdução à previsão de séries temporais | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 22 | ⚡️ Consumo Mundial de Energia ⚡️ - previsão de séries temporais com ARIMA | [Séries Temporais](7-TimeSeries/README.md) | Previsão de séries temporais com ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ Consumo Mundial de Energia ⚡️ - previsão com SVR | [Séries Temporais](7-TimeSeries/README.md) | Previsão de séries temporais com Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | Introdução ao reinforcement learning | [Aprendizagem por Reforço](8-Reinforcement/README.md) | Introdução ao reinforcement learning com Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | Ajude o Peter a evitar o lobo! 🐺 | [Aprendizagem por Reforço](8-Reinforcement/README.md) | Reinforcement learning Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| Posfácio | Cenários e aplicações reais de ML | [ML na Vida Real](9-Real-World/README.md) | Aplicações reais interessantes e reveladoras do ML clássico | [Lição](9-Real-World/1-Applications/README.md) | Equipa |
| Posfácio | Depuração de modelos em ML usando dashboard RAI | [ML na Vida Real](9-Real-World/README.md) | Depuração de modelos em Machine Learning usando componentes do dashboard Responsible AI | [Lição](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [encontre todos os recursos adicionais para este curso na nossa coleção Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
## Acesso offline
Pode executar esta documentação offline usando o [Docsify](https://docsify.js.org/#/). Faça um fork deste repositório, [instale o Docsify](https://docsify.js.org/#/quickstart) na sua máquina local, e depois, na pasta raiz deste repositório, digite `docsify serve`. O site será servido na porta 3000 no seu localhost: `localhost:3000`.
Pode executar esta documentação offline usando o [Docsify](https://docsify.js.org/#/). Faça um fork deste repositório, [instale o Docsify](https://docsify.js.org/#/quickstart) na sua máquina local e depois, na pasta raiz deste repositório, digite `docsify serve`. O site será servido na porta 3000 no seu localhost: `localhost:3000`.
## PDFs
Encontre um pdf do currículo com links [aqui](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf).
## 🎒 Outros Cursos
A nossa equipa produz outros cursos! Confira:
A nossa equipa produz outros cursos! Veja:
<!-- CO-OP TRANSLATOR OTHER COURSES START -->
### LangChain
@ -187,7 +198,7 @@ A nossa equipa produz outros cursos! Confira:
---
### Aprendizagem Principal
### Aprendizagem Fundamental
[](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
@ -206,17 +217,23 @@ A nossa equipa produz outros cursos! Confira:
## Obter Ajuda
Se ficar bloqueado ou tiver alguma pergunta sobre como construir aplicações de IA. Junte-se a outros aprendizes e programadores experientes em discussões sobre MCP. É uma comunidade de apoio onde as perguntas são bem-vindas e o conhecimento é partilhado livremente.
Se ficar bloqueado ou tiver alguma questão sobre como construir aplicações de IA. Junte-se a outros aprendizes e programadores experientes nas discussões sobre MCP. É uma comunidade de apoio onde as perguntas são bem-vindas e o conhecimento é partilhado livremente.
[](https://aka.ms/foundry/forum)
- Reveja os notebooks após cada lição para melhor compreensão.
- Pratique a implementação de algoritmos por conta própria.
- Explore conjuntos de dados reais usando os conceitos aprendidos.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução automática [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, tenha em conta que as traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte oficial. Para informações críticas, recomenda-se tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações erradas decorrentes da utilização desta tradução.
Este documento foi traduzido utilizando o serviço de tradução automática [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos por garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações erradas decorrentes do uso desta tradução.