diff --git a/features-NLTK.ipynb b/featuresNLTK.ipynb similarity index 55% rename from features-NLTK.ipynb rename to featuresNLTK.ipynb index 09b75af..7d15fdf 100644 --- a/features-NLTK.ipynb +++ b/featuresNLTK.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -28,7 +28,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -40,7 +40,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -61,7 +61,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -87,7 +87,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -120,7 +120,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -130,99 +130,18 @@ "La cantidad de publicaciones con titulo no nulo es: 234613\n", "La cantidad total de publicaciones es: 240000\n" ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
idtitulocant_palabras_mas_frecuentes_titulo
0254099depto. tipo a-4021.0
153461condominio horizontal en venta3.0
2247984casa en venta urbi 3 recamaras tonala3.0
3209067casa sola en toluca zinacantepec con credito i...4.0
4185997paseos del sol2.0
\n", - "
" - ], - "text/plain": [ - " id titulo \\\n", - "0 254099 depto. tipo a-402 \n", - "1 53461 condominio horizontal en venta \n", - "2 247984 casa en venta urbi 3 recamaras tonala \n", - "3 209067 casa sola en toluca zinacantepec con credito i... \n", - "4 185997 paseos del sol \n", - "\n", - " cant_palabras_mas_frecuentes_titulo \n", - "0 1.0 \n", - "1 3.0 \n", - "2 3.0 \n", - "3 4.0 \n", - "4 2.0 " - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" } ], "source": [ - "# Ejemplo de uso de las palabras mas frecuentes\n", - "\n", - "df_palabras = feature_cantidad_mas_frecuentes(df_train, 'titulo', 200)\n", - "df_palabras[['id', 'titulo', 'cant_palabras_mas_frecuentes_titulo']].head()" + "def ejemplo():\n", + " # Ejemplo de uso de las palabras mas frecuentes\n", + " df_palabras = feature_cantidad_mas_frecuentes(df_train, 'titulo', 200)\n", + " df_palabras[['id', 'titulo', 'cant_palabras_mas_frecuentes_titulo']].head()" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -248,7 +167,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -281,104 +200,14 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "La cantidad de publicaciones con titulo no nulo es: 234613\n", - "La cantidad total de publicaciones es: 240000\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
idtitulocant_palabras_menos_frecuentes_titulo
0254099depto. tipo a-4020.0
153461condominio horizontal en venta0.0
2247984casa en venta urbi 3 recamaras tonala0.0
3209067casa sola en toluca zinacantepec con credito i...0.0
4185997paseos del sol0.0
\n", - "
" - ], - "text/plain": [ - " id titulo \\\n", - "0 254099 depto. tipo a-402 \n", - "1 53461 condominio horizontal en venta \n", - "2 247984 casa en venta urbi 3 recamaras tonala \n", - "3 209067 casa sola en toluca zinacantepec con credito i... \n", - "4 185997 paseos del sol \n", - "\n", - " cant_palabras_menos_frecuentes_titulo \n", - "0 0.0 \n", - "1 0.0 \n", - "2 0.0 \n", - "3 0.0 \n", - "4 0.0 " - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "# Ejemplo de uso de las palabras menos frecuentes\n", - "\n", - "df_palabras = feature_cantidad_menos_frecuentes(df_train, 'titulo', 200)\n", - "df_palabras[['id', 'titulo', 'cant_palabras_menos_frecuentes_titulo']].head()" + "def ejemplo():\n", + " # Ejemplo de uso de las palabras menos frecuentes\n", + " df_palabras = feature_cantidad_menos_frecuentes(df_train, 'titulo', 200)\n", + " df_palabras[['id', 'titulo', 'cant_palabras_menos_frecuentes_titulo']].head()" ] } ], diff --git a/features_complementarias.ipynb b/features_complementarias.ipynb new file mode 100644 index 0000000..f379863 --- /dev/null +++ b/features_complementarias.ipynb @@ -0,0 +1,1364 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import ipynb.fs.full.features as features_nltk\n", + "\n", + "# df_train = pd.read_csv('./data/train.csv')\n", + "# df_test = pd.read_csv('./data/test.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "def concatenar_categoricos(df, columna1, columna2, N=0, df_aux=None, devolver_cols=False):\n", + " '''Concatena dos columnas categoricas y hace one hot'''\n", + " '''Ver referencia columna_a_ohe para los ultimos 3 parametros'''\n", + " \n", + " def limpiar_espacios_blanco(texto):\n", + " try:\n", + " return texto.replace(' ', '_')\n", + " except:\n", + " pass\n", + " \n", + " df = df.copy()\n", + " df[columna1] = df[columna1].apply(limpiar_espacios_blanco)\n", + " df[columna2] = df[columna2].apply(limpiar_espacios_blanco)\n", + " df[columna1 + '_' + columna2] = df[columna1] + '_' +df[columna2]\n", + " \n", + " features_nltk\n", + " return features_nltk.columna_a_ohe(df, columna1 + '_' + columna2, N, df_aux, devolver_cols)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def cantidad_propiedad_misma_cantidad(df, agrupar_col, misma_cantidad_col):\n", + " '''Cantidad de casas con la misma cantidad de banos que la actual'''\n", + " '''Por ejemplo, retorna para cada propiedad, cuantas hay mas de su tipo con x banos ej.'''\n", + " '''cantidad_propiedad_misma_cantidad(df, 'banos', 'tipodepropiedad'), para cada propiedad, se fija\n", + " cuantas mas de su tipo con tantos banos hay'''\n", + " '''Retorna el df con la columna agregada'''\n", + " df_aux = df.copy()\n", + " df_aux = df_aux.groupby([agrupar_col, misma_cantidad_col]).agg({'id': 'count'})\n", + " df_aux = df_aux.rename(columns={'id':'cantidad'})\n", + " df_aux = df_aux.reset_index()\n", + " \n", + " def get_cantidad(col1, col2):\n", + " cantidad = df_aux[(df_aux[agrupar_col] == col1) & (df_aux[misma_cantidad_col] == col2)]['cantidad']\n", + " return cantidad.values[0] if len(cantidad.values > 0) else 0\n", + " \n", + " df['cantidad_' + agrupar_col + '_' + misma_cantidad_col] = df.apply(lambda x: get_cantidad(x[agrupar_col], x[misma_cantidad_col]), axis=1)\n", + " return df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "def cantidad_atributo(df, col, df_test):\n", + " '''Simil a value_counts. Dada una columna, agrega al df, cuantas propiedades existen con esa misma propiedad'''\n", + " '''Se rellena en df_test, con los counts que se hicieron en df'''\n", + " df_aux = df.copy()\n", + " df_aux = df_aux.groupby([col]).agg({'id': 'count'})\n", + " df_aux = df_aux.rename(columns={'id':'cantidad'})\n", + " df_aux = df_aux.reset_index()\n", + " \n", + " prop_cantidad = {}\n", + "\n", + " def get_cantidad(col1):\n", + " cantidad = df_aux[df_aux[col] == col1]['cantidad']\n", + " if col1 in prop_cantidad:\n", + " return prop_cantidad[col1]\n", + " cantidad_retornar = cantidad.values[0] if len(cantidad.values > 0) else 0\n", + " prop_cantidad[col1] = cantidad_retornar\n", + " return cantidad_retornar\n", + " \n", + " df['cantidad_propiedades_en_' + col] = df.apply(lambda x: get_cantidad(x[col]), axis=1)\n", + " \n", + " df_test['cantidad_propiedades_en_' + col] = df_test.apply(\n", + " lambda x: prop_cantidad[x[col]] if x[col] in prop_cantidad else 0, axis=1)\n", + " \n", + " return df, df_test" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def ranking_atributo(df, col):\n", + " '''Cuenta cuantas propiedades hay con los atributos de la columna recibida. Y para cada propiedad,\n", + " se fija en que posicion esta del ranking. Por ejemplo, si hay dos propuedades, una con dos banos y otra \n", + " con uno solo, el rankin de las que tengan dos banos en 1, y de las propiedades que tengan un solo bano es \n", + " dos'''\n", + " \n", + " '''Rellena los nulos con \"otros\" '''\n", + " df[col] = df[col].fillna('otros')\n", + " \n", + " df_aux = df.copy()\n", + " df_aux = df_aux.groupby([col]).agg({'id': 'count'})\n", + " df_aux = df_aux.rename(columns={'id':'cantidad'})\n", + " df_aux = df_aux.reset_index()\n", + " \n", + " df_aux = df_aux.nlargest(df_aux.shape[0], 'cantidad') \n", + " lista_ranking = df_aux[col].tolist()\n", + " rank = {}\n", + " contador = 1\n", + " \n", + " for item in lista_ranking:\n", + " rank[item] = contador\n", + " contador = contador + 1\n", + "\n", + " def get_ranking(col1):\n", + " item = df_aux[df_aux[col] == col1][col].values[0]\n", + " return rank[item]\n", + " \n", + " df['ranking_en_' + col] = df.apply(lambda x: get_ranking(x[col]), axis=1)\n", + " return df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "def aplicar_features(df_recibido):\n", + " df = df_recibido.copy() \n", + " # -- \n", + " df = concatenar_categoricos(df, 'tipodepropiedad', 'provincia')\n", + " df = concatenar_categoricos(df, 'provincia', 'ciudad')\n", + " # -- \n", + " display('Check-1.0')\n", + " df = cantidad_atributo(df, 'provincia')\n", + " display('Check-1.1')\n", + " df = cantidad_atributo(df, 'ciudad')\n", + " display('Check-1.2')\n", + " df = cantidad_atributo(df, 'antiguedad')\n", + " display('Check-1.3')\n", + " df = cantidad_atributo(df, 'habitaciones')\n", + " display('Check-1.4')\n", + " df = cantidad_atributo(df, 'garages')\n", + " display('Check-1.5')\n", + " df = cantidad_atributo(df, 'banos')\n", + " display('Check-1.6')\n", + " df = cantidad_atributo(df, 'gimnasio')\n", + " display('Check-1.7')\n", + " df = cantidad_atributo(df, 'usosmultiples')\n", + " display('Check-1.8')\n", + " df = cantidad_atributo(df, 'escuelascercanas')\n", + " display('Check-1.9')\n", + " df = cantidad_atributo(df, 'centroscomercialescercanos')\n", + " display('Check-1.10')\n", + " df = cantidad_atributo(df, 'piscina')\n", + " # --\n", + " display('Check-2.0')\n", + " df = ranking_atributo(df, 'provincia')\n", + " display('Check-2.1')\n", + " df = ranking_atributo(df, 'tipodepropiedad')\n", + " display('Check-2.2')\n", + " df = ranking_atributo(df, 'ciudad')\n", + " display('Check-2.3')\n", + " df = ranking_atributo(df, 'antiguedad')\n", + " display('Check-2.4')\n", + " df = ranking_atributo(df, 'habitaciones')\n", + " display('Check-2.5')\n", + " df = ranking_atributo(df, 'garages')\n", + " display('Check-2.6')\n", + " df = ranking_atributo(df, 'banos')\n", + " display('Check-2.7')\n", + " df = ranking_atributo(df, 'gimnasio')\n", + " display('Check-2.8')\n", + " df = ranking_atributo(df, 'usosmultiples')\n", + " display('Check-2.9')\n", + " df = ranking_atributo(df, 'escuelascercanas')\n", + " display('Check-2.10')\n", + " df = ranking_atributo(df, 'centroscomercialescercanos') \n", + " # --\n", + " display('Check-3.0')\n", + " df = cantidad_propiedad_misma_cantidad(df, 'tipodepropiedad', 'provincia')\n", + " display('Check-3.1')\n", + " df = cantidad_propiedad_misma_cantidad(df, 'tipodepropiedad', 'ciudad')\n", + " display('Check-3.2')\n", + " df = cantidad_propiedad_misma_cantidad(df, 'tipodepropiedad', 'antiguedad')\n", + " display('Check-3.3')\n", + " df = cantidad_propiedad_misma_cantidad(df, 'tipodepropiedad', 'habitaciones')\n", + " display('Check-3.4')\n", + " df = cantidad_propiedad_misma_cantidad(df, 'tipodepropiedad', 'garages')\n", + " display('Check-3.5')\n", + " df = cantidad_propiedad_misma_cantidad(df, 'tipodepropiedad', 'banos')\n", + " display('Check-3.6')\n", + " df = cantidad_propiedad_misma_cantidad(df, 'tipodepropiedad', 'gimnasio')\n", + " display('Check-3.7')\n", + " df = cantidad_propiedad_misma_cantidad(df, 'tipodepropiedad', 'usosmultiples')\n", + " display('Check-3.8')\n", + " df = cantidad_propiedad_misma_cantidad(df, 'tipodepropiedad', 'piscina')\n", + " display('Check-4.0')\n", + " df = cantidad_propiedad_misma_cantidad(df, 'ciudad', 'antiguedad')\n", + " display('Check-4.1')\n", + " df = cantidad_propiedad_misma_cantidad(df, 'ciudad', 'habitaciones')\n", + " display('Check-4.2')\n", + " df = cantidad_propiedad_misma_cantidad(df, 'ciudad', 'garages')\n", + " display('Check-4.3')\n", + " df = cantidad_propiedad_misma_cantidad(df, 'ciudad', 'banos')\n", + " display('Check-4.4')\n", + " df = cantidad_propiedad_misma_cantidad(df, 'ciudad', 'gimnasio')\n", + " display('Check-4.5')\n", + " df = cantidad_propiedad_misma_cantidad(df, 'ciudad', 'usosmultiples')\n", + " display('Check-5.6')\n", + " df = cantidad_propiedad_misma_cantidad(df, 'provincia', 'antiguedad')\n", + " display('Check-5.7')\n", + " df = cantidad_propiedad_misma_cantidad(df, 'provincia', 'habitaciones')\n", + " display('Check-5.8')\n", + " df = cantidad_propiedad_misma_cantidad(df, 'provincia', 'garages')\n", + " display('Check-5.9')\n", + " df = cantidad_propiedad_misma_cantidad(df, 'provincia', 'banos')\n", + " display('Check-5.10')\n", + " df = cantidad_propiedad_misma_cantidad(df, 'provincia', 'gimnasio')\n", + " display('Check-5.11')\n", + " df = cantidad_propiedad_misma_cantidad(df, 'provincia', 'usosmultiples')\n", + " display('Check-5.12')\n", + " df = cantidad_propiedad_misma_cantidad(df, 'provincia', 'piscina')\n", + " display('Check-6.0')\n", + " return df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df = df_train\n", + "# df = df_test\n", + "\n", + "display(df.columns)\n", + "display(df.shape)\n", + "\n", + "#Ejs:\n", + "# concatenar_categoricos(df, 'tipodepropiedad', 'provincia')\n", + "# cantidad_propiedad_misma_cantidad(df, 'tipodepropiedad', 'provincia')\n", + "# cantidad_atributo(df, 'provincia')\n", + "# ranking_atributo(df, 'provincia')\n", + "\n", + "df = aplicar_features(df)\n", + "# df.to_csv('masfeatures_train.csv', index=False)\n", + "# df.to_csv('masfeatures_test.csv', index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df_train = pd.read_csv('./masfeatures_train.csv')\n", + "df_eval = pd.read_csv('./masfeatures_test.csv')\n", + "\n", + "\n", + "# Correccion csv - strings que deberian ser floats\n", + "df_train['antiguedad'] = df_train['antiguedad'].apply(lambda antiguedad: None if antiguedad == 'otros' else antiguedad)\n", + "df_eval['antiguedad'] = df_eval['antiguedad'].apply(lambda antiguedad: None if antiguedad == 'otros' else antiguedad)\n", + "df_eval['antiguedad'] = df_eval['antiguedad'].astype(float)\n", + "df_train['antiguedad'] = df_train['antiguedad'].astype(float)\n", + "\n", + "df_train['habitaciones'] = df_train['habitaciones'].apply(lambda x: None if x == 'otros' else x)\n", + "df_eval['habitaciones'] = df_eval['habitaciones'].apply(lambda x: None if x == 'otros' else x)\n", + "df_eval['habitaciones'] = df_eval['habitaciones'].astype(float)\n", + "df_train['habitaciones'] = df_train['habitaciones'].astype(float)\n", + "\n", + "df_train['garages'] = df_train['garages'].apply(lambda x: None if x == 'otros' else x)\n", + "df_eval['garages'] = df_eval['garages'].apply(lambda x: None if x == 'otros' else x)\n", + "df_eval['garages'] = df_eval['garages'].astype(float)\n", + "df_train['garages'] = df_train['garages'].astype(float)\n", + "\n", + "df_train['banos'] = df_train['banos'].apply(lambda x: None if x == 'otros' else x)\n", + "df_eval['banos'] = df_eval['banos'].apply(lambda x: None if x == 'otros' else x)\n", + "df_eval['banos'] = df_eval['banos'].astype(float)\n", + "df_train['banos'] = df_train['banos'].astype(float)\n", + "\n", + "# Las columnas de tipo object\n", + "x = df_train.columns.to_series().groupby(df_train.dtypes).groups\n", + "display(\"Las columnas de tipo Object:\")\n", + "display(list(x[list(x.keys())[len(list(x.keys()))-1]]))\n", + "\n", + "df_eval.to_csv('masfeatures_train_f.csv', index=False)\n", + "df_train.to_csv('masfeatures_test_f.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Las mismas features anteriores, sin ohe - train" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "69" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "Index(['id', 'titulo', 'descripcion', 'tipodepropiedad', 'direccion', 'ciudad',\n", + " 'provincia', 'antiguedad', 'habitaciones', 'garages', 'banos',\n", + " 'metroscubiertos', 'metrostotales', 'idzona', 'lat', 'lng', 'fecha',\n", + " 'gimnasio', 'usosmultiples', 'piscina', 'escuelascercanas',\n", + " 'centroscomercialescercanos', 'precio', 'tipodepropiedad_provincia',\n", + " 'provincia_ciudad', 'cantidad_propiedades_en_provincia',\n", + " 'cantidad_propiedades_en_ciudad', 'cantidad_propiedades_en_antiguedad',\n", + " 'cantidad_propiedades_en_habitaciones',\n", + " 'cantidad_propiedades_en_garages', 'cantidad_propiedades_en_banos',\n", + " 'cantidad_propiedades_en_gimnasio',\n", + " 'cantidad_propiedades_en_usosmultiples',\n", + " 'cantidad_propiedades_en_escuelascercanas',\n", + " 'cantidad_propiedades_en_centroscomercialescercanos',\n", + " 'cantidad_propiedades_en_piscina', 'ranking_en_provincia',\n", + " 'ranking_en_tipodepropiedad', 'ranking_en_ciudad',\n", + " 'ranking_en_antiguedad', 'ranking_en_habitaciones',\n", + " 'ranking_en_garages', 'ranking_en_banos', 'ranking_en_gimnasio',\n", + " 'ranking_en_usosmultiples', 'ranking_en_escuelascercanas',\n", + " 'ranking_en_centroscomercialescercanos',\n", + " 'cantidad_tipodepropiedad_provincia', 'cantidad_tipodepropiedad_ciudad',\n", + " 'cantidad_tipodepropiedad_antiguedad',\n", + " 'cantidad_tipodepropiedad_habitaciones',\n", + " 'cantidad_tipodepropiedad_garages', 'cantidad_tipodepropiedad_banos',\n", + " 'cantidad_tipodepropiedad_gimnasio',\n", + " 'cantidad_tipodepropiedad_usosmultiples',\n", + " 'cantidad_tipodepropiedad_piscina', 'cantidad_ciudad_antiguedad',\n", + " 'cantidad_ciudad_habitaciones', 'cantidad_ciudad_garages',\n", + " 'cantidad_ciudad_banos', 'cantidad_ciudad_gimnasio',\n", + " 'cantidad_ciudad_usosmultiples', 'cantidad_provincia_antiguedad',\n", + " 'cantidad_provincia_habitaciones', 'cantidad_provincia_garages',\n", + " 'cantidad_provincia_banos', 'cantidad_provincia_gimnasio',\n", + " 'cantidad_provincia_usosmultiples', 'cantidad_provincia_piscina'],\n", + " dtype='object')" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idtitulodescripciontipodepropiedaddireccionciudadprovinciaantiguedadhabitacionesgarages...cantidad_ciudad_banoscantidad_ciudad_gimnasiocantidad_ciudad_usosmultiplescantidad_provincia_antiguedadcantidad_provincia_habitacionescantidad_provincia_garagescantidad_provincia_banoscantidad_provincia_gimnasiocantidad_provincia_usosmultiplescantidad_provincia_piscina
0254099depto. tipo a-402depto. interior de 80.15m2, consta de sala com...ApartamentoAvenida Division del Norte 2005Benito_JuárezDistrito_FederalNaN2.01.0...612710391103927041210621921423514543805474656163
153461condominio horizontal en venta<p>entre sonora y guerrero, atr&aacute;s del h...Casa_en_condominioAV. MEXICOLa_Magdalena_ContrerasDistrito_Federal10.03.02.0...607184218128904234791858723514543805474656163
2247984casa en venta urbi 3 recamaras tonaladescripcion \\nla mejor ubicacion residencial e...CasaUrbi TonalaTonaláJalisco5.03.02.0...25778377842561049291807527198941943118756
3209067casa sola en toluca zinacantepec con credito i...casa en privada con caseta de vigilancia casas...CasaIGNACIO MANUEL ALTAMIRANO 128ZinacantepecEdo._de_México1.02.01.0...46149148144994061168912013385413854739277
4185997paseos del solbonito departamento en excelentes condiciones ...ApartamentoPASEOS DEL SOLZapopanJalisco10.02.01.0...1704963493062749418851234434198941943118756
..................................................................
239995119879bonita casas de 2 recamaras a 10 minutos del c...vendo casa en bosques de ica residencial a 10 ...CasaBOSQUESZinacantepecEdo._de_México0.02.02.0...46149148564994061432212013385413854739277
239996259178casa en condominio a 10 min. del centro de tolucacasa con un jardin amplio, un cuarto de servic...CasaFiliberto Navas 325TolucaEdo._de_México0.03.03.0...2271932194756492220059769335385413854739277
239997131932nicolas san juandepartamento con excelente ubicación, muy cerc...ApartamentoNicolas San JuanBenito_JuárezDistrito_Federal20.02.01.0...612710391103929323210621921423514543805474656163
239998146867casa sola. javier rojo gomez.casa sola, dividida en cuatro departamentos de...CasaJavier Rojo Gomez 120IztapalapaDistrito_Federal20.04.00.0...99503028932350658472292644105474656163
239999121958departamento en bosques de las lomas / av. st...id:19816, muy bonito e iluminado departamento,...ApartamentoAVE. STIMCuajimalpa_de_MorelosDistrito_Federal1.03.02.0...1244230924902411234791858723514543805474656163
\n", + "

240000 rows × 69 columns

\n", + "
" + ], + "text/plain": [ + " id titulo \\\n", + "0 254099 depto. tipo a-402 \n", + "1 53461 condominio horizontal en venta \n", + "2 247984 casa en venta urbi 3 recamaras tonala \n", + "3 209067 casa sola en toluca zinacantepec con credito i... \n", + "4 185997 paseos del sol \n", + "... ... ... \n", + "239995 119879 bonita casas de 2 recamaras a 10 minutos del c... \n", + "239996 259178 casa en condominio a 10 min. del centro de toluca \n", + "239997 131932 nicolas san juan \n", + "239998 146867 casa sola. javier rojo gomez. \n", + "239999 121958 departamento en bosques de las lomas / av. st... \n", + "\n", + " descripcion tipodepropiedad \\\n", + "0 depto. interior de 80.15m2, consta de sala com... Apartamento \n", + "1

entre sonora y guerrero, atrás del h... Casa_en_condominio \n", + "2 descripcion \\nla mejor ubicacion residencial e... Casa \n", + "3 casa en privada con caseta de vigilancia casas... Casa \n", + "4 bonito departamento en excelentes condiciones ... Apartamento \n", + "... ... ... \n", + "239995 vendo casa en bosques de ica residencial a 10 ... Casa \n", + "239996 casa con un jardin amplio, un cuarto de servic... Casa \n", + "239997 departamento con excelente ubicación, muy cerc... Apartamento \n", + "239998 casa sola, dividida en cuatro departamentos de... Casa \n", + "239999 id:19816, muy bonito e iluminado departamento,... Apartamento \n", + "\n", + " direccion ciudad \\\n", + "0 Avenida Division del Norte 2005 Benito_Juárez \n", + "1 AV. MEXICO La_Magdalena_Contreras \n", + "2 Urbi Tonala Tonalá \n", + "3 IGNACIO MANUEL ALTAMIRANO 128 Zinacantepec \n", + "4 PASEOS DEL SOL Zapopan \n", + "... ... ... \n", + "239995 BOSQUES Zinacantepec \n", + "239996 Filiberto Navas 325 Toluca \n", + "239997 Nicolas San Juan Benito_Juárez \n", + "239998 Javier Rojo Gomez 120 Iztapalapa \n", + "239999 AVE. STIM Cuajimalpa_de_Morelos \n", + "\n", + " provincia antiguedad habitaciones garages ... \\\n", + "0 Distrito_Federal NaN 2.0 1.0 ... \n", + "1 Distrito_Federal 10.0 3.0 2.0 ... \n", + "2 Jalisco 5.0 3.0 2.0 ... \n", + "3 Edo._de_México 1.0 2.0 1.0 ... \n", + "4 Jalisco 10.0 2.0 1.0 ... \n", + "... ... ... ... ... ... \n", + "239995 Edo._de_México 0.0 2.0 2.0 ... \n", + "239996 Edo._de_México 0.0 3.0 3.0 ... \n", + "239997 Distrito_Federal 20.0 2.0 1.0 ... \n", + "239998 Distrito_Federal 20.0 4.0 0.0 ... \n", + "239999 Distrito_Federal 1.0 3.0 2.0 ... \n", + "\n", + " cantidad_ciudad_banos cantidad_ciudad_gimnasio \\\n", + "0 6127 10391 \n", + "1 607 1842 \n", + "2 257 783 \n", + "3 46 149 \n", + "4 1704 9634 \n", + "... ... ... \n", + "239995 46 149 \n", + "239996 227 1932 \n", + "239997 6127 10391 \n", + "239998 99 50 \n", + "239999 1244 2309 \n", + "\n", + " cantidad_ciudad_usosmultiples cantidad_provincia_antiguedad \\\n", + "0 10392 7041 \n", + "1 1812 8904 \n", + "2 778 4256 \n", + "3 148 1449 \n", + "4 9306 2749 \n", + "... ... ... \n", + "239995 148 5649 \n", + "239996 1947 5649 \n", + "239997 10392 9323 \n", + "239998 3028 9323 \n", + "239999 2490 2411 \n", + "\n", + " cantidad_provincia_habitaciones cantidad_provincia_garages \\\n", + "0 21062 19214 \n", + "1 23479 18587 \n", + "2 10492 9180 \n", + "3 9406 11689 \n", + "4 4188 5123 \n", + "... ... ... \n", + "239995 9406 14322 \n", + "239996 22200 5976 \n", + "239997 21062 19214 \n", + "239998 5065 8472 \n", + "239999 23479 18587 \n", + "\n", + " cantidad_provincia_banos cantidad_provincia_gimnasio \\\n", + "0 23514 54380 \n", + "1 23514 54380 \n", + "2 7527 19894 \n", + "3 12013 38541 \n", + "4 4434 19894 \n", + "... ... ... \n", + "239995 12013 38541 \n", + "239996 9335 38541 \n", + "239997 23514 54380 \n", + "239998 2926 4410 \n", + "239999 23514 54380 \n", + "\n", + " cantidad_provincia_usosmultiples cantidad_provincia_piscina \n", + "0 54746 56163 \n", + "1 54746 56163 \n", + "2 19431 18756 \n", + "3 38547 39277 \n", + "4 19431 18756 \n", + "... ... ... \n", + "239995 38547 39277 \n", + "239996 38547 39277 \n", + "239997 54746 56163 \n", + "239998 54746 56163 \n", + "239999 54746 56163 \n", + "\n", + "[240000 rows x 69 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df_train = pd.read_csv('./data/train.csv')\n", + "df1, features1 = concatenar_categoricos(df_train, 'tipodepropiedad', 'provincia', 0, None, True)\n", + "df2, features2 = concatenar_categoricos(df_train, 'provincia', 'ciudad', 0, None, True)\n", + "\n", + "features_borarr = features1 + features2\n", + "df_features_sin_ohe = pd.read_csv('./masfeatures_train_f.csv')\n", + "df_features_sin_ohe = df_features_sin_ohe.drop(features_borarr, axis=1)\n", + "\n", + "display(len(df_features_sin_ohe.columns))\n", + "display(df_features_sin_ohe.columns)\n", + "display(df_features_sin_ohe)\n", + "\n", + "df_features_sin_ohe.to_csv('masfeatures_train_f_no_ohe.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Las mismas features anteriores, sin ohe - train" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "68" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "Index(['id', 'titulo', 'descripcion', 'tipodepropiedad', 'direccion', 'ciudad',\n", + " 'provincia', 'antiguedad', 'habitaciones', 'garages', 'banos',\n", + " 'metroscubiertos', 'metrostotales', 'idzona', 'lat', 'lng', 'fecha',\n", + " 'gimnasio', 'usosmultiples', 'piscina', 'escuelascercanas',\n", + " 'centroscomercialescercanos', 'tipodepropiedad_provincia',\n", + " 'provincia_ciudad', 'cantidad_propiedades_en_provincia',\n", + " 'cantidad_propiedades_en_ciudad', 'cantidad_propiedades_en_antiguedad',\n", + " 'cantidad_propiedades_en_habitaciones',\n", + " 'cantidad_propiedades_en_garages', 'cantidad_propiedades_en_banos',\n", + " 'cantidad_propiedades_en_gimnasio',\n", + " 'cantidad_propiedades_en_usosmultiples',\n", + " 'cantidad_propiedades_en_escuelascercanas',\n", + " 'cantidad_propiedades_en_centroscomercialescercanos',\n", + " 'cantidad_propiedades_en_piscina', 'ranking_en_provincia',\n", + " 'ranking_en_tipodepropiedad', 'ranking_en_ciudad',\n", + " 'ranking_en_antiguedad', 'ranking_en_habitaciones',\n", + " 'ranking_en_garages', 'ranking_en_banos', 'ranking_en_gimnasio',\n", + " 'ranking_en_usosmultiples', 'ranking_en_escuelascercanas',\n", + " 'ranking_en_centroscomercialescercanos',\n", + " 'cantidad_tipodepropiedad_provincia', 'cantidad_tipodepropiedad_ciudad',\n", + " 'cantidad_tipodepropiedad_antiguedad',\n", + " 'cantidad_tipodepropiedad_habitaciones',\n", + " 'cantidad_tipodepropiedad_garages', 'cantidad_tipodepropiedad_banos',\n", + " 'cantidad_tipodepropiedad_gimnasio',\n", + " 'cantidad_tipodepropiedad_usosmultiples',\n", + " 'cantidad_tipodepropiedad_piscina', 'cantidad_ciudad_antiguedad',\n", + " 'cantidad_ciudad_habitaciones', 'cantidad_ciudad_garages',\n", + " 'cantidad_ciudad_banos', 'cantidad_ciudad_gimnasio',\n", + " 'cantidad_ciudad_usosmultiples', 'cantidad_provincia_antiguedad',\n", + " 'cantidad_provincia_habitaciones', 'cantidad_provincia_garages',\n", + " 'cantidad_provincia_banos', 'cantidad_provincia_gimnasio',\n", + " 'cantidad_provincia_usosmultiples', 'cantidad_provincia_piscina'],\n", + " dtype='object')" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idtitulodescripciontipodepropiedaddireccionciudadprovinciaantiguedadhabitacionesgarages...cantidad_ciudad_banoscantidad_ciudad_gimnasiocantidad_ciudad_usosmultiplescantidad_provincia_antiguedadcantidad_provincia_habitacionescantidad_provincia_garagescantidad_provincia_banoscantidad_provincia_gimnasiocantidad_provincia_usosmultiplescantidad_provincia_piscina
04941casa en venta en miguel hidalgo, distrito federal<p>excelente casa estilo moderno.</p>CasaBosque de CedrosMiguel_HidalgoDistrito_Federal29.03.0NaN...54121312553158281643710136681374914136
151775departamentos en venta en montebello<p>departamento una recamara:\\n</p><p>departam...ApartamentoNaNMéridaYucatánNaN1.01.0...2521677179867047123278185419801575
2115253departamento nuevo delegación coyoacán de 87 m...departamento nuevo de 87.06 m2, 1 cajón de est...ApartamentoPueblo de los Reyes, Coyoacán, Mexico D.F.CoyoacánDistrito_Federal0.02.01.0...503124912491999526347245881136681374914136
3299321departamento en venta en acapulco<p> raíces dv001 precioso departamento tipo k...ApartamentoNaNAcapulco_de_JuárezGuerrero2.02.02.0...23056157226234235251604622310
4173570bonita casa sola equipada de dos niveles en lo...<p>casa sola, bonita de dos rec&aacute;maras u...CasaCEDROSTultitlánEdo._de_México10.02.01.0...1532312321958221928872894945494359632
..................................................................
5999575094oportunidad!! se vende amplia casa en col. moc...oportunidad!! ideal para oficina o casa habita...CasaOriente 172 # 265Venustiano_CarranzaDistrito_Federal20.04.03.0...303933952287127315002516136681374914136
59996171847colinas de ecatepeccasa, sala comedor, patio de servicio, buenas ...CasacolinasEcatepec_de_MorelosEdo._de_México10.03.01.0...1725515511958545828873466945494359632
59997138313estrene hermosa casa en sierra morenahermosa casa lista para habitarse ubicada en f...Casas/calleGuadalupeNuevo_León5.03.02.0...180459487585213615461212369838693772
59998271268zen house i venta de linda casa con acabados ...hermosa casa con acabados de lujo en fracciona...CasaZen House lQuerétaroQuerétaro0.02.01.0...12193032301114525685091733406140153766
5999972612casa en chapalita las fuentes/ cercano al club...<p>hermosa casa bien ubicada. cuenta con:</p>\\...CasaFuentes de San Agustín 5051ZapopanJalisco0.03.02.0...828239623151201266022941835497948654690
\n", + "

60000 rows × 68 columns

\n", + "
" + ], + "text/plain": [ + " id titulo \\\n", + "0 4941 casa en venta en miguel hidalgo, distrito federal \n", + "1 51775 departamentos en venta en montebello \n", + "2 115253 departamento nuevo delegación coyoacán de 87 m... \n", + "3 299321 departamento en venta en acapulco \n", + "4 173570 bonita casa sola equipada de dos niveles en lo... \n", + "... ... ... \n", + "59995 75094 oportunidad!! se vende amplia casa en col. moc... \n", + "59996 171847 colinas de ecatepec \n", + "59997 138313 estrene hermosa casa en sierra morena \n", + "59998 271268 zen house i venta de linda casa con acabados ... \n", + "59999 72612 casa en chapalita las fuentes/ cercano al club... \n", + "\n", + " descripcion tipodepropiedad \\\n", + "0

excelente casa estilo moderno.

Casa \n", + "1

departamento una recamara:\\n

departam... Apartamento \n", + "2 departamento nuevo de 87.06 m2, 1 cajón de est... Apartamento \n", + "3

raíces dv001 precioso departamento tipo k... Apartamento \n", + "4

casa sola, bonita de dos recámaras u... Casa \n", + "... ... ... \n", + "59995 oportunidad!! ideal para oficina o casa habita... Casa \n", + "59996 casa, sala comedor, patio de servicio, buenas ... Casa \n", + "59997 hermosa casa lista para habitarse ubicada en f... Casa \n", + "59998 hermosa casa con acabados de lujo en fracciona... Casa \n", + "59999

hermosa casa bien ubicada. cuenta con:

\\... Casa \n", + "\n", + " direccion ciudad \\\n", + "0 Bosque de Cedros Miguel_Hidalgo \n", + "1 NaN Mérida \n", + "2 Pueblo de los Reyes, Coyoacán, Mexico D.F. Coyoacán \n", + "3 NaN Acapulco_de_Juárez \n", + "4 CEDROS Tultitlán \n", + "... ... ... \n", + "59995 Oriente 172 # 265 Venustiano_Carranza \n", + "59996 colinas Ecatepec_de_Morelos \n", + "59997 s/calle Guadalupe \n", + "59998 Zen House l Querétaro \n", + "59999 Fuentes de San Agustín 5051 Zapopan \n", + "\n", + " provincia antiguedad habitaciones garages ... \\\n", + "0 Distrito_Federal 29.0 3.0 NaN ... \n", + "1 Yucatán NaN 1.0 1.0 ... \n", + "2 Distrito_Federal 0.0 2.0 1.0 ... \n", + "3 Guerrero 2.0 2.0 2.0 ... \n", + "4 Edo._de_México 10.0 2.0 1.0 ... \n", + "... ... ... ... ... ... \n", + "59995 Distrito_Federal 20.0 4.0 3.0 ... \n", + "59996 Edo._de_México 10.0 3.0 1.0 ... \n", + "59997 Nuevo_León 5.0 3.0 2.0 ... \n", + "59998 Querétaro 0.0 2.0 1.0 ... \n", + "59999 Jalisco 0.0 3.0 2.0 ... \n", + "\n", + " cantidad_ciudad_banos cantidad_ciudad_gimnasio \\\n", + "0 54 1213 \n", + "1 252 1677 \n", + "2 503 1249 \n", + "3 230 561 \n", + "4 153 231 \n", + "... ... ... \n", + "59995 30 393 \n", + "59996 172 551 \n", + "59997 180 459 \n", + "59998 1219 3032 \n", + "59999 828 2396 \n", + "\n", + " cantidad_ciudad_usosmultiples cantidad_provincia_antiguedad \\\n", + "0 1255 31 \n", + "1 1798 670 \n", + "2 1249 1999 \n", + "3 572 26 \n", + "4 232 1958 \n", + "... ... ... \n", + "59995 395 2287 \n", + "59996 551 1958 \n", + "59997 487 585 \n", + "59998 3011 1452 \n", + "59999 2315 1201 \n", + "\n", + " cantidad_provincia_habitaciones cantidad_provincia_garages \\\n", + "0 5828 1643 \n", + "1 47 123 \n", + "2 5263 4724 \n", + "3 234 235 \n", + "4 2219 2887 \n", + "... ... ... \n", + "59995 1273 1500 \n", + "59996 5458 2887 \n", + "59997 2136 1546 \n", + "59998 568 509 \n", + "59999 2660 2294 \n", + "\n", + " cantidad_provincia_banos cantidad_provincia_gimnasio \\\n", + "0 710 13668 \n", + "1 278 1854 \n", + "2 5881 13668 \n", + "3 251 604 \n", + "4 2894 9454 \n", + "... ... ... \n", + "59995 2516 13668 \n", + "59996 3466 9454 \n", + "59997 1212 3698 \n", + "59998 1733 4061 \n", + "59999 1835 4979 \n", + "\n", + " cantidad_provincia_usosmultiples cantidad_provincia_piscina \n", + "0 13749 14136 \n", + "1 1980 1575 \n", + "2 13749 14136 \n", + "3 622 310 \n", + "4 9435 9632 \n", + "... ... ... \n", + "59995 13749 14136 \n", + "59996 9435 9632 \n", + "59997 3869 3772 \n", + "59998 4015 3766 \n", + "59999 4865 4690 \n", + "\n", + "[60000 rows x 68 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df_test = pd.read_csv('./data/test.csv')\n", + "df1, features1 = concatenar_categoricos(df_test, 'tipodepropiedad', 'provincia', 0, None, True)\n", + "df2, features2 = concatenar_categoricos(df_test, 'provincia', 'ciudad', 0, None, True)\n", + "\n", + "features_borarr = features1 + features2\n", + "df_features_sin_ohe = pd.read_csv('./masfeatures_test_f.csv')\n", + "df_features_sin_ohe = df_features_sin_ohe.drop(features_borarr, axis=1)\n", + "\n", + "display(len(df_features_sin_ohe.columns))\n", + "display(df_features_sin_ohe.columns)\n", + "display(df_features_sin_ohe)\n", + "\n", + "df_features_sin_ohe.to_csv('masfeatures_test_f_no_ohe.csv', index=False)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/html/features-NLTK.html b/html/featuresNLTK.html similarity index 98% rename from html/features-NLTK.html rename to html/featuresNLTK.html index d9ee715..52d3f54 100644 --- a/html/features-NLTK.html +++ b/html/featuresNLTK.html @@ -2,7 +2,7 @@ -features-NLTK +featuresNLTK @@ -13076,7 +13076,7 @@
-
In [1]:
+
In [2]:
import pandas as pd
@@ -13116,7 +13116,7 @@
 
-
In [2]:
+
In [3]:
def ver_info_a_filtrar(df, col):
@@ -13132,7 +13132,7 @@
 
-
In [3]:
+
In [4]:
def generar_palabras_no_queridas(arr=None):
@@ -13157,7 +13157,7 @@
 
-
In [4]:
+
In [5]:
def generar_palabras_mas_frecuentes(df, col, n):
@@ -13187,7 +13187,7 @@
 
-
In [5]:
+
In [6]:
def feature_cantidad_mas_frecuentes(df, col, n):
@@ -13224,13 +13224,13 @@
 
-
In [6]:
+
In [ ]:
-
# Ejemplo de uso de las palabras mas frecuentes
-
-df_palabras = feature_cantidad_mas_frecuentes(df_train, 'titulo', 200)
-df_palabras[['id', 'titulo', 'cant_palabras_mas_frecuentes_titulo']].head()
+
def ejemplo():
+    # Ejemplo de uso de las palabras mas frecuentes
+    df_palabras = feature_cantidad_mas_frecuentes(df_train, 'titulo', 200)
+    df_palabras[['id', 'titulo', 'cant_palabras_mas_frecuentes_titulo']].head()
 
@@ -13253,81 +13253,13 @@
-
- -
Out[6]:
- - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
idtitulocant_palabras_mas_frecuentes_titulo
0254099depto. tipo a-4021.0
153461condominio horizontal en venta3.0
2247984casa en venta urbi 3 recamaras tonala3.0
3209067casa sola en toluca zinacantepec con credito i...4.0
4185997paseos del sol2.0
-
-
- -
-
-
In [7]:
+
In [ ]:
def generar_palabras_menos_frecuentes(df, col, n):
@@ -13357,7 +13289,7 @@
 
-
In [8]:
+
In [ ]:
def feature_cantidad_menos_frecuentes(df, col, n):
@@ -13394,106 +13326,19 @@
 
-
In [9]:
+
In [ ]:
-
# Ejemplo de uso de las palabras menos frecuentes
-
-df_palabras = feature_cantidad_menos_frecuentes(df_train, 'titulo', 200)
-df_palabras[['id', 'titulo', 'cant_palabras_menos_frecuentes_titulo']].head()
+
def ejemplo():
+    # Ejemplo de uso de las palabras menos frecuentes
+    df_palabras = feature_cantidad_menos_frecuentes(df_train, 'titulo', 200)
+    df_palabras[['id', 'titulo', 'cant_palabras_menos_frecuentes_titulo']].head()
 
-
-
- - -
- -
- - -
-
La cantidad de publicaciones con titulo no nulo es: 234613
-La cantidad total de publicaciones es: 240000
-
-
-
- -
- -
Out[9]:
- - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
idtitulocant_palabras_menos_frecuentes_titulo
0254099depto. tipo a-4020.0
153461condominio horizontal en venta0.0
2247984casa en venta urbi 3 recamaras tonala0.0
3209067casa sola en toluca zinacantepec con credito i...0.0
4185997paseos del sol0.0
-
-
- -
- -
-
-
diff --git a/html/features_complementarias.html b/html/features_complementarias.html new file mode 100644 index 0000000..1d3a01e --- /dev/null +++ b/html/features_complementarias.html @@ -0,0 +1,14253 @@ + + + + +features_complementarias + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
In [1]:
+
+
+
import pandas as pd
+import ipynb.fs.full.features as features_nltk
+
+# df_train = pd.read_csv('./data/train.csv')
+# df_test = pd.read_csv('./data/test.csv')
+
+ +
+
+
+ +
+
+
+
In [3]:
+
+
+
def concatenar_categoricos(df, columna1, columna2, N=0, df_aux=None, devolver_cols=False):
+    '''Concatena dos columnas categoricas y hace one hot'''
+    '''Ver referencia columna_a_ohe para los ultimos 3 parametros'''
+    
+    def limpiar_espacios_blanco(texto):
+        try:
+            return texto.replace(' ', '_')
+        except:
+            pass
+        
+    df = df.copy()
+    df[columna1] = df[columna1].apply(limpiar_espacios_blanco)
+    df[columna2] = df[columna2].apply(limpiar_espacios_blanco)
+    df[columna1 + '_' + columna2] = df[columna1] + '_' +df[columna2]
+    
+    features_nltk
+    return features_nltk.columna_a_ohe(df, columna1 + '_' + columna2, N, df_aux, devolver_cols)
+
+ +
+
+
+ +
+
+
+
In [ ]:
+
+
+
def cantidad_propiedad_misma_cantidad(df, agrupar_col, misma_cantidad_col):
+    '''Cantidad de casas con la misma cantidad de banos que la actual'''
+    '''Por ejemplo, retorna para cada propiedad, cuantas hay mas de su tipo con x banos ej.'''
+    '''cantidad_propiedad_misma_cantidad(df, 'banos', 'tipodepropiedad'), para cada propiedad, se fija
+    cuantas mas de su tipo con tantos banos hay'''
+    '''Retorna el df con la columna agregada'''
+    df_aux = df.copy()
+    df_aux = df_aux.groupby([agrupar_col, misma_cantidad_col]).agg({'id': 'count'})
+    df_aux = df_aux.rename(columns={'id':'cantidad'})
+    df_aux = df_aux.reset_index()
+    
+    def get_cantidad(col1, col2):
+        cantidad = df_aux[(df_aux[agrupar_col] == col1) & (df_aux[misma_cantidad_col] == col2)]['cantidad']
+        return cantidad.values[0] if len(cantidad.values > 0) else 0
+        
+    df['cantidad_' + agrupar_col + '_' + misma_cantidad_col] = df.apply(lambda x: get_cantidad(x[agrupar_col], x[misma_cantidad_col]), axis=1)
+    return df
+
+ +
+
+
+ +
+
+
+
In [ ]:
+
+
+
def cantidad_atributo(df, col, df_test):
+    '''Simil a value_counts. Dada una columna, agrega al df, cuantas propiedades existen con esa misma propiedad'''
+    '''Se rellena en df_test, con los counts que se hicieron en df'''
+    df_aux = df.copy()
+    df_aux = df_aux.groupby([col]).agg({'id': 'count'})
+    df_aux = df_aux.rename(columns={'id':'cantidad'})
+    df_aux = df_aux.reset_index()
+    
+    prop_cantidad = {}
+
+    def get_cantidad(col1):
+        cantidad = df_aux[df_aux[col] == col1]['cantidad']
+        if col1 in prop_cantidad:
+            return prop_cantidad[col1]
+        cantidad_retornar = cantidad.values[0] if len(cantidad.values > 0) else 0
+        prop_cantidad[col1] = cantidad_retornar
+        return cantidad_retornar
+    
+    df['cantidad_propiedades_en_' + col] = df.apply(lambda x: get_cantidad(x[col]), axis=1)
+    
+    df_test['cantidad_propiedades_en_' + col] = df_test.apply(
+                            lambda x: prop_cantidad[x[col]] if x[col] in prop_cantidad else 0, axis=1)
+    
+    return df, df_test
+
+ +
+
+
+ +
+
+
+
In [ ]:
+
+
+
def ranking_atributo(df, col):
+    '''Cuenta cuantas propiedades hay con los atributos de la columna recibida. Y para cada propiedad,
+    se fija en que posicion esta del ranking. Por ejemplo, si hay dos propuedades, una con dos banos y otra 
+    con uno solo, el rankin de las que tengan dos banos en 1, y de las propiedades que tengan un solo bano es 
+    dos'''
+    
+    '''Rellena los nulos con "otros" '''
+    df[col] = df[col].fillna('otros')
+    
+    df_aux = df.copy()
+    df_aux = df_aux.groupby([col]).agg({'id': 'count'})
+    df_aux = df_aux.rename(columns={'id':'cantidad'})
+    df_aux = df_aux.reset_index()
+    
+    df_aux = df_aux.nlargest(df_aux.shape[0], 'cantidad') 
+    lista_ranking = df_aux[col].tolist()
+    rank = {}
+    contador = 1
+    
+    for item in lista_ranking:
+        rank[item] = contador
+        contador = contador + 1
+
+    def get_ranking(col1):
+        item = df_aux[df_aux[col] == col1][col].values[0]
+        return rank[item]
+    
+    df['ranking_en_' + col] = df.apply(lambda x: get_ranking(x[col]), axis=1)
+    return df
+
+ +
+
+
+ +
+
+
+
In [ ]:
+
+
+
def aplicar_features(df_recibido):
+    df = df_recibido.copy()    
+    # -- 
+    df = concatenar_categoricos(df, 'tipodepropiedad', 'provincia')
+    df = concatenar_categoricos(df, 'provincia', 'ciudad')
+    # -- 
+    display('Check-1.0')
+    df = cantidad_atributo(df, 'provincia')
+    display('Check-1.1')
+    df = cantidad_atributo(df, 'ciudad')
+    display('Check-1.2')
+    df = cantidad_atributo(df, 'antiguedad')
+    display('Check-1.3')
+    df = cantidad_atributo(df, 'habitaciones')
+    display('Check-1.4')
+    df = cantidad_atributo(df, 'garages')
+    display('Check-1.5')
+    df = cantidad_atributo(df, 'banos')
+    display('Check-1.6')
+    df = cantidad_atributo(df, 'gimnasio')
+    display('Check-1.7')
+    df = cantidad_atributo(df, 'usosmultiples')
+    display('Check-1.8')
+    df = cantidad_atributo(df, 'escuelascercanas')
+    display('Check-1.9')
+    df = cantidad_atributo(df, 'centroscomercialescercanos')
+    display('Check-1.10')
+    df = cantidad_atributo(df, 'piscina')
+    # --
+    display('Check-2.0')
+    df = ranking_atributo(df, 'provincia')
+    display('Check-2.1')
+    df = ranking_atributo(df, 'tipodepropiedad')
+    display('Check-2.2')
+    df = ranking_atributo(df, 'ciudad')
+    display('Check-2.3')
+    df = ranking_atributo(df, 'antiguedad')
+    display('Check-2.4')
+    df = ranking_atributo(df, 'habitaciones')
+    display('Check-2.5')
+    df = ranking_atributo(df, 'garages')
+    display('Check-2.6')
+    df = ranking_atributo(df, 'banos')
+    display('Check-2.7')
+    df = ranking_atributo(df, 'gimnasio')
+    display('Check-2.8')
+    df = ranking_atributo(df, 'usosmultiples')
+    display('Check-2.9')
+    df = ranking_atributo(df, 'escuelascercanas')
+    display('Check-2.10')
+    df = ranking_atributo(df, 'centroscomercialescercanos')    
+    # --
+    display('Check-3.0')
+    df = cantidad_propiedad_misma_cantidad(df, 'tipodepropiedad', 'provincia')
+    display('Check-3.1')
+    df = cantidad_propiedad_misma_cantidad(df, 'tipodepropiedad', 'ciudad')
+    display('Check-3.2')
+    df = cantidad_propiedad_misma_cantidad(df, 'tipodepropiedad', 'antiguedad')
+    display('Check-3.3')
+    df = cantidad_propiedad_misma_cantidad(df, 'tipodepropiedad', 'habitaciones')
+    display('Check-3.4')
+    df = cantidad_propiedad_misma_cantidad(df, 'tipodepropiedad', 'garages')
+    display('Check-3.5')
+    df = cantidad_propiedad_misma_cantidad(df, 'tipodepropiedad', 'banos')
+    display('Check-3.6')
+    df = cantidad_propiedad_misma_cantidad(df, 'tipodepropiedad', 'gimnasio')
+    display('Check-3.7')
+    df = cantidad_propiedad_misma_cantidad(df, 'tipodepropiedad', 'usosmultiples')
+    display('Check-3.8')
+    df = cantidad_propiedad_misma_cantidad(df, 'tipodepropiedad', 'piscina')
+    display('Check-4.0')
+    df = cantidad_propiedad_misma_cantidad(df, 'ciudad', 'antiguedad')
+    display('Check-4.1')
+    df = cantidad_propiedad_misma_cantidad(df, 'ciudad', 'habitaciones')
+    display('Check-4.2')
+    df = cantidad_propiedad_misma_cantidad(df, 'ciudad', 'garages')
+    display('Check-4.3')
+    df = cantidad_propiedad_misma_cantidad(df, 'ciudad', 'banos')
+    display('Check-4.4')
+    df = cantidad_propiedad_misma_cantidad(df, 'ciudad', 'gimnasio')
+    display('Check-4.5')
+    df = cantidad_propiedad_misma_cantidad(df, 'ciudad', 'usosmultiples')
+    display('Check-5.6')
+    df = cantidad_propiedad_misma_cantidad(df, 'provincia', 'antiguedad')
+    display('Check-5.7')
+    df = cantidad_propiedad_misma_cantidad(df, 'provincia', 'habitaciones')
+    display('Check-5.8')
+    df = cantidad_propiedad_misma_cantidad(df, 'provincia', 'garages')
+    display('Check-5.9')
+    df = cantidad_propiedad_misma_cantidad(df, 'provincia', 'banos')
+    display('Check-5.10')
+    df = cantidad_propiedad_misma_cantidad(df, 'provincia', 'gimnasio')
+    display('Check-5.11')
+    df = cantidad_propiedad_misma_cantidad(df, 'provincia', 'usosmultiples')
+    display('Check-5.12')
+    df = cantidad_propiedad_misma_cantidad(df, 'provincia', 'piscina')
+    display('Check-6.0')
+    return df
+
+ +
+
+
+ +
+
+
+
In [ ]:
+
+
+
df = df_train
+# df = df_test
+
+display(df.columns)
+display(df.shape)
+
+#Ejs:
+# concatenar_categoricos(df, 'tipodepropiedad', 'provincia')
+# cantidad_propiedad_misma_cantidad(df, 'tipodepropiedad', 'provincia')
+# cantidad_atributo(df, 'provincia')
+# ranking_atributo(df, 'provincia')
+
+df = aplicar_features(df)
+# df.to_csv('masfeatures_train.csv', index=False)
+# df.to_csv('masfeatures_test.csv', index=False)
+
+ +
+
+
+ +
+
+
+
In [ ]:
+
+
+
df_train = pd.read_csv('./masfeatures_train.csv')
+df_eval = pd.read_csv('./masfeatures_test.csv')
+
+
+# Correccion csv - strings que deberian ser floats
+df_train['antiguedad'] = df_train['antiguedad'].apply(lambda antiguedad: None if antiguedad == 'otros' else antiguedad)
+df_eval['antiguedad'] = df_eval['antiguedad'].apply(lambda antiguedad: None if antiguedad == 'otros' else antiguedad)
+df_eval['antiguedad'] = df_eval['antiguedad'].astype(float)
+df_train['antiguedad'] = df_train['antiguedad'].astype(float)
+
+df_train['habitaciones'] = df_train['habitaciones'].apply(lambda x: None if x == 'otros' else x)
+df_eval['habitaciones'] = df_eval['habitaciones'].apply(lambda x: None if x == 'otros' else x)
+df_eval['habitaciones'] = df_eval['habitaciones'].astype(float)
+df_train['habitaciones'] = df_train['habitaciones'].astype(float)
+
+df_train['garages'] = df_train['garages'].apply(lambda x: None if x == 'otros' else x)
+df_eval['garages'] = df_eval['garages'].apply(lambda x: None if x == 'otros' else x)
+df_eval['garages'] = df_eval['garages'].astype(float)
+df_train['garages'] = df_train['garages'].astype(float)
+
+df_train['banos'] = df_train['banos'].apply(lambda x: None if x == 'otros' else x)
+df_eval['banos'] = df_eval['banos'].apply(lambda x: None if x == 'otros' else x)
+df_eval['banos'] = df_eval['banos'].astype(float)
+df_train['banos'] = df_train['banos'].astype(float)
+
+# Las columnas de tipo object
+x = df_train.columns.to_series().groupby(df_train.dtypes).groups
+display("Las columnas de tipo Object:")
+display(list(x[list(x.keys())[len(list(x.keys()))-1]]))
+
+df_eval.to_csv('masfeatures_train_f.csv', index=False)
+df_train.to_csv('masfeatures_test_f.csv', index=False)
+
+ +
+
+
+ +
+
+
+
+

Las mismas features anteriores, sin ohe - train

+
+
+
+
+
+
In [15]:
+
+
+
df_train = pd.read_csv('./data/train.csv')
+df1, features1 = concatenar_categoricos(df_train, 'tipodepropiedad', 'provincia', 0, None, True)
+df2, features2 = concatenar_categoricos(df_train, 'provincia', 'ciudad', 0, None, True)
+
+features_borarr = features1 + features2
+df_features_sin_ohe = pd.read_csv('./masfeatures_train_f.csv')
+df_features_sin_ohe = df_features_sin_ohe.drop(features_borarr, axis=1)
+
+display(len(df_features_sin_ohe.columns))
+display(df_features_sin_ohe.columns)
+display(df_features_sin_ohe)
+
+df_features_sin_ohe.to_csv('masfeatures_train_f_no_ohe.csv', index=False)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + + + +
+
69
+
+ +
+ +
+ +
+ + + + +
+
Index(['id', 'titulo', 'descripcion', 'tipodepropiedad', 'direccion', 'ciudad',
+       'provincia', 'antiguedad', 'habitaciones', 'garages', 'banos',
+       'metroscubiertos', 'metrostotales', 'idzona', 'lat', 'lng', 'fecha',
+       'gimnasio', 'usosmultiples', 'piscina', 'escuelascercanas',
+       'centroscomercialescercanos', 'precio', 'tipodepropiedad_provincia',
+       'provincia_ciudad', 'cantidad_propiedades_en_provincia',
+       'cantidad_propiedades_en_ciudad', 'cantidad_propiedades_en_antiguedad',
+       'cantidad_propiedades_en_habitaciones',
+       'cantidad_propiedades_en_garages', 'cantidad_propiedades_en_banos',
+       'cantidad_propiedades_en_gimnasio',
+       'cantidad_propiedades_en_usosmultiples',
+       'cantidad_propiedades_en_escuelascercanas',
+       'cantidad_propiedades_en_centroscomercialescercanos',
+       'cantidad_propiedades_en_piscina', 'ranking_en_provincia',
+       'ranking_en_tipodepropiedad', 'ranking_en_ciudad',
+       'ranking_en_antiguedad', 'ranking_en_habitaciones',
+       'ranking_en_garages', 'ranking_en_banos', 'ranking_en_gimnasio',
+       'ranking_en_usosmultiples', 'ranking_en_escuelascercanas',
+       'ranking_en_centroscomercialescercanos',
+       'cantidad_tipodepropiedad_provincia', 'cantidad_tipodepropiedad_ciudad',
+       'cantidad_tipodepropiedad_antiguedad',
+       'cantidad_tipodepropiedad_habitaciones',
+       'cantidad_tipodepropiedad_garages', 'cantidad_tipodepropiedad_banos',
+       'cantidad_tipodepropiedad_gimnasio',
+       'cantidad_tipodepropiedad_usosmultiples',
+       'cantidad_tipodepropiedad_piscina', 'cantidad_ciudad_antiguedad',
+       'cantidad_ciudad_habitaciones', 'cantidad_ciudad_garages',
+       'cantidad_ciudad_banos', 'cantidad_ciudad_gimnasio',
+       'cantidad_ciudad_usosmultiples', 'cantidad_provincia_antiguedad',
+       'cantidad_provincia_habitaciones', 'cantidad_provincia_garages',
+       'cantidad_provincia_banos', 'cantidad_provincia_gimnasio',
+       'cantidad_provincia_usosmultiples', 'cantidad_provincia_piscina'],
+      dtype='object')
+
+ +
+ +
+ +
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
idtitulodescripciontipodepropiedaddireccionciudadprovinciaantiguedadhabitacionesgarages...cantidad_ciudad_banoscantidad_ciudad_gimnasiocantidad_ciudad_usosmultiplescantidad_provincia_antiguedadcantidad_provincia_habitacionescantidad_provincia_garagescantidad_provincia_banoscantidad_provincia_gimnasiocantidad_provincia_usosmultiplescantidad_provincia_piscina
0254099depto. tipo a-402depto. interior de 80.15m2, consta de sala com...ApartamentoAvenida Division del Norte 2005Benito_JuárezDistrito_FederalNaN2.01.0...612710391103927041210621921423514543805474656163
153461condominio horizontal en venta<p>entre sonora y guerrero, atr&aacute;s del h...Casa_en_condominioAV. MEXICOLa_Magdalena_ContrerasDistrito_Federal10.03.02.0...607184218128904234791858723514543805474656163
2247984casa en venta urbi 3 recamaras tonaladescripcion \nla mejor ubicacion residencial e...CasaUrbi TonalaTonaláJalisco5.03.02.0...25778377842561049291807527198941943118756
3209067casa sola en toluca zinacantepec con credito i...casa en privada con caseta de vigilancia casas...CasaIGNACIO MANUEL ALTAMIRANO 128ZinacantepecEdo._de_México1.02.01.0...46149148144994061168912013385413854739277
4185997paseos del solbonito departamento en excelentes condiciones ...ApartamentoPASEOS DEL SOLZapopanJalisco10.02.01.0...1704963493062749418851234434198941943118756
..................................................................
239995119879bonita casas de 2 recamaras a 10 minutos del c...vendo casa en bosques de ica residencial a 10 ...CasaBOSQUESZinacantepecEdo._de_México0.02.02.0...46149148564994061432212013385413854739277
239996259178casa en condominio a 10 min. del centro de tolucacasa con un jardin amplio, un cuarto de servic...CasaFiliberto Navas 325TolucaEdo._de_México0.03.03.0...2271932194756492220059769335385413854739277
239997131932nicolas san juandepartamento con excelente ubicación, muy cerc...ApartamentoNicolas San JuanBenito_JuárezDistrito_Federal20.02.01.0...612710391103929323210621921423514543805474656163
239998146867casa sola. javier rojo gomez.casa sola, dividida en cuatro departamentos de...CasaJavier Rojo Gomez 120IztapalapaDistrito_Federal20.04.00.0...99503028932350658472292644105474656163
239999121958departamento en bosques de las lomas / av. st...id:19816, muy bonito e iluminado departamento,...ApartamentoAVE. STIMCuajimalpa_de_MorelosDistrito_Federal1.03.02.0...1244230924902411234791858723514543805474656163
+

240000 rows × 69 columns

+
+
+ +
+ +
+
+ +
+
+
+
+

Las mismas features anteriores, sin ohe - train

+
+
+
+
+
+
In [16]:
+
+
+
df_test = pd.read_csv('./data/test.csv')
+df1, features1 = concatenar_categoricos(df_test, 'tipodepropiedad', 'provincia', 0, None, True)
+df2, features2 = concatenar_categoricos(df_test, 'provincia', 'ciudad', 0, None, True)
+
+features_borarr = features1 + features2
+df_features_sin_ohe = pd.read_csv('./masfeatures_test_f.csv')
+df_features_sin_ohe = df_features_sin_ohe.drop(features_borarr, axis=1)
+
+display(len(df_features_sin_ohe.columns))
+display(df_features_sin_ohe.columns)
+display(df_features_sin_ohe)
+
+df_features_sin_ohe.to_csv('masfeatures_test_f_no_ohe.csv', index=False)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + + + +
+
68
+
+ +
+ +
+ +
+ + + + +
+
Index(['id', 'titulo', 'descripcion', 'tipodepropiedad', 'direccion', 'ciudad',
+       'provincia', 'antiguedad', 'habitaciones', 'garages', 'banos',
+       'metroscubiertos', 'metrostotales', 'idzona', 'lat', 'lng', 'fecha',
+       'gimnasio', 'usosmultiples', 'piscina', 'escuelascercanas',
+       'centroscomercialescercanos', 'tipodepropiedad_provincia',
+       'provincia_ciudad', 'cantidad_propiedades_en_provincia',
+       'cantidad_propiedades_en_ciudad', 'cantidad_propiedades_en_antiguedad',
+       'cantidad_propiedades_en_habitaciones',
+       'cantidad_propiedades_en_garages', 'cantidad_propiedades_en_banos',
+       'cantidad_propiedades_en_gimnasio',
+       'cantidad_propiedades_en_usosmultiples',
+       'cantidad_propiedades_en_escuelascercanas',
+       'cantidad_propiedades_en_centroscomercialescercanos',
+       'cantidad_propiedades_en_piscina', 'ranking_en_provincia',
+       'ranking_en_tipodepropiedad', 'ranking_en_ciudad',
+       'ranking_en_antiguedad', 'ranking_en_habitaciones',
+       'ranking_en_garages', 'ranking_en_banos', 'ranking_en_gimnasio',
+       'ranking_en_usosmultiples', 'ranking_en_escuelascercanas',
+       'ranking_en_centroscomercialescercanos',
+       'cantidad_tipodepropiedad_provincia', 'cantidad_tipodepropiedad_ciudad',
+       'cantidad_tipodepropiedad_antiguedad',
+       'cantidad_tipodepropiedad_habitaciones',
+       'cantidad_tipodepropiedad_garages', 'cantidad_tipodepropiedad_banos',
+       'cantidad_tipodepropiedad_gimnasio',
+       'cantidad_tipodepropiedad_usosmultiples',
+       'cantidad_tipodepropiedad_piscina', 'cantidad_ciudad_antiguedad',
+       'cantidad_ciudad_habitaciones', 'cantidad_ciudad_garages',
+       'cantidad_ciudad_banos', 'cantidad_ciudad_gimnasio',
+       'cantidad_ciudad_usosmultiples', 'cantidad_provincia_antiguedad',
+       'cantidad_provincia_habitaciones', 'cantidad_provincia_garages',
+       'cantidad_provincia_banos', 'cantidad_provincia_gimnasio',
+       'cantidad_provincia_usosmultiples', 'cantidad_provincia_piscina'],
+      dtype='object')
+
+ +
+ +
+ +
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
idtitulodescripciontipodepropiedaddireccionciudadprovinciaantiguedadhabitacionesgarages...cantidad_ciudad_banoscantidad_ciudad_gimnasiocantidad_ciudad_usosmultiplescantidad_provincia_antiguedadcantidad_provincia_habitacionescantidad_provincia_garagescantidad_provincia_banoscantidad_provincia_gimnasiocantidad_provincia_usosmultiplescantidad_provincia_piscina
04941casa en venta en miguel hidalgo, distrito federal<p>excelente casa estilo moderno.</p>CasaBosque de CedrosMiguel_HidalgoDistrito_Federal29.03.0NaN...54121312553158281643710136681374914136
151775departamentos en venta en montebello<p>departamento una recamara:\n</p><p>departam...ApartamentoNaNMéridaYucatánNaN1.01.0...2521677179867047123278185419801575
2115253departamento nuevo delegación coyoacán de 87 m...departamento nuevo de 87.06 m2, 1 cajón de est...ApartamentoPueblo de los Reyes, Coyoacán, Mexico D.F.CoyoacánDistrito_Federal0.02.01.0...503124912491999526347245881136681374914136
3299321departamento en venta en acapulco<p> raíces dv001 precioso departamento tipo k...ApartamentoNaNAcapulco_de_JuárezGuerrero2.02.02.0...23056157226234235251604622310
4173570bonita casa sola equipada de dos niveles en lo...<p>casa sola, bonita de dos rec&aacute;maras u...CasaCEDROSTultitlánEdo._de_México10.02.01.0...1532312321958221928872894945494359632
..................................................................
5999575094oportunidad!! se vende amplia casa en col. moc...oportunidad!! ideal para oficina o casa habita...CasaOriente 172 # 265Venustiano_CarranzaDistrito_Federal20.04.03.0...303933952287127315002516136681374914136
59996171847colinas de ecatepeccasa, sala comedor, patio de servicio, buenas ...CasacolinasEcatepec_de_MorelosEdo._de_México10.03.01.0...1725515511958545828873466945494359632
59997138313estrene hermosa casa en sierra morenahermosa casa lista para habitarse ubicada en f...Casas/calleGuadalupeNuevo_León5.03.02.0...180459487585213615461212369838693772
59998271268zen house i venta de linda casa con acabados ...hermosa casa con acabados de lujo en fracciona...CasaZen House lQuerétaroQuerétaro0.02.01.0...12193032301114525685091733406140153766
5999972612casa en chapalita las fuentes/ cercano al club...<p>hermosa casa bien ubicada. cuenta con:</p>\...CasaFuentes de San Agustín 5051ZapopanJalisco0.03.02.0...828239623151201266022941835497948654690
+

60000 rows × 68 columns

+
+
+ +
+ +
+
+ +
+
+
+ + + + + +