0% encontró este documento útil (0 votos)
80 vistas5 páginas

Programación Lineal en Python

Este documento resume los pasos para realizar un modelo de regresión lineal en Python utilizando los paquetes Scikit-Learn, Pandas y Matplotlib. Primero se cargan los datos y se seleccionan las variables explicativa (PIB per cápita) y explicada (esperanza de vida). Luego se crea e implementa un modelo de regresión lineal y se grafican los resultados, incluyendo la recta predicha por el modelo. Finalmente, se calcula el coeficiente de determinación R2, el cual indica que este modelo lineal solo explica el 34% de la

Cargado por

emi
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
80 vistas5 páginas

Programación Lineal en Python

Este documento resume los pasos para realizar un modelo de regresión lineal en Python utilizando los paquetes Scikit-Learn, Pandas y Matplotlib. Primero se cargan los datos y se seleccionan las variables explicativa (PIB per cápita) y explicada (esperanza de vida). Luego se crea e implementa un modelo de regresión lineal y se grafican los resultados, incluyendo la recta predicha por el modelo. Finalmente, se calcula el coeficiente de determinación R2, el cual indica que este modelo lineal solo explica el 34% de la

Cargado por

emi
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 5

Programación Lineal en python

June 12, 2022

Regresión lineal en python


Lo primero que haremos sera cargar los paquetes necesarios para realizar la regresión lineal
• pandas
nos ayudara a manejar la base de datos, leer y administrar los archivos tipo excel,csv,da etc.
• matplotlib.pyplot
nos ayudara a realizar los graficos, siendo parecido a ggplot en R.
• os
nos ayudara a desplazarnos entre directorios de nuestro computador.
• sklearn
de aqui importaremos el paquete LinearRegression con el que realizaremos nuestro modelo de
regresión lineal.
• warnings
Este paquete puede ser omitido, solo lo utilizo para mostrar un resultado mas limpio en el archivo
final.
[4]: ### importar paquetes para trabajar
import pandas as pd
import matplotlib.pyplot as mlp
import os

### importar el paquete para regresión lineal


from sklearn.linear_model import LinearRegression

## ignorar las advertencias


import warnings
warnings.filterwarnings('ignore')
warnings.simplefilter('ignore')

acontinuación nos dirigimos a la carpeta donde se encuentra nuestra base de datos; como se puede
ver en el codigo le di una dirección absoluta, un truco para hacer esto es comenzar con un “/”
jupyter lab nos ayudara autocompletando la dirección de las carpetas.

1
una vez estemos dentro de ese directorio guardamos la base de datos que queremos utilizar, en este
caso mi base de datos se llama “mundo.csv”, la guardamos dentro de la variable datos, y vemos las
primeras 10 observaciones
podemos ver que todas las columnas representan una variable:
• country: representa el pais
• year: año de la observación
• population: población del pais
• continent: continente del pais
• life_exp: expectativa de vida
• gdp_cap: pib per capita
[5]: ## ingresamos a la carpeta de trabajo que contiene nuestra base de datos
os.chdir("/home/lastra/Escritorio/programacion/lenguajes/python/ciencia de␣
↪datos/")

[6]: datos = pd.read_csv("mundo.csv") ## cargamos la base de datos

datos.head(10) ## primeras 10 observaciones

[6]: country year population continent life_exp gdp_cap


0 Afghanistan 1952 8425333 Asia 28.801 779.445314
1 Afghanistan 1957 9240934 Asia 30.332 820.853030
2 Afghanistan 1962 10267083 Asia 31.997 853.100710
3 Afghanistan 1967 11537966 Asia 34.020 836.197138
4 Afghanistan 1972 13079460 Asia 36.088 739.981106
5 Afghanistan 1977 14880372 Asia 38.438 786.113360
6 Afghanistan 1982 12881816 Asia 39.854 978.011439
7 Afghanistan 1987 13867957 Asia 40.822 852.395945
8 Afghanistan 1992 16317921 Asia 41.674 649.341395
9 Afghanistan 1997 22227415 Asia 41.763 635.341351

una vez tenemos hemos cargados esos datos, procedamos a analizar la correlación de variables
numericas con un grafico de disperción entre las variables “gpd_cap” y “life_exp”; no parece
existir una relación directa como se ve en el grafico siguiente:
[7]: mlp.scatter(datos["gdp_cap"], datos["life_exp"], s= 50, c="red")
mlp.title("Pib per capita vs esperanza de vida")
mlp.xlabel("Pib per capita")
mlp.grid()
mlp.ylabel("Esperanza de vida")

[7]: Text(0, 0.5, 'Esperanza de vida')

2
Seleccionamos la variable explicada y explicativa Nuestra variable explicada sera “life_exp” y esta
estara explicada por la variable independiente “gdp_cap”
recordemos que: * life_exp esperanza de vida * gdp_cap pib per capita
luego en la variable modelo guardamos el modelo que usaremos es decir LinearRegression, luego lo
aplicamos con el metodo fit; el parametro “X” guardara nuestra variable explicativa y el parametro
“y” contendra nuestra variable explicada.
luego vemos los resultados del modelo con el metodo __ dict __
[8]: explicativa = datos[["gdp_cap"]] # v. independiente
explicada = datos[["life_exp"]] # v. dependiente

modelo = LinearRegression()

modelo.fit(X= explicativa, y = explicada) ## corremos el modelo

modelo.__dict__ ## vemos los resultados del modelo

[8]: {'fit_intercept': True,


'normalize': 'deprecated',
'copy_X': True,
'n_jobs': None,
'positive': False,

3
'feature_names_in_': array(['gdp_cap'], dtype=object),
'n_features_in_': 1,
'coef_': array([[0.00076488]]),
'rank_': 1,
'singular_': array([406791.72229685]),
'intercept_': array([53.95556088])}

De toda la información que nos muestra el modelo; las dos partes que mas nos interesan son:
• intercept nos muestra el valor que toma la regresión cuando las variables independientes son
iguales a 0
• coef nos muestra el valor que toman los multiplicadores de las variables independientes
entonces la regresión de nuestro modelo se puede expresar de la siguiente manera :

𝑦 = 53.95 + 0.0007 ⋅ 𝑋

entonces aplicamos el modelo con el metodo predict, y se lo aplicamos a valores de X, es decir


nuestra variable explicativa que es “gdp_cap” esto nos devolvera una matriz de valores que son
resultado de aplicar la regresión, y dicha matriz la incluimos en el dataframe con el nombre de
prediccion, con el metodo insert y vemos los primeros 10 datos.
[9]: prediccion = modelo.predict(X = datos[["gdp_cap"]])

## añadimos la prediccion a la base de datos

datos.insert(0, "prediccion", prediccion)

datos.head(10)

[9]: prediccion country year population continent life_exp gdp_cap


0 54.551745 Afghanistan 1952 8425333 Asia 28.801 779.445314
1 54.583417 Afghanistan 1957 9240934 Asia 30.332 820.853030
2 54.608083 Afghanistan 1962 10267083 Asia 31.997 853.100710
3 54.595154 Afghanistan 1967 11537966 Asia 34.020 836.197138
4 54.521560 Afghanistan 1972 13079460 Asia 36.088 739.981106
5 54.556845 Afghanistan 1977 14880372 Asia 38.438 786.113360
6 54.703625 Afghanistan 1982 12881816 Asia 39.854 978.011439
7 54.607544 Afghanistan 1987 13867957 Asia 40.822 852.395945
8 54.452231 Afghanistan 1992 16317921 Asia 41.674 649.341395
9 54.441522 Afghanistan 1997 22227415 Asia 41.763 635.341351

acto seguido, volvemos a realizar el grafico de disperción y incluimos una recta de color rojo con
los valores predichos por el modelo.
[10]: mlp.scatter(datos["gdp_cap"], datos["life_exp"], s= 50, c="blue")
mlp.plot(datos["gdp_cap"], datos["prediccion"], "r--", c="red")
mlp.title("Pib per capita vs esperanza de vida")

4
mlp.xlabel("Pib per capita")
mlp.grid()
mlp.ylabel("Esperanza de vida")

[10]: Text(0, 0.5, 'Esperanza de vida')

medimos que tanto predice nuestro modelo con la bonda de ajuste o el R cuadrado.
[82]: modelo.score(X=explicativa, y=explicada)

[82]: 0.34071295111023236

este modelo unicamente explica el 34% de la variación real de los datos, es decir una regresión lineal
no seria muy util para explicar el valor de la esperanza de vida.

También podría gustarte