<jupyter_start><jupyter_text>Estimación de las emiciones de CO2 con una regrtesión lineal.Autor: <NAME>Infomración de contacto    Tel: +52 55-8290-5977    IG: jesusdev.js    Website: https://jesusdev.netlify.app    Github: github.com/jesus105    Fecha: 13/07/2020 Importamos las librerías<jupyter_code>import matplotlib.pyplot as plt
import pandas as pd
import pylab as pl
import numpy as np
%matplotlib inline<jupyter_output><empty_output><jupyter_text>Importamos el dataset<jupyter_code>!wget -O FuelConsumption.csv https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/ML0101ENv3/labs/FuelConsumptionCo2.csv<jupyter_output>--2020-07-14 01:32:43--  https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/ML0101ENv3/labs/FuelConsumptionCo2.csv
Cargado certificado CA '/etc/ssl/certs/ca-certificates.crt'
Resolviendo s3-api.us-geo.objectstorage.softlayer.net (s3-api.us-geo.objectstorage.softlayer.net)...172.16.17.32
Conectando con s3-api.us-geo.objectstorage.softlayer.net (s3-api.us-geo.objectstorage.softlayer.net)[172.16.17.32]:443...conectado.
Petición HTTP enviada, esperando respuesta...200 OK
Longitud: 72629 (71K) [text/csv]
Grabando a: “FuelConsumption.csv”

FuelConsumption.csv 100%[===================>]  70.93K   422KB/s    en 0.2s    

2020-07-14 01:32:43 (422 KB/s) - “FuelConsumption.csv” guardado [72629/72629]<jupyter_text>Leyendo los datos<jupyter_code>dataset = pd.read_csv("FuelConsumption.csv")

#Mirando la "cabeza" del dataset
dataset.head()<jupyter_output><empty_output><jupyter_text>Explicación de los datosPrimero vamos a tener una exploración descriptiva dentro de nuestros datos<jupyter_code>#Descripción de los datos
dataset.describe()<jupyter_output><empty_output><jupyter_text>Sleccionamos algunas caracteristicas mas para explorar<jupyter_code>caracteristicas = dataset[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_COMB','CO2EMISSIONS']]
caracteristicas.head(10)<jupyter_output><empty_output><jupyter_text>Podemos gráficar cada una de las caracteristicas<jupyter_code>vistas = caracteristicas[['CYLINDERS','ENGINESIZE','CO2EMISSIONS','FUELCONSUMPTION_COMB']]
vistas.hist()
plt.show()<jupyter_output><empty_output><jupyter_text>Ahora graficaremos cada una de las caracteristicas respecto a la emisión de CO2 para ver que tan lineal es su relación Emisiones de CO2 respecto a consumo de combustible.<jupyter_code>plt.scatter(caracteristicas.FUELCONSUMPTION_COMB, caracteristicas.CO2EMISSIONS,  color='blue', alpha=0.08)
plt.xlabel("FUELCONSUMPTION_COMB")
plt.ylabel("Emisiones de CO2")
plt.show()<jupyter_output><empty_output><jupyter_text>Emisiones de CO2 respecto al tamaño de la maquina.<jupyter_code>plt.scatter(caracteristicas.ENGINESIZE, caracteristicas.CO2EMISSIONS,  color='blue', alpha=0.1)
plt.xlabel("Tamaño de la maquina")
plt.ylabel("Emisiones de CO2")
plt.show()<jupyter_output><empty_output><jupyter_text>Emisiones de CO2 respecto al número de cilindros.<jupyter_code>plt.scatter(caracteristicas.CYLINDERS, caracteristicas.CO2EMISSIONS,  color='blue', alpha=0.1)
plt.xlabel("Número de cilindros")
plt.ylabel("Emisiones de CO2")
plt.show()<jupyter_output><empty_output><jupyter_text>Procesamiento de los datos Separación de los datos para entrenamiento y pruebaSeparamos los datos de "train" en entrenamiento y prueba en "test" para probar los algoritmosCon ayuda de la librería NumPy nosotros de manera aleatoria tomamos un 80% De los datos para entrener a nuestro modelo y el otro 20% lo ocuparemos para ponerlo a prueba<jupyter_code>#Seleccionamos el 80% de datos de forma aleatoria así
random = np.random.rand(len(dataset)) < 0.8
#Los datos seleccionados se quedan en la siguiente variable
train = caracteristicas[random]
#El 20% restante se queda en la variable de prueba
test = caracteristicas[~random]<jupyter_output><empty_output><jupyter_text>Seguidamente definimos el algoritmo a utilizar que es el de LinearRegression.<jupyter_code>from sklearn import linear_model
regr = linear_model.LinearRegression()<jupyter_output><empty_output><jupyter_text>Ahora debemos de definir las variables donde estarán almacenados nuestros datos de entrada y salida.<jupyter_code>train_x = np.asanyarray(train[['ENGINESIZE']])
train_y = np.asanyarray(train[['CO2EMISSIONS']])<jupyter_output><empty_output><jupyter_text>Como siguiente paso debemos de entrenar a nuestro modelo y mostrar sus resultados.<jupyter_code>regr.fit (train_x, train_y)
# Aquí estan los valores de W0 y W1
print ('W1: ', regr.coef_[0][0])
print ('W0: ',regr.intercept_[0])<jupyter_output>W1:  39.364231572799554
W0:  124.64191479143221<jupyter_text>Una vez entrenado nuestro modelo debemos mostrar como se verán nuestras predicciones<jupyter_code>plt.scatter(train.ENGINESIZE, train.CO2EMISSIONS,  color='blue', alpha=0.1)
plt.plot(train_x, regr.coef_[0][0]*train_x + regr.intercept_[0], '-r')
plt.xlabel("Tamaño de la maquina")
plt.ylabel("Emisiones de CO2")
<p>Por ultimo debemos de medir la efectividad de nuestro modelo
</p>
from sklearn.metrics import r2_score

test_x = np.asanyarray(test[['ENGINESIZE']])
test_y = np.asanyarray(test[['CO2EMISSIONS']])
test_y_hat = regr.predict(test_x)

print("MAE: %.2f" % np.mean(np.absolute(test_y_hat - test_y)))
print("MSE: %.2f" % np.mean((test_y_hat - test_y) ** 2))
print("puntuación R2: %.2f" % r2_score(test_y_hat , test_y) )<jupyter_output><empty_output><jupyter_text>A partir de esto podemos decir que nuestro modelo tuvo un 71% de efectividad y ahora nos encargaremos de hacer nuestras propias predicciones.<jupyter_code>def emision(tamaño):
    Y = regr.coef_[0][0]*tamaño + regr.intercept_[0]
    return Y

print("Las emisiones de C02 con una máquina de tamaño 3 serán de: %.3f" % emision(3))<jupyter_output>Las emisiones de C02 con una máquina de tamaño 3 serán de: 242.735
{'fraction_non_alphanumeric': 0.11310654463823173, 'fraction_numerical': 0.040580210671731995, 'mean_word_length': 6.977961432506887, 'pattern_counts': {'":': 0, '<': 62, '<?xml version=': 0, '>': 62, 'https://': 3, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 2, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '15', 'dir': 'jupyter-structured-clean-dedup', 'id': '208911', 'license': 'MIT', 'n_tokens_mistral': 2392, 'n_tokens_neox': 2232, 'n_words': 469, 'path': 'sample.ipynb', 'repo_name': 'Jesus105/CO2_emissions_simple', 'size': '5801'}