{"id":2053,"date":"2020-04-28T17:56:26","date_gmt":"2020-04-28T22:56:26","guid":{"rendered":"https:\/\/naps.com.mx\/blog\/?p=2053"},"modified":"2020-05-06T19:41:39","modified_gmt":"2020-05-07T00:41:39","slug":"3-ejemplos-explicados-de-machine-learning-en-python","status":"publish","type":"post","link":"https:\/\/naps.com.mx\/blog\/3-ejemplos-explicados-de-machine-learning-en-python\/","title":{"rendered":"3 ejemplos explicados de Machine Learning en Python"},"content":{"rendered":"<p>Te dejamos 3 ejemplos explicados de Machine Learning en Python usando Regresi\u00f3n Lineal.<\/p>\n<p><!--more--><\/p>\n<h2>Qu\u00e9 es Machine Learning<\/h2>\n<p>El Machine Learning es una rama de la Inteligencia Artificial que aplica modelos matem\u00e1ticos para dotar a un computador de cierta capacidad de aprendizaje, utilizando datos hist\u00f3ricos.<\/p>\n<h2>Qu\u00e9 es Regresi\u00f3n Lineal<\/h2>\n<p>La Regresi\u00f3n Lineal es un m\u00e9todo estad\u00edstico que estudia la relaci\u00f3n entre variables continuas y es utilizada para predecir el valor de una variable dependiente con base en el valor de otras variables independientes.<\/p>\n<div id=\"attachment_2055\" style=\"width: 648px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/04\/ejemplos-explicados-de-machine-learning-en-python-correlacion.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2055\" class=\"wp-image-2055\" src=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/04\/ejemplos-explicados-de-machine-learning-en-python-correlacion.png\" alt=\"ejemplos explicados de machine learning en python correlacion\" width=\"638\" height=\"543\" srcset=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/04\/ejemplos-explicados-de-machine-learning-en-python-correlacion.png 1020w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/04\/ejemplos-explicados-de-machine-learning-en-python-correlacion-300x255.png 300w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/04\/ejemplos-explicados-de-machine-learning-en-python-correlacion-768x654.png 768w\" sizes=\"auto, (max-width: 638px) 100vw, 638px\" \/><\/a><p id=\"caption-attachment-2055\" class=\"wp-caption-text\">Art\u00edculo: Ejemplos explicados de Machine Learning<\/p><\/div>\n<p>En la figura anterior suponga que en el eje horizontal representa el salario de una persona, y el eje vertical representa el valor de su casa. Vemos una correlaci\u00f3n, entre m\u00e1s gana una persona, mayor es el valor de su casa. Claro, no siempre es as\u00ed. Vemos que siempre hay personas que tienen un menor salario, pero cuentan con casas cuyo valor es superior a la casa de algunos que ganan m\u00e1s que \u00e9l.<\/p>\n<p>En el ejemplo anterior, la idea de la Regresi\u00f3n Lineal es darle a la computadora un valor X (salario) y que nos prediga qu\u00e9 valor y (costo de la casa) tendr\u00e1.<\/p>\n<h2>Machine Learning en Python<\/h2>\n<p>Python es un lenguaje de programaci\u00f3n que nos ahorra realizar todos los c\u00e1lculos y operaciones manuales que se realizan con los datos. Al utilizar Python para hacer Machine Learning aprovechamos la capacidad de la computadora para analizar muchos datos.<\/p>\n<p>Python utiliza la librer\u00eda <a href=\"https:\/\/scikit-learn.org\/stable\/\" target=\"_blank\" rel=\"noopener\">Scikit-Learn<\/a>. Scikit-Learn o sklearn es, entonces, una biblioteca para realizar Machine Learning en Python.<\/p>\n<p>Si aun no instalas sklear, puedes hacerlo usando pip<\/p>\n<pre class=\"lang:ps decode:true \">pip install sklearn<\/pre>\n<p>&nbsp;<\/p>\n<h2>Ejemplos explicados de Machine Learning<\/h2>\n<h2>Ejemplo 1. Usar un dataset ya incluido<\/h2>\n<p>Vamos a necesitar datos, para entrenar un modelo, que nos sirva para realizar predicciones que utilizan regresi\u00f3n lineal. \u00bfC\u00f3mo obtener esos datos? Bueno, para nuestro primer ejemplo, podemos utilizar los datos que ya trae sklearn.<\/p>\n<h3>Librer\u00edas<\/h3>\n<pre class=\"lang:python decode:true \">from sklearn import datasets\r\nfrom sklearn.linear_model import LinearRegression\r\nimport pandas as pd<\/pre>\n<p>La primera linea la necesitamos para obtener un dataset de ejemplo.<\/p>\n<p>La segunda l\u00ednea la utilizaremos para realizar la Regresi\u00f3n Lineal.<\/p>\n<p>La tercera l\u00ednea importa pandas, una librer\u00eda de Python para el tratamiento de datos.<\/p>\n<h3>Cargar el dataset<\/h3>\n<pre class=\"lang:python decode:true \">dataset = datasets.load_boston()<\/pre>\n<p>En \u00e9sta linea cargamos un dataset de ejemplo que ya viene con sklearn. Contiene una cantidad de datos sobre propiedades (casas) en Boston.<\/p>\n<h3>Configurar las variables objetivo e independientes.<\/h3>\n<p>La variable objetivo es ese dato que queremos predecir. Y las variables independientes son esos valores que (seg\u00fan un an\u00e1lisis previo) concluimos influyen en la variable objetivo.<\/p>\n<p>El dataset de ejemplo, ya trae configurados la variable objetivo y las variables independientes. Nosotros las vamos a pasar a nuestras propias variables.<\/p>\n<pre class=\"lang:python decode:true \">objetivo = dataset['target']\r\nindependientes = dataset['data']<\/pre>\n<h3>Creamos el modelo<\/h3>\n<p>Vamos a crear un modelo con los par\u00e1metros por defecto<\/p>\n<pre class=\"lang:python decode:true \">modelo = LinearRegression()<\/pre>\n<h3>M\u00e9todo fit<\/h3>\n<p>Ajustamos nuestro modelo pas\u00e1ndole los datos de entrenamiento y la variable objetivo.<\/p>\n<pre class=\"lang:python decode:true \">modelo.fit(X=independientes, y=objetivo)<\/pre>\n<h3>M\u00e9todo predict<\/h3>\n<p>Ya podemos realizar predicciones. Ahora solo vamos a utilizar los mismos datos de entrenamiento, y veremos qu\u00e9 valor hubiese predicho el sistema. S\u00f3lo mostraremos los primeros 5 valores.<\/p>\n<pre class=\"lang:python decode:true \">predicciones = modelo.predict(independientes)\r\nfor y, y_pred in list(zip(objetivo, predicciones)) [:5]:\r\n\tprint(\"Valor Real: {:.3f} Valor Estimado: {:.5f}\".format(y, y_pred))\r\n<\/pre>\n<p>En la primera l\u00ednea, usamos el m\u00e9todo predict, con los mismos valores independientes que ya tiene.<\/p>\n<p>En la segunda linea tenemos un for, que asigna dos valores, y y y_pred. La funci\u00f3n zip toma un valor de \u00abobjetivo\u00bb y lo relaciona con uno de \u00abpredicciones\u00bb. Dentro del for imprimimos esos dos valores. Como le indicamos [:5] solo nos muestra los primeros 5.<\/p>\n<h3>Resultados<\/h3>\n<p><a href=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/04\/ejemplos-explicados-de-machine-learning-en-python-resultados-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2057\" src=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/04\/ejemplos-explicados-de-machine-learning-en-python-resultados-1.png\" alt=\"ejemplos explicados de machine learning en python resultados 1\" width=\"482\" height=\"151\" srcset=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/04\/ejemplos-explicados-de-machine-learning-en-python-resultados-1.png 1064w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/04\/ejemplos-explicados-de-machine-learning-en-python-resultados-1-300x94.png 300w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/04\/ejemplos-explicados-de-machine-learning-en-python-resultados-1-768x241.png 768w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/04\/ejemplos-explicados-de-machine-learning-en-python-resultados-1-1024x321.png 1024w\" sizes=\"auto, (max-width: 482px) 100vw, 482px\" \/><\/a><\/p>\n<p>Observamos que, si le hubi\u00e9semos pasado los mismos datos que tiene ya el modelo, \u00e9l hubiese predicho valores bastante cercanos a los reales.<\/p>\n<p>&nbsp;<\/p>\n<h2>Ejemplo 2. Usar un dataset externo<\/h2>\n<p>Vamos a utilizar un dataset con informaci\u00f3n sobre pel\u00edculas. El enlace de \u00e9ste dataset est\u00e1 <a href=\"https:\/\/drive.google.com\/file\/d\/1VxVm7tcg_nEr2sEZS7dyEm5zWCqd7Q_2\/view?usp=sharing\" target=\"_blank\" rel=\"noopener\">aqu\u00ed<\/a>:<\/p>\n<h3>Importamos librer\u00edas<\/h3>\n<pre class=\"lang:python decode:true \">import pandas as pd\r\nimport numpy as np\r\nfrom sklearn.linear_model import LinearRegression<\/pre>\n<h3>Leemos el dataset<\/h3>\n<pre class=\"lang:python decode:true \">peliculas = pd.read_csv(\"movies2.csv\")<\/pre>\n<p>Si abres el archivo movies2.csv ver\u00e1s que contiene distintos valores. Para realizar la regresi\u00f3n lineal solo necesitamos los valores num\u00e9ricos.<\/p>\n<h3>Seleccionar solo los valores num\u00e9ricos<\/h3>\n<pre class=\"lang:python decode:true\">datos_numericos = peliculas.select_dtypes(np.number)<\/pre>\n<p>Aunque ya seleccionamos solo los valores num\u00e9ricos, algunos de \u00e9stos contienen valores NaN (No es un n\u00famero), por lo que vamos a reemplazarlos por 0.<\/p>\n<pre class=\"lang:python decode:true \">datos_numericos = peliculas.select_dtypes(np.number).fillna(0)<\/pre>\n<h3>Configurar las variables objetivo e independientes.<\/h3>\n<p>En nuestro caso deseamos predecir a cu\u00e1nto ascender\u00e1 el monto de ventas de cierta pel\u00edcula. Por lo que estableceremos eso como nuestra variable objetivo. Las variables independientes ser\u00e1n todas las dem\u00e1s variables num\u00e9ricas que no son el objetivo.<\/p>\n<pre class=\"lang:python decode:true \">objetivo = \"ventas\"\r\n#las variables independientes serian todas las demas menos ventas\r\nindependientes = datos_numericos.drop(columns=objetivo).columns<\/pre>\n<h3>Creamos el modelo y lo ajustamos<\/h3>\n<pre class=\"lang:python decode:true \">modelo = LinearRegression()\r\nmodelo.fit(X=datos_numericos[independientes], y=datos_numericos[objetivo])<\/pre>\n<h3>Agregamos las predicciones como una nueva columna del dataset original<\/h3>\n<pre class=\"lang:default decode:true \">peliculas[\"ventas_prediccion\"] = modelo.predict(datos_numericos[independientes])<\/pre>\n<p>En la l\u00ednea anterior, al dataset original (\u00abpeliculas\u00bb), le agregamos una nueva columna (\u00abventas_prediccion\u00bb) que contendr\u00e1 el resultado de la predicci\u00f3n pasando todos los datos de las variables independientes.<\/p>\n<h3>Mostrar solo los campos ventas y ventas_predicci\u00f3n<\/h3>\n<pre class=\"lang:python decode:true \">print (peliculas[[\"ventas\", \"ventas_prediccion\"]].head())<\/pre>\n<p>En la l\u00ednea anterior imprimimos las columnas ventas y ventas_predicci\u00f3n, solo los primeros 5 resultados.<\/p>\n<h3>Resultados<\/h3>\n<p><a href=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/04\/ejemplos-explicados-de-machine-learning-en-python-resultados-2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2059\" src=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/04\/ejemplos-explicados-de-machine-learning-en-python-resultados-2.png\" alt=\"ejemplos explicados de machine learning en python resultados 2\" width=\"329\" height=\"144\" srcset=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/04\/ejemplos-explicados-de-machine-learning-en-python-resultados-2.png 764w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/04\/ejemplos-explicados-de-machine-learning-en-python-resultados-2-300x131.png 300w\" sizes=\"auto, (max-width: 329px) 100vw, 329px\" \/><\/a><\/p>\n<p>La columna ventas, son las ventas reales, y la columna ventas_prediccion son los datos que el sistema hubiese predicho si le hubi\u00e9ramos pasado los datos correspondientes a sus \u00a0variables independientes.<\/p>\n<p>&nbsp;<\/p>\n<h2>Ejemplo 3. Usar nuestros propios datos<\/h2>\n<p>Imaginamos que hemos ido recopilando nuestros propios datos. En el siguiente ejemplo tenemos un CSV (un archivo separado por comas) con informaci\u00f3n sobre \u00abventas\u00bb.<\/p>\n<p><a href=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/04\/ejemplos-explicados-de-machine-learning-en-python-csv.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2060\" src=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/04\/ejemplos-explicados-de-machine-learning-en-python-csv.png\" alt=\"ejemplos explicados de machine learning en python resultados 2\" width=\"353\" height=\"147\" srcset=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/04\/ejemplos-explicados-de-machine-learning-en-python-csv.png 830w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/04\/ejemplos-explicados-de-machine-learning-en-python-csv-300x125.png 300w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/04\/ejemplos-explicados-de-machine-learning-en-python-csv-768x320.png 768w\" sizes=\"auto, (max-width: 353px) 100vw, 353px\" \/><\/a><\/p>\n<p>El campo edad se refiere a la edad del cliente, la columna cantidad se refiere a la cantidad de personas que iban con esa persona, la columna vehiculo indica si lleg\u00f3 o no en un veh\u00edculo particular, la columna pago se refiere a su forma de pago (efectivo, tarjeta de credito, d\u00e9bito o vales), y por \u00faltimo la columna monto que indica cu\u00e1nto compr\u00f3.<\/p>\n<p>Deseamos un modelo al que le indiquemos edad, cantidad de acompa\u00f1antes, veh\u00edculo y forma de pago y el nos prediga cu\u00e1nto va a comprar esa persona.<\/p>\n<h3>Librer\u00edas a utilizar<\/h3>\n<pre class=\"lang:python decode:true\">import pandas as pd\r\nimport numpy as np\r\nfrom sklearn.linear_model import LinearRegression<\/pre>\n<h3>Leer el archivo y establecer las variables objetivo e independientes<\/h3>\n<pre class=\"lang:python decode:true \">ventas = pd.read_csv(\"ventas2.csv\")\r\nobjetivo = \"monto\"\r\nindependientes = ventas.drop(columns=['monto']).columns<\/pre>\n<p>El archivo que usamos lo puedes obtener <a href=\"https:\/\/drive.google.com\/file\/d\/16ecRQ5sJo29yHyns-EEau20Fi_4Zuu4l\/view?usp=sharing\" target=\"_blank\" rel=\"noopener\">aqui<\/a>. Es un archivo muy peque\u00f1o y la informaci\u00f3n no corresponde a datos reales.<\/p>\n<h3>Creamos el modelo y lo ajustamos<\/h3>\n<pre class=\"lang:python decode:true \">modelo = LinearRegression()\r\nmodelo.fit(X=ventas[independientes], y=ventas[objetivo])<\/pre>\n<h3>Creamos un conjunto solo con los datos ventas reales y ventas de predicci\u00f3n.<\/h3>\n<pre class=\"lang:python decode:true \">ventas[\"ventas_prediccion\"] = modelo.predict(ventas[independientes])\r\npreds = ventas[[\"monto\", \"ventas_prediccion\"]].head(50)<\/pre>\n<p>\u00c9ste paso no es imprescindible, pero lo usaremos para graficar<\/p>\n<h3>Realizamos una predicci\u00f3n<\/h3>\n<p>Imagine que viene una persona de 41 a\u00f1os, solo, en su propio veh\u00edculo y pagando en efectivo. Entonces la lista ser\u00eda: [41,1,1,1]. Vamos a pasarle ese datos al modelo y que nos prediga cu\u00e1nto comprar\u00e1 esa persona.<\/p>\n<pre class=\"lang:python decode:true\">talvez = modelo.predict([[41,1,1,1]])\r\nprint (\"Tal vez compre: \")\r\nprint (talvez)<\/pre>\n<p>Observamos que una persona con esas caracter\u00edsticas comprar\u00eda: $1,139.31<\/p>\n<p>Cabe aclarar que son datos ficticios y que no necesariamente los valores de la variable independiente est\u00e1n correlacionados con la variable objetivo. Solo usamos \u00e9stos datos para ejemplificar el proceso.<\/p>\n<h3>Graficaci\u00f3n<\/h3>\n<p>Podemos ver los valores de ventas reales vs los de ventas_predicci\u00f3n, usando un gr\u00e1fico, mostrando solo las primeras 50.<\/p>\n<pre class=\"lang:python decode:true \">import matplotlib.pyplot as plt\r\npreds.plot(kind='bar',figsize=(18,8))\r\nplt.grid(linewidth='2')\r\nplt.grid(linewidth='2')\r\nplt.grid(None)\r\nplt.show()<\/pre>\n<p>Observamos el siguiente resultado<\/p>\n<p><a href=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/04\/ejemplos-explicados-de-machine-learning-en-python-grafica.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2061\" src=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/04\/ejemplos-explicados-de-machine-learning-en-python-grafica.png\" alt=\"ejemplos explicados de machine learning en python grafica\" width=\"1694\" height=\"1010\" srcset=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/04\/ejemplos-explicados-de-machine-learning-en-python-grafica.png 1694w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/04\/ejemplos-explicados-de-machine-learning-en-python-grafica-300x179.png 300w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/04\/ejemplos-explicados-de-machine-learning-en-python-grafica-768x458.png 768w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/04\/ejemplos-explicados-de-machine-learning-en-python-grafica-1024x611.png 1024w\" sizes=\"auto, (max-width: 1694px) 100vw, 1694px\" \/><\/a><\/p>\n<p>\u00c9ste modelo a\u00fan puede mejorar. Sin embargo, esperamos que te hayan servido \u00e9stos ejemplos explicados de Machine Learning usando Regresi\u00f3n Lineal.<\/p>\n<p>\u00bfAprendes mejor vi\u00e9ndolo en video? Checa \u00e9ste.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Te dejamos 3 ejemplos explicados de Machine Learning en Python usando Regresi\u00f3n Lineal.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"amp_status":"","footnotes":""},"categories":[52],"tags":[284,230,285],"class_list":["post-2053","post","type-post","status-publish","format-standard","hentry","category-estadistica","tag-machine-learning","tag-python","tag-regresion-lineal"],"_links":{"self":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts\/2053","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/comments?post=2053"}],"version-history":[{"count":6,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts\/2053\/revisions"}],"predecessor-version":[{"id":2086,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts\/2053\/revisions\/2086"}],"wp:attachment":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/media?parent=2053"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/categories?post=2053"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/tags?post=2053"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}