<jupyter_start><jupyter_text><jupyter_code>import sklearn
from sklearn import datasets
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline<jupyter_output><empty_output><jupyter_text>Boston Dataset<jupyter_code># Trabajaremos con el dataset de precios de casas de boston. 
# Este dataset está incluido en los datasets de sklearn
boston_info = datasets.load_boston()
# Veamos los elementos de los que disponemos
boston_info.keys()
# boston_info
print(boston_info.DESCR)
# Vamos a crear el dataframe
df_boston = pd.DataFrame(boston_info['data'], columns=boston_info.feature_names)
df_boston.head()
# Debemos adicionar la columna que trataremos de predecir, es decir ...
# la columna que almacena el precio de las casas. 
# Median value of owner-occupied homes in $1000's
df_boston['TARGET'] = boston_info['target']
print("Dimensiones del dataset", df_boston.shape )
df_boston.head()
# Estudiemos un poco el dataset
df_boston.describe()
# Analicemos los precios de las casas que trataremos de predecir
# La media de los precios
print("Media de los precios ", df_boston.TARGET.mean())
# El precio min
print("Precio mínimo", df_boston.TARGET.min())
# El precio max
print("Precio máximo", df_boston.TARGET.max())
# Preparemos el dataset para el entrenamiento del modelo
from sklearn.model_selection import train_test_split
# Dividiremos el dataset en dos partes
# Guardaremos el 20% de los datos para que sean parte del dataset de test

test_percentage = 0.20
X_train, X_test, Y_train, Y_test = train_test_split( df_boston[boston_info.feature_names] , df_boston['TARGET'], test_size = test_percentage)
print("X_train: ", X_train.shape, " Y_train: ", Y_train.shape)
print("X_test: ", X_test.shape, " Y_test: ",Y_test.shape )

# Importamos el modelo deseado desde sklearn
from sklearn.linear_model import LinearRegression
# Entrenemos nuestro modelo de regresion lineal
lm = LinearRegression()
lm.fit(X_train, Y_train)
#Intercept:
print(lm.intercept_)
#Slope:
print(lm.coef_)

# Obtengamos predicciones para nuestro dataset de test
Y_pred = lm.predict(X_test)

# Comparemos las predicciones con los valores reales
df_model_res = pd.DataFrame({'Actual': Y_test, 'Predicted': Y_pred})
# Observemos una muestra aleatoria de 10 predicciones
df_model_res.sample(10)

# Comparemos los valores predecidos con los reales
df1 = df_model_res.sample(30)
df1.plot(kind='bar',figsize=(16,10))
plt.grid(which='major', linestyle='-', linewidth='0.5', color='green')
plt.grid(which='minor', linestyle=':', linewidth='0.5', color='black')
plt.show()
# Grafiquemos la linea de regresión lineal identificada por el modelo
plt.plot(Y_test, Y_test, color='green', linewidth=3)
plt.scatter(Y_test, Y_pred)
plt.xlabel("Prices: $Y_i$")
plt.ylabel("Predicted prices: $\hat{Y}_i$")


plt.title("Prices vs Predicted prices: $Y_i$ vs $\hat{Y}_i$")
plt.show()
# Veamos las métricas de evaluación del modelo
# Mean Squared Error
mse = sklearn.metrics.mean_squared_error(Y_test, Y_pred)
print(mse)
# RMSE
rmse = np.sqrt(mse)
print (rmse)
# R2 score
r2_score = sklearn.metrics.r2_score(Y_test, Y_pred)
print(r2_score)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.10846055979643766, 'fraction_numerical': 0.009541984732824428, 'mean_word_length': 6.4174528301886795, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, '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': '2', 'dir': 'jupyter-structured-clean-dedup', 'id': '448469', 'license': 'MIT', 'n_tokens_mistral': 1176, 'n_tokens_neox': 1138, 'n_words': 309, 'path': 'REGRESION/Regression_Boston.ipynb', 'repo_name': 'nathalyAlarconT/HelloML', 'size': '3144'}