Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

R peralva/machlearning #422

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Large diffs are not rendered by default.

1,318 changes: 1,318 additions & 0 deletions content/brazilian-portuguese/machine-learning/FIFA_Linear_Regression.ipynb

Large diffs are not rendered by default.

41 changes: 41 additions & 0 deletions content/brazilian-portuguese/machine-learning/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
---
title: "Python: aprendizado de máquina"
description: "Fundamentos de Aprendizado de máquina"
prereq: "Nenhum"
difficulty: "Intermediário"
draft: false
---

## Vamos aprender um pouco de aprendizado de máquina para avaliar as classificações gerais dos jogadores no videogame FIFA

O aprendizado de máquina é a ciência que estuda *algoritmos* e *modelos* que permitem aos computadores reconhecer coisas, tomar decisões e até mesmo prever resultados sem instruções explícitas. Por exemplo, ao falar com o assistente do seu telefone, como Siri ou Cortana, o aprendizado de máquina ajuda a traduzir sua voz em texto e a entender melhor o que você solicitou. Isso é incrível?

Hoje vamos mostrar como *ensinar* um computador a avaliar as classificações gerais de jogadores de futebol com base em seus atributos, passo a passo.

Vamos lá!

## Um pouco de base

Suponha que exista uma fórmula para calcular as classificações "gerais" dos jogadores de futebol da EA Sports (desenvolvedora do FIFA 2019). Com esta fórmula, podemos calcular facilmente as classificações gerais de qualquer jogador, mesmo que ele não esteja no jogo. O problema é que não sabemos exatamente como é a fórmula. <br>
Conhecemos a *entrada* que consiste nos atributos do jogador e a *saída* que são as classificações gerais. Então podemos usar uma abordagem chamada “regressão” para “estimar” a fórmula com base na entrada/saída.

Hoje vamos usar um modelo simples chamado Regressão Linear.
Suponhamos que a fórmula que calcula as classificações gerais do jogador de futebol \( y = f(x)\) seja
\[
f(x) = ax + b
\]
A regressão linear visa descobrir \(a\) e \(b\). A fórmula \(f(x)\) é chamada de "modelo" em aprendizado de máquina, e o processo de resolver/estimar o modelo é chamado de "treinamento" do modelo. Depois de treinarmos o modelo, podemos usá-lo para prever o alvo \(y\) de novos dados.

Voltando à nossa história, se tivermos apenas 1 variável \(x\), estimar \(f(x)\) deve ser fácil. Todos deveriam ser capazes de resolvê-lo com uma caneta e um pedaço de papel. Porém, quando \(x\) é uma longa lista de atributos dos jogadores de futebol como velocidade, potência, passe, desarme, fica complicado. A fórmula deve ser reescrita em
\[
f(x_1, x_2, ..., x_n) = a_1 * x_1 + a_2 * x_2 + ... + a_n * x_n + b
\]
Então temos que alimentar o modelo com muitos dados de alta qualidade para torná-lo mais próximo da fórmula “real”. Vamos começar!


## Tabela de Conteúdos

<details close>
<summary>Tabela de Conteúdos</summary>
{{% children /%}}
</details>
22 changes: 22 additions & 0 deletions content/brazilian-portuguese/machine-learning/closing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
title: "Fechamento"
description: "Fundamentos de Aprendizado de máquina"
prereq: "Nenhum"
difficulty: "Intermediário"
draft: false
weight: 8
---

Bom trabalho! Você conseguiu!

A seguir, você pode brincar um pouco com esse conjunto de dados.

- Tente selecionar jogadores em outra posição, ou seja, goleiro (“GK”), quais características serão as mais correlacionadas? quais serão os recursos que você selecionou?
- Altere os recursos selecionados. Isso alterará os resultados da previsão do modelo?
- Altere a proporção de dados de treinamento/teste, veja o que acontecerá.
- Altere a variável alvo, por exemplo, 'Value' ou 'Wage'. Tente descobrir como converter o conteúdo em valor numérico.
- dica: 50k = 50 * 1000, 10M = 10 * 1000 * 1000.

Na aula de hoje, você aprendeu como treinar um modelo de regressão linear para estimar as avaliações gerais de um jogador de futebol. Esperamos que tenham gostado e tenham se inspirado um pouco.

A partir de agora, você pode explorar o site [kaggle](http://kaggle.com) e tentar encontrar outro conjunto de dados para reproduzir. Aplique regressão linear para prever/estimar os resultados. Você ficará surpreso com o que pode ser feito. 👏🏽👏🏽👏🏽
18,208 changes: 18,208 additions & 0 deletions content/brazilian-portuguese/machine-learning/data.csv

Large diffs are not rendered by default.

80 changes: 80 additions & 0 deletions content/brazilian-portuguese/machine-learning/feature-selection.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
---
title: "Etapa 5: seleção de recursos"
description: "Fundamentos de Aprendizado de máquina"
prereq: "Nenhum"
difficulty: "Intermediário"
draft: false
weight: 5
---

Nossa próxima etapa é selecionar os recursos adequados. Seleção de recursos é um termo em aprendizado de máquina para descrever o método e o processo de escolha de recursos relevantes para o modelo. Um recurso é um \(x\) na fórmula. Na nossa história, é um atributo de um jogador de futebol.

Como estamos usando o modelo de regressão linear, a forma como o atributo correlacionado ao alvo ("Geral") torna-se o critério para escolher os recursos corretos.

Usamos uma correlação de função integrada `corr` para calcular a correlação de pares de colunas. Existem três métodos que podemos escolher,
- pearson: coeficiente de correlação padrão
- kendall: coeficiente de correlação Kendall Tau
- spearman: correlação de classificação do lanceiro

Neste tutorial usamos pearson.


```python
# selecione o alvo
target = "Geral"

# Para encontrar a correlação entre as colunas usando o método pearson
feature_corr = train_data.corr(method ='pearson') [target]

# classificar os recursos
feature_corr = feature_corr.sort_values(ascending = False)

# mostra os 20 principais recursos
# observe que começamos de 1 e não de zero, porque o geral está sempre no topo da lista
print(feature_corr[1:21])
```

Positioning 0.904367
Special 0.903856
Finishing 0.899783
BallControl 0.896988
ShotPower 0.877842
Reactions 0.861441
Volleys 0.834433
Composure 0.827529
ShortPassing 0.813074
Dribbling 0.802565
LongShots 0.794059
HeadingAccuracy 0.711129
Vision 0.671054
Skill Moves 0.649300
Curve 0.641426
Crossing 0.603249
Potential 0.593139
Penalties 0.583906
LongPassing 0.575092
FKAccuracy 0.569704
Name: Overall, dtype: float64


Agora podemos copiar e colar os 10 ou 12 principais recursos. (Nota: Por favor, não copie o espaço)


```python
# selecione alguns recursos
features = ["Posicionamento", "Finalização", "Especial", "ControleDeBola",
"ForçaDeTiro", "Reações", "Voleios", "Compostura", "PasseCurto"]
```

Além disso, podemos apenas extrair os nomes dos recursos do índice. Observe que começamos em 1 porque não queremos incluir `geral` quem está sempre no topo da lista.


```python
# extrai nomes de recursos da série
features = feature_corr[1:21].index.tolist()

#mostra as funcionalidades
print(features)
```

['Posicionamento', 'Especial', 'Finalização', 'ControleDeBola', 'ForçaDeTiro', 'Reações', 'Voleios', 'Compostura', 'PasseCurto', 'Drible', 'TirosLongos', 'PrecisãoDeDireção', ' Visão', 'MovimentosDeHabilidade', 'Curva', 'Cruzamento', 'Potencial', 'Penalidades', 'PasseLongo', 'PrecisãoFK']
23 changes: 23 additions & 0 deletions content/brazilian-portuguese/machine-learning/get-dataset.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
title: "Etapa 1: obter conjunto de dados"
description: "Fundamentos de Aprendizado de máquina"
prereq: "Nenhum"
difficulty: "Intermediário"
draft: false
weight: 1
---

FIFA 2019 é um videogame de futebol. Todos os jogadores neste jogo têm uma classificação geral, bem como vários atributos como cruzamento, finalização, etc.

Estamos acessando o site chamado kaggle.com para obter nosso conjunto de dados.

[Conjunto de dados FIFA19](https://www.kaggle.com/karangadiya/fifa19/)

<br>
*Observação: pode ser necessário se cadastrar para obter o link de download*.
<br>

Nesta página você pode encontrar muitas informações sobre este conjunto de dados, reservar um tempo para navegar e familiarizar-se com o conjunto de dados.
![kaggle_fifa_dataset.png](../images/kaggle_fifa_dataset.png)

Depois de baixá-lo, extraia o arquivo zip para uma pasta, digamos `C:\fifa_dataset\`.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
31 changes: 31 additions & 0 deletions content/brazilian-portuguese/machine-learning/load-dataset.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
title: "Etapa 3: carregar conjunto de dados"
description: "Fundamentos de Aprendizado de máquina"
prereq: "Nenhum"
difficulty: "Intermediário"
draft: false
weight: 3
---

Mude `mypath` para a pasta onde você extrai o arquivo do conjunto de dados (ou seja, `C:\fifa_dataset\`). Para verificar se o carregamos com sucesso, usamos uma função chamada `describe()` para imprimir suas estatísticas.


```python
# carrega conjuntos de dados
mypath = "C:/Users/ruilliu/Documents/nuevo_lr_fifa/" # mude para o seu próprio caminho
fifa_data = pd.read_csv(mypath+"data.csv")
fifa_data.describe()
```

---------------------------------------------------------------------------

NameError Traceback (most recent call last)

<ipython-input-3-f099c0f24a52> in <module>()
1 # load datasets
2 mypath = "C:/Users/ruilliu/Documents/nuevo_lr_fifa/" # change it to your own path
----> 3 fifa_data = pd.read_csv(mypath+"data.csv")
4 fifa_data.describe()


NameError: name 'pd' is not defined
Loading