<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Clase 8
Step1:  Cargo los datos que vienen de  <a href='https
Step2:  Propiedades en Bogotá
Step3:  Propiedades que el precio esta en COP
Step4:  Propiedades en venta
Step5:  Me voy a quedar con casas (tarea hacerlo con los dos)
Step6:  Nos quedamos con las observaciones completas, si tiene NaN, las tiro (paso debatible)
Step7:  Enfoque de validación
Divido la muestra en 80% entrenamiento, 20% prueba
Step8:  Lasso
<ASSISTANT_TASK:>
Python Code:
#cargar librerias
import pandas as pd 
import numpy as np
Explanation: Clase 8: Big Data and Machine Learning en el Mercado Inmobiliario. Educación Continua
El siguiente  cuaderno limpia los datos que use durante la clase teórica e implementa lo mostrado en clase.
End of explanation
df = pd.read_csv('co_properties.csv.gz', compression='gzip', header=0,    sep=',', quotechar='"')
df.head()
df.l3.value_counts()
Explanation: Cargo los datos que vienen de  <a href='https://www.properati.com.co'>Properati</a> y fueron descargados el 26 de Marzo de 2022.
End of explanation
df=df[df['l3']=='Bogotá D.C']
df.l3.value_counts()
Explanation: Propiedades en Bogotá
End of explanation
df.groupby('currency').agg({'id':'count'})
df=df[df['currency']=='COP']
df.operation_type.value_counts()
Explanation: Propiedades que el precio esta en COP
End of explanation
df=df[df['operation_type']=='Venta']
df.property_type.value_counts()
Explanation: Propiedades en venta
End of explanation
#df=df[(df['property_type']=='Casa') | (df['property_type']=='Apartamento')]
df=df[df['property_type']=='Casa']
df.property_type.value_counts()
df=df[[ 'price', 'rooms', 'bedrooms', 'bathrooms', 'surface_total', 'surface_covered','lat','lon']]
df.head()
Explanation: Me voy a quedar con casas (tarea hacerlo con los dos)
End of explanation
df=df.dropna()
df.head()
df.shape
Explanation: Nos quedamos con las observaciones completas, si tiene NaN, las tiro (paso debatible)
End of explanation
from sklearn.model_selection import train_test_split
train, test = train_test_split(df, test_size=0.2,random_state=123)
y_train= train['price']
X_train=train.drop(columns=['price'])
y_test= test['price']
X_test=test.drop(columns=['price'])
from sklearn.linear_model import LinearRegression
model1 = LinearRegression().fit(X_train[['rooms']],y_train)                                     
 y_pred = model1.predict(X_test[['rooms']])
y_pred[0:10]
from sklearn.metrics import mean_squared_error
mean_squared_error(y_test,y_pred)
Explanation: Enfoque de validación
Divido la muestra en 80% entrenamiento, 20% prueba
End of explanation
#llamamos la libreria
from sklearn.linear_model import Lasso
# Definimos el modelo
model1 = Lasso(alpha=0.01).fit(X_train[['rooms']],y_train)
print(np.round_(model1.coef_,decimals=2))
# Aumentamos la penalidad a 1000000
model2 = Lasso(alpha=1000000).fit(X_train[['rooms']],y_train)
print(np.round_(model2.coef_,decimals=2))
# Aumentamos la penalidad a 10000000
model3 = Lasso(alpha=10000000).fit(X_train[['rooms']],y_train)
print(np.round_(model3.coef_,decimals=2))
# Aumentamos la penalidad a 100000000000000000
model4 = Lasso(alpha=100000000000000000).fit(X_train[['rooms']],y_train)
print(np.round_(model4.coef_,decimals=2))
Explanation: Lasso
End of explanation
<END_TASK>