Tutorial de Python

Pitón INICIO Introducción a Python Python Empezar Sintaxis de Python Comentarios de Python Variables de Python Tipos de datos de Python Números de Python Fundición de Python Cadenas de pitón Booleanos de Python Operadores de Python Listas de Python Tuplas de Python Conjuntos de Python Diccionarios de Python Python si... si no Ciclos while de Python Python para bucles Funciones de Python pitón lambda Matrices de Python Clases/Objetos de Python Herencia de Python Iteradores de Python Alcance de Python Módulos de Python Fechas de Python Python Matemáticas PythonJSON Python expresión regular PIP de Python Prueba Python... Excepto Entrada de usuario de Python Formato de cadenas de Python

Manejo de archivos

Manejo de archivos de Python Python Leer archivos Python escribir/crear archivos Python Eliminar archivos

Módulos de Python

Tutorial NumPy Pandas Tutorial SciPy Tutorial

Matplotlib de Python

Introducción a Matplotlib Matplotlib Comenzar Pyplot de Matplotlib Trazado de Matplotlib Marcadores Matplotlib Línea Matplotlib Etiquetas Matplotlib Cuadrícula Matplotlib Subparcelas de Matplotlib Dispersión de Matplotlib Barras Matplotlib Histogramas de Matplotlib Gráficos circulares de Matplotlib

Aprendizaje automático

Empezando Media Mediana Moda Desviación Estándar percentil Distribución de datos Distribución normal de datos Gráfico de dispersión Regresión lineal Regresión polinomial Regresión múltiple Escala Entrenar/Prueba Árbol de decisión

pitón mysql

MySQL Empezar Crear base de datos MySQL Crear tabla MySQL Insertar MySQL Seleccionar MySQL mysql donde MySQL Ordenar por MySQL Eliminar Tabla desplegable de MySQL Actualización de MySQL Límite MySQL unirse a mysql

Python MongoDB

MongoDB Empezar MongoDB Crear base de datos MongoDB Crear colección Insertar MongoDB MongoDB Buscar Consulta MongoDB MongoDB Ordenar Eliminar MongoDB Colección de eliminación de MongoDB Actualización de MongoDB Límite de MongoDB

Referencia de Python

Descripción general de Python Funciones integradas de Python Métodos de cadenas de Python Métodos de lista de Python Métodos de diccionario de Python Métodos de tupla de Python Métodos de conjuntos de Python Métodos de archivos de Python Palabras clave de Python Excepciones de Python Glosario de Python

Referencia del módulo

Módulo aleatorio Módulo de Solicitudes Módulo de estadísticas Módulo Matemático cMódulo Matemático

Python Cómo

Eliminar duplicados de lista Invertir una cadena Añadir dos números

Ejemplos de Python

Ejemplos de Python Compilador de Python Ejercicios de pitón Cuestionario de Python Certificado de Python

Aprendizaje automático: regresión polinomial


Regresión polinomial

Si sus puntos de datos claramente no se ajustan a una regresión lineal (una línea recta a través de todos los puntos de datos), podría ser ideal para la regresión polinomial.

La regresión polinomial, como la regresión lineal, utiliza la relación entre las variables x e y para encontrar la mejor forma de dibujar una línea a través de los puntos de datos.


¿Como funciona?

Python tiene métodos para encontrar una relación entre puntos de datos y dibujar una línea de regresión polinomial. Le mostraremos cómo usar estos métodos en lugar de pasar por la fórmula matemática.

En el siguiente ejemplo, hemos registrado 18 automóviles cuando pasaban por una cabina de peaje determinada.

Hemos registrado la velocidad del automóvil y la hora del día (hora) en que ocurrió el rebasamiento.

El eje x representa las horas del día y el eje y representa la velocidad:

Ejemplo

Comience dibujando un diagrama de dispersión:

import matplotlib.pyplot as plt

x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]

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

Resultado:

Ejemplo

Importe numpyy matplotlibluego dibuje la línea de Regresión polinomial:

import numpy
import matplotlib.pyplot as plt

x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

myline = numpy.linspace(1, 22, 100)

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

Resultado:

Ejemplo explicado

Importa los módulos que necesites.

Puede aprender sobre el módulo NumPy en nuestro Tutorial NumPy .

Puede aprender sobre el módulo SciPy en nuestro Tutorial SciPy .

import numpy
import matplotlib.pyplot as plt

Cree las matrices que representan los valores de los ejes x e y:

x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]

NumPy tiene un método que nos permite hacer un modelo polinomial:

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

Luego especifique cómo se mostrará la línea, comenzamos en la posición 1 y terminamos en la posición 22:

myline = numpy.linspace(1, 22, 100)

Dibujar el diagrama de dispersión original:

plt.scatter(x, y)

Dibujar la línea de regresión polinomial:

plt.plot(myline, mymodel(myline))

Muestre el diagrama:

plt.show()



R-cuadrado

Es importante saber qué tan bien está la relación entre los valores de los ejes x e y, si no hay relación, la regresión polinomial no se puede usar para predecir nada.

La relación se mide con un valor llamado r-cuadrado.

El valor de r-cuadrado varía de 0 a 1, donde 0 significa que no hay relación y 1 significa 100 % de relación.

Python y el módulo Sklearn calcularán este valor por usted, todo lo que tiene que hacer es alimentarlo con las matrices x e y:

Ejemplo

¿Qué tan bien encajan mis datos en una regresión polinomial?

import numpy
from sklearn.metrics import r2_score

x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

print(r2_score(y, mymodel(x)))

Nota: El resultado 0.94 muestra que hay una muy buena relación y podemos usar la regresión polinomial en futuras predicciones.


Predecir valores futuros

Ahora podemos usar la información que hemos recopilado para predecir valores futuros.

Ejemplo: Intentemos predecir la velocidad de un automóvil que pasa por la cabina de peaje alrededor de las 17:00:

Para hacerlo, necesitamos la misma mymodelmatriz del ejemplo anterior:

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

Ejemplo

Prediga la velocidad de un automóvil que pasa a las 17:00:

import numpy
from sklearn.metrics import r2_score

x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

speed = mymodel(17)
print(speed)

El ejemplo predijo una velocidad de 88,87, que también pudimos leer en el diagrama:


¿Mal ajuste?

Vamos a crear un ejemplo donde la regresión polinomial no sería el mejor método para predecir valores futuros.

Ejemplo

Estos valores para los ejes x e y deberían dar como resultado un ajuste muy malo para la regresión polinomial:

import numpy
import matplotlib.pyplot as plt

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]

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

myline = numpy.linspace(2, 95, 100)

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

Resultado:

¿Y el valor de r-cuadrado?

Ejemplo

Debería obtener un valor de r cuadrado muy bajo.

import numpy
from sklearn.metrics import r2_score

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]

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

print(r2_score(y, mymodel(x)))

El resultado: 0,00995 indica una relación muy mala y nos dice que este conjunto de datos no es adecuado para la regresión polinomial.