#!/usr/bin/env python # coding: utf-8 # REGRESIÓN LINEAL SIMPLE # In[1]: #Importacion ded librerias import pandas as pd import numpy as np import matplotlib.pyplot as plt get_ipython().run_line_magic('matplotlib', 'inline') # In[2]: from google.colab import drive import os drive.mount('/content/drive') # Establecer ruta de acceso en drive import os print(os.getcwd()) os.chdir("/content/drive/My Drive") print(os.getcwd()) # In[3]: #Importacion de los datos dataset = pd.read_csv("student_scores.csv", sep = ",") # In[4]: #Vemos el dataset dataset.head() # In[5]: #Shape dataset.shape # In[6]: #Analisis estadistico basico dataset.describe() # In[7]: #Ploteamos el dataset dataset.plot(x='Hours', y='Scores', style="o") plt.title('Hours vs Percentage') plt.xlabel('Hours Studied') plt.ylabel('Percentage Score') plt.show() # In[8]: #Preparacion de datos X = dataset.iloc[:, :-1].values y = dataset.iloc[:, 1].values # In[9]: X # In[10]: y # In[11]: #Empezamos a crear nuestro modelo from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # In[12]: #Entrenando el modelo from sklearn.linear_model import LinearRegression regressor = LinearRegression() regressor.fit(X_train, y_train) # In[13]: #Recuperamos la intersección print(regressor.intercept_) # In[14]: #La pendiente print(regressor.coef_) # In[15]: #Hacemos nuestras predicciones y_pred = regressor.predict(X_test) y_pred # El y_pred es una matriz numpy que contiene todos los valores predichos para los valores de entrada en la X_test # In[16]: #Convertimos en df la salida df = pd.DataFrame({'Actual': y_test, 'Predicted': y_pred}) df # **Evaluación del modelo**: # # El último paso es evaluar el rendimiento del algoritmo. Este paso es particularmente importante para comparar qué tan bien funcionan los diferentes algoritmos en un conjunto de datos en particular. Para los algoritmos de regresión, se utilizan comúnmente tres métricas de evaluación: # # * El error absoluto medio (MAE) # * El error cuadrático medio (MSE) # * Root Mean Squared Error (RMSE) # In[17]: import numpy as np def mse(actual, predicted): return np.mean(np.square(actual-predicted)) # In[18]: def mape(actual, predicted): return np.mean(np.abs((actual - predicted) / actual)) * 100 # In[19]: mape(y_test, y_pred) # In[20]: from sklearn import metrics print('Mean Absolute Error:', metrics.mean_absolute_error(y_test, y_pred)) # MAE print('Mean Squared Error:', metrics.mean_squared_error(y_test, y_pred)) # MSE print('Root Mean Squared Error:', np.sqrt(metrics.mean_squared_error(y_test, y_pred))) # RMSE # In[21]: from sklearn.metrics import r2_score print('El r^2 es:',r2_score(y_test,y_pred)) # REGRESIÓN LINEAL MÚLTIPLE # In[22]: dataset = pd.read_csv("petrol_consumption.csv", sep = ",") # In[23]: #Vemos el head dataset.head() # In[24]: #Estadisticas dataset.describe() # In[25]: #Preparación de datos X = dataset[['Petrol_tax', 'Average_income', 'Paved_Highways','Population_Driver_licence(%)']] y = dataset['Petrol_Consumption'] # In[26]: #Separacion en train y test from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # In[27]: #Entrenamiento del modelo from sklearn.linear_model import LinearRegression regressor = LinearRegression() regressor.fit(X_train, y_train) # Como se dijo anteriormente, en caso de regresión lineal multivariable, el modelo de regresión tiene que encontrar los coeficientes más óptimos para todos los atributos. Para ver qué coeficientes ha elegido nuestro modelo de regresión, podemos ejecutar el siguiente script: # In[28]: regressor.coef_ # In[29]: regressor.intercept_ # In[30]: coeff_df = pd.DataFrame(regressor.coef_, X.columns, columns=['Coefficient']) coeff_df # In[31]: #Realizando las predicciones y_pred = regressor.predict(X_test) # Para comparar los valores de salida reales X_test con los valores predichos, convertimos en df: # In[32]: df = pd.DataFrame({'Actual': y_test, 'Predicted': y_pred}) df # In[33]: #Evaluación de Modelos from sklearn import metrics print('Mean Absolute Error:', metrics.mean_absolute_error(y_test, y_pred)) print('Mean Squared Error:', metrics.mean_squared_error(y_test, y_pred)) print('Root Mean Squared Error:', np.sqrt(metrics.mean_squared_error(y_test, y_pred))) # In[34]: mape(y_test, y_pred) # In[35]: from sklearn.metrics import r2_score r2_score(y_test,y_pred) # # Created in deepnote.com # Created in Deepnote