<jupyter_start><jupyter_text>Trabajo Práctico 2: Predicción de precios de propiedades usando modelos de ML de regresón Lineal   Table of Contents* [Objetivos del trabajo 1](Objetivos)     * [Estratégia 1.1](Estratégia_1_1)    * [Dataframes y modelos 1.2](Exploracion_datasets_modeltos_1_2)        * [Dataframes 1.2.1](Datasets_1_2_1)        * [Modelos 1.2.2](Modelos_1_2_2)* [Ejecucion de Modelos 2](chapter2)    * [Modelo 1 2.1](section_2_1)    * [Section 2.2](section_2_2)  Objetivos del Trabajo 1   El objetivo del trabajo es entrenar y ajustar un modelo de Machine Learning para predecir el precio de propiedades a la venta en Argentina  Estratégia 1.1   Se definieron las variables más relevantes para el precio de una propiedad en la Argentina Barrio, y tipo de propiedad. En seguida algunas amenities que son muy relevantes en el precio como garage y superficie descubirerta, también son creadas como variables dummmies. Se investigaron amenities que son indicadores de propiedades mas caras y caracteristicas que son indicadores de propiedades mas baratas que también serán pasadas al modelo  Dataframes y Modelos 1.2   Creamos un nuevo dataframe con las variables de interes filtradas y lo salvamos como archivo para levantarlo en esta notebook para alivianar el peso y tiempo de procesamento. A partir del nuevo dataset ajustado con las variables tipo de propiedad, barrio, preciodolar, m2 promedio, amenities, cochera, metros descupbiertos y amenities premium e caracteristicas que restan (colocar bien los nombres aqui). Hacemos selecciones de variables o segmentamos para entrenar y comparar los modelos.  Los modelos que se probarán son Regresión lineal de multiples variables y Regresión lineal de multiples variables con normalización  Dataframes 1.2.1   Los dataframes que construiremos son: a. dfA: Agrupacion por barrio, tipo de propiedad dummmie, garage, superficie descubierta, amenities, amenities premium, caracteristicas que restan. Target precio dolar b. dfB: Agrupados por regiones (captial federal, GranBA, capitalesInterior, zonaRural) tipo de propiedad dummmie,garage, superficie descubierta, amenities, amenities premium, caracteristicas que re c. dfC: Agrupacion por barrio, tipo de propiedad dummmie, garage, superficie descubierta, amenities, amenities premium, caracteristicas que restan. Target precio dolar promedio.<jupyter_code>import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
import pandas as pd
import seaborn as sns
Import sklearn as sk
from sklearn import linear_model
from sklearn.metrics import r2_score

from sklearn.model_selection import train_test_split<jupyter_output><empty_output><jupyter_text>Análisis del dfA<jupyter_code># aqui presentamos los dataframes seleccionados, sus metricas, columnas y analisis.
#DatasetA = pd.read_csv('../Data/DatasetA.csv')
#df = pd.DataFrame(DatasetA.data, columns=DatasetA.feature_names)

#df.head()
#df.shape
#df.sample(10)
# Definimos parámetros globales para matplotlib.
plt.rcParams['figure.figsize'] = (8, 6)
plt.rcParams['font.size'] = 16
# Ploteamos puntos con Pandas
df.plot(kind='scatter', x='temp', y='total', alpha=0.2);
# Ajuste con Seaborn (modelo lineal) 
sns.lmplot(x='temp', y='total', data=df, aspect=1.45,\
                                scatter_kws={'alpha':0.2});<jupyter_output><empty_output><jupyter_text>Analisis del dfB<jupyter_code>##### Analisis del dfC<jupyter_output><empty_output><jupyter_text>Proximos pasos  Se definió entrenar los modelos con el dfX por causa de XXXXX  Modelos 1.2.2   Regresión lineal múltiple y con regularización dfX<jupyter_code># Ajustamos el modelo usando solamente las variables cuantitativas y dummmies

X = dfX[['XX', 'XX']]
y = dfX['XX']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.35, random_state=10)

lm = linear_model.LinearRegression()

model_1 = lm.fit(X_train, y_train)

print('Score model_1:', model_1.score(X_test, y_test))<jupyter_output><empty_output><jupyter_text>Regresión lineal múltiple con regularizacion dfX<jupyter_code># Ajustamos el modelo usando solamente las variables cuantitativas aplicando regularización
lm_ridge = linear_model.RidgeCV(alphas=[0.1, 1, 10], normalize=True) 
# Definimos el rango de de búsqueda del hiperparametro explicitamente

model_2 = lm_ridge.fit(X_train, y_train)

print('Score model_2:', model_2.score(X_test, y_test))
#Ahora entrenamos el modelo con todas las variables con MCO:

X_all = df.drop(['sx', 'rk', 'dg', 'sl'], axis=1) 

X_all_train, X_all_test, y_all_train, y_all_test = train_test_split(X_all, y, test_size=0.35, random_state=10)

model_3 = lm.fit(X_all_train, y_all_train)

print('Score model_3:', model_3.score(X_all_test, y_all_test))
# Ahora entrenamos el modelo con todas las variables con Ridge:

lm_ridge = linear_model.RidgeCV(alphas=[0.00001, 0.00005, 0.0001, 0.0005, 0.001, 0.005, 0.01,\
                                        0.05, 0.1, 1, 5, 10],\
                                        normalize=True, cv=3) 
# Definimos el rango de de búsqueda del hiperparametro explicitamente

model_4 = lm_ridge.fit(X_all_train, y_all_train)

print('Score model_4:', model_4.score(X_all_test, y_all_test))
lm_ridge.alpha_
# Ahora entrenamos el modelo con todas las variables con Lasso:

lm_lasso = linear_model.LassoCV(alphas=[0.00001, 0.00005, 0.0001, 0.0005, 0.001, 0.005, 0.01,\
                                        0.05, 0.1, 1, 5, 10, 15, 25],\
                                        normalize=True, cv=3)

model_5 = lm_lasso.fit(X_all_train, y_all_train)

print('Score model_5:', model_5.score(X_all_test, y_all_test))<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.08582621082621082, 'fraction_numerical': 0.03205128205128205, 'mean_word_length': 4.772867420349435, 'pattern_counts': {'":': 0, '<': 21, '<?xml version=': 0, '>': 21, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '5', 'dir': 'jupyter-structured-clean-dedup', 'id': '210648', 'license': 'Apache-2.0', 'n_tokens_mistral': 2053, 'n_tokens_neox': 1951, 'n_words': 588, 'path': 'tp2/TP 2 ML models.ipynb', 'repo_name': 'stoklemariano/digitalhouse-group2-tp2', 'size': '5616'}