Tutorial Python

Python HOME Introdução ao Python Introdução ao Python Sintaxe do Python Comentários do Python Variáveis ​​Python Tipos de dados Python Números Python Conversão de Python Strings Python Booleanos Python Operadores Python Listas Python Tuplas Python Conjuntos Python Dicionários Python Python Se... Senão Python While Loops Python para loops Funções do Python Python Lambda Matrizes Python Classes/objetos Python Herança Python Iteradores Python Escopo do Python Módulos Python Datas em Python Matemática Python Python JSON Python RegEx Python PIP Python Tente...Exceto Entrada do usuário Python Formatação de String Python

Manipulação de arquivos

Manipulação de arquivos Python Arquivos de leitura do Python Python Gravar/Criar Arquivos Arquivos de exclusão do Python

Módulos Python

Tutorial NumPy Passo a passo do Panda Tutorial Scipy

Python Matplotlib

Introdução ao Matplotlib Introdução ao Matplotlib Matplotlib Pyplot Plotagem Matplotlib Marcadores Matplotlib Linha Matplotlib Etiquetas Matplotlib Grade Matplotlib Subtramas do Matplotlib Dispersão Matplotlib Barras Matplotlib Histogramas Matplotlib Gráficos de pizza Matplotlib

Aprendizado de máquina

Começando Modo Mediano Médio Desvio padrão Percentil Distribuição de dados Distribuição normal de dados Gráfico de dispersão Regressão linear Regressão Polinomial Regressão múltipla Régua Treinar/Teste Árvore de decisão

Python MySQL

Introdução ao MySQL MySQL Criar banco de dados MySQL Criar Tabela Inserir MySQL Seleção do MySQL MySQL Onde MySQL Ordenar por Excluir MySQL Tabela de descarte do MySQL Atualização do MySQL Limite do MySQL Associação do MySQL

Python MongoDB

Introdução ao MongoDB Banco de dados de criação do MongoDB Criar coleção do MongoDB Inserir MongoDB MongoDB Find Consulta do MongoDB Classificação do MongoDB Excluir MongoDB Coleção de Drops do MongoDB Atualização do MongoDB Limite do MongoDB

Referência Python

Visão geral do Python Funções incorporadas do Python Métodos de string do Python Métodos de lista do Python Métodos de dicionário Python Métodos de Tupla Python Métodos de conjunto do Python Métodos de arquivo Python Palavras-chave Python Exceções do Python Glossário Python

Referência do Módulo

Módulo Aleatório Módulo de solicitações Módulo de Estatísticas Módulo de matemática cMódulo de matemática

Python Como fazer

Remover duplicatas de lista Inverter uma string Adicionar dois números

Exemplos de Python

Exemplos de Python Compilador Python Exercícios de Python Teste do Python Certificado Python

Aprendizado de Máquina - Regressão Linear


Regressão

O termo regressão é usado quando você tenta encontrar a relação entre variáveis.

No aprendizado de máquina e na modelagem estatística, esse relacionamento é usado para prever o resultado de eventos futuros.


Regressão linear

A regressão linear usa a relação entre os pontos de dados para desenhar uma linha reta através de todos eles.

Esta linha pode ser usada para prever valores futuros.

Em Machine Learning, prever o futuro é muito importante.


Como funciona?

Python tem métodos para encontrar uma relação entre pontos de dados e desenhar uma linha de regressão linear. Mostraremos como usar esses métodos em vez de passar pela fórmula matemática.

No exemplo abaixo, o eixo x representa a idade e o eixo y representa a velocidade. Registramos a idade e a velocidade de 13 carros que passavam por um pedágio. Vamos ver se os dados que coletamos podem ser usados ​​em uma regressão linear:

Exemplo

Comece desenhando um gráfico de dispersão:

import matplotlib.pyplot as plt

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

plt.scatter(x, y)
plt.show()

Resultado:

Exemplo

Importe scipye desenhe a linha de Regressão Linear:

import matplotlib.pyplot as plt
from scipy import stats

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

slope, intercept, r, p, std_err = stats.linregress(x, y)

def myfunc(x):
  return slope * x + intercept

mymodel = list(map(myfunc, x))

plt.scatter(x, y)
plt.plot(x, mymodel)
plt.show()

Resultado:

Exemplo explicado

Importe os módulos que você precisa.

Você pode aprender sobre o módulo Matplotlib em nosso Tutorial Matplotlib .

Você pode aprender sobre o módulo SciPy em nosso Tutorial SciPy .

import matplotlib.pyplot as plt
from scipy import stats

Crie as matrizes que representam os valores dos eixos x e y:

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

Execute um método que retorne alguns valores importantes da Regressão Linear:

slope, intercept, r, p, std_err = stats.linregress(x, y)

Crie uma função que usa os valores slopee interceptpara retornar um novo valor. Este novo valor representa onde no eixo y o valor x correspondente será colocado:

def myfunc(x):
  return slope * x + intercept

Execute cada valor da matriz x por meio da função. Isso resultará em uma nova matriz com novos valores para o eixo y:

mymodel = list(map(myfunc, x))

Desenhe o gráfico de dispersão original:

plt.scatter(x, y)

Desenhe a linha de regressão linear:

plt.plot(x, mymodel)

Exiba o diagrama:

plt.show()



R para relacionamento

É importante saber como é a relação entre os valores do eixo x e os valores do eixo y, se não houver relação a regressão linear não pode ser usada para prever nada.

Essa relação - o coeficiente de correlação - é chamada r.

O rvalor varia de -1 a 1, onde 0 significa nenhum relacionamento e 1 (e -1) significa 100% relacionado.

Python e o módulo Scipy calcularão esse valor para você, tudo o que você precisa fazer é alimentá-lo com os valores x e y.

Exemplo

Quão bem meus dados se encaixam em uma regressão linear?

from scipy import stats

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

slope, intercept, r, p, std_err = stats.linregress(x, y)

print(r)

Nota: O resultado -0,76 mostra que existe uma relação, não perfeita, mas indica que poderíamos usar regressão linear em previsões futuras.


Prever valores futuros

Agora podemos usar as informações que reunimos para prever valores futuros.

Exemplo: Vamos tentar prever a velocidade de um carro de 10 anos.

Para fazer isso, precisamos da mesma myfunc()função do exemplo acima:

def myfunc(x):
  return slope * x + intercept

Exemplo

Preveja a velocidade de um carro de 10 anos:

from scipy import stats

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

slope, intercept, r, p, std_err = stats.linregress(x, y)

def myfunc(x):
  return slope * x + intercept

speed = myfunc(10)

print(speed)

O exemplo previu uma velocidade de 85,6, que também podemos ler no diagrama:


Ajuste ruim?

Vamos criar um exemplo onde a regressão linear não seria o melhor método para prever valores futuros.

Exemplo

Esses valores para os eixos x e y devem resultar em um ajuste muito ruim para a regressão linear:

import matplotlib.pyplot as plt
from scipy import stats

x = [89,43,36,36,95,10,66,34,38,20,26,29,48,64,6,5,36,66,72,40]
y = [21,46,3,35,67,95,53,72,58,10,26,34,90,33,38,20,56,2,47,15]

slope, intercept, r, p, std_err = stats.linregress(x, y)

def myfunc(x):
  return slope * x + intercept

mymodel = list(map(myfunc, x))

plt.scatter(x, y)
plt.plot(x, mymodel)
plt.show()

Resultado:

E o rpara relacionamento?

Exemplo

Você deve obter um valor muito baixo r.

import numpy
from scipy import stats

x = [89,43,36,36,95,10,66,34,38,20,26,29,48,64,6,5,36,66,72,40]
y = [21,46,3,35,67,95,53,72,58,10,26,34,90,33,38,20,56,2,47,15]

slope, intercept, r, p, std_err = stats.linregress(x, y)

print(r)

O resultado: 0,013 indica um relacionamento muito ruim e nos diz que esse conjunto de dados não é adequado para regressão linear.