[](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
ਕਰੀਕੁਲਮ ਦਾ ਇੱਕ PDF ਲਿੰਕ ਦੇ ਨਾਲ [ਇੱਥੇ](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) ਲੱਭੋ।
ਕਰੀਕੁਲਮ ਦਾ pdf ਲਿੰਕਾਂ ਸਮੇਤ [ਇੱਥੇ](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) ਲੱਭੋ।
## 🎒 ਹੋਰ ਕੋਰਸਜ਼
## 🎒 ਹੋਰ ਕੋਰਸ
ਸਾਡੀ ਟੀਮ ਹੋਰ ਕੋਰਸਜ਼ ਬਣਾਉਂਦੀ ਹੈ! ਦੇਖੋ:
ਸਾਡੀ ਟੀਮ ਹੋਰ ਕੋਰਸ ਵੀ ਤਿਆਰ ਕਰਦੀ ਹੈ! ਵੇਖੋ:
<!-- CO-OP TRANSLATOR OTHER COURSES START -->
### LangChain
@ -185,54 +184,65 @@
### Azure / Edge / MCP / Agents
[](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)
[](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### ਜਨਰੇਟਿਵ AI ਸੀਰੀਜ਼
[](https://github.com/microsoft/generative-ai-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)
[-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)
---
### ਮੁੱਖ ਸਿੱਖਿਆ
[](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)
[](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/xr-development-for-beginners?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)
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
# Construir um modelo de regressão usando Scikit-learn: regressão de quatro maneiras
# 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 da casa, temperatura ou vendas).
Ela funciona encontrando uma linha reta que melhor representa a relação entre as características de entrada e a saída.
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 variáveis de entrada e a saída.
Nesta lição, focamos em entender o conceito antes de explorar técnicas mais avançadas de regressão.

> 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
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.
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 durante esta lição. Você também os visualizou usando Matplotlib.
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.
Agora você está pronto para se 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 em dados históricos para capturar automaticamente dependências dos dados, permitindo prever resultados para novos dados, que o modelo ainda não viu.
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.
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 subjacente a essas técnicas. Esses modelos permitirão prever preços de abóboras dependendo de diferentes dados de entrada.
[](https://youtu.be/CRxFT8oTDMg "ML para iniciantes - Entendendo Regressão Linear")
[](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression")
> 🎥 Clique na imagem acima para um breve vídeo com visão geral da regressão linear.
> 🎥 Clique na imagem acima para uma breve visão geral em vídeo 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, então fique atento às notas, 🧮 chamadas, diagramas e outras ferramentas de aprendizagem 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, portanto fique atento a notas, 🧮 chamadas, diagramas e outras ferramentas de aprendizado para ajudar na compreensão.
### Pré-requisitos
### Pré-requisito
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.
Você já deve estar familiarizado com a estrutura dos dados de abóboras que estamos analisando. Eles estão 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 dataframe. Certifique-se de que consegue executar esses notebooks em kernels no Visual Studio Code.
### Preparação
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 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.
- Quando é a melhor época para comprar abóboras?
- Qual preço posso esperar para uma caixa de abóboras miniatura?
- Devo comprá-las em cestas de meio alqueire ou por caixa de 1 1/9 alqueire?
Vamos continuar investigando esses dados.
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.
Na lição anterior, você criou um dataframe Pandas e o preencheu com parte do conjunto de dados original, padronizando os preços por alqueire. Fazendo isso, porém, você conseguiu apenas cerca de 400 pontos de dados e somente dos meses de outono.
Dê uma olhada nos dados que pré-carregamos no notebook acompanhado desta 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.
Veja os 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 foi criado para mostrar os dados por mês. Talvez possamos obter mais detalhes sobre a natureza dos dados limpando-os melhor.
## Uma linha de regressão linear
Como você aprendeu na Lição 1, o objetivo de um exercício de regressão linear é poder traçar uma linha para:
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:
- **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.
- **Mostrar relações entre variáveis**. Mostrar a relação entre variáveis
- **Fazer previsões**. Fazer previsões precisas de onde um novo ponto de dados cairia em relação a essa linha.
É 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.
É 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 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:
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.
1. **Magnitude sobre Direção:** Queremos tratar o erro de -5 da mesma forma que o erro de +5. Elevar ao quadrado torna todos os valores positivos.
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.
2. **Penalizar Outliers:** Elevar ao quadrado dá mais peso a erros maiores, fazendo a linha ficar mais próxima dos pontos que estão distantes.
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".
Depois somamos todos esses valores ao quadrado. Nosso objetivo é encontrar a linha específica onde essa soma final seja a menor possível—daí o nome "Mínimos Quadrados".
> **🧮 Mostre a matemática**
>
> Essa linha, chamada _linha de melhor ajuste_, pode ser expressa por [uma equação](https://en.wikipedia.org/wiki/Simple_linear_regression):
>
> **🧮 Mostre a matemática**
>
> 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` é 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 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 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). 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.
>
> `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`.
>
>
>
> Primeiro, calcule a inclinação `b`. Infográfico por [Jen Looper](https://twitter.com/jenlooper)
>
> Em outras palavras, e referindo-se à nossa questão 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`seria o mês da venda.
>
>
>
> Calcule o valor de Y. Se você está pagando em torno 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`.
>
> Você pode observar o método de cálculo destes 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.
## 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.
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 visualizar rapidamente esse coeficiente. Um gráfico com pontos de dados alinhados em uma linha nítida tem alta correlação, mas um gráfico com pontos dispersos entre X e Y tem baixa correlaçã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.
Um bom modelo de regressão linear terá um Coeficiente de Correlação alto (próximo de 1 e não 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 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)?
✅ Execute o notebook que acompanha esta lição e olhe o gráfico de dispersão de Mês para Preço. Os dados associando Mês ao Preço nas vendas de abóbora parecem ter alta ou baixa correlação, de acordo com sua interpretação visual do gráfico? Isso muda se você usar uma medida mais detalhada em vez de `Month`, por exemplo, *dia do ano* (ou seja, número de dias desde o começo do ano)?
No código abaixo, assumiremos que limpamos os dados e obtivemos um dataframe chamado `new_pumpkins`, semelhante ao seguinte:
@ -101,27 +100,27 @@ ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Pri
> 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:
> O código para limpar os dados está disponível em [`notebook.ipynb`](notebook.ipynb). Realizamos as mesmas etapas de limpeza da lição anterior e calculamos a coluna `DayOfYear` usando a expressão a seguir:
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.
Agora que você entendeu a matemática por trás da regressão linear, vamos criar um modelo de regressão para ver se podemos prever qual embalagem de abóboras terá os melhores preços. Alguém comprando abóboras para um patch de abóboras de feriado pode querer essa informação para otimizar suas compras dos pacotes.
## Procurando Correlação
## Procurando correlação
[](https://youtu.be/uoRq-lW2eQo "ML para iniciantes - Procurando 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 com visão geral de correlação.
> 🎥 Clique na imagem acima para uma breve visão geral em vídeo sobre correlação.
Na lição anterior, você provavelmente viu que o preço médio para diferentes meses se parece com isto:
Da lição anterior, você provavelmente viu que o preço médio para diferentes meses parece assim:
<imgalt="Preço médio por mês"src="../../../../translated_images/pt-BR/barchart.a833ea9194346d76.webp"width="50%"/>
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:
Isso sugere que deve 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 a ú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%"/>
<imgalt="Gráfico de dispersão de preço vs dia do ano" src="../../../../translated_images/pt-BR/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
Vamos ver se há correlação usando a função `corr`:
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:
Parece que a correlação é pequena, -0,15 pelo `Month` e -0,17 pelo `DayOfMonth`, mas pode haver outra relação importante. Parece que existem diferentes clusters de preços correspondentes a diferentes variedades de abóboras. 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 `scatter`, podemos plotar todos os pontos no mesmo gráfico:
```python
ax=None
@ -140,40 +139,41 @@ 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%"/>
<imgalt="Gráfico de dispersão de preço vs dia do ano colorido" 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 própria 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 que a data real 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%"/>
<imgalt="Gráfico de dispersão de preço vs dia do ano para abóboras tipo torta"src="../../../../translated_images/pt-BR/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
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.
Se agora calcularmos a correlação entre `Price` e `DayOfYear` 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 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. Regressão linear não funciona bem com valores faltantes, 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 a média da respectiva coluna.
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")
> 🎥 Clique na imagem acima para um breve vídeo com visão geral de regressão linear e polinomial.
> 🎥 Clique na imagem acima para uma breve visão geral em vídeo da regressão linear e polinomial.
Para treinar nosso modelo de Regressão Linear, usaremos a biblioteca **Scikit-learn**.
@ -183,48 +183,48 @@ 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 (rótulo) em arrays numpy separados:
Começamos separando os valores de entrada (recursos) 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']
```
> 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.
> Note que tivemos que realizar o `reshape` nos dados de entrada para que o pacote de Regressão Linear os entenda corretamente. Regressão Linear espera uma matriz 2D como entrada, onde cada linha da matriz corresponde a um vetor de recursos de entrada. No nosso caso, já que temos apenas uma entrada, precisamos de uma matriz com formato N×1, onde N é o tamanho do conjunto de dados.
Em seguida, precisamos dividir os dados em conjuntos de treino e teste, para que possamos validar nosso modelo após o treinamento:
Depois, 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, 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`:
Finalmente, o treinamento do modelo de Regressão Linear real leva apenas duas linhas de código. Definimos o objeto `LinearRegression`, e ajustamos ele 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 `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.
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 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_` - será cerca de `21` no nosso caso, indicando o preço no início do ano.
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.
Para ver quão preciso nosso modelo é, podemos prever preços em um conjunto de dados de teste e então medir quão próximas estão nossas previsões dos valores esperados. Isso pode ser feito usando a métrica de erro quadrático médio da raiz (RMSE), que é a raiz da média de todas as diferenças ao quadrado entre o valor esperado e o previsto.
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:
Nosso erro parece estar em torno de 2 pontos, o que é ~17%. Não muito bom. Outro indicador de 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 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.
Se o valor for 0, isto significa que o modelo não leva em conta os dados de entrada, e atua como o *pior preditor linear*, que é simplesmente um 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 da regressão para ver melhor como a regressão funciona no nosso caso:
Também podemos plotar os dados de teste junto com a linha de regressão para ver melhor como a regressão funciona no nosso caso:
```python
plt.scatter(X_test,y_test)
@ -235,17 +235,17 @@ plt.plot(X_test,pred)
## Regressão Polinomial
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.
Outro tipo de Regressão Linear é a Regressão Polinomial. Embora às vezes haja 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 plotadas como um plano ou linha reta.
✅ Aqui estão [mais alguns exemplos](https://online.stat.psu.edu/stat501/lesson/9/9.8) de dados que poderiam usar 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.
Observe novamente a relação entre Data e Preço. Este gráfico de dispersão parece que deveria necessariamente ser analisado por uma linha reta? Os preços não podem flutuar? Nesse caso, você pode tentar a regressão polinomial.
✅ 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 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.
A regressão polinomial cria uma linha curva para ajustar melhor dados não lineares. No nosso caso, se incluirmos a variável ao quadrado`DayOfYear` nos dados de entrada, deveremos ser capazes de ajustar nossos dados com uma curva parabólica, que terá um mínimo em um certo ponto ao longo do ano.
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:
O Scikit-learn inclui uma útil [API de 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, criaremos um pipeline que primeiro adiciona características polinomiais ao nosso modelo, e então 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 mais elevado se quisermos.
Usar `PolynomialFeatures(2)` significa que vamos 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 duas variáveis de entrada X e Y, isso adicionará X<sup>2</sup>, XY e Y<sup>2</sup>. Podemos também usar polinômios de grau maior, se quisermos.
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:
Pipelines podem ser usados da mesma forma que o objeto original `LinearRegression`, ou seja, podemos `fit`ar o pipeline, e então usar `predict` para obter os resultados da prediçã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 coeficiente de determinação maior, mas não significativamente. Precisamos levar em conta outras características!
Usando Regressão Polinomial, podemos obter erros quadráticos médios ligeiramente menores e coeficientes de determinação maiores, 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 mais ou menos perto do Halloween. Como você pode explicar isso?
> Você pode ver que os preços mínimos das abóboras são observados em algum momento próximo ao 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. 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!
🎃 Parabéns, você acaba de criar um modelo que pode ajudar a prever o preço de abóboras para torta. Você provavelmente pode repetir o mesmo procedimento para todos os tipos de abóbora, mas isso seria trabalhoso. Vamos aprender agora como levar em conta a variedade de abóbora em 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. 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**.
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`, pois contém valores não numéricos. Essas colunas são chamadas de **categóricas**.
[](https://youtu.be/DYGliioIAE0 "ML para iniciantes - Predições com regressão linear para características categóricas")
[](https://youtu.be/DYGliioIAE0 "ML para iniciantes - Predições de Características Categóricas com Regressão Linear")
> 🎥 Clique na imagem acima para um vídeo curto sobre o uso de características categóricas.
> 🎥 Clique na imagem acima para um breve vídeo sobre o uso de características categóricas.
Aqui você pode ver como o preço médio depende da variedade:
<imgalt="Average price by variety"src="../../../../translated_images/pt-BR/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
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:
Para levar a variedade em conta, primeiro precisamos convertê-la para forma numérica, ou **codificá-la**. Há várias formas para isso:
* 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.
* A simples **codificação numérica** constrói uma tabela das diferentes variedades, e depois substitui o nome da variedade por um índice nessa tabela. Isso não é a melhor ideia para regressão linear, porque a regressão linear pega 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 asseguremos que os índices estejam ordenados de alguma maneira específica.
* O **one-hot encoding** 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.
O código abaixo mostra como podemos codificar one-hot uma variedade:
O código abaixo mostra como podemos fazer o one-hot encoding da variedade:
Para treinar a regressão linear usando a variedade codificada one-hot como entrada, só precisamos inicializar os dados `X` e `y` corretamente:
Para treinar a regressão linear usando a variedade codificada por one-hot encoding 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 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`:
O resto do código é o mesmo que usamos acima para treinar a Regressão Linear. Se você tentar, verá que o erro quadrático médio fica 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 conta, bem como características numéricas, como `Month` ou `DayOfYear`. Para obter uma grande matriz de características, podemos usar `join`:
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@ -319,14 +319,14 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
y = new_pumpkins['Price']
```
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!
Aqui também levamos em conta `City` e tipo de `Package`, o que nos dá MSE 2.84 (10%), e determinação 0.94!
## Juntando tudo
## Combinando tudo
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
# preparar dados de treinamento
# configurar dados de treinamento
X = pd.get_dummies(new_pumpkins['Variety']) \
.join(new_pumpkins['Month']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
@ -361,18 +361,18 @@ Isso deve nos dar o melhor coeficiente de determinação de quase 97%, e MSE=2.2
| 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 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
Teste várias variáveis diferentes neste notebook para ver como a correlação corresponde à precisão do modelo.
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)
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 de Stanford](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
## Tarefa
@ -382,5 +382,5 @@ Nesta lição aprendemos sobre Regressão Linear. Existem outros tipos important
<!-- 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 equívocos ou interpretações erradas 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 empenhemos pela 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 tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução.
Nesta lição, você usará o conjunto de dados que salvou na última lição, cheio de dados equilibrados e limpos sobre culinárias.
Nesta lição, você usará o conjunto de dados que salvou na lição anterior, cheio de dados balanceados e limpos, todos sobre culinárias.
Você usará este conjunto de dados com uma variedade de classificadores para _prever uma culinária nacional com base em um grupo de ingredientes_. Enquanto faz isso, aprenderá mais sobre algumas das maneiras pelas quais os algoritmos podem ser utilizados para tarefas de classificação.
Você usará esse conjunto de dados com uma variedade de classificadores para _prever uma determinada culinária nacional com base em um grupo de ingredientes_. Enquanto faz isso, aprenderá mais sobre algumas das maneiras pelas quais algoritmos podem ser aproveitados para tarefas de classificação.
Assumindo que você completou [Lição 1](../1-Introduction/README.md), certifique-se de que um arquivo _cleaned_cuisines.csv_ exista na pasta raiz `/data` para estas quatro lições.
Supondo que você tenha concluído a [Lição 1](../1-Introduction/README.md), certifique-se de que um arquivo _cleaned_cuisines.csv_ exista na pasta raiz `/data` para estas quatro lições.
@ -79,70 +79,70 @@ Agora você está pronto para treinar seu modelo!
## Escolhendo seu classificador
Agora que seus dados estão limpos e prontos para treinamento, você precisa decidir qual algoritmo usar para a tarefa.
Agora que seus dados estão limpos e prontos para treinamento, você precisa decidir qual algoritmo usar para o trabalho.
O Scikit-learn agrupa classificação sob Aprendizado Supervisionado, e nessa categoria você encontrará muitas maneiras de classificar. [A variedade](https://scikit-learn.org/stable/supervised_learning.html) pode parecer confusa à primeira vista. Os seguintes métodos incluem técnicas de classificação:
O Scikit-learn agrupa a classificação sob Aprendizado Supervisionado, e nessa categoria você encontrará muitas formas de classificar. [A variedade](https://scikit-learn.org/stable/supervised_learning.html) é bastante desconcertante à primeira vista. Os seguintes métodos incluem técnicas de classificação:
- Modelos Lineares
- Máquinas de Vetores de Suporte
- Descida de Gradiente Estocástico
- Vizinhos Mais Próximos
- Processos Gaussianos
- Árvores de Decisão
- Métodos de Conjunto (voting Classifier)
- Algoritmos multiclasses e multioutput (classificação multiclasses e multilabel, classificação multiclasses-multioutput)
- Modelos lineares
- Máquinas de vetor de suporte
- Gradiente descendente estocástico
- Vizinhos mais próximos
- Processos gaussianos
- Árvores de decisão
- Métodos em conjunto (classificador por votação)
- Algoritmos multiclasse e multioutput (classificação multiclasse e multilabel, classificação multiclasse-multioutput)
> Você também pode usar [redes neurais para classificar dados](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification), mas isso está fora do escopo desta lição.
### Qual classificador escolher?
Então, qual classificador você deve escolher? Muitas vezes, testar vários e procurar um bom resultado é uma maneira de avaliar. O Scikit-learn oferece uma [comparação lado a lado](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html) em um conjunto de dados criado, comparando KNeighbors, SVC de duas maneiras, GaussianProcessClassifier, DecisionTreeClassifier, RandomForestClassifier, MLPClassifier, AdaBoostClassifier, GaussianNB e QuadraticDiscrinationAnalysis, mostrando os resultados visualizados:
Então, qual classificador você deve escolher? Muitas vezes, passar por vários e buscar um bom resultado é uma forma de testar. O Scikit-learn oferece uma [comparação lado a lado](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html) em um conjunto de dados criado, comparando KNeighbors, SVC de duas formas, GaussianProcessClassifier, DecisionTreeClassifier, RandomForestClassifier, MLPClassifier, AdaBoostClassifier, GaussianNB e QuadraticDiscrinationAnalysis, mostrando os resultados visualizados:


> Gráficos gerados na documentação do Scikit-learn
> O AutoML resolve esse problema de forma prática ao executar essas comparações na nuvem, permitindo que você escolha o melhor algoritmo para seus dados. Experimente [aqui](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)
> O AutoML resolve esse problema perfeitamente executando essas comparações na nuvem, permitindo que você escolha o melhor algoritmo para seus dados. Experimente [aqui](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)
### Uma abordagem melhor
Uma maneira melhor do que adivinhar aleatoriamente, no entanto, é seguir as ideias deste [guia de referência de ML](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott) para download. Aqui, descobrimos que, para nosso problema multiclasses, temos algumas opções:
Uma forma melhor do que adivinhar às cegas, no entanto, é seguir as ideias nesta [folha de consulta de ML](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott) baixável. Aqui, descobrimos que, para nosso problema multiclasse, temos algumas escolhas:

> Uma seção do Guia de Algoritmos da Microsoft, detalhando opções de classificação multiclasses

> Uma seção da Folha de Consulta de Algoritmos da Microsoft, detalhando opções de classificação multiclasse
✅ Baixe este guia, imprima e pendure na sua parede!
✅ Baixe esta folha de consulta, imprima e pendure na sua parede!
### Raciocínio
Vamos ver se conseguimos raciocinar sobre diferentes abordagens, dadas as restrições que temos:
Vamos ver se podemos raciocinar por diferentes abordagens dadas as restrições que temos:
- **Redes neurais são muito pesadas**. Dado nosso conjunto de dados limpo, mas minimalista, e o fato de que estamos executando o treinamento localmente via notebooks, redes neurais são muito pesadas para esta tarefa.
- **Nenhum classificador de duas classes**. Não usamos um classificador de duas classes, então isso exclui o one-vs-all.
- **Árvore de decisão ou regressão logística podem funcionar**. Uma árvore de decisão pode funcionar, ou regressão logística para dados multiclasses.
- **Árvores de decisão impulsionadas multiclasses resolvem outro problema**. A árvore de decisão impulsionada multiclasses é mais adequada para tarefas não paramétricas, como tarefas projetadas para construir rankings, então não é útil para nós.
- **Redes neurais são muito pesadas**. Dado nosso conjunto de dados limpo, mas mínimo, e o fato de que estamos executando o treinamento localmente via notebooks, redes neurais são pesadas demais para essa tarefa.
- **Não usamos classificador binário**. Nós não usamos um classificador de duas classes, então isso exclui one-vs-all.
- **Árvore de decisão ou regressão logística pode funcionar**. Uma árvore de decisão pode funcionar, ou regressão logística para dados multiclasse.
- **Árvores de decisão Boosted Multiclasse resolvem um problema diferente**. A árvore de decisão multiclasse boostada é mais adequada para tarefas não paramétricas, por exemplo, tarefas projetadas para construir rankings, então não é útil para nós.
### Usando Scikit-learn
Usaremos o Scikit-learn para analisar nossos dados. No entanto, existem muitas maneiras de usar regressão logística no Scikit-learn. Veja os [parâmetros que podem ser passados](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
Usaremos o Scikit-learn para analisar nossos dados. No entanto, há muitas maneiras de usar regressão logística no Scikit-learn. Dê uma olhada nos [parâmetros a passar](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
Basicamente, há dois parâmetros importantes - `multi_class` e `solver` - que precisamos especificar ao pedir ao Scikit-learn para realizar uma regressão logística. O valor de `multi_class` aplica um certo comportamento. O valor do solver define qual algoritmo usar. Nem todos os solvers podem ser combinados com todos os valores de`multi_class`.
Basicamente, há dois parâmetros importantes - `multi_class` e `solver` - que precisamos especificar, quando pedimos ao Scikit-learn para executar uma regressão logística. O valor de `multi_class` aplica um determinado comportamento. O valor do solver é qual algoritmo usar. Nem todos os solvers podem ser emparelhados com todos os valores`multi_class`.
De acordo com a documentação, no caso multiclasses, o algoritmo de treinamento:
De acordo com a documentação, no caso multiclasse, o algoritmo de treinamento:
- **Usa o esquema one-vs-rest (OvR)**, se a opção `multi_class` estiver configurada como `ovr`
- **Usa a perda de entropia cruzada**, se a opção `multi_class` estiver configurada como `multinomial`. (Atualmente, a opção `multinomial` é suportada apenas pelos solvers ‘lbfgs’, ‘sag’, ‘saga’ e ‘newton-cg’.)
- **Usa o esquema one-vs-rest (OvR)**, se a opção `multi_class` estiver definida como `ovr`
- **Usa a perda de entropia cruzada**, se a opção `multi_class` estiver definida como `multinomial`. (Atualmente, a opção `multinomial` é suportada apenas pelos solvers ‘lbfgs’, ‘sag’, ‘saga’ e ‘newton-cg’)."
> 🎓 O 'esquema' aqui pode ser 'ovr' (one-vs-rest) ou 'multinomial'. Como a regressão logística foi projetada para suportar classificação binária, esses esquemas permitem que ela lide melhor com tarefas de classificação multiclasses. [fonte](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 O 'esquema' aqui pode ser 'ovr' (um-contrario-a-todos) ou 'multinomial'. Como regressão logística é realmente projetada para suportar classificação binária, esses esquemas permitem que ela lide melhor com tarefas de classificação multiclasse. [fonte](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 O 'solver' é definido como "o algoritmo a ser usado no problema de otimização". [fonte](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
O Scikit-learn oferece esta tabela para explicar como os solvers lidam com diferentes desafios apresentados por diferentes tipos de estruturas de dados:
Como você está usando o caso multiclasses, precisa escolher qual _esquema_ usar e qual _solver_ configurar. Use LogisticRegression com uma configuração multiclasses e o solver **liblinear** para treinar.
Como você está usando o caso multiclasse, precisa escolher qual _esquema_ usar e qual _solver_ configurar. Use LogisticRegression com a configuração multiclass e o solver **liblinear** para treinar.
1. Crie uma regressão logística com `multi_class` configurado como `ovr` e o solver configurado como`liblinear`:
1. Crie uma regressão logística com multi_class definido para `ovr` e solver definido para`liblinear`:
```python
lr = LogisticRegression(multi_class='ovr',solver='liblinear')
@ -163,9 +163,11 @@ Como você está usando o caso multiclasses, precisa escolher qual _esquema_ usa
print ("Accuracy is {}".format(accuracy))
```
✅ Experimente um solver diferente, como `lbfgs`, que frequentemente é configurado como padrão
> Observação, use a função Pandas [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) para achatar seus dados quando necessário.
A precisão é boa em mais de **80%**!
✅ Tente um solver diferente como `lbfgs`, que geralmente é o padrão
> Nota, use a função [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) do Pandas para achatar seus dados quando necessário.
A acurácia é boa, acima de **80%**!
1. Você pode ver este modelo em ação testando uma linha de dados (#50):
@ -174,16 +176,15 @@ A precisão é boa em mais de **80%**!
Nesta lição, você usou seus dados limpos para construir um modelo de aprendizado de máquina que pode prever uma culinária nacional com base em uma série de ingredientes. Reserve um tempo para explorar as muitas opções que o Scikit-learn oferece para classificar dados. Aprofunde-se no conceito de 'solver' para entender o que acontece nos bastidores.
Nesta aula, você usou seus dados limpos para construir um modelo de aprendizado de máquina que pode prever uma culinária nacional com base em uma série de ingredientes. Reserve um tempo para ler sobre as muitas opções que o Scikit-learn oferece para classificar dados. Aprofunde-se no conceito de 'solver' para entender o que acontece nos bastidores.
Aprofunde um pouco mais na matemática por trás da regressão logística nesta [aula](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf)
Aprofunde-se um pouco mais na matemática por trás da regressão logística nesta [lição](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf).
## Tarefa
## Tarefa
[Estude os solvers](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, 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 usando 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 a tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução.
> Este repositório inclui mais de 50 traduções que aumentam significativamente o tamanho do download. Para clonar sem traduções, use checkout esparso:
> Este repositório inclui traduções em mais de 50 idiomas, o que aumenta significativamente o tamanho do download. Para clonar sem as traduções, use sparse checkout:
>
> **Bash / macOS / Linux:**
> ```bash
@ -33,32 +33,32 @@
> git sparse-checkout set --no-cone "/*" "!translations" "!translated_images"
> ```
>
> Isso fornece tudo o que você precisa para completar o curso com um download muito mais rápido.
> Isso fornece tudo que você precisa para completar o curso com um download muito mais rápido.
Temos uma série contínua no Discord chamada "learn with AI", 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 para usar o GitHub Copilot para Ciência de Dados.
Estamos conduzindo uma série no Discord chamada aprenda com IA, saiba mais e participe conosco em [Learn with AI Series](https://aka.ms/learnwithai/discord) de 18 a 30 de setembro de 2025. Você receberá dicas e truques para usar o GitHub Copilot para Ciência de Dados.


# Machine Learning para Iniciantes - Um Currículo
# Aprendizado de Máquina para Iniciantes - Um Currículo
> 🌍 Viaje pelo mundo enquanto exploramos Machine Learning por meio das culturas globais 🌍
> 🌍 Viaje pelo mundo enquanto exploramos Aprendizado de Máquina por meio das culturas mundiais 🌍
Os Cloud Advocates da Microsoft têm o prazer de oferecer um currículo de 12 semanas com 26 lições focadas em **Machine Learning**. Neste currículo, você aprenderá sobre o que às vezes é chamado de **machine learning clássico**, usando principalmente a biblioteca Scikit-learn e evitando deep learning, que é abordado em nosso [currículo AI para Iniciantes](https://aka.ms/ai4beginners). Combine essas lições com nosso [currículo Ciência de Dados para Iniciantes](https://aka.ms/ds4beginners)!
Os Cloud Advocates da Microsoft têm prazer em oferecer um currículo de 12 semanas, com 26 lições, totalmente dedicado ao **Aprendizado de Máquina**. Neste currículo, você aprenderá o que às vezes é chamado de **aprendizado de máquina clássico**, utilizando principalmente a biblioteca Scikit-learn e evitando deep learning, que é abordado em nosso [currículo AI for Beginners](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 várias regiões do mundo. Cada lição inclui questionários pré e pós-lição, instruções escritas para completar a lição, uma solução, um exercício e muito mais. Nossa pedagogia baseada em projetos permite que você aprenda construindo, uma forma comprovada de fixar novas habilidades.
Viaje conosco pelo mundo enquanto aplicamos essas técnicas clássicas a dados de muitas 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, um exercício e muito mais. Nossa pedagogia baseada em projetos permite que você aprenda enquanto constrói, uma maneira comprovada de fixar novos conhecimentos.
**✍️ Agradecimentos calorosos 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
**✍️ 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
**🎨 Também agradecemos 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 nossos autores, revisores e colaboradores de conteúdo Microsoft Student Ambassador**, notadamente Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila e Snigdha Agarwal
**🙏 Agradecimentos especiais 🙏 aos autores, revisores e colaboradores de conteúdo que são Microsoft Student Ambassadors**, notadamente Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila e Snigdha Agarwal
**🤩 Gratidão extra aos Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi e Vidushi Gupta pelas nossas lições em R!**
**🤩 Um agradecimento extra aos Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi e Vidushi Gupta por nossas lições de R!**
# Começando
@ -66,22 +66,22 @@ Siga estes passos:
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 para este 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 do Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> 🔧 **Precisa de ajuda?** Consulte nosso [Guia de Solução de Problemas](TROUBLESHOOTING.md) para soluções para problemas comuns com instalação, configuração e execução das lições.
> 🔧 **Precisa de ajuda?** Confira nosso [Guia de Solução de Problemas](TROUBLESHOOTING.md) para soluções comuns relacionadas à instalação, configuração e execução das lições.
**[Estudantes](https://aka.ms/student-page)**, para usar este currículo, fork o repositório inteiro para sua conta GitHub e complete os exercícios sozinho ou em grupo:
**[Estudantes](https://aka.ms/student-page)**, para utilizar este currículo, faça um fork de todo o repositório para sua conta no GitHub e complete os exercícios sozinho ou em grupo:
- Comece com um questionário pré-aula.
- Leia a aula e complete as atividades, fazendo pausas e refletindo em cada verificação de conhecimento.
- Tente criar os projetos compreendendo as lições, em vez de apenas executar o código solução; contudo, esse código está disponível nas pastas `/solution` em cada lição orientada por projeto.
- Faça o questionário pós-aula.
- Comece com um quiz pré-aula.
- Leia a aula e complete as atividades, parando e refletindo a cada verificação de conhecimento.
- Tente criar os projetos compreendendo as lições em vez de apenas executar o código da solução; porém 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.
- Complete o exercício.
- 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 apropriada do PAT. Um 'PAT' é uma Ferramenta de Avaliação de Progresso que você preenche para avançar seu aprendizado. Você também pode reagir a outros PATs para aprendermos juntos.
- Faça o exercício.
- Após concluir 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 o formulário PAT apropriado. Um 'PAT' é uma Ferramenta de Avaliação de Progresso que é uma rubrica que você preenche para aprofundar seu aprendizado. Você também pode reagir aos PATs de outros para aprendermos juntos.
> Para estudo adicional, recomendamos seguir estes [módulos e trilhas de aprendizado 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 estes módulos e trilhas de aprendizado 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.
@ -89,36 +89,36 @@ Siga estes passos:
## Vídeos explicativos
Algumas lições estão disponíveis como vídeos curtos. Você pode encontrar todos eles 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ídeos curtos. Você pode encontrar todos eles 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.
[](https://aka.ms/ml-beginners-videos)
[](https://aka.ms/ml-beginners-videos)
> 🎥 Clique na imagem acima para 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 para construir este currículo: garantir que ele seja prático **baseado em projetos** e que inclua **questionários frequentes**. Além disso, este currículo tem um **tema** comum para dar coerência.
Escolhemos dois princípios pedagógicos ao construir este currículo: garantir que seja prático e **baseado em projetos** e que inclua **quizzes frequentes**. Além disso, este currículo tem um **tema** comum para dar coerência.
Ao garantir que o conteúdo esteja alinhado com projetos, o processo fica mais envolvente para os alunos e a retenção dos conceitos é aumentada. Além disso, um questionário de baixo risco antes da aula estabelece a intenção do aluno em aprender um tópico, enquanto um segundo questionário após a aula assegura uma retenção maior. Este currículo foi projetado para ser flexível e divertido e pode ser feito integralmente ou em partes. Os projetos começam pequenos e crescem em complexidade ao longo das 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 aos projetos, o processo se torna 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 prepara a intenção do estudante para aprender um 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 inteiro ou parcialmente. Os projetos começam pequenos e ficam progressivamente mais complexos ao longo do ciclo de 12 semanas. Este currículo também inclui um posfácio sobre aplicações reais do Aprendizado de Máquina, que pode ser usado como crédito extra ou como base para discussão.
> Encontre nosso [Código de Conduta](CODE_OF_CONDUCT.md), [Como Contribuir](CONTRIBUTING.md), [Traduções](..) e diretrizes de [Solução de Problemas](TROUBLESHOOTING.md). Aguardamos seu feedback construtivo!
> Encontre nosso [Código de Conduta](CODE_OF_CONDUCT.md), [Guia para Contribuições](CONTRIBUTING.md), [Traduções](..) e [Solucionando Problemas](TROUBLESHOOTING.md). Agradecemos seu feedback construtivo!
> **Uma nota sobre idiomas**: Essas 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 pelas lições em R. Elas incluem uma extensão .rmd que representa um arquivo **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 saídas como PDF) em um `documento Markdown`. Como tal, serve como uma estrutura exemplificada para autoria em ciência de dados, pois permite combinar seu código, sua saída e seus pensamentos ao permitir escrevê-los em Markdown. Além disso, documentos R Markdown podem ser renderizados em formatos de saída como PDF, HTML ou Word.
> **Uma nota sobre quizzes**: Todos os quizzes estão contidos na [pasta do Quiz App](../../quiz-app), com 52 quizzes totais de três perguntas cada. Eles estão vinculados dentro das lições, mas o app 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 Aprendizagem | Lição Vinculada | Autor |
| 01 | Introdução à aprendizagem de máquina | [Introdução](1-Introduction/README.md) | Aprenda os conceitos básicos por trás da aprendizagem de máquina | [Lição](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | A história da aprendizagem de máquina | [Introdução](1-Introduction/README.md) | Aprenda a história subjacente a esse campo | [Lição](1-Introduction/2-history-of-ML/README.md) | Jen e Amy |
| 03 | Justiça e aprendizagem de máquina | [Introdução](1-Introduction/README.md) | Quais são as importantes questões filosóficas 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 aprendizagem 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óbora 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óbora 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óbora 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 | Deliciosas culinárias 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 culinárias 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 culinárias 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 a clustering | [Agrupamento](5-Clustering/README.md) | Limpe, prepare e visualize seus dados; introdução a 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 na Nigéria 🎧 | [Agrupamento](5-Clustering/README.md) | Explore o método de agrupamento 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 em PLN ☕️ | [Processamento de linguagem natural](6-NLP/README.md) | Aprofunde seu conhecimento em PLN entendendo tarefas comuns necessárias 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 na 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 na 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 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 | ⚡️ Uso mundial de energia ⚡️ - previsão de séries temporais com SVR | [Séries temporais](7-TimeSeries/README.md) | Previsão de séries temporais com Regressor de Vetor de Suporte | [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 do ML no mundo real | [ML no Mundo Real](9-Real-World/README.md) | Aplicações interessantes e reveladoras do ML clássico | [Lição](9-Real-World/1-Applications/README.md) | Equipe |
| Pós-escrito | Depuração de modelos ML usando painel RAI | [ML no Mundo Real](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)
> **Uma nota sobre idiomas**: Essas lições são escritas principalmente em Python, mas muitas também estão disponíveis em R. Para concluir uma lição em R, vá para a pasta `/solution` e procure por lições em R. Elas incluem uma extensão .rmd que representa um arquivo **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 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 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 52 quizzes no total, cada um com três perguntas. Eles são vinculados dentro das lições, mas o aplicativo de quizzes 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 Aprendizagem | Lição Vinculada | Autor |
| 01 | Introdução ao aprendizado de máquina | [Introdução](1-Introduction/README.md) | Aprender 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) | Conhecer a história que fundamenta esse 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 🔌 | [Web App](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) | Limpar, preparar e visualizar 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 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 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 a clustering | [Clustering](5-Clustering/README.md) | Limpar, preparar e visualizar seus dados; Introdução a 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 em PLN ☕️ | [Processamento de linguagem natural](6-NLP/README.md) | Aprofunde seus conhecimentos em PLN entendendo tarefas comuns necessárias para 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 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 | ⚡️ Consumo mundial de energia ⚡️ - 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 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 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 usando 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 interessantes e reveladoras do aprendizado de máquina clássico | [Lição](9-Real-World/1-Applications/README.md) | Equipe |
| Pós-escrito | Depuração de modelos de ML usando painel RAI | [ML na prática](9-Real-World/README.md) | Depuração de modelos de aprendizado de máquina 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 na 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 [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) na sua máquina local e, em seguida, na pasta raiz deste repositório, digite `docsify serve`. O site será servido na porta 3000 no seu localhost: `localhost:3000`.
## PDFs
@ -185,54 +185,65 @@ Nossa equipe produz outros cursos! Confira:
### 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/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/ai-agents-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)
---
### Série de IA Generativa
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/generative-ai-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)
---
### Aprendizado Essencial
[](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)
[](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
### 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)
[](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### Série Copilot
[](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)
[](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 construir aplicativos de IA. Junte-se a outros aprendizes e desenvolvedores experientes em discussões sobre MCP. É uma comunidade acolhedora onde perguntas são bem-vindas e o conhecimento é compartilhado livremente.
Se você ficar travado ou tiver dúvidas enquanto aprende Machine Learning ou desenvolve aplicações de IA, não se preocupe — ajuda está disponível.
[](https://aka.ms/foundry/forum)
## Dicas Adicionais de Aprendizado
- Revise os notebooks após cada aula para melhor compreensão.
- Pratique implementar algoritmos por conta própria.
- Pratique implementar os 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 pela 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 autorizada. Para informações críticas, recomenda-se tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução.
**Aviso Legal**:
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 sua língua nativa 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.
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.
A regressão linear é usada quando queremos prever um **valor numérico** (por exemplo, preço da casa, temperatura ou vendas). Funciona encontrando uma linha reta que melhor representa a relação entre as características de entrada e o resultado.
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
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.
Até agora explorou 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 visualizou esses dados usando Matplotlib.
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.
Agora está pronto para mergulhar mais fundo na regressão para ML. Enquanto a visualização permite dar sentido aos dados, o verdadeiro poder do Machine Learning vem do _treino de modelos_. Os modelos são treinados em dados históricos para captar automaticamente as dependências dos dados, e permitem prever resultados para novos dados, que o modelo ainda não viu.
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.
Nesta lição, irá aprender mais sobre dois tipos de regressão: _regressão linear básica_ e _regressão polinomial_, juntamente com alguma da matemática subjacente a estas técnicas. Esses modelos permitirão prever preços de abóboras dependendo de diferentes dados de entrada.
[](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression")
[](https://youtu.be/CRxFT8oTDMg "ML para iniciantes - Compreender Regressão Linear")
> 🎥 Clica na imagem acima para um vídeo curto sobre regressão linear.
> 🎥 Clique na imagem acima para uma curta visão geral em vídeo da regressão linear.
> 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.
> Ao longo deste currículo, assumimos um conhecimento matemático mínimo, buscando tornar acessível para estudantes de outras áreas, por isso esteja atento a notas, 🧮 destaques, diagramas e outras ferramentas de aprendizagem para ajudar na compreensão.
### Pré-requisitos
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.
Deve estar agora familiarizado com a estrutura dos dados de abóboras que estamos a examinar. Pode encontrá-los pré-carregados e pré-limpados no ficheiro _notebook.ipynb_ desta lição. No ficheiro, o preço da abóbora está apresentado por alqueire num novo data frame. Certifique-se de que pode executar estes notebooks em núcleos (kernels) no Visual Studio Code.
### Preparação
Como lembrete, estás a carregar estes dados para poder colocar-lhes questões.
Como lembrete, está a carregar estes dados para fazer perguntas a eles.
- 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 por caixas de 1 1/9 alqueires?
Vamos continuar a explorar estes dados.
- Qual é a melhor altura para comprar abóboras?
- Que preço posso esperar por uma caixa de pequenas abóboras?
- Devo comprá-las em cestos de meio alqueire ou numa caixa de 1 1/9 alqueire?
Vamos continuar a aprofundar estes dados.
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.
Na lição anterior, criou um data frame do Pandas e preencheu-o com parte do conjunto de dados original, padronizando os preços por alqueire. Ao fazer isso, no entanto, conseguiu recolher cerca de 400 pontos de dados e apenas para os meses de outono.
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.
Veja os dados que pré-carregámos no notebook que acompanha esta lição. Os dados vêm pré-carregados e um gráfico de dispersão inicial foi traçado para mostrar os dados do mês. Talvez possamos obter um pouco mais de detalhe sobre a natureza dos dados fazendo uma limpeza maior.
## Uma linha de regressão linear
Como aprendeste na Lição 1, o objetivo de um exercício de regressão linear é ser capaz de traçar uma linha para:
Como aprendeu na Lição 1, o objetivo de um exercício de regressão linear é conseguir 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.
- **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 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.
É típico da **Regressão pelo Método dos Mínimos Quadrados** desenhar este 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 resíduo) 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.
1. **Magnitude sobre direção:** Queremos tratar um erro de -5 da mesma forma que um erro de +5. Elevar ao quadrado torna todos os valores positivos.
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.
2. **Penalização de outliers:** Elevar ao quadrado dá mais peso a erros maiores, obrigando a linha a ficar mais próxima dos pontos distantes.
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".
Depois somamos todos esses valores ao quadrado. O nosso objetivo é encontrar a linha específica onde essa soma final é a menor 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):
>
> **🧮 Mostre-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):
>
> ```
> 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`.
>
>
>
> Primeiro, calcula a inclinação`b`. Infográfico por [Jen Looper](https://twitter.com/jenlooper)
>
> 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 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 seja, onde `Y` se encontra quando `X = 0`.
>
> 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.
>
> `X` é a 'variável explicativa'. `Y` é a 'variável dependente'. O declive da linha é `b` e `a` é o intercepto em y, que se refere ao valor de `Y` quando `X = 0`.
>
>
>
> Primeiro, calcule o declive`b`. Infográfico por [Jen Looper](https://twitter.com/jenlooper)
>
> Por outras palavras, e referindo-nos à pergunta original dos dados das abóboras: "prever o preço por alqueire da abóbora por mês", `X` referir-se-ia ao preço e `Y` ao mês da venda.
>
>
>
> Calcule o valor de Y. Se está 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 o declive da linha, que também depende do intercepto, ou de onde `Y` está situado quando `X = 0`.
>
> Pode observar o método de cálculo destes valores no site [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Visite também [esta calculadora 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
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.
Mais um termo a compreender é o **Coeficiente de Correlação** entre as variáveis X e Y dadas. Usando um gráfico de dispersão, pode visualizar rapidamente este coeficiente. Um gráfico com pontos de dados dispersos numa linha limpa 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 perto 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 próximo de 1 do que de 0) usando o método dos mínimos quadrados com uma linha de regressão.
✅ 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)?
✅ Execute o notebook que acompanha esta lição e observe o gráfico de dispersão Mês versus Preço. Os dados que associam Mês a Preço para vendas de abóboras parecem ter alta ou baixa correlação, segundo a sua interpretação visual do gráfico de dispersão? Isso muda se usar uma medida mais pormenorizada em vez de `Mês`, por exemplo *dia do ano* (isto é, 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, vamos assumir 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
> 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:
> O código para limpar os dados está disponível em [`notebook.ipynb`](notebook.ipynb). Realizámos 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 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.
Agora que compreende a matemática por trás da regressão linear, vamos criar um modelo de regressão para ver se conseguimos prever que pacote de abóboras terá os melhores preços. Alguém a comprar abóboras para uma decoração de abóboras para o feriado pode querer esta informação para optimizar as suas compras de pacotes de abóboras para a decoração.
## Procurar Correlação
## Procurar correlação
[](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression")
[](https://youtu.be/uoRq-lW2eQo "ML para iniciantes - Procurar correlação: a chave para regressão linear")
> 🎥 Clica na imagem acima para um vídeo curto sobre correlação.
> 🎥 Clique na imagem acima para uma breve visão geral em vídeo da correlação.
Na lição anterior de certeza que viste que o preço médio para diferentes meses parece assim:
Na lição anterior provavelmente viu que o preço médio para diferentes meses se parece com isto:
<imgalt="Average price by month" src="../../../../translated_images/pt-PT/barchart.a833ea9194346d76.webp"width="50%"/>
<imgalt="Preço médio por mês" 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:
Isto sugere que deve 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 esta última relação:
<imgalt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/pt-PT/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
<imgalt="Gráfico de dispersão do preço vs dia do ano" src="../../../../translated_images/pt-PT/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
Vamos ver se existe correlação usando a função `corr`:
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:
Parece que a correlação é bastante pequena, -0.15 pelo `Month` e -0.17 pelo `DayOfMonth`, mas pode haver outra relação importante. Parece que há diferentes agrupamentos de preços correspondendo a diferentes variedades de abóbora. Para confirmar esta hipótese, vamos representar cada categoria de abóboras com uma cor diferente. Ao passar o parâmetro `ax` para a função de plotagem `scatter` podemos plotar todos os pontos no mesmo gráfico:
```python
ax=None
@ -139,27 +139,27 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
<imgalt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/pt-PT/scatter-dayofyear-color.65790faefbb9d54f.webp"width="50%"/>
<imgalt="Gráfico de dispersão do preço vs dia do ano com cores" src="../../../../translated_images/pt-PT/scatter-dayofyear-color.65790faefbb9d54f.webp"width="50%"/>
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:
A nossa investigação sugere que a variedade tem mais efeito no preço global do que a data real de venda. Podemos ver isso num gráfico de barras:
<imgalt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/pt-PT/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
<imgalt="Gráfico de dispersão do preço vs dia do ano para abóboras 'pie'" 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.
Se agora calcularmos a correlação entre `Price` e `DayOfYear` 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 em falta, 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, portanto faz sentido livrar-se de todas as células vazias:
```python
pie_pumpkins.dropna(inplace=True)
@ -170,9 +170,9 @@ Outra abordagem seria preencher esses valores vazios com a média da coluna corr
## Regressão Linear Simples
[](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn")
[](https://youtu.be/e4c_UP2fSjg "ML para iniciantes - Regressão Linear e Polinomial usando Scikit-learn")
> 🎥 Clica na imagem acima para um vídeo curto sobre regressão linear e polinomial.
> 🎥 Clique na imagem acima para uma breve visão geral em vídeo da regressão linear e polinomial.
Para treinar o nosso modelo de Regressão Linear, vamos usar a biblioteca **Scikit-learn**.
@ -189,42 +189,41 @@ X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
> 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.
> Repare que tivemos de fazer um `reshape` nos dados de entrada para que o pacote de Regressão Linear os compreendesse 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 uma matriz com forma N×1, onde N é o tamanho do conjunto de dados.
Depois, precisamos de dividir os dados em conjuntos de treino e teste, para que possamos validar o nosso modelo depois do treino:
Depois, é necessário dividir os dados nos conjuntos de treino e de teste, para que possamos validar o modelo após o treino:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
```
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`:
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`:
```python
lin_reg = LinearRegression()
lin_reg.fit(X_train,y_train)
```
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.
O objeto `LinearRegression` após o treino (`fit`) contém todos os coeficientes da regressão, que podem ser acedidos através da propriedade `.coef_`. No nosso caso, há apenas um coeficiente, que deverá ser cerca de `-0.017`. Isto significa que os preços parecem diminuir um pouco com o tempo, mas não demasiado, cerca de 2 cêntimos por dia. Também podemos 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 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.
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. Isto pode ser feito usando a métrica root mean square error (RMSE), que é a raiz da média de todas as diferenças quadráticas entre o valor esperado e o previsto.
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:
O nosso erro parece ser cerca 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 tem em conta os dados de entrada, e atua 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 é cerca de 0.06, o que é bastante baixo.
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:
Também podemos desenhar os dados de teste juntamente com a linha de regressão para vermos melhor como funciona a regressão no nosso caso:
```python
plt.scatter(X_test,y_test)
@ -235,17 +234,17 @@ plt.plot(X_test,pred)
## Regressão Polinomial
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.
Outro tipo de Regressão Linear é a Regressão Polinomial. Embora por vezes haja uma relação linear entre variáveis - quanto maior a abóbora em volume, maior o preço - por vezes essas relações não podem ser representadas por 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 utilizar 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. 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.
Veja outra vez a relação entre Data e Preço. Este gráfico de dispersão parece que deve necessariamente ser analisado por uma linha reta? Será que os preços não podem flutuar? Neste caso, pode tentar a regressão polinomial.
✅ Polinómios são expressões matemáticas que podem consistir em uma ou mais variáveis e coeficientes.
✅ Os 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 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.
A regressão polinomial cria uma linha curva para melhor ajustar dados não lineares. No nosso caso, se incluirmos uma variável ao quadrado `DayOfYear` nos dados de entrada, deveremos ser capazes de ajustar os nossos dados com uma curva parabólica, que terá um mínimo em certo ponto dentro do ano.
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:
O Scikit-learn inclui uma API útil de [pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) para combinar diferentes passos 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 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.
Usar `PolynomialFeatures(2)` significa que vamos 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 duas variáveis de entrada X e Y, isso adicionaria X<sup>2</sup>, XY e Y<sup>2</sup>. Também podemos usar polinómios de grau superior se quisermos.
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:
Os 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 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!
Usando Regressão Polinomial, podemos obter um MSE ligeiramente inferior e um coeficiente de determinação mais alto, mas não de forma significativa. Precisamos de ter em conta outras características!
> Pode ver que os preços mínimos das abóboras ocorrem por volta do Halloween. Como pode explicar 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 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!
🎃 Parabéns, acabou de criar um modelo que pode ajudar a prever o preço de abóboras para torta. Provavelmente poderá repetir o mesmo procedimento para todos os tipos de abóbora, mas isso seria aborrecido. Vamos aprender agora como ter em conta a variedade de 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` é algo diferente de colunas como `Month`, porque contém valores não numéricos. Estas colunas são chamadas **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 das colunas como `Month`, porque contém valores não numéricos. Essas colunas são chamadas **categóricas**.
[](https://youtu.be/DYGliioIAE0 "ML para iniciantes - Previsões de Características Categóricas com Regressão Linear")
[](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
> 🎥 Clique na imagem acima para um vídeo curto sobre o uso de características categóricas.
> 🎥 Clique na imagem acima para um breve vídeo explicativo sobre o uso de características categóricas.
Aqui pode ver como o preço médio depende da variedade:
<imgalt="Average price by variety"src="../../../../translated_images/pt-PT/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
Para considerar a variedade, primeiro precisamos convertê-la para forma numérica, ou **codificá-la**. Existem várias formas de o fazer:
Para ter a variedade em conta, primeiro precisamos convertê-la para forma numérica, ou **codificá-la**. Existem várias maneiras de o fazer:
* 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.
* A simples **codificação numérica** constrói uma tabela de diferentes variedades, e depois substitui o nome da variedade por um índice nessa tabela. Isto não é a melhor ideia para regressão linear, porque a regressão linear toma 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 assegurarmos que os índices estão ordenados de alguma forma específica.
* A **codificação one-hot**vai substituir a coluna `Variety` por 4 colunas diferentes, uma para cada variedade. Cada coluna terá `1` se a linha correspondente for de uma dada variedade, 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 antes "preço adicional") para aquela variedade particular.
O código abaixo mostra como podemos codificar one-hot uma variedade:
O código abaixo mostra como podemos codificar uma variedade usando one-hot:
Para treinar a regressão linear utilizando a variedade codificada one-hot como entrada, só precisamos inicializar corretamente os dados `X` e `y`:
Para treinar a regressão linear usando 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 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`:
O resto do código é igual ao que usamos anteriormente para treinar a regressão linear. Se tentar, verá que o erro quadrático médio é mais ou menos o mesmo, mas obtemos um coeficiente de determinação muito mais alto (~77%). Para obter previsões ainda mais precisas, podemos levar mais características categóricas em conta, bem 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']) \
@ -319,14 +318,14 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
y = new_pumpkins['Price']
```
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!
Aqui também levamos em conta `City` e tipo de `Package`, o que nos dá MSE 2.84 (10%), e determinação 0.94!
## Juntando tudo
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:
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 |
|--------|-----|--------------|
| 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 `DayOfYear` | 2.77 (17.2%) | 0.07 |
| Polinomial `DayOfYear` | 2.73 (17.0%) | 0.08 |
| Linear `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 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.
🏆 Muito bem! Criou quatro modelos de regressão numa lição, e melhorou a qualidade do modelo para 97%. Na secção final de Regressão, vai aprender sobre Regressão Logística para determinar categorias.
---
## 🚀Desafio
@ -370,7 +369,7 @@ 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 estudar e aprender mais é o [curso de Aprendizagem Estatística de Stanford](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
@ -382,5 +381,5 @@ Nesta lição aprendemos sobre Regressão Linear. Existem outros tipos important
<!-- 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.
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, por favor tenha em conta que traduções automáticas podem conter erros ou imprecisões. O documento original, no seu idioma nativo, deve ser considerado a fonte oficial. Para informação crítica, recomenda-se a tradução profissional por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes da utilização desta tradução.
Nesta lição, vais utilizar o conjunto de dados que guardaste na última lição, cheio de dados equilibrados e limpos sobre culinárias.
Nesta lição, irá usar o conjunto de dados que guardou na lição anterior, cheio de dados equilibrados e limpos, todos sobre cozinhas.
Vais usar este conjunto de dados com uma variedade de classificadores para _prever uma culinária nacional com base num grupo de ingredientes_. Enquanto fazes isso, vais aprender mais sobre algumas das formas como os algoritmos podem ser utilizados para tarefas de classificação.
Usará este conjunto de dados com vários classificadores para _prever uma cozinha nacional dada com base num grupo de ingredientes_. Enquanto o faz, irá aprender mais sobre algumas das formas como os algoritmos podem ser aproveitados para tarefas de classificação.
Assumindo que completaste [Lição 1](../1-Introduction/README.md), certifica-te de que existe um ficheiro _cleaned_cuisines.csv_ na pasta raiz`/data` para estas quatro lições.
Assumindo que completou a [Lição 1](../1-Introduction/README.md), certifique-se de que existe um ficheiro _cleaned_cuisines.csv_ na raiz da pasta `/data` para estas quatro lições.
## Exercício - prever uma culinária nacional
## Exercício - prever uma cozinha nacional
1. Trabalhando na pasta _notebook.ipynb_ desta lição, importa esse ficheiro juntamente com a biblioteca Pandas:
1. Trabalhando no _notebook.ipynb_ desta lição, importe esse ficheiro juntamente com a biblioteca Pandas:
```python
import pandas as pd
@ -19,7 +19,7 @@ Assumindo que completaste [Lição 1](../1-Introduction/README.md), certifica-te
Agora que os teus dados estão limpos e prontos para treino, tens de decidir qual o algoritmo a usar para o trabalho.
Agora que os seus dados estão limpos e prontos para treino, tem que decidir qual algoritmo usar para o trabalho.
O Scikit-learn agrupa a classificação sob Aprendizagem Supervisionada, e nessa categoria vais encontrar muitas formas de classificar. [A variedade](https://scikit-learn.org/stable/supervised_learning.html) pode parecer confusa à primeira vista. Os seguintes métodos incluem técnicas de classificação:
Scikit-learn agrupa classificação sob Aprendizagem Supervisionada, e nessa categoria encontrará muitas formas de classificar. [A variedade](https://scikit-learn.org/stable/supervised_learning.html) é bastante confusa à primeira vista. Os seguintes métodos incluem todos técnicas de classificação:
- Modelos Lineares
- Máquinas de Vetores de Suporte
- Descida de Gradiente Estocástica
- Descenso Estocástico do Gradiente
- Vizinhos Mais Próximos
- Processos Gaussianos
- Árvores de Decisão
- Métodos de Ensemble (classificador por votação)
- Algoritmos multiclasses e multioutput (classificação multiclasses e multilabel, classificação multiclasses-multioutput)
- Métodos de ensemble (classificador por votação)
- Algoritmos multi-classe e multi-output (classificação multi-classe e multi-rótulo, classificação multi-classe multi-output)
> Também podes usar [redes neuronais para classificar dados](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification), mas isso está fora do âmbito desta lição.
> Também pode usar [redes neurais para classificar dados](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification), mas isso está fora do escopo desta lição.
### Qual classificador escolher?
### Que classificador escolher?
Então, qual classificador deves escolher? Muitas vezes, testar vários e procurar um bom resultado é uma forma de experimentar. O Scikit-learn oferece uma [comparação lado a lado](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html) num conjunto de dados criado, comparando KNeighbors, SVC de duas formas, GaussianProcessClassifier, DecisionTreeClassifier, RandomForestClassifier, MLPClassifier, AdaBoostClassifier, GaussianNB e QuadraticDiscriminationAnalysis, mostrando os resultados visualizados:
Então, qual classificador deve escolher? Muitas vezes, experimentar vários e procurar obter um bom resultado é uma forma de testar. Scikit-learn oferece uma [comparação lado a lado](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html) num conjunto de dados criado, comparando KNeighbors, SVC de duas formas, GaussianProcessClassifier, DecisionTreeClassifier, RandomForestClassifier, MLPClassifier, AdaBoostClassifier, GaussianNB e QuadraticDiscrinationAnalysis, mostrando os resultados visualizados:

> Gráficos gerados na documentação do Scikit-learn

> Gráficos gerados na documentação da Scikit-learn
> O AutoML resolve este problema de forma prática ao realizar estas comparações na nuvem, permitindo-te escolher o melhor algoritmo para os teus dados. Experimenta [aqui](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)
> AutoML resolve este problema de forma elegante executando essas comparações na cloud, permitindo-lhe escolher o melhor algoritmo para os seus dados. Experimente [aqui](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)
### Uma abordagem melhor
Uma forma melhor do que adivinhar aleatoriamente é seguir as ideias deste [guia de consulta de ML](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott) que podes descarregar. Aqui, descobrimos que, para o nosso problema multiclasses, temos algumas opções:
Uma forma melhor do que adivinhar ao acaso é seguir as ideias neste [folheto de consulta rápida de ML](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott) descarregável. Aqui, descobrimos que, para o nosso problema multiclass, temos algumas opções:

> Uma secção do Guia de Algoritmos da Microsoft, detalhando opções de classificação multiclasses

> Uma secção do Folheto de Algoritmos da Microsoft, detalhando opções de classificação multiclass
✅ Descarrega este guia, imprime-o e pendura-o na tua parede!
✅ Descarregue este folheto, imprima-o e pendure-o na sua parede!
### Raciocínio
Vamos ver se conseguimos raciocinar sobre diferentes abordagens dadas as restrições que temos:
Vamos ver se conseguimos raciocinar diferentes abordagens dadas as restrições que temos:
- **Redes neuronais são demasiado pesadas**. Dado o nosso conjunto de dados limpo, mas minimalista, e o facto de estarmos a realizar o treino localmente via notebooks, redes neuronais são demasiado pesadas para esta tarefa.
- **Sem classificadores de duas classes**. Não usamos um classificador de duas classes, o que exclui o one-vs-all.
- **Árvore de decisão ou regressão logística podem funcionar**. Uma árvore de decisão pode funcionar, ou regressão logística para dados multiclasses.
- **Árvores de decisão impulsionadas multiclasses resolvem outro problema**. A árvore de decisão impulsionada multiclasses é mais adequada para tarefas não paramétricas, como tarefas projetadas para criar rankings, por isso não é útil para nós.
- **Redes neurais são demasiado pesadas**. Dado o nosso conjunto de dados limpo, mas minimalista, e o facto de que estamos a executar o treino localmente via notebooks, as redes neurais são demasiado pesadas para esta tarefa.
- **Nenhum classificador de duas classes**. Não usamos um classificador de duas classes, pelo que isto elimina one-vs-all.
- **Árvore de decisão ou regressão logística podem funcionar**. Uma árvore de decisão pode funcionar, ou regressão logística para dados multiclass.
- **Árvores de decisão boosteadas multiclass resolvem um problema diferente**. A árvore de decisão boosteada multiclass é mais adequada para tarefas não-paramétricas, por exemplo, tarefas desenhadas para construir rankings, por isso não é útil para nós.
### Usar Scikit-learn
### Usar Scikit-learn
Vamos usar o Scikit-learn para analisar os nossos dados. No entanto, existem muitas formas de usar regressão logística no Scikit-learn. Dá uma olhada nos [parâmetros a passar](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
Vamos usar Scikit-learn para analisar os nossos dados. No entanto, há muitas formas de usar regressão logística no Scikit-learn. Veja os [parâmetros para passar](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
Basicamente, há dois parâmetros importantes - `multi_class` e `solver` - que precisamos especificar quando pedimos ao Scikit-learn para realizar uma regressão logística. O valor de `multi_class` aplica um certo comportamento. O valor do solver é o algoritmo a usar. Nem todos os solvers podem ser combinados com todos os valores de`multi_class`.
Essencialmente há dois parâmetros importantes - `multi_class` e `solver` - que precisamos de especificar, quando pedimos ao Scikit-learn para executar uma regressão logística. O valor `multi_class` aplica um certo comportamento. O valor do solver é qual algoritmo usar. Nem todos os solvers podem ser combinados com todos os valores `multi_class`.
De acordo com a documentação, no caso multiclasses, o algoritmo de treino:
De acordo com a documentação, no caso multiclass, o algoritmo de treino:
- **Usa o esquema one-vs-rest (OvR)**, se a opção `multi_class` estiver definida como `ovr`
- **Usa a perda de entropia cruzada**, se a opção `multi_class` estiver definida como `multinomial`. (Atualmente, a opção `multinomial` é suportada apenas pelos solvers ‘lbfgs’, ‘sag’, ‘saga’ e ‘newton-cg’.)
- **Usa a perda de cross-entropy**, se a opção `multi_class` estiver definida como `multinomial`. (Atualmente a opção `multinomial`só é suportada pelos solvers ‘lbfgs’, ‘sag’, ‘saga’ e ‘newton-cg’)."
> 🎓 O 'esquema' aqui pode ser 'ovr' (one-vs-rest) ou 'multinomial'. Como a regressão logística foi projetada para suportar classificação binária, esses esquemas permitem que ela lide melhor com tarefas de classificação multiclasses. [fonte](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 O 'esquema' aqui pode ser 'ovr' (one-vs-rest) ou 'multinomial'. Como a regressão logística é realmente desenhada para suportar classificação binária, estes esquemas permitem-lhe lidar melhor com tarefas de classificação multiclass. [fonte](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 O 'solver' é definido como "o algoritmo a usar no problema de otimização". [fonte](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
O Scikit-learn oferece esta tabela para explicar como os solvers lidam com diferentes desafios apresentados por diferentes tipos de estruturas de dados:
Scikit-learn oferece esta tabela para explicar como os solvers lidam com diferentes desafios apresentados por diferentes tipos de estruturas de dados:
Como estás a usar o caso multiclasses, precisas de escolher que _esquema_ usar e que _solver_ definir. Usa LogisticRegression com uma configuração multiclasses e o solver **liblinear** para treinar.
Como está a usar o caso multiclass, precisa de escolher que _esquema_ usar e que _solver_ definir. Use LogisticRegression com uma configuração multiclass e o solver **liblinear** para treinar.
1. Cria uma regressão logística com multi_class definida como `ovr` e o solver definido como`liblinear`:
1. Crie uma regressão logística com multi_class definido para `ovr` e o solver definido para`liblinear`:
```python
lr = LogisticRegression(multi_class='ovr',solver='liblinear')
@ -163,11 +163,13 @@ Como estás a usar o caso multiclasses, precisas de escolher que _esquema_ usar
print ("Accuracy is {}".format(accuracy))
```
✅ Experimenta um solver diferente como `lbfgs`, que muitas vezes é definido como padrão
> Nota, utilize a função Pandas [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) para achatar os seus dados quando necessário.
A precisão é boa, acima de **80%**!
✅ Experimente um solver diferente como `lbfgs`, que muitas vezes é o padrão
1. Pode ver este modelo em ação ao testar uma linha de dados (#50):
> Nota, use a função [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) do Pandas para achatar os seus dados quando necessário.
A precisão é boa, acima dos **80%**!
1. Pode ver este modelo em ação testando uma linha de dados (#50):
Nesta lição, utilizou os seus dados limpos para construir um modelo de aprendizagem automática que pode prever uma cozinha nacional com base numa série de ingredientes. Dedique algum tempo a explorar as muitas opções que o Scikit-learn oferece para classificar dados. Aprofunde o conceito de 'solver' para entender o que acontece nos bastidores.
Nesta lição, utilizou os seus dados limpos para construir um modelo de machine learning que pode prever uma culinária nacional com base numa série de ingredientes. Tire algum tempo para ler as muitas opções que o Scikit-learn oferece para classificar dados. Aprofunde-se no conceito de 'solver' para entender o que se passa nos bastidores.
Explore um pouco mais a matemática por trás da regressão logística nesta [lição](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf).
## Tarefa
Aprofunde um pouco mais na matemática por trás da regressão logística nesta [lição](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf)
## Tarefa
[Estude os solvers](assignment.md)
[Estudar os solvers](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 por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, por favor tenha em conta que traduções automáticas podem conter erros ou imprecisões. O documento original no 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 erradas decorrentes da utilização desta tradução.
#### Suportado via GitHub Action (Automatizado e Sempre Atualizado)
@ -17,7 +17,7 @@
> **Prefere Clonar Localmente?**
>
> Este repositório inclui traduções em mais de 50 idiomas, o que aumenta significativamente o tamanho do download. Para clonar sem as traduções, use sparse checkout:
> Este repositório inclui traduções para mais de 50 idiomas que aumentam significativamente o tamanho do download. Para clonar sem traduções, use o sparse checkout:
Temos uma série de aprender com IA no Discord em curso, 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.
Temos uma série Discord de aprendizagem com IA em curso, 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.

@ -48,48 +48,47 @@ Temos uma série de aprender com IA no Discord em curso, saiba mais e junte-se a
> 🌍 Viaje pelo mundo enquanto exploramos 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 e 26 lições totalmente dedicado a **Aprendizagem Automática**. Neste currículo, aprenderá sobre o que às vezes é chamado de**aprendizagem automática clássica**, usando principalmente a biblioteca Scikit-learn e evitando o deep learning, que é abordado no nosso [currículo AI for Beginners](https://aka.ms/ai4beginners). Combine estas lições com o nosso ['Data Science for Beginners' curriculum](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, todo sobre **Aprendizagem Automática**. Neste currículo, aprenderá sobre o que por vezes é chamado**aprendizagem automática clássica**, usando principalmente a biblioteca Scikit-learn e evitando deep learning, que é abordado no nosso [currículo AI for Beginners](https://aka.ms/ai4beginners). Combine estas lições com o nosso ['Data Science for Beginners' curriculum](https://aka.ms/ds4beginners), também!
Viaje connosco pelo mundo enquanto aplicamos estas técnicas clássicas a dados de várias regiões do mundo. Cada lição inclui questionários pré e pós-lição, instruções escritas para concluir a lição, uma solução, um desafio, e mais. A nossa pedagogia baseada em projetos permite-lhe aprender enquanto constrói, uma forma comprovada para que as novas competências 'fixem'.
Viaje connosco pelo mundo enquanto aplicamos estas técnicas clássicas a dados de muitas áreas do mundo. Cada lição inclui questionários antes e depois da lição, instruções escritas para completar a lição, uma solução, uma tarefa e mais. A nossa pedagogia baseada em projetos permite aprender enquanto se constrói, uma forma comprovada para que novas competências 'ficarem'.
**✍️ Muito obrigado 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
**🎨 Agradecimentos também aos nossos ilustradores** Tomomi Imura, Dasani Madipalli, e Jen Looper
**🎨 Obrigado 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 Ambassador**, nomeadamente Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, e Snigdha Agarwal
**🙏 Agradecimento especial 🙏 aos nossos autores, revisores e colaboradores de conteúdo do Microsoft Student Ambassador**, nomeadamente Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila e Snigdha Agarwal
**🤩 Gratidão extra aos Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, e Vidushi Gupta pelas nossas lições em R!**
**🤩 Agradecimento especial extra aos Embaixadores Estudantes Microsoft Eric Wanjau, Jasleen Sondhi e Vidushi Gupta pelas nossas lições R!**
# Começar
Siga estes passos:
1. **Fork do Repositório**: Clique no botão "Fork" no canto superior direito desta página.
1. **Faça 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 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 com 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 para problemas comuns com 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 sua própria conta GitHub e complete 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 própria conta no GitHub e complete os exercícios sozinho ou em grupo:
- Comece com um questionário pré-entrevista.
- Leia a aula e complete as atividades, pausando e refletindo a cada verificação de conhecimento.
- Tente criar os projetos compreendendo as lições em vez de apenas executar o código da solução; no entanto, esse código está disponível nas pastas `/solution` em cada lição orientada por projeto.
- Faça o questionário pós-entrevista.
- Comece com um quiz pré-lectura.
- 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 executar o código da solução; no entanto, esse código está disponível nas pastas `/solution` em cada lição orientada por projeto.
- Faça o quiz pós-lectura.
- Complete o desafio.
- Complete a tarefa.
- Depois de 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 a aprendizagem. Também pode reagir a outras PATs para aprendermos juntos.
- Depois de 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 o formulário de avaliação PAT adequado. Um 'PAT' é uma Ferramenta de Avaliação de Progresso que é um formulário que preenche para aprofundar seu aprendizado. Pode também reagir a outros PATs para aprendermos juntos.
> Para estudo adicional, recomendamos seguir estes módulos e trajetos 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 caminhos de aprendizagem [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott).
**Professores**, temos [algumas sugestões](for-teachers.md) sobre como usar este currículo.
**Professores**, incluímos [algumas sugestões](for-teachers.md) sobre como usar este currículo.
---
## Vídeos explicativos
## Guias em Vídeo
Algumas das lições estão disponíveis em formato vídeo curto. Pode encontrá-los incorporados 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 das lições estão disponíveis em vídeo curto. 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.
[](https://aka.ms/ml-beginners-videos)
@ -97,7 +96,7 @@ Algumas das lições estão disponíveis em formato vídeo curto. Pode encontrá
@ -107,73 +106,72 @@ Algumas das lições estão disponíveis em formato vídeo curto. Pode encontrá
## Pedagogia
Escolhemos dois princípios pedagógicos ao construir este currículo: garantir que é prático **baseado em projetos** e que inclui **questionários 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 e **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 esteja alinhado com os projetos, o processo torna-se mais envolvente para os estudantes e a retenção de conceitos será aumentada. Além disso, um questionário de baixo risco antes da aula define a intenção do estudante para aprender o tema, enquanto um segundo questionário após a aula assegura maior retenção. Este currículo foi desenhado para ser flexível e divertido e pode ser feito na totalidade ou em parte. Os projetos começam pequenos e tornam-se progressivamente mais 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 estudantes e a retenção de conceitos é aumentada. Além disso, um quiz de baixo risco antes da aula define a intenção do aluno na aprendizagem de um tópico, enquanto um segundo quiz após a aula assegura maior retenção. Este currículo foi concebido para ser flexível e divertido e pode ser realizado na totalidade ou em partes. Os projetos começam pequenos e tornam-se progressivamente mais complexos ao longo do ciclo de 12 semanas. Este currículo inclui também um posfácio sobre aplicações reais da aprendizagem automática, que pode ser usado como crédito extra ou como base para discussão.
> Consulte as nossas diretrizes [Código de Conduta](CODE_OF_CONDUCT.md), [Contribuir](CONTRIBUTING.md), [Traduções](..), e [Resolução de Problemas](TROUBLESHOOTING.md). Agradecemos o seu feedback construtivo!
> Encontre o nosso [Código de Conduta](CODE_OF_CONDUCT.md), [Contributos](CONTRIBUTING.md), [Traduções](..) e [Resolução de Problemas](TROUBLESHOOTING.md). Agradecemos o seu feedback construtivo!
> **Uma nota sobre linguagens**: 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**, o qual 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 saídas como PDF) num `documento Markdown`. Como tal, serve como uma estrutura exemplar de escrita para ciência de dados, pois permite combinar o seu código, a sua saída e as suas ideias ao possibilitar que as escreva em Markdown. Além disso, documentos R Markdown podem ser renderizados para formatos de saída como PDF, HTML ou Word.
> **Uma nota sobre questionários**: Todos os questionários estão contidos na [pasta Quiz App](../../quiz-app), são 52 questionários no total, cada um com três questões. Eles estão ligados a partir das lições, mas a aplicação do questionário pode ser executada localmente; siga as instruções na pasta `quiz-app` para hospedar localmente ou para fazer deploy no Azure.
| Número da Lições | 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 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) | Aprender a história subjacente a esta área | [Lição](1-Introduction/2-history-of-ML/README.md) | Jen and 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 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) | Quais técnicas os investigadores de ML usam para construir modelos ML? | [Lição](1-Introduction/4-techniques-of-ML/README.md) |Chris and Jen |
| 05 | Introdução à regressão | [Regressão](2-Regression/README.md) | Comece a usar 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) | Visualizar e limpar dados para 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) | 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 and Dmitry • Eric Wanjau |
| 08 | Preços de abóboras 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 Web App 🔌 | [Web App](3-Web-App/README.md) | Construir uma aplicação 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 and Cassie • Eric Wanjau |
| 11 | Cozinhas deliciosas asiáticas e indianas 🍜 | [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 and Cassie • Eric Wanjau |
| 12 | Cozinhas 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 and Cassie • Eric Wanjau |
| 13 | Cozinhas deliciosas asiáticas e indianas 🍜 | [Classificação](4-Classification/README.md) | Construir uma aplicação 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 a clustering | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 15 | Explorar 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) | 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) | Aprofundar o seu conhecimento em PLN entendendo as tarefas comuns necessárias para 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 na Europa ♥️ | [Processamento de linguagem natural](6-NLP/README.md) | Análise de sentimento com críticas de hotéis 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | Hotéis românticos na Europa ♥️ | [Processamento de linguagem natural](6-NLP/README.md) | Análise de sentimento com críticas de hotéis 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | Introdução a 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 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 o Peter a evitar o lobo! 🐺 | [Aprendizado por reforço](8-Reinforcement/README.md) | Aprendizado por reforço com Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| Pós-escrito | Cenários e aplicações reais de ML | [ML no Mundo Real](9-Real-World/README.md) | Aplicações interessantes e reveladoras no mundo real de ML clássico | [Lição](9-Real-World/1-Applications/README.md) | Equipa |
| Pós-escrito | Debugging de modelo em ML usando dashboard RAI | [ML no Mundo Real](9-Real-World/README.md) | Debugging de modelo em machine learning usando componentes do dashboard Responsible AI | [Lição](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> **Uma nota sobre 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á para a 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 saídas como PDF) num `documento Markdown`. Como tal, serve como um exemplo de estrutura de autoria para ciência de dados, pois permite combinar o seu código, a sua saída e os seus pensamentos ao permitir que os escreva 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), totalizando 52 quizzes de três perguntas cada. Estão ligados dentro das lições, mas a aplicação de quizzes pode ser executada localmente; siga as instruções na pasta `quiz-app` para hospedar localmente ou implantar no Azure.
| Número da Lição | Tema | 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 | 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 and 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 de 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 and 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 da 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 da 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 and Dmitry • Eric Wanjau |
| 08 | Preços da 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 Web App 🔌 | [Web App](3-Web-App/README.md) | Construir uma aplicação 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 and Cassie • Eric Wanjau |
| 11 | Deliciosas cozinhas asiáticas e indianas 🍜 | [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 and 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 and Cassie • Eric Wanjau |
| 13 | Deliciosas cozinhas asiáticas e indianas 🍜 | [Classificação](4-Classification/README.md) | Construir uma aplicação 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 na 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 PLP construindo um bot simples | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | Tarefas comuns de PLP ☕️ | [Processamento de linguagem natural](6-NLP/README.md) | Aprofundar o seu conhecimento em PLP, entendendo as 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 na 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 na 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 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 | ⚡️ Uso mundial de energia ⚡️ - 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 | Ajudar o 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 vida real](9-Real-World/README.md) | Aplicações interessantes e reveladoras do ML clássico | [Lição](9-Real-World/1-Applications/README.md) | Equipa |
| Pós-escrito | 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 painel 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 [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, escreva`docsify serve`. O site será servido na porta 3000 no seu localhost: `localhost:3000`.
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) na sua máquina local e depois, na pasta raiz deste repositório, digite `docsify serve`. O website 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
## 🎒 Outros Cursos
A nossa equipa produz outros cursos! Confira:
A nossa equipa produz outros cursos! Veja:
<!-- CO-OP TRANSLATOR OTHER COURSES START -->
### LangChain
@ -182,57 +180,68 @@ A nossa equipa produz outros cursos! Confira:
[](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
---
### Azure / Edge / MCP / Agents
### 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/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/ai-agents-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)
---
### Série de IA Generativa
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/generative-ai-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)
---
### 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)
[](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
[](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)
[](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### Série Copilot
[](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)
[](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 ficar bloqueado ou tiver alguma dúvida sobre como criar aplicações de IA. Junte-se a outros aprendizes e programadores experientes em discussões sobre o MCP. É uma comunidade de apoio onde as perguntas são bem-vindas e o conhecimento é partilhado livremente.
Se ficar preso ou tiver dúvidas enquanto aprende Aprendizagem Automática ou desenvolve aplicações de IA, não se preocupe — a ajuda está disponível.
- Reveja os cadernos após cada aula para melhor compreensão.
- Pratique implementar algoritmos por conta própria.
## Dicas Adicionais para Aprendizagem
- Reveja os notebooks após cada lição para melhor compreensão.
- Pratique implementar algoritmos por si próprio.
- 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 pela precisão, por favor 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 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 erradas resultantes da utilização desta tradução.
**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 no seu idioma nativo 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 erradas decorrentes do uso desta tradução.