{
"cells": [
{
"cell_type": "markdown",
"id": "16be11e8",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "markdown",
"id": "02d0018f",
"metadata": {},
"source": [
"# Regresión y Clasificación con Random Forests"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "6a6cf0c1",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.metrics import classification_report,confusion_matrix,ConfusionMatrixDisplay\n",
"import seaborn as sns\n",
"from sklearn.preprocessing import StandardScaler\n",
"from sklearn.ensemble import RandomForestClassifier\n",
"from sklearn.ensemble import RandomForestRegressor\n",
"from sklearn import model_selection as ms\n",
"from sklearn.metrics import r2_score \n",
"from sklearn.metrics import mean_squared_error\n",
"from sklearn import metrics as m"
]
},
{
"cell_type": "markdown",
"id": "ff149f41",
"metadata": {},
"source": [
"# 1. Clasificación"
]
},
{
"cell_type": "markdown",
"id": "c4e5a4f0",
"metadata": {},
"source": [
"### Información del dataset\n",
"\n",
"### Adult income dataset\n",
"\n",
"https://archive.ics.uci.edu/ml/datasets/Adult\n",
"\n",
"\n",
"1. edad: continua.\n",
"2. clase de trabajo: Privado, Autónomo-no-inc, Autónomo-inc, Federal-gov, Local-gov, Estatal-gov, Sin-trabajo, Nunca-trabajo.\n",
"3. fnlwgt: continuo.\n",
"4. educación: Bachillerato, Algún tipo de universidad, 11º, Grado de secundaria, Escuela profesional, Asistente de dirección, Asistente de dirección, 9º, 7º-8º, 12º, Máster, 1º-4º, 10º, Doctorado, 5º-6º, Preescolar.\n",
"5. education-num: continuous.\n",
"6. estado civil: Casado-cónyuge, Divorciado, No casado, Separado, Viudo, Casado-cónyuge-ausente, Casado-cónyuge.\n",
"7. Ocupación: Apoyo técnico, Reparación artesanal, Otros servicios, Ventas, Directivo, Especialidad profesional, Manipulador-limpiador, Operador de maquinaria, Administrativo-empleado, Agricultura-pesca, Transporte-movimiento, Servicio doméstico privado, Servicio de protección, Fuerzas armadas.\n",
"8. Relación: Esposa, Hijo propio, Esposo, No familiar, Otro pariente, Soltero.\n",
"9. Raza: Blanco, Asiático-Pacífico-Islandés, Amerindio-Esquimal, Otro, Negro.\n",
"10. Sexo: Mujer, Hombre.\n",
"11. plusvalía: continua.\n",
"12. pérdida de capital: continua.\n",
"13. horas-semana: continuo.\n",
"14. país de origen: Estados Unidos, Camboya, Inglaterra, Puerto-Rico, Canadá, Alemania, Estados Unidos periféricos (Guam-USVI-etc), India, Japón, Grecia, Sur, China, Cuba, Irán, Honduras, Filipinas, Italia, Polonia, Jamaica, Vietnam, México, Portugal, Irlanda, Francia, República Dominicana, Laos, Ecuador, Taiwán, Haití, Colombia, Hungría, Guatemala, Nicaragua, Escocia, Tailandia, Yugoslavia, El Salvador, Trinad&Tobago, Perú, Hong, Holanda.\n",
"15. clase: >50K, <=50K"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "5c686ceb",
"metadata": {},
"outputs": [],
"source": [
"data = pd.read_csv('resources/adult_.csv')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "8f164d20",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" age \n",
" workclass \n",
" fnlwgt \n",
" education \n",
" educational-num \n",
" marital-status \n",
" occupation \n",
" relationship \n",
" race \n",
" gender \n",
" capital-gain \n",
" capital-loss \n",
" hours-per-week \n",
" native-country \n",
" income \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 25 \n",
" Private \n",
" 226802 \n",
" 11th \n",
" 7 \n",
" Never-married \n",
" Machine-op-inspct \n",
" Own-child \n",
" Black \n",
" Male \n",
" 0 \n",
" 0 \n",
" 40 \n",
" United-States \n",
" <=50K \n",
" \n",
" \n",
" 1 \n",
" 38 \n",
" Private \n",
" 89814 \n",
" HS-grad \n",
" 9 \n",
" Married-civ-spouse \n",
" Farming-fishing \n",
" Husband \n",
" White \n",
" Male \n",
" 0 \n",
" 0 \n",
" 50 \n",
" United-States \n",
" <=50K \n",
" \n",
" \n",
" 2 \n",
" 28 \n",
" Local-gov \n",
" 336951 \n",
" Assoc-acdm \n",
" 12 \n",
" Married-civ-spouse \n",
" Protective-serv \n",
" Husband \n",
" White \n",
" Male \n",
" 0 \n",
" 0 \n",
" 40 \n",
" United-States \n",
" >50K \n",
" \n",
" \n",
" 3 \n",
" 44 \n",
" Private \n",
" 160323 \n",
" Some-college \n",
" 10 \n",
" Married-civ-spouse \n",
" Machine-op-inspct \n",
" Husband \n",
" Black \n",
" Male \n",
" 7688 \n",
" 0 \n",
" 40 \n",
" United-States \n",
" >50K \n",
" \n",
" \n",
" 4 \n",
" 18 \n",
" ? \n",
" 103497 \n",
" Some-college \n",
" 10 \n",
" Never-married \n",
" ? \n",
" Own-child \n",
" White \n",
" Female \n",
" 0 \n",
" 0 \n",
" 30 \n",
" United-States \n",
" <=50K \n",
" \n",
" \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" \n",
" \n",
" 48837 \n",
" 27 \n",
" Private \n",
" 257302 \n",
" Assoc-acdm \n",
" 12 \n",
" Married-civ-spouse \n",
" Tech-support \n",
" Wife \n",
" White \n",
" Female \n",
" 0 \n",
" 0 \n",
" 38 \n",
" United-States \n",
" <=50K \n",
" \n",
" \n",
" 48838 \n",
" 40 \n",
" Private \n",
" 154374 \n",
" HS-grad \n",
" 9 \n",
" Married-civ-spouse \n",
" Machine-op-inspct \n",
" Husband \n",
" White \n",
" Male \n",
" 0 \n",
" 0 \n",
" 40 \n",
" United-States \n",
" >50K \n",
" \n",
" \n",
" 48839 \n",
" 58 \n",
" Private \n",
" 151910 \n",
" HS-grad \n",
" 9 \n",
" Widowed \n",
" Adm-clerical \n",
" Unmarried \n",
" White \n",
" Female \n",
" 0 \n",
" 0 \n",
" 40 \n",
" United-States \n",
" <=50K \n",
" \n",
" \n",
" 48840 \n",
" 22 \n",
" Private \n",
" 201490 \n",
" HS-grad \n",
" 9 \n",
" Never-married \n",
" Adm-clerical \n",
" Own-child \n",
" White \n",
" Male \n",
" 0 \n",
" 0 \n",
" 20 \n",
" United-States \n",
" <=50K \n",
" \n",
" \n",
" 48841 \n",
" 52 \n",
" Self-emp-inc \n",
" 287927 \n",
" HS-grad \n",
" 9 \n",
" Married-civ-spouse \n",
" Exec-managerial \n",
" Wife \n",
" White \n",
" Female \n",
" 15024 \n",
" 0 \n",
" 40 \n",
" United-States \n",
" >50K \n",
" \n",
" \n",
"
\n",
"
48842 rows × 15 columns
\n",
"
"
],
"text/plain": [
" age workclass fnlwgt education educational-num \\\n",
"0 25 Private 226802 11th 7 \n",
"1 38 Private 89814 HS-grad 9 \n",
"2 28 Local-gov 336951 Assoc-acdm 12 \n",
"3 44 Private 160323 Some-college 10 \n",
"4 18 ? 103497 Some-college 10 \n",
"... ... ... ... ... ... \n",
"48837 27 Private 257302 Assoc-acdm 12 \n",
"48838 40 Private 154374 HS-grad 9 \n",
"48839 58 Private 151910 HS-grad 9 \n",
"48840 22 Private 201490 HS-grad 9 \n",
"48841 52 Self-emp-inc 287927 HS-grad 9 \n",
"\n",
" marital-status occupation relationship race gender \\\n",
"0 Never-married Machine-op-inspct Own-child Black Male \n",
"1 Married-civ-spouse Farming-fishing Husband White Male \n",
"2 Married-civ-spouse Protective-serv Husband White Male \n",
"3 Married-civ-spouse Machine-op-inspct Husband Black Male \n",
"4 Never-married ? Own-child White Female \n",
"... ... ... ... ... ... \n",
"48837 Married-civ-spouse Tech-support Wife White Female \n",
"48838 Married-civ-spouse Machine-op-inspct Husband White Male \n",
"48839 Widowed Adm-clerical Unmarried White Female \n",
"48840 Never-married Adm-clerical Own-child White Male \n",
"48841 Married-civ-spouse Exec-managerial Wife White Female \n",
"\n",
" capital-gain capital-loss hours-per-week native-country income \n",
"0 0 0 40 United-States <=50K \n",
"1 0 0 50 United-States <=50K \n",
"2 0 0 40 United-States >50K \n",
"3 7688 0 40 United-States >50K \n",
"4 0 0 30 United-States <=50K \n",
"... ... ... ... ... ... \n",
"48837 0 0 38 United-States <=50K \n",
"48838 0 0 40 United-States >50K \n",
"48839 0 0 40 United-States <=50K \n",
"48840 0 0 20 United-States <=50K \n",
"48841 15024 0 40 United-States >50K \n",
"\n",
"[48842 rows x 15 columns]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data"
]
},
{
"cell_type": "markdown",
"id": "58b44e18",
"metadata": {},
"source": [
"### Tarea\n",
"\n",
" Predecir si los ingresos exceden los $50K/año según los datos del censo. También conocido como conjunto de datos de \"Ingresos del censo\". \n",
" \n",
"Tenemos dos clases: \n",
"\n",
"1. .<=50k\n",
"2. .>50k\n",
" \n",
" "
]
},
{
"cell_type": "markdown",
"id": "7e7e50de",
"metadata": {},
"source": [
"### 1. Análisis exploratorio de los datos"
]
},
{
"cell_type": "markdown",
"id": "e4b0f2b8",
"metadata": {},
"source": [
"1. Imprima el número de registros del dataset\n",
"2. Imprima el número de variables del dataset\n",
"3. Imprima el nombre de las columnas del dataset\n",
"4. Imprima el **head** del dataset\n",
"5. Imprima el **tail** del dataset\n",
"6. Imprima **info** basica del dataset\n",
"7. Imprima un **describe** del dataset\n",
"8. Graficar la distribución de clases usando un diagrama de barras (Recomendación: Usar la librería seaborn).\n",
"9. "
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "dab623a3",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Número de regristros 48842\n",
"Número de variables 15\n"
]
}
],
"source": [
"print(\"Número de regristros\",data.shape[0])\n",
"print(\"Número de variables\",data.shape[1])"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "545ec6ca",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" age \n",
" workclass \n",
" fnlwgt \n",
" education \n",
" educational-num \n",
" marital-status \n",
" occupation \n",
" relationship \n",
" race \n",
" gender \n",
" capital-gain \n",
" capital-loss \n",
" hours-per-week \n",
" native-country \n",
" income \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 25 \n",
" Private \n",
" 226802 \n",
" 11th \n",
" 7 \n",
" Never-married \n",
" Machine-op-inspct \n",
" Own-child \n",
" Black \n",
" Male \n",
" 0 \n",
" 0 \n",
" 40 \n",
" United-States \n",
" <=50K \n",
" \n",
" \n",
" 1 \n",
" 38 \n",
" Private \n",
" 89814 \n",
" HS-grad \n",
" 9 \n",
" Married-civ-spouse \n",
" Farming-fishing \n",
" Husband \n",
" White \n",
" Male \n",
" 0 \n",
" 0 \n",
" 50 \n",
" United-States \n",
" <=50K \n",
" \n",
" \n",
" 2 \n",
" 28 \n",
" Local-gov \n",
" 336951 \n",
" Assoc-acdm \n",
" 12 \n",
" Married-civ-spouse \n",
" Protective-serv \n",
" Husband \n",
" White \n",
" Male \n",
" 0 \n",
" 0 \n",
" 40 \n",
" United-States \n",
" >50K \n",
" \n",
" \n",
" 3 \n",
" 44 \n",
" Private \n",
" 160323 \n",
" Some-college \n",
" 10 \n",
" Married-civ-spouse \n",
" Machine-op-inspct \n",
" Husband \n",
" Black \n",
" Male \n",
" 7688 \n",
" 0 \n",
" 40 \n",
" United-States \n",
" >50K \n",
" \n",
" \n",
" 4 \n",
" 18 \n",
" ? \n",
" 103497 \n",
" Some-college \n",
" 10 \n",
" Never-married \n",
" ? \n",
" Own-child \n",
" White \n",
" Female \n",
" 0 \n",
" 0 \n",
" 30 \n",
" United-States \n",
" <=50K \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" age workclass fnlwgt education educational-num marital-status \\\n",
"0 25 Private 226802 11th 7 Never-married \n",
"1 38 Private 89814 HS-grad 9 Married-civ-spouse \n",
"2 28 Local-gov 336951 Assoc-acdm 12 Married-civ-spouse \n",
"3 44 Private 160323 Some-college 10 Married-civ-spouse \n",
"4 18 ? 103497 Some-college 10 Never-married \n",
"\n",
" occupation relationship race gender capital-gain capital-loss \\\n",
"0 Machine-op-inspct Own-child Black Male 0 0 \n",
"1 Farming-fishing Husband White Male 0 0 \n",
"2 Protective-serv Husband White Male 0 0 \n",
"3 Machine-op-inspct Husband Black Male 7688 0 \n",
"4 ? Own-child White Female 0 0 \n",
"\n",
" hours-per-week native-country income \n",
"0 40 United-States <=50K \n",
"1 50 United-States <=50K \n",
"2 40 United-States >50K \n",
"3 40 United-States >50K \n",
"4 30 United-States <=50K "
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.head()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "9649f77f",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" age \n",
" workclass \n",
" fnlwgt \n",
" education \n",
" educational-num \n",
" marital-status \n",
" occupation \n",
" relationship \n",
" race \n",
" gender \n",
" capital-gain \n",
" capital-loss \n",
" hours-per-week \n",
" native-country \n",
" income \n",
" \n",
" \n",
" \n",
" \n",
" 48837 \n",
" 27 \n",
" Private \n",
" 257302 \n",
" Assoc-acdm \n",
" 12 \n",
" Married-civ-spouse \n",
" Tech-support \n",
" Wife \n",
" White \n",
" Female \n",
" 0 \n",
" 0 \n",
" 38 \n",
" United-States \n",
" <=50K \n",
" \n",
" \n",
" 48838 \n",
" 40 \n",
" Private \n",
" 154374 \n",
" HS-grad \n",
" 9 \n",
" Married-civ-spouse \n",
" Machine-op-inspct \n",
" Husband \n",
" White \n",
" Male \n",
" 0 \n",
" 0 \n",
" 40 \n",
" United-States \n",
" >50K \n",
" \n",
" \n",
" 48839 \n",
" 58 \n",
" Private \n",
" 151910 \n",
" HS-grad \n",
" 9 \n",
" Widowed \n",
" Adm-clerical \n",
" Unmarried \n",
" White \n",
" Female \n",
" 0 \n",
" 0 \n",
" 40 \n",
" United-States \n",
" <=50K \n",
" \n",
" \n",
" 48840 \n",
" 22 \n",
" Private \n",
" 201490 \n",
" HS-grad \n",
" 9 \n",
" Never-married \n",
" Adm-clerical \n",
" Own-child \n",
" White \n",
" Male \n",
" 0 \n",
" 0 \n",
" 20 \n",
" United-States \n",
" <=50K \n",
" \n",
" \n",
" 48841 \n",
" 52 \n",
" Self-emp-inc \n",
" 287927 \n",
" HS-grad \n",
" 9 \n",
" Married-civ-spouse \n",
" Exec-managerial \n",
" Wife \n",
" White \n",
" Female \n",
" 15024 \n",
" 0 \n",
" 40 \n",
" United-States \n",
" >50K \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" age workclass fnlwgt education educational-num \\\n",
"48837 27 Private 257302 Assoc-acdm 12 \n",
"48838 40 Private 154374 HS-grad 9 \n",
"48839 58 Private 151910 HS-grad 9 \n",
"48840 22 Private 201490 HS-grad 9 \n",
"48841 52 Self-emp-inc 287927 HS-grad 9 \n",
"\n",
" marital-status occupation relationship race gender \\\n",
"48837 Married-civ-spouse Tech-support Wife White Female \n",
"48838 Married-civ-spouse Machine-op-inspct Husband White Male \n",
"48839 Widowed Adm-clerical Unmarried White Female \n",
"48840 Never-married Adm-clerical Own-child White Male \n",
"48841 Married-civ-spouse Exec-managerial Wife White Female \n",
"\n",
" capital-gain capital-loss hours-per-week native-country income \n",
"48837 0 0 38 United-States <=50K \n",
"48838 0 0 40 United-States >50K \n",
"48839 0 0 40 United-States <=50K \n",
"48840 0 0 20 United-States <=50K \n",
"48841 15024 0 40 United-States >50K "
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.tail()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "f8f8bb9f",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"RangeIndex: 48842 entries, 0 to 48841\n",
"Data columns (total 15 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 age 48842 non-null int64 \n",
" 1 workclass 48842 non-null object\n",
" 2 fnlwgt 48842 non-null int64 \n",
" 3 education 48842 non-null object\n",
" 4 educational-num 48842 non-null int64 \n",
" 5 marital-status 48842 non-null object\n",
" 6 occupation 48842 non-null object\n",
" 7 relationship 48842 non-null object\n",
" 8 race 48842 non-null object\n",
" 9 gender 48842 non-null object\n",
" 10 capital-gain 48842 non-null int64 \n",
" 11 capital-loss 48842 non-null int64 \n",
" 12 hours-per-week 48842 non-null int64 \n",
" 13 native-country 48842 non-null object\n",
" 14 income 48842 non-null object\n",
"dtypes: int64(6), object(9)\n",
"memory usage: 5.6+ MB\n"
]
}
],
"source": [
"data.info()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "9a48bedb",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" count \n",
" mean \n",
" std \n",
" min \n",
" 25% \n",
" 50% \n",
" 75% \n",
" max \n",
" \n",
" \n",
" \n",
" \n",
" age \n",
" 48842.0 \n",
" 38.643585 \n",
" 13.710510 \n",
" 17.0 \n",
" 28.0 \n",
" 37.0 \n",
" 48.0 \n",
" 90.0 \n",
" \n",
" \n",
" fnlwgt \n",
" 48842.0 \n",
" 189664.134597 \n",
" 105604.025423 \n",
" 12285.0 \n",
" 117550.5 \n",
" 178144.5 \n",
" 237642.0 \n",
" 1490400.0 \n",
" \n",
" \n",
" educational-num \n",
" 48842.0 \n",
" 10.078089 \n",
" 2.570973 \n",
" 1.0 \n",
" 9.0 \n",
" 10.0 \n",
" 12.0 \n",
" 16.0 \n",
" \n",
" \n",
" capital-gain \n",
" 48842.0 \n",
" 1079.067626 \n",
" 7452.019058 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" 99999.0 \n",
" \n",
" \n",
" capital-loss \n",
" 48842.0 \n",
" 87.502314 \n",
" 403.004552 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" 4356.0 \n",
" \n",
" \n",
" hours-per-week \n",
" 48842.0 \n",
" 40.422382 \n",
" 12.391444 \n",
" 1.0 \n",
" 40.0 \n",
" 40.0 \n",
" 45.0 \n",
" 99.0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" count mean std min 25% \\\n",
"age 48842.0 38.643585 13.710510 17.0 28.0 \n",
"fnlwgt 48842.0 189664.134597 105604.025423 12285.0 117550.5 \n",
"educational-num 48842.0 10.078089 2.570973 1.0 9.0 \n",
"capital-gain 48842.0 1079.067626 7452.019058 0.0 0.0 \n",
"capital-loss 48842.0 87.502314 403.004552 0.0 0.0 \n",
"hours-per-week 48842.0 40.422382 12.391444 1.0 40.0 \n",
"\n",
" 50% 75% max \n",
"age 37.0 48.0 90.0 \n",
"fnlwgt 178144.5 237642.0 1490400.0 \n",
"educational-num 10.0 12.0 16.0 \n",
"capital-gain 0.0 0.0 99999.0 \n",
"capital-loss 0.0 0.0 4356.0 \n",
"hours-per-week 40.0 45.0 99.0 "
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.describe().T"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "7b0f44a1",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" workclass \n",
" education \n",
" marital-status \n",
" occupation \n",
" relationship \n",
" race \n",
" gender \n",
" native-country \n",
" income \n",
" \n",
" \n",
" \n",
" \n",
" count \n",
" 48842 \n",
" 48842 \n",
" 48842 \n",
" 48842 \n",
" 48842 \n",
" 48842 \n",
" 48842 \n",
" 48842 \n",
" 48842 \n",
" \n",
" \n",
" unique \n",
" 9 \n",
" 16 \n",
" 7 \n",
" 15 \n",
" 6 \n",
" 5 \n",
" 2 \n",
" 42 \n",
" 2 \n",
" \n",
" \n",
" top \n",
" Private \n",
" HS-grad \n",
" Married-civ-spouse \n",
" Prof-specialty \n",
" Husband \n",
" White \n",
" Male \n",
" United-States \n",
" <=50K \n",
" \n",
" \n",
" freq \n",
" 33906 \n",
" 15784 \n",
" 22379 \n",
" 6172 \n",
" 19716 \n",
" 41762 \n",
" 32650 \n",
" 43832 \n",
" 37155 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" workclass education marital-status occupation relationship \\\n",
"count 48842 48842 48842 48842 48842 \n",
"unique 9 16 7 15 6 \n",
"top Private HS-grad Married-civ-spouse Prof-specialty Husband \n",
"freq 33906 15784 22379 6172 19716 \n",
"\n",
" race gender native-country income \n",
"count 48842 48842 48842 48842 \n",
"unique 5 2 42 2 \n",
"top White Male United-States <=50K \n",
"freq 41762 32650 43832 37155 "
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.describe(include='object')"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "94c1f279",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['<=50K', '>50K'], dtype=object)"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.income.unique()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "69bb63c2",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\ProgramData\\Anaconda3\\lib\\site-packages\\seaborn\\_decorators.py:36: FutureWarning: Pass the following variable as a keyword arg: x. From version 0.12, the only valid positional argument will be `data`, and passing other arguments without an explicit keyword will result in an error or misinterpretation.\n",
" warnings.warn(\n"
]
},
{
"data": {
"text/plain": [
""
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.countplot(data.income)"
]
},
{
"cell_type": "markdown",
"id": "4ac9c732",
"metadata": {},
"source": [
"### 2. Tratamiento de missing, reparación dataset y codificación de variables\n",
"\n",
"1. Reemplazar <=50K por 0 y los >50K por 1"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "ab8933f2",
"metadata": {},
"outputs": [],
"source": [
"data.income=data.income.replace(['<=50K', '>50K'],[0,1])"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "f4ba3013",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" age \n",
" workclass \n",
" fnlwgt \n",
" education \n",
" educational-num \n",
" marital-status \n",
" occupation \n",
" relationship \n",
" race \n",
" gender \n",
" capital-gain \n",
" capital-loss \n",
" hours-per-week \n",
" native-country \n",
" income \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 25 \n",
" Private \n",
" 226802 \n",
" 11th \n",
" 7 \n",
" Never-married \n",
" Machine-op-inspct \n",
" Own-child \n",
" Black \n",
" Male \n",
" 0 \n",
" 0 \n",
" 40 \n",
" United-States \n",
" 0 \n",
" \n",
" \n",
" 1 \n",
" 38 \n",
" Private \n",
" 89814 \n",
" HS-grad \n",
" 9 \n",
" Married-civ-spouse \n",
" Farming-fishing \n",
" Husband \n",
" White \n",
" Male \n",
" 0 \n",
" 0 \n",
" 50 \n",
" United-States \n",
" 0 \n",
" \n",
" \n",
" 2 \n",
" 28 \n",
" Local-gov \n",
" 336951 \n",
" Assoc-acdm \n",
" 12 \n",
" Married-civ-spouse \n",
" Protective-serv \n",
" Husband \n",
" White \n",
" Male \n",
" 0 \n",
" 0 \n",
" 40 \n",
" United-States \n",
" 1 \n",
" \n",
" \n",
" 3 \n",
" 44 \n",
" Private \n",
" 160323 \n",
" Some-college \n",
" 10 \n",
" Married-civ-spouse \n",
" Machine-op-inspct \n",
" Husband \n",
" Black \n",
" Male \n",
" 7688 \n",
" 0 \n",
" 40 \n",
" United-States \n",
" 1 \n",
" \n",
" \n",
" 4 \n",
" 18 \n",
" ? \n",
" 103497 \n",
" Some-college \n",
" 10 \n",
" Never-married \n",
" ? \n",
" Own-child \n",
" White \n",
" Female \n",
" 0 \n",
" 0 \n",
" 30 \n",
" United-States \n",
" 0 \n",
" \n",
" \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" \n",
" \n",
" 48837 \n",
" 27 \n",
" Private \n",
" 257302 \n",
" Assoc-acdm \n",
" 12 \n",
" Married-civ-spouse \n",
" Tech-support \n",
" Wife \n",
" White \n",
" Female \n",
" 0 \n",
" 0 \n",
" 38 \n",
" United-States \n",
" 0 \n",
" \n",
" \n",
" 48838 \n",
" 40 \n",
" Private \n",
" 154374 \n",
" HS-grad \n",
" 9 \n",
" Married-civ-spouse \n",
" Machine-op-inspct \n",
" Husband \n",
" White \n",
" Male \n",
" 0 \n",
" 0 \n",
" 40 \n",
" United-States \n",
" 1 \n",
" \n",
" \n",
" 48839 \n",
" 58 \n",
" Private \n",
" 151910 \n",
" HS-grad \n",
" 9 \n",
" Widowed \n",
" Adm-clerical \n",
" Unmarried \n",
" White \n",
" Female \n",
" 0 \n",
" 0 \n",
" 40 \n",
" United-States \n",
" 0 \n",
" \n",
" \n",
" 48840 \n",
" 22 \n",
" Private \n",
" 201490 \n",
" HS-grad \n",
" 9 \n",
" Never-married \n",
" Adm-clerical \n",
" Own-child \n",
" White \n",
" Male \n",
" 0 \n",
" 0 \n",
" 20 \n",
" United-States \n",
" 0 \n",
" \n",
" \n",
" 48841 \n",
" 52 \n",
" Self-emp-inc \n",
" 287927 \n",
" HS-grad \n",
" 9 \n",
" Married-civ-spouse \n",
" Exec-managerial \n",
" Wife \n",
" White \n",
" Female \n",
" 15024 \n",
" 0 \n",
" 40 \n",
" United-States \n",
" 1 \n",
" \n",
" \n",
"
\n",
"
48842 rows × 15 columns
\n",
"
"
],
"text/plain": [
" age workclass fnlwgt education educational-num \\\n",
"0 25 Private 226802 11th 7 \n",
"1 38 Private 89814 HS-grad 9 \n",
"2 28 Local-gov 336951 Assoc-acdm 12 \n",
"3 44 Private 160323 Some-college 10 \n",
"4 18 ? 103497 Some-college 10 \n",
"... ... ... ... ... ... \n",
"48837 27 Private 257302 Assoc-acdm 12 \n",
"48838 40 Private 154374 HS-grad 9 \n",
"48839 58 Private 151910 HS-grad 9 \n",
"48840 22 Private 201490 HS-grad 9 \n",
"48841 52 Self-emp-inc 287927 HS-grad 9 \n",
"\n",
" marital-status occupation relationship race gender \\\n",
"0 Never-married Machine-op-inspct Own-child Black Male \n",
"1 Married-civ-spouse Farming-fishing Husband White Male \n",
"2 Married-civ-spouse Protective-serv Husband White Male \n",
"3 Married-civ-spouse Machine-op-inspct Husband Black Male \n",
"4 Never-married ? Own-child White Female \n",
"... ... ... ... ... ... \n",
"48837 Married-civ-spouse Tech-support Wife White Female \n",
"48838 Married-civ-spouse Machine-op-inspct Husband White Male \n",
"48839 Widowed Adm-clerical Unmarried White Female \n",
"48840 Never-married Adm-clerical Own-child White Male \n",
"48841 Married-civ-spouse Exec-managerial Wife White Female \n",
"\n",
" capital-gain capital-loss hours-per-week native-country income \n",
"0 0 0 40 United-States 0 \n",
"1 0 0 50 United-States 0 \n",
"2 0 0 40 United-States 1 \n",
"3 7688 0 40 United-States 1 \n",
"4 0 0 30 United-States 0 \n",
"... ... ... ... ... ... \n",
"48837 0 0 38 United-States 0 \n",
"48838 0 0 40 United-States 1 \n",
"48839 0 0 40 United-States 0 \n",
"48840 0 0 20 United-States 0 \n",
"48841 15024 0 40 United-States 1 \n",
"\n",
"[48842 rows x 15 columns]"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data"
]
},
{
"cell_type": "markdown",
"id": "dcdcc2e7",
"metadata": {},
"source": [
"2. Eliminar la columna income Y fnlwgt, dejando solo las Características "
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "2deffe45",
"metadata": {},
"outputs": [],
"source": [
"X = data.drop(['income','fnlwgt'],axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "e1ca69ac",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" age \n",
" workclass \n",
" education \n",
" educational-num \n",
" marital-status \n",
" occupation \n",
" relationship \n",
" race \n",
" gender \n",
" capital-gain \n",
" capital-loss \n",
" hours-per-week \n",
" native-country \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 25 \n",
" Private \n",
" 11th \n",
" 7 \n",
" Never-married \n",
" Machine-op-inspct \n",
" Own-child \n",
" Black \n",
" Male \n",
" 0 \n",
" 0 \n",
" 40 \n",
" United-States \n",
" \n",
" \n",
" 1 \n",
" 38 \n",
" Private \n",
" HS-grad \n",
" 9 \n",
" Married-civ-spouse \n",
" Farming-fishing \n",
" Husband \n",
" White \n",
" Male \n",
" 0 \n",
" 0 \n",
" 50 \n",
" United-States \n",
" \n",
" \n",
" 2 \n",
" 28 \n",
" Local-gov \n",
" Assoc-acdm \n",
" 12 \n",
" Married-civ-spouse \n",
" Protective-serv \n",
" Husband \n",
" White \n",
" Male \n",
" 0 \n",
" 0 \n",
" 40 \n",
" United-States \n",
" \n",
" \n",
" 3 \n",
" 44 \n",
" Private \n",
" Some-college \n",
" 10 \n",
" Married-civ-spouse \n",
" Machine-op-inspct \n",
" Husband \n",
" Black \n",
" Male \n",
" 7688 \n",
" 0 \n",
" 40 \n",
" United-States \n",
" \n",
" \n",
" 4 \n",
" 18 \n",
" ? \n",
" Some-college \n",
" 10 \n",
" Never-married \n",
" ? \n",
" Own-child \n",
" White \n",
" Female \n",
" 0 \n",
" 0 \n",
" 30 \n",
" United-States \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" age workclass education educational-num marital-status \\\n",
"0 25 Private 11th 7 Never-married \n",
"1 38 Private HS-grad 9 Married-civ-spouse \n",
"2 28 Local-gov Assoc-acdm 12 Married-civ-spouse \n",
"3 44 Private Some-college 10 Married-civ-spouse \n",
"4 18 ? Some-college 10 Never-married \n",
"\n",
" occupation relationship race gender capital-gain capital-loss \\\n",
"0 Machine-op-inspct Own-child Black Male 0 0 \n",
"1 Farming-fishing Husband White Male 0 0 \n",
"2 Protective-serv Husband White Male 0 0 \n",
"3 Machine-op-inspct Husband Black Male 7688 0 \n",
"4 ? Own-child White Female 0 0 \n",
"\n",
" hours-per-week native-country \n",
"0 40 United-States \n",
"1 50 United-States \n",
"2 40 United-States \n",
"3 40 United-States \n",
"4 30 United-States "
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X.head()"
]
},
{
"cell_type": "markdown",
"id": "37613f52",
"metadata": {},
"source": [
"3. Obtener el nombre de las columns númericas para luego normalizarlas, ejemplo: age, capital-loss, hours-per-week"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "64c88d76",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['age', 'educational-num', 'capital-gain', 'capital-loss', 'hours-per-week']"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"numericalcols=list(X.select_dtypes(exclude='object').columns)\n",
"\n",
"numericalcols"
]
},
{
"cell_type": "markdown",
"id": "f8db313b",
"metadata": {},
"source": [
"4. Utilizar la función get_dummies() de pandas para codificar las variables categóricas como : workclass, education, etc."
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "618a4b91",
"metadata": {},
"outputs": [],
"source": [
"X=pd.get_dummies(X)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "724e4271",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" age \n",
" educational-num \n",
" capital-gain \n",
" capital-loss \n",
" hours-per-week \n",
" workclass_? \n",
" workclass_Federal-gov \n",
" workclass_Local-gov \n",
" workclass_Never-worked \n",
" workclass_Private \n",
" ... \n",
" native-country_Portugal \n",
" native-country_Puerto-Rico \n",
" native-country_Scotland \n",
" native-country_South \n",
" native-country_Taiwan \n",
" native-country_Thailand \n",
" native-country_Trinadad&Tobago \n",
" native-country_United-States \n",
" native-country_Vietnam \n",
" native-country_Yugoslavia \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 25 \n",
" 7 \n",
" 0 \n",
" 0 \n",
" 40 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" ... \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" \n",
" \n",
" 1 \n",
" 38 \n",
" 9 \n",
" 0 \n",
" 0 \n",
" 50 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" ... \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" \n",
" \n",
" 2 \n",
" 28 \n",
" 12 \n",
" 0 \n",
" 0 \n",
" 40 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" ... \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" \n",
" \n",
" 3 \n",
" 44 \n",
" 10 \n",
" 7688 \n",
" 0 \n",
" 40 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" ... \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" \n",
" \n",
" 4 \n",
" 18 \n",
" 10 \n",
" 0 \n",
" 0 \n",
" 30 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" ... \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" \n",
" \n",
"
\n",
"
5 rows × 107 columns
\n",
"
"
],
"text/plain": [
" age educational-num capital-gain capital-loss hours-per-week \\\n",
"0 25 7 0 0 40 \n",
"1 38 9 0 0 50 \n",
"2 28 12 0 0 40 \n",
"3 44 10 7688 0 40 \n",
"4 18 10 0 0 30 \n",
"\n",
" workclass_? workclass_Federal-gov workclass_Local-gov \\\n",
"0 0 0 0 \n",
"1 0 0 0 \n",
"2 0 0 1 \n",
"3 0 0 0 \n",
"4 1 0 0 \n",
"\n",
" workclass_Never-worked workclass_Private ... native-country_Portugal \\\n",
"0 0 1 ... 0 \n",
"1 0 1 ... 0 \n",
"2 0 0 ... 0 \n",
"3 0 1 ... 0 \n",
"4 0 0 ... 0 \n",
"\n",
" native-country_Puerto-Rico native-country_Scotland native-country_South \\\n",
"0 0 0 0 \n",
"1 0 0 0 \n",
"2 0 0 0 \n",
"3 0 0 0 \n",
"4 0 0 0 \n",
"\n",
" native-country_Taiwan native-country_Thailand \\\n",
"0 0 0 \n",
"1 0 0 \n",
"2 0 0 \n",
"3 0 0 \n",
"4 0 0 \n",
"\n",
" native-country_Trinadad&Tobago native-country_United-States \\\n",
"0 0 1 \n",
"1 0 1 \n",
"2 0 1 \n",
"3 0 1 \n",
"4 0 1 \n",
"\n",
" native-country_Vietnam native-country_Yugoslavia \n",
"0 0 0 \n",
"1 0 0 \n",
"2 0 0 \n",
"3 0 0 \n",
"4 0 0 \n",
"\n",
"[5 rows x 107 columns]"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X.head()"
]
},
{
"cell_type": "markdown",
"id": "254c963d",
"metadata": {},
"source": [
"5. Normalizar los datos usando StandardScaler https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.StandardScaler.html"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "c9ce945e",
"metadata": {},
"outputs": [],
"source": [
"normalizer =StandardScaler()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "b251cd83",
"metadata": {},
"outputs": [],
"source": [
"X[numericalcols]=normalizer.fit_transform(X[numericalcols])"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "039aa289",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" age \n",
" educational-num \n",
" capital-gain \n",
" capital-loss \n",
" hours-per-week \n",
" workclass_? \n",
" workclass_Federal-gov \n",
" workclass_Local-gov \n",
" workclass_Never-worked \n",
" workclass_Private \n",
" ... \n",
" native-country_Portugal \n",
" native-country_Puerto-Rico \n",
" native-country_Scotland \n",
" native-country_South \n",
" native-country_Taiwan \n",
" native-country_Thailand \n",
" native-country_Trinadad&Tobago \n",
" native-country_United-States \n",
" native-country_Vietnam \n",
" native-country_Yugoslavia \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" -0.995129 \n",
" -1.197259 \n",
" -0.144804 \n",
" -0.217127 \n",
" -0.034087 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" ... \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" \n",
" \n",
" 1 \n",
" -0.046942 \n",
" -0.419335 \n",
" -0.144804 \n",
" -0.217127 \n",
" 0.772930 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" ... \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" \n",
" \n",
" 2 \n",
" -0.776316 \n",
" 0.747550 \n",
" -0.144804 \n",
" -0.217127 \n",
" -0.034087 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" ... \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" \n",
" \n",
" 3 \n",
" 0.390683 \n",
" -0.030373 \n",
" 0.886874 \n",
" -0.217127 \n",
" -0.034087 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" ... \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" \n",
" \n",
" 4 \n",
" -1.505691 \n",
" -0.030373 \n",
" -0.144804 \n",
" -0.217127 \n",
" -0.841104 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" ... \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" \n",
" \n",
"
\n",
"
5 rows × 107 columns
\n",
"
"
],
"text/plain": [
" age educational-num capital-gain capital-loss hours-per-week \\\n",
"0 -0.995129 -1.197259 -0.144804 -0.217127 -0.034087 \n",
"1 -0.046942 -0.419335 -0.144804 -0.217127 0.772930 \n",
"2 -0.776316 0.747550 -0.144804 -0.217127 -0.034087 \n",
"3 0.390683 -0.030373 0.886874 -0.217127 -0.034087 \n",
"4 -1.505691 -0.030373 -0.144804 -0.217127 -0.841104 \n",
"\n",
" workclass_? workclass_Federal-gov workclass_Local-gov \\\n",
"0 0 0 0 \n",
"1 0 0 0 \n",
"2 0 0 1 \n",
"3 0 0 0 \n",
"4 1 0 0 \n",
"\n",
" workclass_Never-worked workclass_Private ... native-country_Portugal \\\n",
"0 0 1 ... 0 \n",
"1 0 1 ... 0 \n",
"2 0 0 ... 0 \n",
"3 0 1 ... 0 \n",
"4 0 0 ... 0 \n",
"\n",
" native-country_Puerto-Rico native-country_Scotland native-country_South \\\n",
"0 0 0 0 \n",
"1 0 0 0 \n",
"2 0 0 0 \n",
"3 0 0 0 \n",
"4 0 0 0 \n",
"\n",
" native-country_Taiwan native-country_Thailand \\\n",
"0 0 0 \n",
"1 0 0 \n",
"2 0 0 \n",
"3 0 0 \n",
"4 0 0 \n",
"\n",
" native-country_Trinadad&Tobago native-country_United-States \\\n",
"0 0 1 \n",
"1 0 1 \n",
"2 0 1 \n",
"3 0 1 \n",
"4 0 1 \n",
"\n",
" native-country_Vietnam native-country_Yugoslavia \n",
"0 0 0 \n",
"1 0 0 \n",
"2 0 0 \n",
"3 0 0 \n",
"4 0 0 \n",
"\n",
"[5 rows x 107 columns]"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X.head()"
]
},
{
"cell_type": "markdown",
"id": "545cd4f3",
"metadata": {},
"source": [
"6. Crear el vector Y con las clases"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "771e83dc",
"metadata": {},
"outputs": [],
"source": [
"Y=data.income"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "aa72dae5",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 0\n",
"1 0\n",
"2 1\n",
"3 1\n",
"4 0\n",
" ..\n",
"48837 0\n",
"48838 1\n",
"48839 0\n",
"48840 0\n",
"48841 1\n",
"Name: income, Length: 48842, dtype: int64"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Y"
]
},
{
"cell_type": "markdown",
"id": "153b8a37",
"metadata": {},
"source": [
"### 3. Determinar el conjunto de entrenamiento y el de validación."
]
},
{
"cell_type": "markdown",
"id": "56ad8a80",
"metadata": {},
"source": [
"1. Hacer división de los datos 80% train , 20% test Crear un vector X el cual contiene las características \n",
"2. Imprimir el shape o dimensiones del vector de entrenamiento (x_train)\n",
"2. Imprimir el shape o dimensiones del vector de prueba (x_test)\n",
"Ayuda: usar la función train_test_split de sklearn https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html\n"
]
},
{
"cell_type": "code",
"execution_count": 97,
"id": "1df16920",
"metadata": {},
"outputs": [],
"source": [
"x_train,x_test,y_train,y_test=train_test_split(X,Y,random_state=89,test_size=0.2)"
]
},
{
"cell_type": "code",
"execution_count": 98,
"id": "861c63b1",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dimensiones vector de entrenamiento (39073, 107)\n"
]
}
],
"source": [
"print(\"Dimensiones vector de entrenamiento\", x_train.shape)"
]
},
{
"cell_type": "code",
"execution_count": 99,
"id": "d7f8657d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dimensiones vector de prueba (9769, 107)\n"
]
}
],
"source": [
"print(\"Dimensiones vector de prueba\", x_test.shape)"
]
},
{
"cell_type": "markdown",
"id": "956287ee",
"metadata": {},
"source": [
"### 4. Entrenamiento del modelo"
]
},
{
"cell_type": "markdown",
"id": "7b18ba2e",
"metadata": {},
"source": [
"1. Crear un RandomForestClassifier model usando la librería sklearn https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html\n",
"2. Entrenar el modelo\n",
"\n",
"Ayudas:\n",
"\n",
"- Usar la función fit\n",
"- Solo usar el conjunto de entrenamiento (X_train, y_train)"
]
},
{
"cell_type": "code",
"execution_count": 100,
"id": "cd1c9d84",
"metadata": {},
"outputs": [],
"source": [
"clf = RandomForestClassifier()"
]
},
{
"cell_type": "code",
"execution_count": 101,
"id": "da33a61b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"RandomForestClassifier()"
]
},
"execution_count": 101,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"clf.fit(x_train,y_train)"
]
},
{
"cell_type": "markdown",
"id": "0ab2e1ed",
"metadata": {},
"source": [
"### 5. Calcular las métricas de evaluación"
]
},
{
"cell_type": "markdown",
"id": "a0af39eb",
"metadata": {},
"source": [
"**Nota:** Ejecutar la siguiente función, la cual calcula crea la matriz de confusión y algunas métricas. "
]
},
{
"cell_type": "code",
"execution_count": 102,
"id": "cd5297c5",
"metadata": {},
"outputs": [],
"source": [
" def metrics(y_true,y_pred):\n",
" \"\"\"\n",
" This method calculate some metrics shuch as acurracy,f1-score,precision and create confusion matrix figure.\n",
"\n",
" Args:\n",
" y_true (numpy_array): true classes\n",
" y_pred (numpy_array): predict classes\n",
"\n",
" Returns:\n",
" \n",
" cm_fig (ConfusionMatrixDisplay: Confusion matrix figure\n",
" accuracy (float): acurracy\n",
" report (dict): some metrics\n",
"\n",
" \"\"\"\n",
" cm = confusion_matrix(y_true,y_pred, normalize='true')\n",
" report = classification_report(y_true,y_pred,output_dict=True)\n",
" cm_fig = ConfusionMatrixDisplay(confusion_matrix=cm)\n",
" return cm_fig,report[\"accuracy\"],report"
]
},
{
"cell_type": "markdown",
"id": "1b4bf45e",
"metadata": {},
"source": [
"1. Usar la función predict() para crear el vector de predicciones\n",
"\n",
"Ayuda: Utilice el conjunto de test (X_test)"
]
},
{
"cell_type": "code",
"execution_count": 103,
"id": "6ec28171",
"metadata": {},
"outputs": [],
"source": [
"y_predict = clf.predict(x_test)"
]
},
{
"cell_type": "code",
"execution_count": 104,
"id": "42747dc9",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 104,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"\"\"\"\n",
"Utiliza la función metrics, debes reemplazar las variables\n",
"y_test por las clases del conjunto de test y y_predict por las predicciones obtenidas de tu modelo.\n",
"\n",
"\"\"\"\n",
"cm_fig,test_score, report = metrics(y_test,y_predict)\n",
"cm_fig.plot(cmap=plt.cm.Blues)"
]
},
{
"cell_type": "markdown",
"id": "a875f0a0",
"metadata": {},
"source": [
"### 6. Conclusiones"
]
},
{
"cell_type": "markdown",
"id": "5f619782",
"metadata": {},
"source": [
"Describa brevemente los resultados obtenidos, incluyendo el accuracy y mencionando el comportamiento del modelo clasificando muestras para ambas clases."
]
},
{
"cell_type": "markdown",
"id": "4f458fbb",
"metadata": {},
"source": [
"El modelo es bueno clasificando muestras de la clase 0 (ingresos <=50K) ya que logra un desempeño 92% de clasificaciones correctas sin embargo respecto a la clase 1 (ingresos >50K) su comportamiento es malo debido a que solo clasifica correctamente el 62% de las muestras correctamente esto se puede explicar ya que el dataset se encuentra desbalanceado (hay más muestras de una clase que otra). Por lo tanto se recomienda usara una metodología de validación como StratifiedKFold."
]
},
{
"cell_type": "markdown",
"id": "44ca4281",
"metadata": {},
"source": [
"# 2. Regresión"
]
},
{
"cell_type": "markdown",
"id": "1bea7949",
"metadata": {},
"source": [
"### Información del dataset\n",
"\n",
"https://www.kaggle.com/datasets/gunhee/koreahousedata\n",
"\n",
"### Apartment data\n",
"\n",
"Los datos de transacciones de apartamentos se generan entre agosto de 2007 y agosto de 2017 en el estricto Daebong, ciudad de Daegu, Corea del Sur\n"
]
},
{
"cell_type": "code",
"execution_count": 105,
"id": "f9b5e04f",
"metadata": {},
"outputs": [],
"source": [
"data = pd.read_csv(\"resources/Daegu_Real_Estate_data.csv\")"
]
},
{
"cell_type": "markdown",
"id": "f3913d95",
"metadata": {},
"source": [
"### Tarea\n",
"\n",
"Predecir el precio de un apartamento"
]
},
{
"cell_type": "markdown",
"id": "70c256b3",
"metadata": {},
"source": [
"### 1. Análisis exploratorio de los datos"
]
},
{
"cell_type": "markdown",
"id": "1e914c4b",
"metadata": {},
"source": [
"1. Imprima el número de registros del dataset\n",
"2. Imprima el número de variables del dataset\n",
"3. Imprima el nombre de las columnas del dataset\n",
"4. Imprima el **head** del dataset\n",
"5. Imprima el **tail** del dataset\n",
"6. Imprima **info** basica del dataset\n",
"7. Imprima un **describe** del dataset\n",
"8. Realizar un gráfico de dispersión relacionando el Size(sqf) y el SalePrice de las viviendas.\n"
]
},
{
"cell_type": "code",
"execution_count": 106,
"id": "94511e24",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Número de registros 5891\n",
"Número de variables 30\n"
]
}
],
"source": [
"print(\"Número de registros\",data.shape[0])\n",
"print(\"Número de variables\",data.shape[1])"
]
},
{
"cell_type": "code",
"execution_count": 107,
"id": "adec743c",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['SalePrice', 'YearBuilt', 'YrSold', 'MonthSold', 'Size(sqf)', 'Floor',\n",
" 'HallwayType', 'HeatingType', 'AptManageType', 'N_Parkinglot(Ground)',\n",
" 'N_Parkinglot(Basement)', 'TimeToBusStop', 'TimeToSubway', 'N_APT',\n",
" 'N_manager', 'N_elevators', 'SubwayStation',\n",
" 'N_FacilitiesNearBy(PublicOffice)', 'N_FacilitiesNearBy(Hospital)',\n",
" 'N_FacilitiesNearBy(Dpartmentstore)', 'N_FacilitiesNearBy(Mall)',\n",
" 'N_FacilitiesNearBy(ETC)', 'N_FacilitiesNearBy(Park)',\n",
" 'N_SchoolNearBy(Elementary)', 'N_SchoolNearBy(Middle)',\n",
" 'N_SchoolNearBy(High)', 'N_SchoolNearBy(University)',\n",
" 'N_FacilitiesInApt', 'N_FacilitiesNearBy(Total)',\n",
" 'N_SchoolNearBy(Total)'],\n",
" dtype='object')"
]
},
"execution_count": 107,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.columns"
]
},
{
"cell_type": "code",
"execution_count": 108,
"id": "5a9c1762",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" SalePrice \n",
" YearBuilt \n",
" YrSold \n",
" MonthSold \n",
" Size(sqf) \n",
" Floor \n",
" HallwayType \n",
" HeatingType \n",
" AptManageType \n",
" N_Parkinglot(Ground) \n",
" ... \n",
" N_FacilitiesNearBy(Mall) \n",
" N_FacilitiesNearBy(ETC) \n",
" N_FacilitiesNearBy(Park) \n",
" N_SchoolNearBy(Elementary) \n",
" N_SchoolNearBy(Middle) \n",
" N_SchoolNearBy(High) \n",
" N_SchoolNearBy(University) \n",
" N_FacilitiesInApt \n",
" N_FacilitiesNearBy(Total) \n",
" N_SchoolNearBy(Total) \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 141592 \n",
" 2006 \n",
" 2007 \n",
" 8 \n",
" 814 \n",
" 3 \n",
" terraced \n",
" individual_heating \n",
" management_in_trust \n",
" 111.0 \n",
" ... \n",
" 1.0 \n",
" 1.0 \n",
" 0.0 \n",
" 3.0 \n",
" 2.0 \n",
" 2.0 \n",
" 2.0 \n",
" 5 \n",
" 6.0 \n",
" 9.0 \n",
" \n",
" \n",
" 1 \n",
" 51327 \n",
" 1985 \n",
" 2007 \n",
" 8 \n",
" 587 \n",
" 8 \n",
" corridor \n",
" individual_heating \n",
" self_management \n",
" 80.0 \n",
" ... \n",
" 1.0 \n",
" 2.0 \n",
" 1.0 \n",
" 2.0 \n",
" 1.0 \n",
" 1.0 \n",
" 0.0 \n",
" 3 \n",
" 12.0 \n",
" 4.0 \n",
" \n",
" \n",
" 2 \n",
" 48672 \n",
" 1985 \n",
" 2007 \n",
" 8 \n",
" 587 \n",
" 6 \n",
" corridor \n",
" individual_heating \n",
" self_management \n",
" 80.0 \n",
" ... \n",
" 1.0 \n",
" 2.0 \n",
" 1.0 \n",
" 2.0 \n",
" 1.0 \n",
" 1.0 \n",
" 0.0 \n",
" 3 \n",
" 12.0 \n",
" 4.0 \n",
" \n",
" \n",
" 3 \n",
" 380530 \n",
" 2006 \n",
" 2007 \n",
" 8 \n",
" 2056 \n",
" 8 \n",
" terraced \n",
" individual_heating \n",
" management_in_trust \n",
" 249.0 \n",
" ... \n",
" 1.0 \n",
" 0.0 \n",
" 0.0 \n",
" 2.0 \n",
" 2.0 \n",
" 1.0 \n",
" 2.0 \n",
" 5 \n",
" 3.0 \n",
" 7.0 \n",
" \n",
" \n",
" 4 \n",
" 221238 \n",
" 1993 \n",
" 2007 \n",
" 8 \n",
" 1761 \n",
" 3 \n",
" mixed \n",
" individual_heating \n",
" management_in_trust \n",
" 523.0 \n",
" ... \n",
" 1.0 \n",
" 5.0 \n",
" 0.0 \n",
" 4.0 \n",
" 3.0 \n",
" 5.0 \n",
" 5.0 \n",
" 4 \n",
" 14.0 \n",
" 17.0 \n",
" \n",
" \n",
"
\n",
"
5 rows × 30 columns
\n",
"
"
],
"text/plain": [
" SalePrice YearBuilt YrSold MonthSold Size(sqf) Floor HallwayType \\\n",
"0 141592 2006 2007 8 814 3 terraced \n",
"1 51327 1985 2007 8 587 8 corridor \n",
"2 48672 1985 2007 8 587 6 corridor \n",
"3 380530 2006 2007 8 2056 8 terraced \n",
"4 221238 1993 2007 8 1761 3 mixed \n",
"\n",
" HeatingType AptManageType N_Parkinglot(Ground) ... \\\n",
"0 individual_heating management_in_trust 111.0 ... \n",
"1 individual_heating self_management 80.0 ... \n",
"2 individual_heating self_management 80.0 ... \n",
"3 individual_heating management_in_trust 249.0 ... \n",
"4 individual_heating management_in_trust 523.0 ... \n",
"\n",
" N_FacilitiesNearBy(Mall) N_FacilitiesNearBy(ETC) N_FacilitiesNearBy(Park) \\\n",
"0 1.0 1.0 0.0 \n",
"1 1.0 2.0 1.0 \n",
"2 1.0 2.0 1.0 \n",
"3 1.0 0.0 0.0 \n",
"4 1.0 5.0 0.0 \n",
"\n",
" N_SchoolNearBy(Elementary) N_SchoolNearBy(Middle) N_SchoolNearBy(High) \\\n",
"0 3.0 2.0 2.0 \n",
"1 2.0 1.0 1.0 \n",
"2 2.0 1.0 1.0 \n",
"3 2.0 2.0 1.0 \n",
"4 4.0 3.0 5.0 \n",
"\n",
" N_SchoolNearBy(University) N_FacilitiesInApt N_FacilitiesNearBy(Total) \\\n",
"0 2.0 5 6.0 \n",
"1 0.0 3 12.0 \n",
"2 0.0 3 12.0 \n",
"3 2.0 5 3.0 \n",
"4 5.0 4 14.0 \n",
"\n",
" N_SchoolNearBy(Total) \n",
"0 9.0 \n",
"1 4.0 \n",
"2 4.0 \n",
"3 7.0 \n",
"4 17.0 \n",
"\n",
"[5 rows x 30 columns]"
]
},
"execution_count": 108,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.head()"
]
},
{
"cell_type": "code",
"execution_count": 109,
"id": "4cc27b54",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" SalePrice \n",
" YearBuilt \n",
" YrSold \n",
" MonthSold \n",
" Size(sqf) \n",
" Floor \n",
" HallwayType \n",
" HeatingType \n",
" AptManageType \n",
" N_Parkinglot(Ground) \n",
" ... \n",
" N_FacilitiesNearBy(Mall) \n",
" N_FacilitiesNearBy(ETC) \n",
" N_FacilitiesNearBy(Park) \n",
" N_SchoolNearBy(Elementary) \n",
" N_SchoolNearBy(Middle) \n",
" N_SchoolNearBy(High) \n",
" N_SchoolNearBy(University) \n",
" N_FacilitiesInApt \n",
" N_FacilitiesNearBy(Total) \n",
" N_SchoolNearBy(Total) \n",
" \n",
" \n",
" \n",
" \n",
" 5886 \n",
" 511504 \n",
" 2007 \n",
" 2017 \n",
" 8 \n",
" 1643 \n",
" 19 \n",
" terraced \n",
" individual_heating \n",
" management_in_trust \n",
" 0.0 \n",
" ... \n",
" 1.0 \n",
" 0.0 \n",
" 2.0 \n",
" 3.0 \n",
" 3.0 \n",
" 2.0 \n",
" 2.0 \n",
" 10 \n",
" 9.0 \n",
" 10.0 \n",
" \n",
" \n",
" 5887 \n",
" 298230 \n",
" 2006 \n",
" 2017 \n",
" 8 \n",
" 903 \n",
" 13 \n",
" terraced \n",
" individual_heating \n",
" management_in_trust \n",
" 123.0 \n",
" ... \n",
" 1.0 \n",
" 2.0 \n",
" 0.0 \n",
" 4.0 \n",
" 3.0 \n",
" 3.0 \n",
" 1.0 \n",
" 4 \n",
" 8.0 \n",
" 11.0 \n",
" \n",
" \n",
" 5888 \n",
" 357522 \n",
" 2007 \n",
" 2017 \n",
" 8 \n",
" 868 \n",
" 20 \n",
" terraced \n",
" individual_heating \n",
" management_in_trust \n",
" 0.0 \n",
" ... \n",
" 1.0 \n",
" 0.0 \n",
" 2.0 \n",
" 3.0 \n",
" 3.0 \n",
" 2.0 \n",
" 2.0 \n",
" 10 \n",
" 9.0 \n",
" 10.0 \n",
" \n",
" \n",
" 5889 \n",
" 312389 \n",
" 1978 \n",
" 2017 \n",
" 8 \n",
" 1327 \n",
" 1 \n",
" corridor \n",
" individual_heating \n",
" self_management \n",
" 87.0 \n",
" ... \n",
" 1.0 \n",
" 0.0 \n",
" 0.0 \n",
" 3.0 \n",
" 3.0 \n",
" 3.0 \n",
" 2.0 \n",
" 3 \n",
" 7.0 \n",
" 11.0 \n",
" \n",
" \n",
" 5890 \n",
" 393805 \n",
" 2007 \n",
" 2017 \n",
" 8 \n",
" 868 \n",
" 13 \n",
" terraced \n",
" individual_heating \n",
" management_in_trust \n",
" 0.0 \n",
" ... \n",
" 1.0 \n",
" 0.0 \n",
" 2.0 \n",
" 3.0 \n",
" 3.0 \n",
" 2.0 \n",
" 2.0 \n",
" 10 \n",
" 9.0 \n",
" 10.0 \n",
" \n",
" \n",
"
\n",
"
5 rows × 30 columns
\n",
"
"
],
"text/plain": [
" SalePrice YearBuilt YrSold MonthSold Size(sqf) Floor HallwayType \\\n",
"5886 511504 2007 2017 8 1643 19 terraced \n",
"5887 298230 2006 2017 8 903 13 terraced \n",
"5888 357522 2007 2017 8 868 20 terraced \n",
"5889 312389 1978 2017 8 1327 1 corridor \n",
"5890 393805 2007 2017 8 868 13 terraced \n",
"\n",
" HeatingType AptManageType N_Parkinglot(Ground) ... \\\n",
"5886 individual_heating management_in_trust 0.0 ... \n",
"5887 individual_heating management_in_trust 123.0 ... \n",
"5888 individual_heating management_in_trust 0.0 ... \n",
"5889 individual_heating self_management 87.0 ... \n",
"5890 individual_heating management_in_trust 0.0 ... \n",
"\n",
" N_FacilitiesNearBy(Mall) N_FacilitiesNearBy(ETC) \\\n",
"5886 1.0 0.0 \n",
"5887 1.0 2.0 \n",
"5888 1.0 0.0 \n",
"5889 1.0 0.0 \n",
"5890 1.0 0.0 \n",
"\n",
" N_FacilitiesNearBy(Park) N_SchoolNearBy(Elementary) \\\n",
"5886 2.0 3.0 \n",
"5887 0.0 4.0 \n",
"5888 2.0 3.0 \n",
"5889 0.0 3.0 \n",
"5890 2.0 3.0 \n",
"\n",
" N_SchoolNearBy(Middle) N_SchoolNearBy(High) N_SchoolNearBy(University) \\\n",
"5886 3.0 2.0 2.0 \n",
"5887 3.0 3.0 1.0 \n",
"5888 3.0 2.0 2.0 \n",
"5889 3.0 3.0 2.0 \n",
"5890 3.0 2.0 2.0 \n",
"\n",
" N_FacilitiesInApt N_FacilitiesNearBy(Total) N_SchoolNearBy(Total) \n",
"5886 10 9.0 10.0 \n",
"5887 4 8.0 11.0 \n",
"5888 10 9.0 10.0 \n",
"5889 3 7.0 11.0 \n",
"5890 10 9.0 10.0 \n",
"\n",
"[5 rows x 30 columns]"
]
},
"execution_count": 109,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.tail()"
]
},
{
"cell_type": "code",
"execution_count": 110,
"id": "bc88d985",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"RangeIndex: 5891 entries, 0 to 5890\n",
"Data columns (total 30 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 SalePrice 5891 non-null int64 \n",
" 1 YearBuilt 5891 non-null int64 \n",
" 2 YrSold 5891 non-null int64 \n",
" 3 MonthSold 5891 non-null int64 \n",
" 4 Size(sqf) 5891 non-null int64 \n",
" 5 Floor 5891 non-null int64 \n",
" 6 HallwayType 5891 non-null object \n",
" 7 HeatingType 5891 non-null object \n",
" 8 AptManageType 5891 non-null object \n",
" 9 N_Parkinglot(Ground) 5891 non-null float64\n",
" 10 N_Parkinglot(Basement) 5891 non-null float64\n",
" 11 TimeToBusStop 5891 non-null object \n",
" 12 TimeToSubway 5891 non-null object \n",
" 13 N_APT 5891 non-null float64\n",
" 14 N_manager 5891 non-null float64\n",
" 15 N_elevators 5891 non-null float64\n",
" 16 SubwayStation 5891 non-null object \n",
" 17 N_FacilitiesNearBy(PublicOffice) 5891 non-null float64\n",
" 18 N_FacilitiesNearBy(Hospital) 5891 non-null int64 \n",
" 19 N_FacilitiesNearBy(Dpartmentstore) 5891 non-null float64\n",
" 20 N_FacilitiesNearBy(Mall) 5891 non-null float64\n",
" 21 N_FacilitiesNearBy(ETC) 5891 non-null float64\n",
" 22 N_FacilitiesNearBy(Park) 5891 non-null float64\n",
" 23 N_SchoolNearBy(Elementary) 5891 non-null float64\n",
" 24 N_SchoolNearBy(Middle) 5891 non-null float64\n",
" 25 N_SchoolNearBy(High) 5891 non-null float64\n",
" 26 N_SchoolNearBy(University) 5891 non-null float64\n",
" 27 N_FacilitiesInApt 5891 non-null int64 \n",
" 28 N_FacilitiesNearBy(Total) 5891 non-null float64\n",
" 29 N_SchoolNearBy(Total) 5891 non-null float64\n",
"dtypes: float64(16), int64(8), object(6)\n",
"memory usage: 1.3+ MB\n"
]
}
],
"source": [
"data.info()"
]
},
{
"cell_type": "code",
"execution_count": 111,
"id": "9a599fe4",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" SalePrice \n",
" YearBuilt \n",
" YrSold \n",
" MonthSold \n",
" Size(sqf) \n",
" Floor \n",
" N_Parkinglot(Ground) \n",
" N_Parkinglot(Basement) \n",
" N_APT \n",
" N_manager \n",
" ... \n",
" N_FacilitiesNearBy(Mall) \n",
" N_FacilitiesNearBy(ETC) \n",
" N_FacilitiesNearBy(Park) \n",
" N_SchoolNearBy(Elementary) \n",
" N_SchoolNearBy(Middle) \n",
" N_SchoolNearBy(High) \n",
" N_SchoolNearBy(University) \n",
" N_FacilitiesInApt \n",
" N_FacilitiesNearBy(Total) \n",
" N_SchoolNearBy(Total) \n",
" \n",
" \n",
" \n",
" \n",
" count \n",
" 5891.000000 \n",
" 5891.000000 \n",
" 5891.000000 \n",
" 5891.000000 \n",
" 5891.000000 \n",
" 5891.000000 \n",
" 5891.000000 \n",
" 5891.000000 \n",
" 5891.000000 \n",
" 5891.000000 \n",
" ... \n",
" 5891.000000 \n",
" 5891.000000 \n",
" 5891.000000 \n",
" 5891.000000 \n",
" 5891.000000 \n",
" 5891.000000 \n",
" 5891.000000 \n",
" 5891.000000 \n",
" 5891.000000 \n",
" 5891.000000 \n",
" \n",
" \n",
" mean \n",
" 221218.112545 \n",
" 2002.967408 \n",
" 2012.691563 \n",
" 6.160244 \n",
" 955.569173 \n",
" 12.026311 \n",
" 195.883551 \n",
" 570.761670 \n",
" 5.613648 \n",
" 6.310304 \n",
" ... \n",
" 0.941436 \n",
" 1.941266 \n",
" 0.654218 \n",
" 3.022407 \n",
" 2.417756 \n",
" 2.659311 \n",
" 2.764726 \n",
" 5.809540 \n",
" 9.870820 \n",
" 10.864200 \n",
" \n",
" \n",
" std \n",
" 106384.186446 \n",
" 8.811782 \n",
" 2.905488 \n",
" 3.387752 \n",
" 382.464050 \n",
" 7.548743 \n",
" 218.597210 \n",
" 408.621075 \n",
" 2.811831 \n",
" 3.174088 \n",
" ... \n",
" 0.401355 \n",
" 2.201392 \n",
" 0.658320 \n",
" 0.954575 \n",
" 1.037898 \n",
" 1.556041 \n",
" 1.489289 \n",
" 2.330804 \n",
" 3.450319 \n",
" 4.438513 \n",
" \n",
" \n",
" min \n",
" 32743.000000 \n",
" 1978.000000 \n",
" 2007.000000 \n",
" 1.000000 \n",
" 135.000000 \n",
" 1.000000 \n",
" 0.000000 \n",
" 0.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" ... \n",
" 0.000000 \n",
" 0.000000 \n",
" 0.000000 \n",
" 0.000000 \n",
" 0.000000 \n",
" 0.000000 \n",
" 0.000000 \n",
" 1.000000 \n",
" 0.000000 \n",
" 0.000000 \n",
" \n",
" \n",
" 25% \n",
" 144247.000000 \n",
" 1993.000000 \n",
" 2010.000000 \n",
" 3.000000 \n",
" 644.000000 \n",
" 6.000000 \n",
" 11.000000 \n",
" 184.000000 \n",
" 3.000000 \n",
" 5.000000 \n",
" ... \n",
" 1.000000 \n",
" 0.000000 \n",
" 0.000000 \n",
" 2.000000 \n",
" 2.000000 \n",
" 1.000000 \n",
" 2.000000 \n",
" 4.000000 \n",
" 8.000000 \n",
" 7.000000 \n",
" \n",
" \n",
" 50% \n",
" 207964.000000 \n",
" 2006.000000 \n",
" 2013.000000 \n",
" 6.000000 \n",
" 910.000000 \n",
" 11.000000 \n",
" 100.000000 \n",
" 536.000000 \n",
" 7.000000 \n",
" 6.000000 \n",
" ... \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 3.000000 \n",
" 3.000000 \n",
" 2.000000 \n",
" 2.000000 \n",
" 5.000000 \n",
" 9.000000 \n",
" 10.000000 \n",
" \n",
" \n",
" 75% \n",
" 291150.000000 \n",
" 2008.000000 \n",
" 2015.000000 \n",
" 9.000000 \n",
" 1149.000000 \n",
" 17.000000 \n",
" 249.000000 \n",
" 798.000000 \n",
" 8.000000 \n",
" 8.000000 \n",
" ... \n",
" 1.000000 \n",
" 5.000000 \n",
" 1.000000 \n",
" 4.000000 \n",
" 3.000000 \n",
" 4.000000 \n",
" 4.000000 \n",
" 7.000000 \n",
" 13.000000 \n",
" 15.000000 \n",
" \n",
" \n",
" max \n",
" 585840.000000 \n",
" 2015.000000 \n",
" 2017.000000 \n",
" 12.000000 \n",
" 2337.000000 \n",
" 43.000000 \n",
" 713.000000 \n",
" 1321.000000 \n",
" 13.000000 \n",
" 14.000000 \n",
" ... \n",
" 2.000000 \n",
" 5.000000 \n",
" 2.000000 \n",
" 6.000000 \n",
" 4.000000 \n",
" 5.000000 \n",
" 5.000000 \n",
" 10.000000 \n",
" 16.000000 \n",
" 17.000000 \n",
" \n",
" \n",
"
\n",
"
8 rows × 24 columns
\n",
"
"
],
"text/plain": [
" SalePrice YearBuilt YrSold MonthSold Size(sqf) \\\n",
"count 5891.000000 5891.000000 5891.000000 5891.000000 5891.000000 \n",
"mean 221218.112545 2002.967408 2012.691563 6.160244 955.569173 \n",
"std 106384.186446 8.811782 2.905488 3.387752 382.464050 \n",
"min 32743.000000 1978.000000 2007.000000 1.000000 135.000000 \n",
"25% 144247.000000 1993.000000 2010.000000 3.000000 644.000000 \n",
"50% 207964.000000 2006.000000 2013.000000 6.000000 910.000000 \n",
"75% 291150.000000 2008.000000 2015.000000 9.000000 1149.000000 \n",
"max 585840.000000 2015.000000 2017.000000 12.000000 2337.000000 \n",
"\n",
" Floor N_Parkinglot(Ground) N_Parkinglot(Basement) N_APT \\\n",
"count 5891.000000 5891.000000 5891.000000 5891.000000 \n",
"mean 12.026311 195.883551 570.761670 5.613648 \n",
"std 7.548743 218.597210 408.621075 2.811831 \n",
"min 1.000000 0.000000 0.000000 1.000000 \n",
"25% 6.000000 11.000000 184.000000 3.000000 \n",
"50% 11.000000 100.000000 536.000000 7.000000 \n",
"75% 17.000000 249.000000 798.000000 8.000000 \n",
"max 43.000000 713.000000 1321.000000 13.000000 \n",
"\n",
" N_manager ... N_FacilitiesNearBy(Mall) N_FacilitiesNearBy(ETC) \\\n",
"count 5891.000000 ... 5891.000000 5891.000000 \n",
"mean 6.310304 ... 0.941436 1.941266 \n",
"std 3.174088 ... 0.401355 2.201392 \n",
"min 1.000000 ... 0.000000 0.000000 \n",
"25% 5.000000 ... 1.000000 0.000000 \n",
"50% 6.000000 ... 1.000000 1.000000 \n",
"75% 8.000000 ... 1.000000 5.000000 \n",
"max 14.000000 ... 2.000000 5.000000 \n",
"\n",
" N_FacilitiesNearBy(Park) N_SchoolNearBy(Elementary) \\\n",
"count 5891.000000 5891.000000 \n",
"mean 0.654218 3.022407 \n",
"std 0.658320 0.954575 \n",
"min 0.000000 0.000000 \n",
"25% 0.000000 2.000000 \n",
"50% 1.000000 3.000000 \n",
"75% 1.000000 4.000000 \n",
"max 2.000000 6.000000 \n",
"\n",
" N_SchoolNearBy(Middle) N_SchoolNearBy(High) \\\n",
"count 5891.000000 5891.000000 \n",
"mean 2.417756 2.659311 \n",
"std 1.037898 1.556041 \n",
"min 0.000000 0.000000 \n",
"25% 2.000000 1.000000 \n",
"50% 3.000000 2.000000 \n",
"75% 3.000000 4.000000 \n",
"max 4.000000 5.000000 \n",
"\n",
" N_SchoolNearBy(University) N_FacilitiesInApt \\\n",
"count 5891.000000 5891.000000 \n",
"mean 2.764726 5.809540 \n",
"std 1.489289 2.330804 \n",
"min 0.000000 1.000000 \n",
"25% 2.000000 4.000000 \n",
"50% 2.000000 5.000000 \n",
"75% 4.000000 7.000000 \n",
"max 5.000000 10.000000 \n",
"\n",
" N_FacilitiesNearBy(Total) N_SchoolNearBy(Total) \n",
"count 5891.000000 5891.000000 \n",
"mean 9.870820 10.864200 \n",
"std 3.450319 4.438513 \n",
"min 0.000000 0.000000 \n",
"25% 8.000000 7.000000 \n",
"50% 9.000000 10.000000 \n",
"75% 13.000000 15.000000 \n",
"max 16.000000 17.000000 \n",
"\n",
"[8 rows x 24 columns]"
]
},
"execution_count": 111,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.describe()"
]
},
{
"cell_type": "code",
"execution_count": 112,
"id": "bbfb9414",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 112,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"data.plot.scatter(x=\"Size(sqf)\",y=\"SalePrice\")"
]
},
{
"cell_type": "markdown",
"id": "ec389d38",
"metadata": {},
"source": [
"### 2. Tratamiento de missing, reparación dataset y codificación de variables"
]
},
{
"cell_type": "markdown",
"id": "5917a1a2",
"metadata": {},
"source": [
"1. Seleccionar la variable a predecir (SalePrice) crear un vector llamdo Y con dicha información"
]
},
{
"cell_type": "code",
"execution_count": 113,
"id": "06f00ecf",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 141592\n",
"1 51327\n",
"2 48672\n",
"3 380530\n",
"4 221238\n",
" ... \n",
"5886 511504\n",
"5887 298230\n",
"5888 357522\n",
"5889 312389\n",
"5890 393805\n",
"Name: SalePrice, Length: 5891, dtype: int64"
]
},
"execution_count": 113,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Y = data[\"SalePrice\"]\n",
"Y"
]
},
{
"cell_type": "markdown",
"id": "b823690f",
"metadata": {},
"source": [
"2. Eliminar la columna SalePrice del dataset"
]
},
{
"cell_type": "code",
"execution_count": 114,
"id": "eb37fed0",
"metadata": {},
"outputs": [],
"source": [
"data = data.drop([\"SalePrice\"],axis=1)"
]
},
{
"cell_type": "markdown",
"id": "4be0d94e",
"metadata": {},
"source": [
"3. Identificar las columnas numericas para luego normalizar "
]
},
{
"cell_type": "code",
"execution_count": 115,
"id": "e13f6f8c",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['YearBuilt',\n",
" 'YrSold',\n",
" 'MonthSold',\n",
" 'Size(sqf)',\n",
" 'Floor',\n",
" 'N_Parkinglot(Ground)',\n",
" 'N_Parkinglot(Basement)',\n",
" 'N_APT',\n",
" 'N_manager',\n",
" 'N_elevators',\n",
" 'N_FacilitiesNearBy(PublicOffice)',\n",
" 'N_FacilitiesNearBy(Hospital)',\n",
" 'N_FacilitiesNearBy(Dpartmentstore)',\n",
" 'N_FacilitiesNearBy(Mall)',\n",
" 'N_FacilitiesNearBy(ETC)',\n",
" 'N_FacilitiesNearBy(Park)',\n",
" 'N_SchoolNearBy(Elementary)',\n",
" 'N_SchoolNearBy(Middle)',\n",
" 'N_SchoolNearBy(High)',\n",
" 'N_SchoolNearBy(University)',\n",
" 'N_FacilitiesInApt',\n",
" 'N_FacilitiesNearBy(Total)',\n",
" 'N_SchoolNearBy(Total)']"
]
},
"execution_count": 115,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"numericalcols=list(data.select_dtypes(exclude='object').columns)\n",
"\n",
"numericalcols"
]
},
{
"cell_type": "markdown",
"id": "96f7c676",
"metadata": {},
"source": [
"4. Transformar la variables categóricas usando el método get_dummies() de pandas"
]
},
{
"cell_type": "code",
"execution_count": 116,
"id": "3323a72c",
"metadata": {},
"outputs": [],
"source": [
"data = pd.get_dummies(data)"
]
},
{
"cell_type": "markdown",
"id": "cbf274eb",
"metadata": {},
"source": [
"5. Normalizar solo las variables numericas previamente encontradas."
]
},
{
"cell_type": "code",
"execution_count": 117,
"id": "24a88313",
"metadata": {},
"outputs": [],
"source": [
"normalizer =StandardScaler()"
]
},
{
"cell_type": "code",
"execution_count": 118,
"id": "92674c0b",
"metadata": {},
"outputs": [],
"source": [
"data[numericalcols]=normalizer.fit_transform(data[numericalcols])"
]
},
{
"cell_type": "markdown",
"id": "961708e1",
"metadata": {},
"source": [
"6. Imprimir el head del dataset resultante"
]
},
{
"cell_type": "code",
"execution_count": 119,
"id": "830a7bab",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" YearBuilt \n",
" YrSold \n",
" MonthSold \n",
" Size(sqf) \n",
" Floor \n",
" N_Parkinglot(Ground) \n",
" N_Parkinglot(Basement) \n",
" N_APT \n",
" N_manager \n",
" N_elevators \n",
" ... \n",
" TimeToSubway_5min~10min \n",
" TimeToSubway_no_bus_stop_nearby \n",
" SubwayStation_Bangoge \n",
" SubwayStation_Banwoldang \n",
" SubwayStation_Chil-sung-market \n",
" SubwayStation_Daegu \n",
" SubwayStation_Kyungbuk_uni_hospital \n",
" SubwayStation_Myung-duk \n",
" SubwayStation_Sin-nam \n",
" SubwayStation_no_subway_nearby \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0.344181 \n",
" -1.959067 \n",
" 0.543107 \n",
" -0.370182 \n",
" -1.195839 \n",
" -0.388343 \n",
" -0.946585 \n",
" -0.929597 \n",
" -1.043004 \n",
" -1.427953 \n",
" ... \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" \n",
" \n",
" 1 \n",
" -2.039194 \n",
" -1.959067 \n",
" 0.543107 \n",
" -0.963752 \n",
" -0.533420 \n",
" -0.530169 \n",
" -1.210911 \n",
" -1.640938 \n",
" -1.358081 \n",
" -1.171726 \n",
" ... \n",
" 1 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" \n",
" \n",
" 2 \n",
" -2.039194 \n",
" -1.959067 \n",
" 0.543107 \n",
" -0.963752 \n",
" -0.798388 \n",
" -0.530169 \n",
" -1.210911 \n",
" -1.640938 \n",
" -1.358081 \n",
" -1.171726 \n",
" ... \n",
" 1 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" \n",
" \n",
" 3 \n",
" 0.344181 \n",
" -1.959067 \n",
" 0.543107 \n",
" 2.877458 \n",
" -0.533420 \n",
" 0.243008 \n",
" -0.085078 \n",
" 0.137414 \n",
" -0.412848 \n",
" -0.018703 \n",
" ... \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 0 \n",
" \n",
" \n",
" 4 \n",
" -1.131242 \n",
" -1.959067 \n",
" 0.543107 \n",
" 2.106078 \n",
" -1.195839 \n",
" 1.496562 \n",
" -0.085078 \n",
" 0.848755 \n",
" 0.532386 \n",
" 1.134320 \n",
" ... \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" \n",
" \n",
"
\n",
"
5 rows × 46 columns
\n",
"
"
],
"text/plain": [
" YearBuilt YrSold MonthSold Size(sqf) Floor N_Parkinglot(Ground) \\\n",
"0 0.344181 -1.959067 0.543107 -0.370182 -1.195839 -0.388343 \n",
"1 -2.039194 -1.959067 0.543107 -0.963752 -0.533420 -0.530169 \n",
"2 -2.039194 -1.959067 0.543107 -0.963752 -0.798388 -0.530169 \n",
"3 0.344181 -1.959067 0.543107 2.877458 -0.533420 0.243008 \n",
"4 -1.131242 -1.959067 0.543107 2.106078 -1.195839 1.496562 \n",
"\n",
" N_Parkinglot(Basement) N_APT N_manager N_elevators ... \\\n",
"0 -0.946585 -0.929597 -1.043004 -1.427953 ... \n",
"1 -1.210911 -1.640938 -1.358081 -1.171726 ... \n",
"2 -1.210911 -1.640938 -1.358081 -1.171726 ... \n",
"3 -0.085078 0.137414 -0.412848 -0.018703 ... \n",
"4 -0.085078 0.848755 0.532386 1.134320 ... \n",
"\n",
" TimeToSubway_5min~10min TimeToSubway_no_bus_stop_nearby \\\n",
"0 0 0 \n",
"1 1 0 \n",
"2 1 0 \n",
"3 0 0 \n",
"4 0 0 \n",
"\n",
" SubwayStation_Bangoge SubwayStation_Banwoldang \\\n",
"0 0 0 \n",
"1 0 0 \n",
"2 0 0 \n",
"3 0 0 \n",
"4 0 0 \n",
"\n",
" SubwayStation_Chil-sung-market SubwayStation_Daegu \\\n",
"0 0 0 \n",
"1 0 1 \n",
"2 0 1 \n",
"3 0 0 \n",
"4 0 0 \n",
"\n",
" SubwayStation_Kyungbuk_uni_hospital SubwayStation_Myung-duk \\\n",
"0 1 0 \n",
"1 0 0 \n",
"2 0 0 \n",
"3 0 0 \n",
"4 0 1 \n",
"\n",
" SubwayStation_Sin-nam SubwayStation_no_subway_nearby \n",
"0 0 0 \n",
"1 0 0 \n",
"2 0 0 \n",
"3 1 0 \n",
"4 0 0 \n",
"\n",
"[5 rows x 46 columns]"
]
},
"execution_count": 119,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.head()"
]
},
{
"cell_type": "markdown",
"id": "1f44b37f",
"metadata": {},
"source": [
"### 3. Determinar el conjunto de entrenamiento y el de validación.\n",
"\n",
"\n",
"1. Hacer división de los datos 80% train , 20% test Crear un vector X el cual contiene las características \n",
"2. Imprimir el shape o dimensiones del vector de entrenamiento (x_train)\n",
"2. Imprimir el shape o dimensiones del vector de prueba (x_test)\n",
"Ayuda: usar la función train_test_split de sklearn https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html\n"
]
},
{
"cell_type": "code",
"execution_count": 120,
"id": "fcfe125e",
"metadata": {},
"outputs": [],
"source": [
"X = data\n",
"x_train,x_test,y_train,y_test=train_test_split(X,Y,random_state=89,test_size=0.2)"
]
},
{
"cell_type": "code",
"execution_count": 121,
"id": "cd47fbba",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dimensiones vector de entrenamiento (4712, 46)\n",
"Dimensiones vector de prueba (1179, 46)\n"
]
}
],
"source": [
"print(\"Dimensiones vector de entrenamiento\", x_train.shape)\n",
"print(\"Dimensiones vector de prueba\", x_test.shape)"
]
},
{
"cell_type": "markdown",
"id": "4faa0b54",
"metadata": {},
"source": [
"### 4. Entrenamiento del modelo\n",
"\n",
"\n",
"1. Crear un RandomForestRegressor model usando la librería sklearn https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestRegressor.html\n",
"\n",
"2. Entrenar el modelo\n",
"\n",
"Ayudas:\n",
"\n",
"- Usar la función fit\n",
"- Solo usar el conjunto de entrenamiento (X_train, y_train)\n"
]
},
{
"cell_type": "code",
"execution_count": 122,
"id": "878a71e6",
"metadata": {},
"outputs": [],
"source": [
"regressor = RandomForestRegressor()"
]
},
{
"cell_type": "code",
"execution_count": 123,
"id": "0dd38bfa",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"RandomForestRegressor()"
]
},
"execution_count": 123,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"regressor.fit(x_train, y_train)"
]
},
{
"cell_type": "markdown",
"id": "665b5534",
"metadata": {},
"source": [
"### 5. Calcular las métricas de evaluación\n",
"\n",
"**Nota:** Ejecutar la siguiente función, la cual calcula crea la matriz de confusión y algunas métricas. "
]
},
{
"cell_type": "markdown",
"id": "82e61a22",
"metadata": {},
"source": [
"1. Usar la función predict() para crear el vector de predicciones\n",
"\n",
"\n",
"Ayuda: Utilice el conjunto de test (X_test)"
]
},
{
"cell_type": "code",
"execution_count": 124,
"id": "47d65de7",
"metadata": {},
"outputs": [],
"source": [
"y_predict = regressor.predict(x_test)"
]
},
{
"cell_type": "markdown",
"id": "a772c4e5",
"metadata": {},
"source": [
"2. Calcular métricas de error"
]
},
{
"cell_type": "code",
"execution_count": 125,
"id": "17691248",
"metadata": {},
"outputs": [],
"source": [
"mae_test = m.mean_absolute_error(y_test, y_predict )\n",
"mape_test = np.mean(np.abs((y_test - y_predict)/ y_test))\n",
"MSE_test = mean_squared_error(y_test,y_predict)\n",
"RMSE_test = mean_squared_error(y_test,y_predict,squared=False) \n",
"R2_test = r2_score(y_test,y_predict)"
]
},
{
"cell_type": "code",
"execution_count": 126,
"id": "a1bade10",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"MAE 9310.815854580458\n",
"MAPE 0.04697561991914874\n",
"MSE 213944339.90053365\n",
"RMSE 14626.836291574937\n",
"R2 0.9806543553028587\n"
]
}
],
"source": [
"print(\"MAE\",mae_test)\n",
"print(\"MAPE\",mape_test)\n",
"print(\"MSE\",MSE_test)\n",
"print(\"RMSE\",RMSE_test)\n",
"print(\"R2\",R2_test)"
]
},
{
"cell_type": "markdown",
"id": "fff6abf1",
"metadata": {},
"source": [
"### 6. Conclusiones\n",
"\n",
"Describa brevemente los resultados obtenidos"
]
},
{
"cell_type": "markdown",
"id": "9db5b8d8",
"metadata": {},
"source": [
"El modelo presento un desempeño de 4% de Error Promedio Porcentual Medio (MAPE) y un R-cuadrado de 0.98 lo cual indica una correlación lineal positiva ya que es cercano 1 por lo tanto este modelo representa una buena solución a este problema."
]
},
{
"cell_type": "markdown",
"id": "9f51468e",
"metadata": {},
"source": [
"Realizar un gráfico de dispersión entre y_test y y_predict"
]
},
{
"cell_type": "code",
"execution_count": 127,
"id": "31f44fa7",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 127,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.scatter(y_test,y_predict)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "93cb1d78",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.9.12"
}
},
"nbformat": 4,
"nbformat_minor": 5
}