{"id":295,"date":"2018-09-09T19:34:00","date_gmt":"2018-09-10T01:34:00","guid":{"rendered":"https:\/\/jacobsoft.com.mx\/?p=295"},"modified":"2021-08-19T23:11:20","modified_gmt":"2021-08-20T05:11:20","slug":"regresion-lineal-simple-con-python","status":"publish","type":"post","link":"https:\/\/www.jacobsoft.com.mx\/es_mx\/regresion-lineal-simple-con-python\/","title":{"rendered":"Regresi\u00f3n Lineal Simple con Python"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">Regresi\u00f3n Lineal con Python<\/h1>\n\n\n\n<p><strong>Introducci\u00f3n a la Regresi\u00f3n Lineal<\/strong><\/p>\n\n\n\n<p>La <strong>regresi\u00f3n lineal<\/strong> es uno de los m\u00e9todos anal\u00edticos o de inferencia, donde alguna de las variables destaca como <strong><em>dependiente principal<\/em><\/strong> en relaci\u00f3n al resto de las variables, es decir, la variable dependiente est\u00e1 definida o explicada por las dem\u00e1s <strong><em>variables independientes<\/em><\/strong>.<\/p>\n\n\n\n<p>La relaci\u00f3n que existe entre la variable dependiente y las variables independientes podr\u00eda estar ligada a una posible ecuaci\u00f3n o modelo que las liga, principalmente cuando todas las variables son cuantitativas. De esta forma, se podr\u00e1 llegar a <strong><a href=\"https:\/\/click.linksynergy.com\/fs-bin\/click?id=cTjR400Zjac&amp;offerid=579862.373&amp;type=3&amp;subid=0&amp;LSNSUBSITE=LSNSUBSITE\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"La relaci\u00f3n que existe entre la variable dependiente y las variables independientes podr\u00eda estar ligada a una posible ecuaci\u00f3n o modelo que las liga, principalmente cuando todas las variables son cuantitativas. De esta forma, se podr\u00e1 llegar a predecir el valor de la variable dependiente conociendo el perfil de todas las dem\u00e1s. (opens in a new tab)\">predecir <\/a><\/strong>el valor de la variable dependiente conociendo el perfil de todas las dem\u00e1s.<\/p>\n\n\n\n<p>Si la variable dependiente es cualitativa dicot\u00f3mica, es decir, (0, 1) o (Si, No), entonces la regresi\u00f3n lineal podr\u00eda utilizarse como <strong>clasificadora<\/strong>. Si la variable dependiente cualitativa constatara la asignaci\u00f3n de cada elemento en grupos definidos previamente, dos o m\u00e1s, se puede utilizar para clasificar nuevos casos y convertirlo en el <strong>an\u00e1lisis discriminante<\/strong>.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<script async src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-2380084220870127\"\n     crossorigin=\"anonymous\"><\/script>\n<ins class=\"adsbygoogle\"\n     style=\"display:block; text-align:center;\"\n     data-ad-layout=\"in-article\"\n     data-ad-format=\"fluid\"\n     data-ad-client=\"ca-pub-2380084220870127\"\n     data-ad-slot=\"2437322509\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p><\/p>\n\n\n\n<p>Por otro lado, si la variable dependiente es cualitativa y las variables independientes son cuantitativas, se trata de un modelo de <strong>an\u00e1lisis de la varianza<\/strong>. Pero si la variable dependiente es cualitativa o cuantitativa y las variables independientes son cualitativas, entonces es un caso de <strong>segmentaci\u00f3n<\/strong>.<\/p>\n\n\n\n<p>En la <strong>regresi\u00f3n lineal<\/strong> tanto las variables independientes como la variable dependiente son cuantitativas y el modelo lineal viene dado por la ecuaci\u00f3n:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"http:\/\/jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/ecuacion-regresion-lineal.png\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"23\" src=\"http:\/\/jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/ecuacion-regresion-lineal-300x23.png\" alt=\"\" class=\"wp-image-298\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/ecuacion-regresion-lineal-300x23.png 300w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/ecuacion-regresion-lineal.png 477w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>Donde b1, b2, .. bn son los coeficientes o par\u00e1metros que denotan la magnitud del efecto que las variables independientes x1, x2, &#8230; xn tienen sobre la variable independiente y.<\/p>\n\n\n\n<p>El coeficiente b0 es el t\u00e9rmino constante o o independiente del modelo. y u es el termino que representa al error del modelo.<\/p>\n\n\n\n<p>Ahora, si se dispone de un conjunto de observaciones para cada una de las variables independientes y dependiente, \u00bfC\u00f3mo podemos entonces&nbsp; conocer los valores num\u00e9ricos de los par\u00e1metros b0, b1, .. bn basados en los datos de las variables? Esto es conocido como estimaci\u00f3n de los par\u00e1metros del modelo y una vez obtenidos estos valores, se podr\u00e1 realizar una <strong><a href=\"https:\/\/click.linksynergy.com\/fs-bin\/click?id=cTjR400Zjac&amp;offerid=579862.462&amp;type=3&amp;subid=0&amp;LSNSUBSITE=LSNSUBSITE\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"Ahora, si se dispone de un conjunto de observaciones para cada una de las variables independientes y dependiente, \u00bfC\u00f3mo podemos entonces&nbsp; conocer los valores num\u00e9ricos de los par\u00e1metros b0, b1, .. bn basados en los datos de las variables? Esto es conocido como estimaci\u00f3n de los par\u00e1metros del modelo y una vez obtenidos estos valores, se podr\u00e1 realizar una predicci\u00f3n del comportamiento futuro de la variable y. (opens in a new tab)\">predicci\u00f3n<\/a><\/strong><a href=\"https:\/\/click.linksynergy.com\/fs-bin\/click?id=cTjR400Zjac&amp;offerid=579862.462&amp;type=3&amp;subid=0&amp;LSNSUBSITE=LSNSUBSITE\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"Ahora, si se dispone de un conjunto de observaciones para cada una de las variables independientes y dependiente, \u00bfC\u00f3mo podemos entonces&nbsp; conocer los valores num\u00e9ricos de los par\u00e1metros b0, b1, .. bn basados en los datos de las variables? Esto es conocido como estimaci\u00f3n de los par\u00e1metros del modelo y una vez obtenidos estos valores, se podr\u00e1 realizar una predicci\u00f3n del comportamiento futuro de la variable y. (opens in a new tab)\"> <\/a>del comportamiento futuro de la variable y.<\/p>\n\n\n\n<p>Por ejemplo si tenemos un un caso hipot\u00e9tico donde creamos un cuadro con informaci\u00f3n sobre las ventas en periodos pasados, basados en el gasto en publicidad, la cantidad de prospectos interesados y cantidad de cotizaciones realizadas en cada periodo, podr\u00edamos inferir las ventas para periodos posteriores:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Prospectos<\/strong><\/td><td><strong>Publicidad<\/strong><\/td><td><strong>Cotizaciones<\/strong><\/td><td><strong>Ventas<\/strong><\/td><\/tr><tr><td>300<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5,000.00<\/td><td>100<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp; 50,000.00<\/td><\/tr><tr><td>400<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4,500.00<\/td><td>120<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp; 45,000.00<\/td><\/tr><tr><td>200<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7,000.00<\/td><td>90<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp; 30,000.00<\/td><\/tr><tr><td>800<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7,000.00<\/td><td>350<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp; 90,000.00<\/td><\/tr><tr><td>600<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7,500.00<\/td><td>220<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp; 75,000.00<\/td><\/tr><tr><td>650<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4,800.00<\/td><td>300<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp; 81,000.00<\/td><\/tr><tr><td>180<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3,000.00<\/td><td>100<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp; 28,000.00<\/td><\/tr><tr><td>700<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6,500.00<\/td><td>400<\/td><td>&nbsp;&nbsp; 128,000.00<\/td><\/tr><tr><td>700<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5,400.00<\/td><td>300<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp; 89,000.00<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Prospectos (x1), publicidad (x2) y cotizaciones (x3) son las variables independientes de 9 casos y ventas es la variable dependiente de esos mismo 9 casos u observaciones.<\/p>\n\n\n\n<p>Utilizando la regresi\u00f3n lineal podr\u00edamos calcular las ventas que se tendr\u00edan si hubiera 900 prospectos, un gasto en publicidad de 10,000 y la realizaci\u00f3n de 500 cotizaciones. Para ello podr\u00edamos aplicar el modelo, por lo que ser\u00eda necesario saber cuales son los valores de los par\u00e1metros b1, b2 y b3 principalmente.<\/p>\n\n\n\n<p><strong>Regresi\u00f3n Lineal Simple<\/strong><\/p>\n\n\n\n<p>En el caso de la regresi\u00f3n lineal simple, el modelo s\u00f3lo tendr\u00eda un coeficiente, dado que s\u00f3lo habr\u00eda una variable independiente, como en la siguiente ecuaci\u00f3n:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/ecuacion-regresion-lineal-simple_.png\"><img loading=\"lazy\" decoding=\"async\" width=\"219\" height=\"44\" src=\"http:\/\/jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/ecuacion-regresion-lineal-simple_.png\" alt=\"\" class=\"wp-image-305\"\/><\/a><\/figure>\n\n\n\n<p>donde <strong>i<\/strong> = 1 .. n&nbsp; &nbsp; y <strong>n<\/strong> es el total de casos u observaciones<\/p>\n\n\n\n<p>al despejar b0 tenemos la ecuaci\u00f3n:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/coeficiente-b0-regresion-lineal.png\"><img loading=\"lazy\" decoding=\"async\" width=\"174\" height=\"39\" src=\"http:\/\/jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/coeficiente-b0-regresion-lineal.png\" alt=\"\" class=\"wp-image-307\"\/><\/a><\/figure>\n\n\n\n<p>donde <strong>y<\/strong>(media) es el promedio de valores de la variable dependiente para todos los casos y&nbsp; <strong>x<\/strong>(media) es el promedio de los valores de la variable independiente para todos los casos<\/p>\n\n\n\n<p>Al despejar b1 para todos los casos tenemos que el valor de b1 esta dado por:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/coeficiente-b1-regresion-lineal.png\"><img loading=\"lazy\" decoding=\"async\" width=\"431\" height=\"90\" src=\"http:\/\/jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/coeficiente-b1-regresion-lineal.png\" alt=\"\" class=\"wp-image-308\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/coeficiente-b1-regresion-lineal.png 431w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/coeficiente-b1-regresion-lineal-300x63.png 300w\" sizes=\"auto, (max-width: 431px) 100vw, 431px\" \/><\/a><\/figure>\n\n\n\n<p>Una vez calculados los coeficientes de la ecuaci\u00f3n, podemos calcular y para nuevos valores de x con lo que estaremos haciendo una predicci\u00f3n.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"http:\/\/jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/resumen-regresion-lineal.png\"><img loading=\"lazy\" decoding=\"async\" width=\"609\" height=\"285\" src=\"http:\/\/jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/resumen-regresion-lineal.png\" alt=\"\" class=\"wp-image-311\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/resumen-regresion-lineal.png 609w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/resumen-regresion-lineal-300x140.png 300w\" sizes=\"auto, (max-width: 609px) 100vw, 609px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>En resumen la regresi\u00f3n lineal simple la podemos ver de la siguiente manera:<\/p>\n\n\n\n<p>Podemos calcular cualquier valor de y para valores de x que no se encuentren en el conjunto de datos actuales y que utilizamos como conjunto de entrenamiento, es decir, para el calculo de los coeficientes de la ecuaci\u00f3n.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<script async src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-2380084220870127\"\n     crossorigin=\"anonymous\"><\/script>\n<ins class=\"adsbygoogle\"\n     style=\"display:block; text-align:center;\"\n     data-ad-layout=\"in-article\"\n     data-ad-format=\"fluid\"\n     data-ad-client=\"ca-pub-2380084220870127\"\n     data-ad-slot=\"2437322509\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/click.linksynergy.com\/fs-bin\/click?id=cTjR400Zjac&amp;offerid=347188.10000502&amp;type=3&amp;subid=0\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"Python (opens in a new tab)\">Python<\/a><\/h2>\n\n\n\n<p>Para el ejemplo con python, vamos a considerar la siguiente tabla de datos:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>A\u00f1os de experiencia<\/strong><\/td><td><strong>Salario<\/strong><\/td><\/tr><tr><td>1.1<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp; 39,343.00<\/td><\/tr><tr><td>1.3<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp; 46,205.00<\/td><\/tr><tr><td>1.5<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp; 37,731.00<\/td><\/tr><tr><td>2<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp; 43,525.00<\/td><\/tr><tr><td>2.2<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp; 39,891.00<\/td><\/tr><tr><td>2.9<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp; 56,642.00<\/td><\/tr><tr><td>3<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp; 60,150.00<\/td><\/tr><tr><td>3.2<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp; 54,445.00<\/td><\/tr><tr><td>3.2<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp; 64,445.00<\/td><\/tr><tr><td>3.7<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp; 57,189.00<\/td><\/tr><tr><td>3.9<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp; 63,218.00<\/td><\/tr><tr><td>4<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp; 55,794.00<\/td><\/tr><tr><td>4<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp; 56,957.00<\/td><\/tr><tr><td>4.1<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp; 57,081.00<\/td><\/tr><tr><td>4.5<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp; 61,111.00<\/td><\/tr><tr><td>4.9<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp; 67,938.00<\/td><\/tr><tr><td>5.1<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp; 66,029.00<\/td><\/tr><tr><td>5.3<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp; 83,088.00<\/td><\/tr><tr><td>5.9<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp; 81,363.00<\/td><\/tr><tr><td>6<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp; 93,940.00<\/td><\/tr><tr><td>6.8<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp; 91,738.00<\/td><\/tr><tr><td>7.1<\/td><td>&nbsp;&nbsp;&nbsp;&nbsp; 98,273.00<\/td><\/tr><tr><td>7.9<\/td><td>&nbsp; 101,302.00<\/td><\/tr><tr><td>8.2<\/td><td>&nbsp; 113,812.00<\/td><\/tr><tr><td>8.7<\/td><td>&nbsp; 109,431.00<\/td><\/tr><tr><td>9<\/td><td>&nbsp; 105,582.00<\/td><\/tr><tr><td>9.5<\/td><td>&nbsp; 116,969.00<\/td><\/tr><tr><td>9.6<\/td><td>&nbsp; 112,635.00<\/td><\/tr><tr><td>10.3<\/td><td>&nbsp; 122,391.00<\/td><\/tr><tr><td>10.5<\/td><td>&nbsp; 121,872.00<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Donde la variable independiente X representa los a\u00f1os de experiencia y la variable dependiente Y el salario. Guardamos estos datos en un archivo de texto separado por comas como CSV utilizando Excel y le ponemos el nombre Salary_Data.csv<\/p>\n\n\n\n<p>Lo primero que haremos es importar las librer\u00edas que vamos a requerir:<\/p>\n\n\n<div id=\"code\">\n\n\n\n<pre class=\"wp-block-preformatted brush: cpp; gutter: true; first-line: 1\"><span style=\"color: #0000ff;\"><span style=\"color: #339966;\">#Regresion Lineal Simple<\/span>\nimport<\/span> numpy <span style=\"color: #0000ff;\">as<\/span> np\n<span style=\"color: #0000ff;\">import<\/span> matplotlib.pyplot <span style=\"color: #0000ff;\">as<\/span> plt\n<span style=\"color: #0000ff;\">import<\/span> pandas <span style=\"color: #0000ff;\">as<\/span> pd\n<\/pre>\n\n\n<\/div>\n\n\n\n<p>numpy es un paquete fundamental para el c\u00f3mputo cient\u00edfico con python debido a que contiene objetos y funciones para realizar operaciones con arreglos multidimensionales, herramientas para integrar c\u00f3digo fortran y C\/C++, soporte para el \u00e1lgebra lineal, transformada de Fourier y la capacidad de generar n\u00fameros aleatorios.<\/p>\n\n\n\n<p>matplotlib contiene las herramientas, funciones y objetos para crear gr\u00e1ficos<\/p>\n\n\n\n<p>pandas es la librear\u00eda para manipular estructuras de datos, es una extensi\u00f3n de numpy que tambi\u00e9n permite la manipulaci\u00f3n de archivos externos de datos.<\/p>\n\n\n\n<p>Por lo que el siguiente paso es cargar el archivo Salary_Data.csv utilizando la librer\u00eda pandas y separar las variables dependientes e independientes:<\/p>\n\n\n<div id=\"code\">\n\n\n\n<pre class=\"wp-block-preformatted brush: cpp; gutter: true; first-line: 1\"><span style=\"color: #0000ff;\"><span style=\"color: #339966;\">#Regresion Lineal Simple<\/span>\nimport<\/span> numpy <span style=\"color: #0000ff;\">as<\/span> np\n<span style=\"color: #0000ff;\">import<\/span> matplotlib.pyplot <span style=\"color: #0000ff;\">as<\/span> plt\n<span style=\"color: #0000ff;\">import<\/span> pandas <span style=\"color: #0000ff;\">as<\/span> pd\n\n<span style=\"color: #339966;\">#Cargamos el conjunto de datos<\/span>\ndataset = pd.read_csv('<span style=\"color: #008000;\">Salary_Data.csv<\/span>')\nx = dataset.iloc[:, :<span style=\"color: #0000ff;\">-1<\/span>].values\ny = dataset.iloc[:, <span style=\"color: #0000ff;\">1<\/span>].values<\/pre>\n\n\n<\/div>\n\n\n\n<p>Una vez creadas las variables independientes y dependientes con los datos de los a\u00f1os de experiencia y el salario, vamos a dividir ambos vectores en dos vectores cada uno. El primero con con datos aleatorias extra\u00eddos de la variable independiente (a\u00f1os de experiencia) para crear un conjunto de datos para entrenar el modelo, es decir, para calcular los coeficientes a y b (o b0 y b1), al cual le llamamos el conjunto de entrenamiento y el segundo para probar el modelo, por lo que le llamamos el conjunto de prueba.<\/p>\n\n\n<div id=\"code\">\n\n\n\n<pre class=\"wp-block-preformatted brush: cpp; gutter: true; first-line: 1\"><span style=\"color: #0000ff;\"><span style=\"color: #339966;\">#Regresion Lineal Simple<\/span>\nimport<\/span> numpy <span style=\"color: #0000ff;\">as<\/span> np\n<span style=\"color: #0000ff;\">import<\/span> matplotlib.pyplot <span style=\"color: #0000ff;\">as<\/span> plt\n<span style=\"color: #0000ff;\">import<\/span> pandas <span style=\"color: #0000ff;\">as<\/span> pd\n\n<span style=\"color: #339966;\">#Cargamos el conjunto de datos<\/span>\ndataset = pd.read_csv('<span style=\"color: #008000;\">Salary_Data.csv<\/span>')\nx = dataset.iloc[:, :<span style=\"color: #0000ff;\">-1<\/span>].values\ny = dataset.iloc[:, <span style=\"color: #0000ff;\">1<\/span>].values\n\n<span style=\"color: #339966;\">#dividimos los datos en el conjunto de entrenamiento y el conjunto de pruebas<\/span>\n<span style=\"color: #0000ff;\">from<\/span> sklearn.cross_validation <span style=\"color: #0000ff;\">import<\/span> train_test_split\nx_train, x_test, y_train, y_test = train_test_split(x, y, test_size=<span style=\"color: #0000ff;\">1\/3<\/span>, random_state=<span style=\"color: #0000ff;\">0<\/span>)\n\n<\/pre>\n\n\n<\/div>\n\n\n\n<p>De la librer\u00eda Sci-Kit Learn (sklearn) importamos la funci\u00f3n train_test_split para dividir los datos. En la funci\u00f3n utilizamos las variables x y y m\u00e1s dos par\u00e1metros adicionales: test_size y random_state. Con el primero (test_size) indicamos que el tama\u00f1o para el conjunto de prueba, guardados en las variables x_test y y_test tendr\u00e1n un tercio del conjunto total, es decir 10 registros, dado que el conjunto total es de 30 y los 10 seleccionados estar\u00e1n escogidos de manera aleatoria de entre esos 30, dado que el \u00faltimo par\u00e1metro de la funci\u00f3n es random_state=0.<\/p>\n\n\n\n<p>El siguiente paso es cargar el conjunto de entrenamiento al modelo de regresi\u00f3n lineal para calcular los coeficientes, es decir, entrenar al modelo.<\/p>\n\n\n<div id=\"code\">\n\n\n\n<pre class=\"wp-block-preformatted brush: cpp; gutter: true; first-line: 1\"><span style=\"color: #0000ff;\"><span style=\"color: #339966;\">#Regresion Lineal Simple<\/span>\nimport<\/span> numpy <span style=\"color: #0000ff;\">as<\/span> np\n<span style=\"color: #0000ff;\">import<\/span> matplotlib.pyplot <span style=\"color: #0000ff;\">as<\/span> plt\n<span style=\"color: #0000ff;\">import<\/span> pandas <span style=\"color: #0000ff;\">as<\/span> pd\n\n<span style=\"color: #339966;\">#Cargamos el conjunto de datos<\/span>\ndataset = pd.read_csv('<span style=\"color: #008000;\">Salary_Data.csv<\/span>')\nx = dataset.iloc[:, :<span style=\"color: #0000ff;\">-1<\/span>].values\ny = dataset.iloc[:, <span style=\"color: #0000ff;\">1<\/span>].values\n\n<span style=\"color: #339966;\">#dividimos los datos en el conjunto de entrenamiento y el conjunto de pruebas<\/span>\n<span style=\"color: #0000ff;\">from<\/span> sklearn.cross_validation <span style=\"color: #0000ff;\">import<\/span> train_test_split\nx_train, x_test, y_train, y_test = train_test_split(x, y, test_size=<span style=\"color: #0000ff;\">1\/3<\/span>, random_state=<span style=\"color: #0000ff;\">0<\/span>)\n\n<span style=\"color: #339966;\">#Cargamos el conjunto de entrenamiento al modelo de Regresi\u00f3n Lineal<\/span>\n<span style=\"color: #0000ff;\">from<\/span> sklearn.linear_model <span style=\"color: #0000ff;\">import<\/span> LinearRegression\nregressor = LinearRegression()\nregresor.fit(x_train, y_train)\n<\/pre>\n\n\n<\/div>\n\n\n\n<p>De la misma librer\u00eda sklearn en el subpaquete linear_model importamos la clase LinearRegression y creamos el objeto regressor con el constructor de la clase.<br>Una vez creado el objeto, invocamos el m\u00e9todo fit() proporcion\u00e1ndole los datos de entrenamiento.<\/p>\n\n\n\n<p>Ya con el modelo entrenado, podemos ahora predecir los valores de Y con el conjunto de pruebas x_test y comparar con los valores reales y_test.<\/p>\n\n\n<div id=\"code\">\n\n\n\n<pre class=\"wp-block-preformatted brush: cpp; gutter: true; first-line: 1\"><span style=\"color: #0000ff;\"><span style=\"color: #339966;\">#Regresion Lineal Simple<\/span>\nimport<\/span> numpy <span style=\"color: #0000ff;\">as<\/span> np\n<span style=\"color: #0000ff;\">import<\/span> matplotlib.pyplot <span style=\"color: #0000ff;\">as<\/span> plt\n<span style=\"color: #0000ff;\">import<\/span> pandas <span style=\"color: #0000ff;\">as<\/span> pd\n\n<span style=\"color: #339966;\">#Cargamos el conjunto de datos<\/span>\ndataset = pd.read_csv('<span style=\"color: #008000;\">Salary_Data.csv<\/span>')\nx = dataset.iloc[:, :<span style=\"color: #0000ff;\">-1<\/span>].values\ny = dataset.iloc[:, <span style=\"color: #0000ff;\">1<\/span>].values\n\n<span style=\"color: #339966;\">#dividimos los datos en el conjunto de entrenamiento y el conjunto de pruebas<\/span>\n<span style=\"color: #0000ff;\">from<\/span> sklearn.cross_validation <span style=\"color: #0000ff;\">import<\/span> train_test_split\nx_train, x_test, y_train, y_test = train_test_split(x, y, test_size=<span style=\"color: #0000ff;\">1\/3<\/span>, random_state=<span style=\"color: #0000ff;\">0<\/span>)\n\n<span style=\"color: #339966;\">#Cargamos el conjunto de entrenamiento al modelo de Regresi\u00f3n Lineal<\/span>\n<span style=\"color: #0000ff;\">from<\/span> sklearn.linear_model <span style=\"color: #0000ff;\">import<\/span> LinearRegression\nregressor = LinearRegression()\nregressor.fit(x_train, y_train)\n\n<span style=\"color: #339966;\">#Predicci\u00f3n de los resultados del conjunto de pruebas (x_test)<\/span>\ny_pred = regressor.predict(x_test)\n\n<span style=\"color: #339966;\">#Ahora comparamos y_pred con los valores reales y_test<\/span><\/pre>\n\n\n<\/div>\n\n\n\n<p>Ahora que ya tenemos los valores calculados con el modelo de la regresi\u00f3n lineal, podemos compararlos contra los valores reales (y_pred vs y_test) mostrando una gr\u00e1fica.<\/p>\n\n\n<div id=\"code\">\n\n\n\n<pre class=\"wp-block-preformatted brush: cpp; gutter: true; first-line: 1\"><span style=\"color: #0000ff;\"><span style=\"color: #339966;\">#Regresion Lineal Simple<\/span>\nimport<\/span> numpy <span style=\"color: #0000ff;\">as<\/span> np\n<span style=\"color: #0000ff;\">import<\/span> matplotlib.pyplot <span style=\"color: #0000ff;\">as<\/span> plt\n<span style=\"color: #0000ff;\">import<\/span> pandas <span style=\"color: #0000ff;\">as<\/span> pd\n\n<span style=\"color: #339966;\">#Cargamos el conjunto de datos<\/span>\ndataset = pd.read_csv('<span style=\"color: #008000;\">Salary_Data.csv<\/span>')\nx = dataset.iloc[:, :<span style=\"color: #0000ff;\">-1<\/span>].values\ny = dataset.iloc[:, <span style=\"color: #0000ff;\">1<\/span>].values\n\n<span style=\"color: #339966;\">#dividimos los datos en el conjunto de entrenamiento y el conjunto de pruebas<\/span>\n<span style=\"color: #0000ff;\">from<\/span> sklearn.cross_validation <span style=\"color: #0000ff;\">import<\/span> train_test_split\nx_train, x_test, y_train, y_test = train_test_split(x, y, test_size=<span style=\"color: #0000ff;\">1\/3<\/span>, random_state=<span style=\"color: #0000ff;\">0<\/span>)\n\n<span style=\"color: #339966;\">#Cargamos el conjunto de entrenamiento al modelo de Regresi\u00f3n Lineal<\/span>\n<span style=\"color: #0000ff;\">from<\/span> sklearn.linear_model <span style=\"color: #0000ff;\">import<\/span> LinearRegression\nregressor = LinearRegression()\nregressor.fit(x_train, y_train)\n\n<span style=\"color: #339966;\">#Predicci\u00f3n de los resultados del conjunto de pruebas (x_test)<\/span>\ny_pred = regressor.predict(x_test)\n\n<span style=\"color: #339966;\">#Ahora comparamos y_pred con los valores reales y_test\n<span style=\"color: #000000;\">plt.scatter(x_test, y_test, color = '<span style=\"color: #008000;\">red<\/span>')<\/span>\n<span style=\"color: #000000;\">plt.plot(x_train, y_pred, color = '<span style=\"color: #008000;\">blue<\/span>')<\/span>\n<span style=\"color: #000000;\">plt.title('<span style=\"color: #008000;\">Salario vs Experiencia (Conjunto de prueba)<\/span>')<\/span>\n<span style=\"color: #000000;\">plt.xlabel('<span style=\"color: #008000;\">A\u00f1os de Experiencia<\/span>')<\/span>\n<span style=\"color: #000000;\">plt.ylabel('<span style=\"color: #008000;\">Salario<\/span>')<\/span>\n<span style=\"color: #000000;\">plt.show()<\/span>\n<\/span><\/pre>\n\n\n<\/div>\n\n\n\n<p>Con puntos rojos se muestran los valores reales para Y del conjunto de prueba y&nbsp; la recta azul muestra la linea de regresi\u00f3n calculada para los valores predecidos.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"http:\/\/jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/Grafica-RegresionLineal.png\"><img loading=\"lazy\" decoding=\"async\" width=\"711\" height=\"471\" src=\"http:\/\/jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/Grafica-RegresionLineal.png\" alt=\"\" class=\"wp-image-326\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/Grafica-RegresionLineal.png 711w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/Grafica-RegresionLineal-300x199.png 300w\" sizes=\"auto, (max-width: 711px) 100vw, 711px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>Los valores de ambos vectores son los siguientes:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"537\" height=\"381\" src=\"http:\/\/jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/comparativa-regresionlineal.png\" alt=\"\" class=\"wp-image-327\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/comparativa-regresionlineal.png 537w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/comparativa-regresionlineal-300x213.png 300w\" sizes=\"auto, (max-width: 537px) 100vw, 537px\" \/><\/figure><\/div>\n\n\n\n<p><a href=\"http:\/\/jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/comparativa-regresionlineal.png\"><br><\/a><\/p>\n\n\n\n<script async src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-2380084220870127\"\n     crossorigin=\"anonymous\"><\/script>\n<ins class=\"adsbygoogle\"\n     style=\"display:block; text-align:center;\"\n     data-ad-layout=\"in-article\"\n     data-ad-format=\"fluid\"\n     data-ad-client=\"ca-pub-2380084220870127\"\n     data-ad-slot=\"2437322509\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p><\/p>\n\n\n\n<p>La tabla del lado izquierdo muestra los a\u00f1os de experiencia (x_test), para los 10 valores del conjunto de prueba, la tabla de en medio y_test es el salario original correspondiente a los a\u00f1os de experiencia. En la tabla de la extrema derecha se muestran los valores calculados con el modelo de regresi\u00f3n lineal para el salario correspondiente a los a\u00f1os de experiencia.<\/p>\n\n\n\n<p>Por ejemplo, en el segundo rengl\u00f3n menciona que con 10.3 a\u00f1os de experiencia el salario actual es de 123,079.39 y la predicci\u00f3n indica un salario de 122,391.00 la diferencia es de 688.39<\/p>\n\n\n\n<p>Podemos observar que los valores son distintos, pero no muy alejados de la realidad. El error es m\u00ednimo y puede aceptarse el resultado de la regresi\u00f3n para valores desconocidos de x.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Recomendaciones<\/h3>\n\n\n\n<p>Para iniciar con la programaci\u00f3n en python, este curso de <strong><a rel=\"noreferrer noopener\" aria-label=\"Para iniciar con la programaci\u00f3n en python, este curso de Introducci\u00f3n a la programaci\u00f3n con python te puede ser muy \u00fatil (opens in a new tab)\" href=\"https:\/\/click.linksynergy.com\/fs-bin\/click?id=cTjR400Zjac&amp;offerid=347188.10000502&amp;type=3&amp;subid=0\" target=\"_blank\">Introducci\u00f3n a la programaci\u00f3n con python<\/a><\/strong> te puede ser muy \u00fatil. Por otro lado, en este webinar podr\u00e1s conocer los detalles de arquitectura y soluciones para <strong><a href=\"https:\/\/click.linksynergy.com\/fs-bin\/click?id=cTjR400Zjac&amp;offerid=579862.462&amp;type=3&amp;subid=0&amp;LSNSUBSITE=LSNSUBSITE\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"Para iniciar con la programaci\u00f3n en python, este curso de Introducci\u00f3n a la programaci\u00f3n con python te puede ser muy \u00fatil. Por otro lado, en este webinar podr\u00e1s conocer los detalles de arquitectura y soluciones para machine learning de Azure. (opens in a new tab)\">machine learning de Azure<\/a><\/strong>.<\/p>\n\n\n\n<p>Tambi\u00e9n para el desarrollo en la nube podemos utilizar <strong><em>Amazon Web Services<\/em><\/strong>, estas ligas son para el curso de certificaci\u00f3n de <strong><a rel=\"noreferrer noopener\" aria-label=\"Tambi\u00e9n para el desarrollo en la nube podemos utilizar Amazon Web Services, estas ligas son para el curso de certificaci\u00f3n de Asociado y el de Profesional en dise\u00f1o y arquitectura de AWS. (opens in a new tab)\" href=\"https:\/\/click.linksynergy.com\/fs-bin\/click?id=cTjR400Zjac&amp;offerid=579862.373&amp;type=3&amp;subid=0&amp;LSNSUBSITE=LSNSUBSITE\" target=\"_blank\">Asociado <\/a><\/strong>y el de <strong><a href=\"https:\/\/click.linksynergy.com\/fs-bin\/click?id=cTjR400Zjac&amp;offerid=579862.372&amp;type=3&amp;subid=0&amp;LSNSUBSITE=LSNSUBSITE\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"Tambi\u00e9n para el desarrollo en la nube podemos utilizar Amazon Web Services, estas ligas son para el curso de certificaci\u00f3n de Asociado y el de Profesional en dise\u00f1o y arquitectura de AWS. (opens in a new tab)\">Profesional <\/a><\/strong>en dise\u00f1o y arquitectura de AWS.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Regresi\u00f3n Lineal con Python Introducci\u00f3n a la Regresi\u00f3n Lineal La regresi\u00f3n lineal es uno de &hellip; <\/p>\n","protected":false},"author":2,"featured_media":332,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"advgb_blocks_editor_width":"","advgb_blocks_columns_visual_guide":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[25,35,46],"tags":[55,54,50,53,51,52],"class_list":["post-295","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-algoritmos","category-inteligencia-artificial","category-machine-learning","tag-clasificacion","tag-inferencia","tag-machine-learning","tag-prediccion","tag-regresion","tag-regresion-lineal"],"aioseo_notices":[],"author_meta":{"display_name":"Jacob Avila Camacho","author_link":"https:\/\/www.jacobsoft.com.mx\/es_mx\/author\/jacob-avila\/"},"featured_img":"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/imagen-destacada-regresion-lineal-simple-300x165.png","featured_image_src":"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/imagen-destacada-regresion-lineal-simple.png","featured_image_src_square":"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/imagen-destacada-regresion-lineal-simple.png","author_info":{"display_name":"Jacob Avila Camacho","author_link":"https:\/\/www.jacobsoft.com.mx\/es_mx\/author\/jacob-avila\/"},"coauthors":[],"tax_additional":{"categories":{"linked":["<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/algoritmos\/\" class=\"advgb-post-tax-term\">Algoritmos<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/inteligencia-artificial\/\" class=\"advgb-post-tax-term\">Inteligencia Artificial<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/inteligencia-artificial\/machine-learning\/\" class=\"advgb-post-tax-term\">Machine Learning<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">Algoritmos<\/span>","<span class=\"advgb-post-tax-term\">Inteligencia Artificial<\/span>","<span class=\"advgb-post-tax-term\">Machine Learning<\/span>"]},"tags":{"linked":["<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/inteligencia-artificial\/machine-learning\/\" class=\"advgb-post-tax-term\">clasificaci\u00f3n<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/inteligencia-artificial\/machine-learning\/\" class=\"advgb-post-tax-term\">inferencia<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/inteligencia-artificial\/machine-learning\/\" class=\"advgb-post-tax-term\">machine learning<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/inteligencia-artificial\/machine-learning\/\" class=\"advgb-post-tax-term\">predicci\u00f3n<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/inteligencia-artificial\/machine-learning\/\" class=\"advgb-post-tax-term\">regresi\u00f3n<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/inteligencia-artificial\/machine-learning\/\" class=\"advgb-post-tax-term\">regresi\u00f3n lineal<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">clasificaci\u00f3n<\/span>","<span class=\"advgb-post-tax-term\">inferencia<\/span>","<span class=\"advgb-post-tax-term\">machine learning<\/span>","<span class=\"advgb-post-tax-term\">predicci\u00f3n<\/span>","<span class=\"advgb-post-tax-term\">regresi\u00f3n<\/span>","<span class=\"advgb-post-tax-term\">regresi\u00f3n lineal<\/span>"]}},"comment_count":"12","relative_dates":{"created":"Publicado 8 a\u00f1os hace","modified":"Actualizado 5 a\u00f1os hace"},"absolute_dates":{"created":"Publicado el septiembre 9, 2018","modified":"Actualizado el agosto 19, 2021"},"absolute_dates_time":{"created":"Publicado el septiembre 9, 2018 7:34 pm","modified":"Actualizado el agosto 19, 2021 11:11 pm"},"featured_img_caption":"","series_order":"","_links":{"self":[{"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/posts\/295","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/comments?post=295"}],"version-history":[{"count":18,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/posts\/295\/revisions"}],"predecessor-version":[{"id":1803,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/posts\/295\/revisions\/1803"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/media\/332"}],"wp:attachment":[{"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/media?parent=295"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/categories?post=295"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/tags?post=295"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}