{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# MACD Exploración de Datos Grupo R\n### Integrantes del Grupo:\n<ul>\n    <li>\nJose Alfredo Peto Martinez\n    </li>\n    <li>\nAlvaro Miguel Toriz Proenza\n    </li>\n    <li>\nCarlos Antonio Rico Martínez\n    </li>\n</ul>\n\n### Objetivos:\n\n<ul>\n    <li>\nDescribe cual es la relación de tu variable objetivo con las demás variables presentes.\n    </li>\n    <li>\nDetermina cuales son las variables que tienen mayor correlación con tu objetivo. \n    </li>\n    <li>\nAplica ingeniería de características para diseñar nuevas características en tu conjunto de datos. \n    </li>\n    <li>\nModela tus datos de dos o más formas diferentes para comparar los resultados.\n    </li>\n</ul>\n","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19"}},{"cell_type":"markdown","source":"![](https://toriz.net/images/Energy_Predictor_2022-10-05%2019-44-35.jpg)","metadata":{}},{"cell_type":"markdown","source":"https://www.kaggle.com/competitions/ashrae-energy-prediction","metadata":{}},{"cell_type":"markdown","source":"## Relación de nuestra variable objetivo con las demás variables presentes","metadata":{}},{"cell_type":"markdown","source":"Este ejercicio trata de la construcción de modelos a través de las tasas de uso históricas y el clima observado sobre el uso de energía medido en edificios en las siguientes áreas: medidores de agua helada, electricidad, agua caliente y vapor. Los datos provienen de más de 1000 edificios en varios sitios diferentes alrededor del mundo, durante un período de tres años. Una vez que se reacondiciona un edificio, el consumo de energía nuevo (más bajo) se compara con los valores modelados del edificio original para calcular los ahorros de la modernización.\n\nLa variable meta es meter_reading, que se refiere al consumo de energía en kWh.\n\nLas variables que se relacionan con la variable meta son: \n<ul>\n    <li>\nprimary_use: indicador de la categoría principal de actividades para el edificio según las definiciones de tipo de propiedad de EnergyStar\n    </li>\n    <li>\nsquare_feet - Superficie bruta del edificio\n            </li>\n    <li>\nyear_built - Año en que se inauguró el edificio\n            </li>\n    <li>\nfloor_count - Número de pisos del edificio\n            </li>\n    <li>\nair_temperature - Grados Celsius\n            </li>\n    <li>\ncloud_coverage - Porción del cielo cubierta de nubes, en octas\n            </li>\n    <li>\ndew_temperature - Grados Celsius\n            </li>\n    <li>\nprecip_depth_1_hr - Milímetros\n            </li>\n    <li>\nsea_level_pression - Milibar/hectopascales\n            </li>\n    <li>\nwind_direction - Dirección de la brújula (0-360)\n            </li>\n    <li>\nwind_speed - Metros por segundo\n    </li>\n    </ul>","metadata":{}},{"cell_type":"markdown","source":"## Variables que tienen mayor correlación con nuestro objetivo","metadata":{}},{"cell_type":"markdown","source":"Después de la visualización de los datos, se eliminan las siguientes variables: 'year_built', 'floor_count', 'wind_direction', 'dew_temperature'. También de acuerdo con esta visualización, se puede considerar que las que tienen una mayor relación con nuestro objetivo son: 'air_temperature', 'wind_speed', 'precip_depth_1_hr', 'cloud_coverage', 'square_feet' y 'primary_use'","metadata":{}},{"cell_type":"markdown","source":"## Nuevas características en nuestro conjunto de datos en base a ingeniería de características","metadata":{"execution":{"iopub.status.busy":"2022-10-05T20:13:34.155039Z","iopub.execute_input":"2022-10-05T20:13:34.155441Z","iopub.status.idle":"2022-10-05T20:13:34.184419Z","shell.execute_reply.started":"2022-10-05T20:13:34.155362Z","shell.execute_reply":"2022-10-05T20:13:34.183475Z"}}},{"cell_type":"markdown","source":"Se crearon las siguientes nuevas características, a partir de la variable 'primary_use':\n<ul>\n    <li>\n'primary_use_Education'\n    </li>\n    <li>\n'primary_use_Entertainment/public assembly'\n    </li>\n    <li>\n'primary_use_Food sales and service'\n    </li>\n    <li>\n'primary_use_Healthcare'\n    </li>\n    <li>\n'primary_use_Lodging/residential'\n    </li>\n    <li>\n'primary_use_Manufacturing/industrial'\n    </li>\n    <li>\n'primary_use_Office'\n    </li>\n    <li>\n'primary_use_Other'\n    </li>\n    <li>\n'primary_use_Parking'\n    </li>\n    <li>\n'primary_use_Public services'\n    </li>\n    <li>\n'primary_use_Religious worship'\n    </li>\n    <li>\n'primary_use_Retail'\n    </li>\n    <li>\n'primary_use_Services'\n    </li>\n    <li>\n'primary_use_Technology/science'\n    </li>\n    <li>\n'primary_use_Utility'\n    </li>\n    <li>\n'primary_use_Warehouse/storage'\n    </li>\n    </ul>","metadata":{}},{"cell_type":"markdown","source":"## Modelación de nuestros datos de dos formas diferentes para comparar los resultados","metadata":{}},{"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nfrom sklearn import linear_model\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.metrics import mean_squared_error,mean_absolute_error\nimport matplotlib.pyplot as plt\nimport datetime\nfrom sklearn import metrics\nimport seaborn as sns\nimport sklearn.ensemble as ske\nimport gc\nimport os\nfrom sklearn.linear_model import LinearRegression,SGDRegressor,ElasticNet,Ridge\nfrom sklearn.metrics import mean_absolute_error\nfrom sklearn.tree import DecisionTreeRegressor","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:19:51.969742Z","iopub.execute_input":"2022-10-08T17:19:51.970741Z","iopub.status.idle":"2022-10-08T17:19:53.569052Z","shell.execute_reply.started":"2022-10-08T17:19:51.970581Z","shell.execute_reply":"2022-10-08T17:19:53.567441Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Archivos presentes en el Input\nprint(os.listdir('../input/ashrae-energy-prediction'))","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:19:53.571302Z","iopub.execute_input":"2022-10-08T17:19:53.571816Z","iopub.status.idle":"2022-10-08T17:19:53.578663Z","shell.execute_reply.started":"2022-10-08T17:19:53.571770Z","shell.execute_reply":"2022-10-08T17:19:53.577603Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Función para leer y hacer una primera revisión de los datos\ndef read_and_interpret_data(filename):\n    path = \"../input/ashrae-energy-prediction\"\n    df = pd.read_csv('{0}/{1}'.format(path,filename))\n    print(\"~~~~~~Perfil de los datos~~~~~~ : \",df.shape)\n    print(\"~~~~~~Columnas con su datatype~~~~~~ : \")\n    print(df.info())\n    print(\"~~~~~~Primeros datos~~~~~~ : \")\n    print(df.head())\n    print(\"~~~~~~Últimos datos~~~~~~ : \")\n    print(df.tail())\n    print(\"~~~~~~Descripción de los datos~~~~~~ : \")\n    print(df.describe())\n    print(\"~~~~~~Datos faltantes~~~~~~ : \")\n    print(df.isna().sum())\n    if 'timestamp' in df.columns: \n        df['timestamp'] = pd.to_datetime(df['timestamp'],format = \"%Y-%m-%d %H:%M:%S\")\n        print(\"~~~~~~Años de los datos~~~~~~ :\")\n        print(df.timestamp.dt.year.unique())\n    return df","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:19:53.580347Z","iopub.execute_input":"2022-10-08T17:19:53.580765Z","iopub.status.idle":"2022-10-08T17:19:53.590813Z","shell.execute_reply.started":"2022-10-08T17:19:53.580682Z","shell.execute_reply":"2022-10-08T17:19:53.589481Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_train = read_and_interpret_data('train.csv')","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:19:53.593552Z","iopub.execute_input":"2022-10-08T17:19:53.594000Z","iopub.status.idle":"2022-10-08T17:20:19.336077Z","shell.execute_reply.started":"2022-10-08T17:19:53.593966Z","shell.execute_reply":"2022-10-08T17:20:19.333464Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_weather_train = read_and_interpret_data('weather_train.csv')","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:20:19.340144Z","iopub.execute_input":"2022-10-08T17:20:19.341166Z","iopub.status.idle":"2022-10-08T17:20:19.798623Z","shell.execute_reply.started":"2022-10-08T17:20:19.341088Z","shell.execute_reply":"2022-10-08T17:20:19.797142Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"DATA_PATH = \"../input/ashrae-energy-prediction/\"\nWeather_Train = pd.read_csv(DATA_PATH + 'weather_train.csv')\nWeather_Test= weather_df = pd.read_csv(DATA_PATH + 'weather_test.csv')\nTest= pd.read_csv(DATA_PATH +'test.csv')\nTrain= pd.read_csv(DATA_PATH +'train.csv')\nBuilding= pd.read_csv(DATA_PATH +'building_metadata.csv')","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:20:19.800081Z","iopub.execute_input":"2022-10-08T17:20:19.800695Z","iopub.status.idle":"2022-10-08T17:21:08.613488Z","shell.execute_reply.started":"2022-10-08T17:20:19.800649Z","shell.execute_reply":"2022-10-08T17:21:08.612076Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Función para la reducción de uso de memoria\ndef reduce_mem_usage(df):\n    \"\"\" itera a través de todas las columnas de un \"dataframe\" y modificar el tipo de datos\n         para reducir el uso de la memoria.        \n    \"\"\"\n    start_mem = df.memory_usage().sum() / 1024**2\n    print('El uso de memoria del \"dataframe\" es {:.2f} MB'.format(start_mem))\n    \n    for col in df.columns:\n        col_type = df[col].dtype\n        \n        if col_type != object:\n            c_min = df[col].min()\n            c_max = df[col].max()\n            if str(col_type)[:3] == 'int':\n                if c_min > np.iinfo(np.int8).min and c_max < np.iinfo(np.int8).max:\n                    df[col] = df[col].astype(np.int8)\n                elif c_min > np.iinfo(np.int16).min and c_max < np.iinfo(np.int16).max:\n                    df[col] = df[col].astype(np.int16)\n                elif c_min > np.iinfo(np.int32).min and c_max < np.iinfo(np.int32).max:\n                    df[col] = df[col].astype(np.int32)\n                elif c_min > np.iinfo(np.int64).min and c_max < np.iinfo(np.int64).max:\n                    df[col] = df[col].astype(np.int64)  \n            else:\n                if c_min > np.finfo(np.float16).min and c_max < np.finfo(np.float16).max:\n                    df[col] = df[col].astype(np.float16)\n                elif c_min > np.finfo(np.float32).min and c_max < np.finfo(np.float32).max:\n                    df[col] = df[col].astype(np.float32)\n                else:\n                    df[col] = df[col].astype(np.float64)\n        else:\n            df[col] = df[col].astype('category')\n    \n    end_mem = df.memory_usage().sum() / 1024**2\n    print('El uso de memoria después de la optimización es: {:.2f} MB'.format(end_mem))\n    print('Disminuido en {:.1f}%'.format(100 * (start_mem - end_mem) / start_mem))\n    return df","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:21:08.615338Z","iopub.execute_input":"2022-10-08T17:21:08.615675Z","iopub.status.idle":"2022-10-08T17:21:08.632554Z","shell.execute_reply.started":"2022-10-08T17:21:08.615636Z","shell.execute_reply":"2022-10-08T17:21:08.631491Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"Train = reduce_mem_usage(Train)\nTest = reduce_mem_usage(Test)\nWeather_Train = reduce_mem_usage(Weather_Train)\nWeather_Test = reduce_mem_usage(Weather_Test)\nBuilding = reduce_mem_usage(Building)","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:21:08.633990Z","iopub.execute_input":"2022-10-08T17:21:08.634501Z","iopub.status.idle":"2022-10-08T17:21:16.947043Z","shell.execute_reply.started":"2022-10-08T17:21:08.634469Z","shell.execute_reply":"2022-10-08T17:21:16.945697Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"results = Building.merge(Train,left_on='building_id',right_on='building_id',how='left')\ndata = results.merge(Weather_Train,left_on=['site_id','timestamp'],right_on=['site_id','timestamp'],how='left')\ndata.columns","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:21:16.948863Z","iopub.execute_input":"2022-10-08T17:21:16.949211Z","iopub.status.idle":"2022-10-08T17:21:25.888591Z","shell.execute_reply.started":"2022-10-08T17:21:16.949180Z","shell.execute_reply":"2022-10-08T17:21:25.887399Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def plot_hist(df,var_name):\n    plt.figure(figsize=(17,8))\n    plt.hist(df[var_name],bins = 50)\n    plt.title(f\"Histogram - {var_name}\")\n    plt.show()","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:21:25.892867Z","iopub.execute_input":"2022-10-08T17:21:25.893220Z","iopub.status.idle":"2022-10-08T17:21:25.899151Z","shell.execute_reply.started":"2022-10-08T17:21:25.893189Z","shell.execute_reply":"2022-10-08T17:21:25.897808Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plot_hist(Building,'year_built')","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:21:25.900532Z","iopub.execute_input":"2022-10-08T17:21:25.901629Z","iopub.status.idle":"2022-10-08T17:21:26.318440Z","shell.execute_reply.started":"2022-10-08T17:21:25.901577Z","shell.execute_reply":"2022-10-08T17:21:26.317155Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plot_hist(Building,'floor_count')","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:21:26.323992Z","iopub.execute_input":"2022-10-08T17:21:26.324506Z","iopub.status.idle":"2022-10-08T17:21:26.645640Z","shell.execute_reply.started":"2022-10-08T17:21:26.324465Z","shell.execute_reply":"2022-10-08T17:21:26.644224Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plot_hist(data,'cloud_coverage')","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:21:26.647840Z","iopub.execute_input":"2022-10-08T17:21:26.648340Z","iopub.status.idle":"2022-10-08T17:21:28.862554Z","shell.execute_reply.started":"2022-10-08T17:21:26.648298Z","shell.execute_reply":"2022-10-08T17:21:28.861231Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plot_hist(data,'wind_speed')","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:21:28.864588Z","iopub.execute_input":"2022-10-08T17:21:28.865455Z","iopub.status.idle":"2022-10-08T17:21:31.627937Z","shell.execute_reply.started":"2022-10-08T17:21:28.865403Z","shell.execute_reply":"2022-10-08T17:21:31.626992Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for var in ['dew_temperature','air_temperature','wind_speed']:\n    plot_hist(Weather_Train,var)","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:21:31.629291Z","iopub.execute_input":"2022-10-08T17:21:31.629831Z","iopub.status.idle":"2022-10-08T17:21:32.594909Z","shell.execute_reply.started":"2022-10-08T17:21:31.629798Z","shell.execute_reply":"2022-10-08T17:21:32.593621Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sns.scatterplot(x='air_temperature', y='meter_reading', data=data)","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:21:32.596417Z","iopub.execute_input":"2022-10-08T17:21:32.596805Z","iopub.status.idle":"2022-10-08T17:22:43.011398Z","shell.execute_reply.started":"2022-10-08T17:21:32.596766Z","shell.execute_reply":"2022-10-08T17:22:43.010157Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"fig, axes = plt.subplots(1, 1, figsize=(14, 6))\nsns.boxplot(x='floor_count', y='meter_reading', data=data, showfliers=False);","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:22:43.013201Z","iopub.execute_input":"2022-10-08T17:22:43.013636Z","iopub.status.idle":"2022-10-08T17:22:46.273007Z","shell.execute_reply.started":"2022-10-08T17:22:43.013593Z","shell.execute_reply":"2022-10-08T17:22:46.271885Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"fig, axes = plt.subplots(1, 1, figsize=(14, 6))\nsns.boxplot(x='site_id', y='dew_temperature', data=data, showfliers=False);","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:22:46.274678Z","iopub.execute_input":"2022-10-08T17:22:46.275112Z","iopub.status.idle":"2022-10-08T17:22:51.720042Z","shell.execute_reply.started":"2022-10-08T17:22:46.275079Z","shell.execute_reply":"2022-10-08T17:22:51.718424Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"corrmat=data.corr()\nfig,ax=plt.subplots(figsize=(12,10))\nsns.heatmap(corrmat,annot=True,annot_kws={'size': 12})","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:22:51.721595Z","iopub.execute_input":"2022-10-08T17:22:51.722059Z","iopub.status.idle":"2022-10-08T17:23:04.548895Z","shell.execute_reply.started":"2022-10-08T17:22:51.721972Z","shell.execute_reply":"2022-10-08T17:23:04.547650Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Eliminando columnas innecesarias\ndata = data.drop(columns=['year_built', 'floor_count', 'wind_direction', 'dew_temperature'])","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:23:04.550629Z","iopub.execute_input":"2022-10-08T17:23:04.551310Z","iopub.status.idle":"2022-10-08T17:23:05.612950Z","shell.execute_reply.started":"2022-10-08T17:23:04.551256Z","shell.execute_reply":"2022-10-08T17:23:05.611776Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Arreglando el \"timestamp\" y tomando solo el día y el mes y luego soltando la columna de \"timestamp\"\ndata[\"timestamp\"] = pd.to_datetime(data[\"timestamp\"])\ndata[\"day\"]= data[\"timestamp\"].dt.day\ndata[\"month\"]= data[\"timestamp\"].dt.month\ndata['weekend'] = data['timestamp'].dt.dayofweek.isin([5,6]).astype('uint8')\ndata= data.drop(\"timestamp\", axis = 1)","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:23:05.614946Z","iopub.execute_input":"2022-10-08T17:23:05.615920Z","iopub.status.idle":"2022-10-08T17:23:17.380336Z","shell.execute_reply.started":"2022-10-08T17:23:05.615870Z","shell.execute_reply":"2022-10-08T17:23:17.379265Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Printing the \"Percentage of missing values\" to see what is going to be dropped and what is going to be filled\nprint(\"Percentage of missing values in the data dataset\")\ndata.isna().sum()/len(data)*100","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:23:17.381823Z","iopub.execute_input":"2022-10-08T17:23:17.382390Z","iopub.status.idle":"2022-10-08T17:23:18.155444Z","shell.execute_reply.started":"2022-10-08T17:23:17.382358Z","shell.execute_reply":"2022-10-08T17:23:18.154184Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Primeros registros de \"data\"\ndata.head()","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:23:18.156856Z","iopub.execute_input":"2022-10-08T17:23:18.157181Z","iopub.status.idle":"2022-10-08T17:23:18.180832Z","shell.execute_reply.started":"2022-10-08T17:23:18.157153Z","shell.execute_reply":"2022-10-08T17:23:18.179473Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Establece una lista de enteros que van desde 0 hasta la longitud de los datos como índice\ndata = data.reset_index()","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:23:18.182604Z","iopub.execute_input":"2022-10-08T17:23:18.183531Z","iopub.status.idle":"2022-10-08T17:23:18.555910Z","shell.execute_reply.started":"2022-10-08T17:23:18.183483Z","shell.execute_reply":"2022-10-08T17:23:18.555045Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Cambio del tipo de datos a float 32 para completar el valor NA antes de transformarlos en \"int\" para un procesamiento de modelado sin problemas\ndata['wind_speed'] = data['wind_speed'].astype('float32')\ndata['air_temperature'] = data['air_temperature'].astype('float32')\ndata['precip_depth_1_hr'] = data['precip_depth_1_hr'].astype('float32')\ndata['cloud_coverage'] = data['cloud_coverage'].astype('float32')","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:23:18.557350Z","iopub.execute_input":"2022-10-08T17:23:18.557933Z","iopub.status.idle":"2022-10-08T17:23:19.177210Z","shell.execute_reply.started":"2022-10-08T17:23:18.557900Z","shell.execute_reply":"2022-10-08T17:23:19.175981Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Llenando los valores nulos\ndata['precip_depth_1_hr'].fillna(data['precip_depth_1_hr'].mean(), inplace = True)\ndata['cloud_coverage'].fillna(data['cloud_coverage'].mean(), inplace = True)\ndata['wind_speed'].fillna(data['wind_speed'].mean(), inplace=True)\ndata['air_temperature'].fillna(data['air_temperature'].mean(), inplace=True)\n\n# Suma de \"nulls\" dentro de las columnas\ndata.isnull().sum()","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:23:19.178668Z","iopub.execute_input":"2022-10-08T17:23:19.179034Z","iopub.status.idle":"2022-10-08T17:23:20.222910Z","shell.execute_reply.started":"2022-10-08T17:23:19.179002Z","shell.execute_reply":"2022-10-08T17:23:20.221792Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Perfil de \"results\"\nresults.shape","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:23:20.224488Z","iopub.execute_input":"2022-10-08T17:23:20.224871Z","iopub.status.idle":"2022-10-08T17:23:20.232385Z","shell.execute_reply.started":"2022-10-08T17:23:20.224839Z","shell.execute_reply":"2022-10-08T17:23:20.231335Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Columnas de \"results\"\nresults.columns","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:23:20.238335Z","iopub.execute_input":"2022-10-08T17:23:20.238783Z","iopub.status.idle":"2022-10-08T17:23:20.246564Z","shell.execute_reply.started":"2022-10-08T17:23:20.238748Z","shell.execute_reply":"2022-10-08T17:23:20.245551Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Perfil de \"data\"\ndata.shape","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:23:20.247882Z","iopub.execute_input":"2022-10-08T17:23:20.248293Z","iopub.status.idle":"2022-10-08T17:23:20.259019Z","shell.execute_reply.started":"2022-10-08T17:23:20.248241Z","shell.execute_reply":"2022-10-08T17:23:20.257565Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Columnas de \"data\"\ndata.columns","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:23:20.260946Z","iopub.execute_input":"2022-10-08T17:23:20.261399Z","iopub.status.idle":"2022-10-08T17:23:20.271531Z","shell.execute_reply.started":"2022-10-08T17:23:20.261348Z","shell.execute_reply":"2022-10-08T17:23:20.270374Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Aquí la columna 'primaty_use' fue tratada por la función get_dummies y get_dummies se usa para la manipulación de datos\ndata_linearR = pd.get_dummies(data, columns=['primary_use'])","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:23:20.272974Z","iopub.execute_input":"2022-10-08T17:23:20.273370Z","iopub.status.idle":"2022-10-08T17:23:24.315920Z","shell.execute_reply.started":"2022-10-08T17:23:20.273338Z","shell.execute_reply":"2022-10-08T17:23:24.314699Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Columnas de \"data_linearR\"\ndata_linearR.columns","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:23:24.317706Z","iopub.execute_input":"2022-10-08T17:23:24.318115Z","iopub.status.idle":"2022-10-08T17:23:24.325375Z","shell.execute_reply.started":"2022-10-08T17:23:24.318080Z","shell.execute_reply":"2022-10-08T17:23:24.324261Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Using the important features \nX =data_linearR[['building_id', 'meter', 'air_temperature', 'wind_speed', 'precip_depth_1_hr', 'cloud_coverage',\n       'square_feet', 'primary_use_Education', 'primary_use_Entertainment/public assembly',\n       'primary_use_Food sales and service', 'primary_use_Healthcare',\n       'primary_use_Lodging/residential',\n       'primary_use_Manufacturing/industrial', 'primary_use_Office',\n       'primary_use_Other', 'primary_use_Parking',\n       'primary_use_Public services', 'primary_use_Religious worship',\n       'primary_use_Retail', 'primary_use_Services',\n       'primary_use_Technology/science', 'primary_use_Utility',\n       'primary_use_Warehouse/storage', 'month', 'day','weekend']]\n\n# Create target variable\ny = data_linearR['meter_reading']\n\n# Train, test, split\nX_train, X_test, y_train, y_test = train_test_split(X,y, test_size = .20, random_state= 0)","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:23:24.327414Z","iopub.execute_input":"2022-10-08T17:23:24.328373Z","iopub.status.idle":"2022-10-08T17:23:42.850057Z","shell.execute_reply.started":"2022-10-08T17:23:24.328335Z","shell.execute_reply":"2022-10-08T17:23:42.848691Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Creación del objeto de regresión lineal\nregressor = LinearRegression()\n\n# Ajuste del modelo a los datos de entrenamiento\nregressor.fit(X_train,y_train)","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:23:42.851960Z","iopub.execute_input":"2022-10-08T17:23:42.852604Z","iopub.status.idle":"2022-10-08T17:24:06.707867Z","shell.execute_reply.started":"2022-10-08T17:23:42.852568Z","shell.execute_reply":"2022-10-08T17:24:06.706461Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Predicción de los resultados del conjunto de pruebas\ny_pred = regressor.predict(X_test)","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:24:06.709758Z","iopub.execute_input":"2022-10-08T17:24:06.710777Z","iopub.status.idle":"2022-10-08T17:24:07.084987Z","shell.execute_reply.started":"2022-10-08T17:24:06.710736Z","shell.execute_reply":"2022-10-08T17:24:07.083311Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# R^2 y precisión del modelo lineal; Versión adaptada de: https://www.kaggle.com/code/abdelrahmanemad22/csci417-notebook-eda-features-eng-linear-reg-p1\nprint('Accuracy %d', regressor.score(X_test, y_test))\nprint('R^2 =', metrics.explained_variance_score(y_test,y_pred))\nregressor.score(X_train,y_train)","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:24:07.092854Z","iopub.execute_input":"2022-10-08T17:24:07.097216Z","iopub.status.idle":"2022-10-08T17:24:09.305381Z","shell.execute_reply.started":"2022-10-08T17:24:07.097135Z","shell.execute_reply":"2022-10-08T17:24:09.304172Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"tree_model = DecisionTreeRegressor(random_state=1)\ntree_model.fit(X_train, y_train)","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:24:09.307373Z","iopub.execute_input":"2022-10-08T17:24:09.307865Z","iopub.status.idle":"2022-10-08T17:28:43.310469Z","shell.execute_reply.started":"2022-10-08T17:24:09.307820Z","shell.execute_reply":"2022-10-08T17:28:43.308197Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"meter_preds = tree_model.predict(X_test)\nprint(mean_absolute_error(y_test, meter_preds))","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:28:43.314502Z","iopub.execute_input":"2022-10-08T17:28:43.315022Z","iopub.status.idle":"2022-10-08T17:28:52.086814Z","shell.execute_reply.started":"2022-10-08T17:28:43.314961Z","shell.execute_reply":"2022-10-08T17:28:52.085478Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(\"Predicción DecisionTree y LinearRegression\")\nfor i in range(25):\n    print(y_test.values[i],meter_preds[i],y_pred[i])","metadata":{"execution":{"iopub.status.busy":"2022-10-08T17:30:07.384994Z","iopub.execute_input":"2022-10-08T17:30:07.385454Z","iopub.status.idle":"2022-10-08T17:30:07.392978Z","shell.execute_reply.started":"2022-10-08T17:30:07.385420Z","shell.execute_reply":"2022-10-08T17:30:07.391764Z"},"trusted":true},"execution_count":null,"outputs":[]}]}