Spaces:
Sleeping
Sleeping
File size: 124,560 Bytes
0b793e3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 |
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": []
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"source": [
"#Ingestar"
],
"metadata": {
"id": "bxywqp3f4tjI"
}
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 363
},
"id": "8sCMBdls22X8",
"outputId": "160aa2dd-f88a-403c-e39d-5d346d621812"
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" Bakery Floor space of the shop \\\n",
"0 Yumenoooka Shop 10 \n",
"1 Terai Station Shop 8 \n",
"2 Sone Shop 8 \n",
"3 Hashimoto Station Shop 5 \n",
"4 Kikyou Town Shop 7 \n",
"5 Post Office Shop 8 \n",
"6 Suidobashi Station Shop 7 \n",
"7 Rokujo Station Shop 9 \n",
"8 Wakaba Riverside Shop 6 \n",
"9 Misato Shop 9 \n",
"\n",
" Distance to the nearest station Monthly sales \n",
"0 80 469 \n",
"1 0 366 \n",
"2 200 371 \n",
"3 200 208 \n",
"4 300 246 \n",
"5 230 297 \n",
"6 40 363 \n",
"7 0 436 \n",
"8 330 198 \n",
"9 180 364 "
],
"text/html": [
"\n",
" <div id=\"df-9e24b220-baec-4942-9a18-06222fc6a1c0\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Bakery</th>\n",
" <th>Floor space of the shop</th>\n",
" <th>Distance to the nearest station</th>\n",
" <th>Monthly sales</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Yumenoooka Shop</td>\n",
" <td>10</td>\n",
" <td>80</td>\n",
" <td>469</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Terai Station Shop</td>\n",
" <td>8</td>\n",
" <td>0</td>\n",
" <td>366</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Sone Shop</td>\n",
" <td>8</td>\n",
" <td>200</td>\n",
" <td>371</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Hashimoto Station Shop</td>\n",
" <td>5</td>\n",
" <td>200</td>\n",
" <td>208</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Kikyou Town Shop</td>\n",
" <td>7</td>\n",
" <td>300</td>\n",
" <td>246</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>Post Office Shop</td>\n",
" <td>8</td>\n",
" <td>230</td>\n",
" <td>297</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>Suidobashi Station Shop</td>\n",
" <td>7</td>\n",
" <td>40</td>\n",
" <td>363</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>Rokujo Station Shop</td>\n",
" <td>9</td>\n",
" <td>0</td>\n",
" <td>436</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>Wakaba Riverside Shop</td>\n",
" <td>6</td>\n",
" <td>330</td>\n",
" <td>198</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>Misato Shop</td>\n",
" <td>9</td>\n",
" <td>180</td>\n",
" <td>364</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-9e24b220-baec-4942-9a18-06222fc6a1c0')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-9e24b220-baec-4942-9a18-06222fc6a1c0 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-9e24b220-baec-4942-9a18-06222fc6a1c0');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
"<div id=\"df-4764a0a2-39a6-4a8b-b813-efd15e84f311\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-4764a0a2-39a6-4a8b-b813-efd15e84f311')\"\n",
" title=\"Suggest charts\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-4764a0a2-39a6-4a8b-b813-efd15e84f311 button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
"</div>\n",
"\n",
" </div>\n",
" </div>\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"variable_name": "df",
"summary": "{\n \"name\": \"df\",\n \"rows\": 10,\n \"fields\": [\n {\n \"column\": \"Bakery\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 10,\n \"samples\": [\n \"Wakaba Riverside Shop\",\n \"Terai Station Shop\",\n \"Post Office Shop\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Floor space of the shop\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1,\n \"min\": 5,\n \"max\": 10,\n \"num_unique_values\": 6,\n \"samples\": [\n 10,\n 8,\n 6\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Distance to the nearest station\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 119,\n \"min\": 0,\n \"max\": 330,\n \"num_unique_values\": 8,\n \"samples\": [\n 0,\n 40,\n 80\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Monthly sales\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 92,\n \"min\": 198,\n \"max\": 469,\n \"num_unique_values\": 10,\n \"samples\": [\n 198,\n 366,\n 297\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
}
},
"metadata": {},
"execution_count": 1
}
],
"source": [
"\n",
"import pandas as pd\n",
"\n",
"df = pd.read_csv('panaderias.csv')\n",
"\n",
"df.head(10)\n"
]
},
{
"cell_type": "markdown",
"source": [
"#An谩lisis exploratorio de datos"
],
"metadata": {
"id": "YefPo3If4zUx"
}
},
{
"cell_type": "code",
"source": [
"#analisis exploratorio de datos sobre el dataframe df\n",
"\n",
"df= df.drop(columns=['Bakery'])\n",
"\n",
"# Resumen estad铆stico de las variables num茅ricas\n",
"print(df.describe())\n",
"\n",
"# Informaci贸n sobre el dataframe, incluyendo tipos de datos y valores no nulos\n",
"print(df.info())\n",
"\n",
"# N煤mero de valores 煤nicos en cada columna\n",
"print(df.nunique())\n",
"\n",
"# Verificar valores faltantes\n",
"print(df.isnull().sum())\n",
"\n",
"# Histograma de una variable num茅rica (reemplaza 'nombre_columna' con el nombre de la columna)\n",
"df['Distance to the nearest station'].hist()\n",
"\n",
"# Gr谩fico de dispersi贸n entre dos variables num茅ricas (reemplaza 'columna1' y 'columna2')\n",
"df.plot.scatter(x='Distance to the nearest station', y='Monthly sales')\n",
"\n",
"\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
},
"id": "ef07c1-03NIw",
"outputId": "89451c13-25c1-4177-dbb4-4c276e47cf7e"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
" Floor space of the shop Distance to the nearest station Monthly sales\n",
"count 10.000000 10.000000 10.00000\n",
"mean 7.700000 156.000000 331.80000\n",
"std 1.494434 119.647631 92.01425\n",
"min 5.000000 0.000000 198.00000\n",
"25% 7.000000 50.000000 258.75000\n",
"50% 8.000000 190.000000 363.50000\n",
"75% 8.750000 222.500000 369.75000\n",
"max 10.000000 330.000000 469.00000\n",
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 10 entries, 0 to 9\n",
"Data columns (total 3 columns):\n",
" # Column Non-Null Count Dtype\n",
"--- ------ -------------- -----\n",
" 0 Floor space of the shop 10 non-null int64\n",
" 1 Distance to the nearest station 10 non-null int64\n",
" 2 Monthly sales 10 non-null int64\n",
"dtypes: int64(3)\n",
"memory usage: 368.0 bytes\n",
"None\n",
"Floor space of the shop 6\n",
"Distance to the nearest station 8\n",
"Monthly sales 10\n",
"dtype: int64\n",
"Floor space of the shop 0\n",
"Distance to the nearest station 0\n",
"Monthly sales 0\n",
"dtype: int64\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<Axes: xlabel='Distance to the nearest station', ylabel='Monthly sales'>"
]
},
"metadata": {},
"execution_count": 2
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "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RD2u8www1/5Ncv57K+uNx40ecerv9ejuebuMMT26gsLhsP7sz/5MFy9e1KFDhzodV1VVpY8//ljTp09XY2OjfvSjH+ngwYM6efKkxowZ0+E+xcXF2rBhQ7vtZWVlSklJ6clyAQBAL2tpadGyZcvU2Ngor9fb6bgeh5GnnnpK7733ng4dOtRpqOhIKBTS5MmTtXTpUm3cuLHDMR29MpKZmanz5893eTLRCoVC8vv9WrBggdxud8zmTWTUxIl6OFGP66YW75N07RWRjbPDer46ScGwy/KqunaiOC/ux6BHnPp7PZqampSamnrDMNKjt2lWr16td999VwcPHowqiEiS2+3WjBkzdPr06U7HeDweeTyeDveNx4MZr3kTGTVxoh5O1EMKtjqDRzDsarftVtObjxk94tRf69Hdc47qt2mMMVq9erV27dqlAwcOKCsrK+qFtba26vjx4xo5cmTU+wIAgL4nqldGCgoKVFZWpnfeeUdDhw5VIBCQJA0bNkyDBw+WJC1fvlyjR49WSUmJJOmFF17QN77xDY0fP14XL17Uyy+/rLNnz+qJJ56I8akAAIBEFFUY2bZtmyRp/vz5ju0//elP9d3vfleSVFdXp6Sk6y+4/OEPf9CqVasUCAR02223adasWTp8+LCmTJlycysHAAB9QlRhpDufda2oqHDc3rx5szZv3hzVogAAQP/Bd9MAAACrCCMAAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACsIowAAACrCCMAAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACsIowAAACrCCMAAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACsIowAAACrCCMAAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwKqowUlJSonvvvVdDhw5VWlqa8vPzderUqRvut3PnTk2aNEmDBg3StGnTtGfPnh4vGAAA9C1RhZHKykoVFBToyJEj8vv9CoVCys3NVXNzc6f7HD58WEuXLtXjjz+uY8eOKT8/X/n5+Tpx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AKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACsIowAAACrCCMAAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACsIowAAACrCCMAAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwqkdhZOvWrbrjjjs0aNAgzZ07V++//36nY0tLS+VyuRw/gwYN6vGCAQBA3xJ1GHnrrbdUWFio9evX64MPPlB2drby8vJ07ty5Tvfxer2qr6+P/Jw9e/amFg0AAPqOqMPIK6+8olWrVmnlypWaMmWKtm/frpSUFL355pud7uNyuZSRkRH5SU9Pv6lFAwCAviOqMHL16lXV1NQoJyfn+gRJScrJyVFVVVWn+12+fFnjxo1TZmamlixZopMnT/Z8xQAAoE8ZGM3g8+fPq7W1td0rG+np6froo4863GfixIl68803NX36dDU2NupHP/qR7rvvPp08eVJjxozpcJ9gMKhgMBi53dTUJEkKhUIKhULRLLlLbXN5kkzM5kx0bbWgJte09Ugs+y6RxasengGJ22+JdM30Rh9zzTj7OVH6I16PV3fndRljul2hzz77TKNHj9bhw4fl8/ki25999llVVlbq6NGj3VrY5MmTtXTpUm3cuLHDMcXFxdqwYUO77WVlZUpJSenucgEAgEUtLS1atmyZGhsb5fV6Ox0X1SsjqampGjBggBoaGhzbGxoalJGR0a053G63ZsyYodOnT3c6pqioSIWFhZHbTU1NyszMVG5ubpcnE61QKCS/36/nq5MUDLtiNm8i8yQZbZwdpib/79jfPSi/368FCxbI7XbbXo51bddMrOsxtXhfzObqbYl0zZwozov7MeLVI4nky/2cKP0Rr95oe2fjRqIKI8nJyZo1a5bKy8uVn58vSQqHwyovL9fq1au7NUdra6uOHz+ub33rW52O8Xg88ng87ba73e64NHcw7FKw9dZtEhuoyTVt/Rav3ktUsa5HX+i1RLhmerOH+/M101Ef3Or9Ea/HqrvzRhVGJKmwsFArVqzQ7NmzNWfOHL366qtqbm7WypUrJUnLly/X6NGjVVJSIkl64YUX9I1vfEPjx4/XxYsX9fLLL+vs2bN64okn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\n"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "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Doduu+025eTkuJaXH61avXq1evbsKV9fX33++ecqKytTUlKSWrVqJT8/P3Xt2lXvvvuu630//fSTxowZo/DwcPn5+aldu3Z68803JUmtWrWSJHXv3l02m00DBgyocB8vZR1bt27V4MGDFRYWpuDgYPXv31/bt293rfNCn81zT2OVlZVp9uzZat68uXx9fdWtWzd9/PHHVe5/oFp5+EGkQL2VkJBghg8fXuGyrl27mmHDhrmmJZn33nvPGGPM008/baKjo82mTZvMwYMHzWeffWaWLFlijDEmJyfH9bTnrKwsk5OTY4wxJjU11bzyyismLS3NfP/992bGjBmmSZMm5tChQ65txMTEmJCQEPPSSy+ZvXv3mqSkJOPl5WW+++47Y4wxp06dMq1btzbXXnut+eyzz8zevXvNO++8Y7Zs2WKMMWbTpk3GbrebhQsXmn379pk1a9aYli1bmlmzZlW4j6dOnTJ//OMfzdChQ01WVpbJysoyxcXFpqCgwERFRZmRI0eatLQ0s379etOqVSvXU9/PdfbsWfPvf//bSDLp6ekmKyvLnDx50hhjTP/+/Y3dbjezZs0y33//vVm0aJGx2WxuT4AeNGiQuemmm8zWrVvN999/bx5++GETGhpqjh8/XuH2Dhw4YCSZDh06mFWrVpn09HRzyy23mJiYGNdToTMyMkxAQIB57rnnzPfff282b95sunfvbsaNG+dazz/+8Q/z0UcfmX379pmUlBTjdDrd/s3Ln/bepUsXs2bNGpORkWGOHz9u/ud//sd06NDBfPzxx2bfvn3mzTffNL6+vmbjxo3GGGMSExNNt27dzNatW82BAwfM2rVrzQcffGCMMearr74yksy6detMVlbWBffxUtaxfv1689Zbb5k9e/aY3bt3m/Hjx5vIyEiTn59vjLnwZ/Pxxx83Xbt2dW372WefNXa73SxdutR899135tFHHzXe3t7m+++/r3T/A9WNsANcoouFnVtvvdV07NjRNf3rsDNp0iRz/fXXm7Kysgrf++u2F3PVVVeZ+fPnu6ZjYmLM7bff7pouKyszERERZsGCBcYYY1599VUTFBR0wS/IgQMHmjlz5rjNe+utt0xUVNQFa6ioD1577TVzxRVXmIKCAte8//znP8bLy8tkZ2dXuJ7yYPDTTz+5ze/fv7/5r//6L7d5V199tZk2bZoxxpjPPvvM2O12c/r0abc2bdq0Ma+++mqF2yr/sv373//umrdr1y4jyezZs8cYY8z48ePNvffe6/a+zz77zHh5eZmff/65wvVu3brVSDKnTp1y26f333/f1eb06dPG39/fFTDLjR8/3owePdoYY8xNN91k7rzzzovWvmPHjgqXl6uOdZSWlpqgoCDz4YcfuuZV9Nk8N+w0a9bM/PWvf3Vrc/XVV5v777/fbfsX63+gunEaC6gBxhjZbLYKl40bN06pqalq3769Jk+erDVr1vzm+goKCvTII4+oY8eOatq0qQIDA7Vnzx5lZma6tevSpYvrZ5vNJofD4Tq1kpqaqu7duyskJKTCbXzzzTeaPXu2AgMDXa977rlHWVlZKioqquyua8+ePeratasCAgJc8/r27auysjKlp6dXej0V7ZMkRUVFufbpm2++UUFBgUJDQ93qPnDggPbt21fp9UZFRUmS23oXLlzots64uDiVlZXpwIEDkqRt27bppptuUosWLRQUFKT+/ftL0nn/Jr169XL9nJGRoaKiIg0ePNht3YsXL3bVO2HCBC1btkzdunXTo48+qi1btlS5zy5lHUePHtU999yjdu3aKTg4WHa7XQUFBeftz8Xk5+fryJEj6tu3r9v8vn37as+ePW7zLtb/QHVr7OkCACvas2ePa2zEuXr06KEDBw5o9erVWrdunf74xz9q0KBBbuM2zvXII49o7dq1euaZZ9S2bVv5+fnplltuUUlJiVs7b29vt2mbzea6MszPz++iNRcUFOiJJ57QyJEjz1vWpEmTi763Jl1snwoKChQVFeUaK/RrTZs2rfR6y4Ppr9f73//935o8efJ572vRooUKCwsVFxenuLg4vf322woPD1dmZqbi4uLO+zf5degrH7f0n//8R1deeaVbu/IB7MOGDdOhQ4f00Ucfae3atRo4cKASExP1zDPPXHR/fu1S1pGQkKDjx4/rhRdeUExMjHx9feV0Os/bn+pysf4HqhthB6hmn376qdLS0jRlypQLtrHb7br11lt166236pZbbtHQoUN14sQJhYSEyNvbW6WlpW7tN2/erHHjxunmm2+W9MuX5sGDB6tUV5cuXfT3v//dtZ1z9ejRQ+np6Wrbtm2l1+nj43NerR07dtTChQtVWFjo+qLfvHmzvLy81L59+wuuR9J56/otPXr0UHZ2tho3buwaMFsdevTood27d1+wL9LS0nT8+HHNnTtX0dHRkqSvv/76N9cbGxsrX19fZWZmuo4EVSQ8PFwJCQlKSEjQtddeq6lTp+qZZ56pUj9VdR2bN2/Wyy+/rBtuuEGSdPjwYR07dsytTUWfzV+z2+1q1qyZNm/e7LZ/mzdvVu/evX+zZqCmcBoLuAzFxcXKzs7Wjz/+qO3bt2vOnDkaPny4brzxRo0dO7bC9zz77LNaunSpvvvuO33//fdavny5HA6H60hEy5YttX79emVnZ+unn36SJLVr104rVqxQamqqvvnmG912221V/l/w6NGj5XA4NGLECG3evFn79+/Xv//9b9dVMDNnztTixYv1xBNPaNeuXdqzZ4+WLVumGTNmXHCdLVu21M6dO5Wenq5jx47pzJkzGjNmjJo0aaKEhAR9++232rBhgyZNmqQ77rhDkZGRFa4nJiZGNptNq1atUm5u7gWv3DrXoEGD5HQ6NWLECK1Zs0YHDx7Uli1b9Je//KVS4eNCpk2bpi1btmjixIlKTU3V3r17tXLlSk2cOFHSL0d3fHx8NH/+fO3fv18ffPCBnnzyyd9cb1BQkB555BFNmTJFixYt0r59+7R9+3bNnz9fixYtkvTLv8PKlSuVkZGhXbt2adWqVerYsaMkKSIiQn5+fvr444919OhR5eXlVbidS1lHu3bt9NZbb2nPnj368ssvNWbMmPOOBlb02TzX1KlT9dRTT+mdd95Renq6HnvsMaWmpuqBBx6oRM8DNcTTg4aA+iohIcFIMpJM48aNTXh4uBk0aJB54403TGlpqVtb/Wpg52uvvWa6detmAgICjN1uNwMHDjTbt293tf3ggw9M27ZtTePGjU1MTIwx5pdBndddd53x8/Mz0dHR5m9/+5vp37+/eeCBB1zvi4mJMc8995zbdrt27Woef/xx1/TBgwfNqFGjjN1uN/7+/qZXr17myy+/dC3/+OOPze9//3vj5+dn7Ha76d27t3nttdcu2Ac5OTlm8ODBJjAw0EgyGzZsMMYYs3PnTnPdddeZJk2amJCQEHPPPfe4Bu5eyOzZs43D4TA2m8115da5+2iMMcOHD3e7sis/P99MmjTJNGvWzHh7e5vo6GgzZswYk5mZWeF2Khqg+9NPP7nVb8wvVy2V71tAQIDp0qWL28DbJUuWmJYtWxpfX1/jdDrNBx984LbeCw26LisrM88//7xp37698fb2NuHh4SYuLs4kJycbY4x58sknTceOHY2fn58JCQkxw4cPN/v373e9//XXXzfR0dHGy8vL9O/fv8J9vJR1bN++3fTq1cs0adLEtGvXzixfvvy8z1RFn81zByiXlpaaWbNmmSuvvNJ4e3ubrl27mtWrV1e5/4HqZDPGGE8FLQAAgJrGaSwAAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBp/x+dCAajCa0RgQAAAABJRU5ErkJggg==\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"# C谩lculo de la correlaci贸n entre variables num茅ricas\n",
"print(df.corr())\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "xOD35lvm4EaE",
"outputId": "7a9ab675-215a-42e6-d274-ea2601598eae"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
" Floor space of the shop \\\n",
"Floor space of the shop 1.000000 \n",
"Distance to the nearest station -0.492155 \n",
"Monthly sales 0.892385 \n",
"\n",
" Distance to the nearest station \\\n",
"Floor space of the shop -0.492155 \n",
"Distance to the nearest station 1.000000 \n",
"Monthly sales -0.775083 \n",
"\n",
" Monthly sales \n",
"Floor space of the shop 0.892385 \n",
"Distance to the nearest station -0.775083 \n",
"Monthly sales 1.000000 \n"
]
}
]
},
{
"cell_type": "code",
"source": [
"# graficar matriz de correlacion\n",
"\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# Calcula la matriz de correlaci贸n\n",
"correlation_matrix = df.corr()\n",
"\n",
"# Crea un mapa de calor (heatmap) de la matriz de correlaci贸n\n",
"plt.figure(figsize=(10, 8)) # Ajusta el tama帽o de la figura si es necesario\n",
"sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', linewidths=.5)\n",
"plt.title('Matriz de Correlaci贸n')\n",
"plt.show()\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 699
},
"id": "chfMXavA4GJ_",
"outputId": "83f3d000-bcc2-4fcd-c74b-89986cf4d4a5"
},
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1000x800 with 2 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAwgAAAKqCAYAAACepnlGAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACMwUlEQVR4nOzdd3RU5dbH8d+kTRoJAVIAkdCkN0EQpCkggoDYBZUmYKNIUAQLTQXxCuK1IV4F8YriBUSK0iJVkY6A9B5CQgshkEDanPcPXkbHJJATTjIkfj9rnbUyz2n7DEnInv0Um2EYhgAAAABAkoe7AwAAAABw4yBBAAAAAOBEggAAAADAiQQBAAAAgBMJAgAAAAAnEgQAAAAATiQIAAAAAJxIEAAAAAA4kSAAANwiNTVVY8eO1eLFi90dCgDgL0gQANxwRo0aJZvNlq/3sNlsGjVqVL7e40YXGRmpnj175tv1r/UeR0VF6euvv1bjxo3zLQYAgHkkCMA/2LRp02Sz2WSz2bRmzZos+w3DULly5WSz2dSxY8c83WPs2LGaO3fudUZaOGRmZmrq1Klq1aqVSpQoIbvdrsjISPXq1UsbN250d3g3lO+++05z587VTz/9pOLFi7s7HADAX5AgAJCvr69mzJiRpX3lypU6duyY7HZ7nq+dlwThtdde08WLF/N8T3e4ePGiOnbsqN69e8swDL3yyiv65JNP1L17d61du1aNGjXSsWPH3B1mgbp48aJee+21LO2GYejYsWP66aefdPPNN7shMgDA1Xi5OwAA7tehQwf973//07///W95ef35a2HGjBlq0KCBTp8+XSBxJCcnKyAgQF5eXi5xFAYvvfSSFi1apPfee08vvPCCy76RI0fqvffes+Q+V96j7KSkpMjf39+S+1jB19c323abzaaoqKgCjgYAkFtUEACoa9euOnPmjJYuXepsS0tL06xZs9StW7dsz3n33XfVtGlTlSxZUn5+fmrQoIFmzZrlcozNZlNycrK+/PJLZ1emK33er4wz2Llzp7p166aQkBA1a9bMZd8VPXv2dJ7/9+1a4whSU1M1ePBghYaGqlixYurcuXOOn+THxsaqd+/eCg8Pl91uV82aNfXFF19c6+3TsWPH9Omnn6pt27ZZkgNJ8vT01IsvvqibbrrJ2bZlyxa1b99eQUFBCgwMVOvWrfXbb7+5nHelC9jKlSv13HPPKSwszHmNVq1aqVatWtq0aZNatGghf39/vfLKK85nHjlypCpXriy73a5y5cpp6NChSk1NvepzJCQk6MUXX1Tt2rUVGBiooKAgtW/fXr///nuWYy9duqRRo0bplltuka+vr0qXLq0HHnhABw4ccB6T3b+Pmef+5ZdfFBUVpdDQUAUEBOj+++/XqVOnrvoMAIDrV7g+ogOQLyIjI9WkSRN98803at++vSTpp59+0rlz5/TYY4/p3//+d5Zz3n//fXXu3FmPP/640tLS9O233+rhhx/WggULdO+990qSvvrqK/Xp00eNGjVSv379JEmVKlVyuc7DDz+sKlWqaOzYsTIMI9v4nn76abVp08albdGiRfr6668VFhZ21Wfr06eP/vvf/6pbt25q2rSpfv75Z2d8f3XixAndfvvtstls6t+/v0JDQ/XTTz/pqaeeUlJSUrZ/+F/x008/KSMjQ08++eRVY7nijz/+UPPmzRUUFKShQ4fK29tbn376qVq1aqWVK1dmGbT73HPPKTQ0VCNGjFBycrKz/cyZM2rfvr0ee+wxPfHEEwoPD5fD4VDnzp21Zs0a9evXT9WrV9f27dv13nvvae/evVft7nXw4EHNnTtXDz/8sCpUqKATJ07o008/VcuWLbVz506VKVNG0uWxFh07dlR0dLQee+wxDRo0SOfPn9fSpUu1Y8eOLP/GeX3uAQMGKCQkRCNHjtThw4c1adIk9e/fXzNnzszV+wwAyCMDwD/W1KlTDUnGhg0bjA8//NAoVqyYkZKSYhiGYTz88MPGnXfeaRiGYZQvX9649957Xc69ctwVaWlpRq1atYy77rrLpT0gIMDo0aNHlnuPHDnSkGR07do1x3052bdvnxEcHGy0bdvWyMjIyPG4rVu3GpKM5557zqW9W7duhiRj5MiRzrannnrKKF26tHH69GmXYx977DEjODg4y/P+1eDBgw1JxpYtW3I85q+6dOli+Pj4GAcOHHC2HT9+3ChWrJjRokULZ9uVf59mzZplec6WLVsakozJkye7tH/11VeGh4eHsXr1apf2yZMnG5KMX375xdlWvnx5l3+bS5cuGZmZmS7nHTp0yLDb7caYMWOcbV988YUhyZg4cWKWZ3M4HM6v//4em33uNm3auFxv8ODBhqenp5GYmJjlvgAA69DFCIAk6ZFHHtHFixe1YMECnT9/XgsWLMixe5Ek+fn5Ob8+e/aszp07p+bNm2vz5s2m7vvMM8+YOj45OVn333+/QkJC9M0338jT0zPHY3/88UdJ0sCBA13a/14NMAxDs2fPVqdOnWQYhk6fPu3c2rVrp3Pnzl31uZKSkiRJxYoVu2b8mZmZWrJkibp06aKKFSs620uXLq1u3bppzZo1zutd0bdv32yf0263q1evXi5t//vf/1S9enVVq1bN5TnuuusuSdLy5ctzjM1ut8vDw8MZ55kzZxQYGKiqVau6PP/s2bNVqlQpDRgwIMs1cpqeNi/P3a9fP5frNW/eXJmZmTpy5EiOzwAAuH50MQIgSQoNDVWbNm00Y8YMpaSkKDMzUw899FCOxy9YsEBvvvmmtm7d6tK33ez6BRUqVDB1fN++fXXgwAH9+uuvKlmy5FWPPXLkiDw8PLJ0ealatarL61OnTikxMVFTpkzRlClTsr3WyZMnc7xPUFCQJOn8+fPXjP/UqVNKSUnJEoMkVa9eXQ6HQzExMapZs6azPaf3qGzZsvLx8XFp27dvn3bt2qXQ0FDTz+FwOPT+++/r448/1qFDh5SZmenc99f3+sCBA6pataqpgeR5ee6/z3AUEhIi6XJCCgDIPyQIAJy6deumvn37Kj4+Xu3bt89xfvrVq1erc+fOatGihT7++GOVLl1a3t7emjp1arbTpV7NXysR1/L+++/rm2++0X//+1/Vq1fP1H2uxuFwSJKeeOIJ9ejRI9tj6tSpk+P51apVkyRt377d0riuyOk9yq7d4XCodu3amjhxYrbnlCtXLsf7jB07Vq+//rp69+6tN954QyVKlJCHh4deeOEF53tUkHKqDhk5jFUBAFiDBAGA0/3336+nn35av/3221UHgs6ePVu+vr5avHixyxoJU6dOzXKsVSsir169Wi+++KJeeOEFPf7447k6p3z58nI4HM5PvK/Ys2ePy3FXZjjKzMzMMhg6N9q3by9PT0/997//veZA5dDQUPn7+2eJQZJ2794tDw+Pq/4Rfy2VKlXS77//rtatW5t+72fNmqU777xTn3/+uUt7YmKiSpUq5XKPdevWKT09Xd7e3rm6dn4/NwDAOoxBAOAUGBioTz75RKNGjVKnTp1yPM7T01M2m82lC8rhw4eznSEnICBAiYmJ1xVXXFycHnnkETVr1kz/+te/cn3elRmZ/j4L06RJk1xee3p66sEHH9Ts2bO1Y8eOLNe51tSa5cqVU9++fbVkyRJ98MEHWfY7HA5NmDBBx44dk6enp+6++2798MMPOnz4sPOYEydOaMaMGWrWrJmzy1JePPLII4qNjdVnn32WZd/FixddZkH6O09Pzyyfzv/vf/9TbGysS9uDDz6o06dP68MPP8xyjZw+3c/v5wYAWIcKAgAXOXWx+at7771XEydO1D333KNu3brp5MmT+uijj1S5cmVt27bN5dgGDRpo2bJlmjhxosqUKaMKFSpkmc7yWgYOHKhTp05p6NCh+vbbb1321alTJ8fuP/Xq1VPXrl318ccf69y5c2ratKmio6O1f//+LMe+/fbbWr58uRo3bqy+ffuqRo0aSkhI0ObNm7Vs2TIlJCRcNcYJEybowIEDGjhwoObMmaOOHTsqJCRER48e1f/+9z/t3r1bjz32mCTpzTff1NKlS9WsWTM999xz8vLy0qeffqrU1FS98847pt6bv3vyySf13Xff6ZlnntHy5ct1xx13KDMzU7t379Z3332nxYsXq2HDhtme27FjR40ZM0a9evVS06ZNtX37dn399dcug4olqXv37po+fbqioqK0fv16NW/eXMnJyVq2bJmee+453XfffdlePz+fGwBgIbfOoQTArf46zenVZDfN6eeff25UqVLFsNvtRrVq1YypU6dmOz3p7t27jRYtWhh+fn6GJOe0mleOPXXqVJb7/f06V6b0zG776zSa2bl48aIxcOBAo2TJkkZAQIDRqVMnIyYmJttzT5w4YTz//PNGuXLlDG9vbyMiIsJo3bq1MWXKlKve44qMjAzjP//5j9G8eXMjODjY8Pb2NsqXL2/06tUryxSomzdvNtq1a2cEBgYa/v7+xp133mn8+uuvLsdc7d+nZcuWRs2aNbONIy0tzRg/frxRs2ZNw263GyEhIUaDBg2M0aNHG+fOnXMel900p0OGDDFKly5t+Pn5GXfccYexdu1ao2XLlkbLli1d7pGSkmK8+uqrRoUKFZzv1UMPPeQyhWl27/H1PPfy5csNScby5cuzfW4AgDVshsFoLwAAAACXMQYBAAAAgBMJAgAAAAAnEgQAAAAATiQIAAAAQAFZtWqVOnXqpDJlyshms2U7RfjfrVixQrfeeqvsdrsqV66sadOm5WuMJAgAAABAAUlOTlbdunX10Ucf5er4Q4cO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AAAATlQQAAAAUKgZKpqDhd3FdAXhrrvuUmJiYpb2pKQk3XXXXVbEBAAAAMBNTFcQVqxYobS0tCztly5d0urVqy0JCgAAAMgtgzEIlsp1grBt2zbn1zt37lR8fLzzdWZmphYtWqSyZctaGx0AAACAApXrBKFevXqy2Wyy2WzZdiXy8/PTBx98YGlwAAAAAApWrhOEQ4cOyTAMVaxYUevXr1doaKhzn4+Pj8LCwuTp6ZkvQQIAAAA5oouRpXKdIJQvX16S5HA48i0YAAAAAO5lOt368ssvtXDhQufroUOHqnjx4mratKmOHDliaXAAAADAtRg2m9u2osh0gjB27Fj5+flJktauXasPP/xQ77zzjkqVKqXBgwdbHiAAAACAgmN6mtOYmBhVrlxZkjR37lw99NBD6tevn+644w61atXK6vgAAAAAFCDTFYTAwECdOXNGkrRkyRK1bdtWkuTr66uLFy9aGx0AAABwDYbNw21bUWS6gtC2bVv16dNH9evX1969e9WhQwdJ0h9//KHIyEir4wMAAABQgEynPR999JGaNGmiU6dOafbs2SpZsqQkadOmTeratavlAQIAAABXZbO5byuCTFcQihcvrg8//DBL++jRoy0JCAAAAID75Knj1OrVq/XEE0+oadOmio2NlSR99dVXWrNmjaXBAQAAANfCGARrmX6q2bNnq127dvLz89PmzZuVmpoqSTp37pzGjh1reYAAAAAACo7pBOHNN9/U5MmT9dlnn8nb29vZfscdd2jz5s2WBgcAAACgYJkeg7Bnzx61aNEiS3twcLASExOtiAkAAADINUNFc7Cwu5iuIERERGj//v1Z2tesWaOKFStaEhQAAAAA9zBdQejbt68GDRqkL774QjabTcePH9fatWv14osv6vXXX8+PGAEAAIAcFdXBwu5i+t0cNmyYunXrptatW+vChQtq0aKF+vTpo6effloDBgzIjxgBAACAIuOjjz5SZGSkfH191bhxY61fvz7HYz/77DM1b95cISEhCgkJUZs2ba56vBVMJQiZmZlavXq1nn/+eSUkJGjHjh367bffdOrUKb3xxhv5FSMAAABQJMycOVNRUVEaOXKkNm/erLp166pdu3Y6efJktsevWLFCXbt21fLly7V27VqVK1dOd999t3OpgfxgMwzDMHOCr6+vdu3apQoVKlgezIBJSZZfEyjK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AABwAzCdILRs2TI/4gAAAABwAzCdIEhSYmKiPv/8c+3atUuSVLNmTfXu3VvBwcGWBgcAAABci4N1ECxlepDyxo0bValSJb333ntKSEhQQkKCJk6cqEqVKmnz5s35ESMAAACAAmK6gjB48GB17txZn332mby8Lp+ekZGhPn366IUXXtCqVassDxIAAADICYOUrWU6Qdi4caNLciBJXl5eGjp0qBo2bGhpcAAAAAAKlukuRkFBQTp69GiW9piYGBUrVsySoAAAAIDcMgzDbVtRZDpBePTRR/XUU09p5syZiomJUUxMjL799lv16dNHXbt2zY8YAQAAABQQ012M3n33XdlsNnXv3l0ZGRmSJG9vbz377LN6++23LQ8QAAAAQMExnSD4+Pjo/fff17hx43TgwAFJUqVKleTv7295cAAAAMC1OBikbKk8rYMgSf7+/qpdu7aVsQAAAABws1wnCL17987VcV988UWegwEAAADMKorTnCYkJGjAgAGaP3++PDw89OCDD+r9999XYGDgVc9bu3atXn31Va1bt06enp6qV6+eFi9eLD8/v1zfO9cJwrRp01S+fHnVr1+/yI7YBgAAAG4Ejz/+uOLi4rR06VKlp6erV69e6tevn2bMmJHjOWvXrtU999yj4cOH64MPPpCXl5d+//13eXiYm5co1wnCs88+q2+++UaHDh1Sr1699MQTT6hEiRKmbgYAAADg6nbt2qVFixZpw4YNznXGPvjgA3Xo0EHvvvuuypQpk+15gwcP1sCBAzVs2DBnW9WqVU3fP9fpxEcffaS4uDgNHTpU8+fPV7ly5fTII49o8eLFVBQAAADgNkVtHYS1a9eqePHiLosQt2nTRh4eHlq3bl2255w8eVLr1q1TWFiYmjZtqvDwcLVs2VJr1qwxfX9T9Qa73a6uXbtq6dKl2rlzp2rWrKnnnntOkZGRunDhgumbAwAAAIVZamqqkpKSXLbU1NTrumZ8fLzCwsJc2ry8vFSiRAnFx8dne87BgwclSaNGjVLfvn21aNEi3XrrrWrdurX27dtn6v6mF0pznujhIZvNJsMwlJmZmdfLAAAAANfFcDjcto0bN07BwcEu27hx47KNc9iwYbLZbFfddu/enaf3wOFwSJKefvpp9erVS/Xr19d7772nqlWrmp5EyNQ0p6mpqZozZ46++OILrVmzRh07dtSHH36o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\n"
},
"metadata": {}
}
]
},
{
"cell_type": "markdown",
"source": [
"#Regresion multilineal"
],
"metadata": {
"id": "QJetvh305AvH"
}
},
{
"cell_type": "code",
"source": [
"#usando skelearn , regresion multineal de df\n",
"\n",
"from sklearn.linear_model import LinearRegression\n",
"from sklearn.metrics import mean_squared_error, r2_score\n",
"\n",
"# Define las variables predictoras (X) y la variable objetivo (y)\n",
"X = df.drop('Monthly sales', axis=1) # Reemplaza 'Monthly sales' con la columna de tu variable objetivo\n",
"y = df['Monthly sales']\n",
"\n",
"\n",
"# Crea un modelo de regresi贸n lineal\n",
"model = LinearRegression()\n",
"\n",
"# Entrena el modelo con los datos de entrenamiento\n",
"model.fit(X, y)\n",
"\n",
"# Realiza predicciones en el conjunto de prueba\n",
"y_pred = model.predict(X)\n",
"\n",
"# Eval煤a el rendimiento del modelo\n",
"mse = mean_squared_error(y, y_pred)\n",
"r2 = r2_score(y, y_pred)\n",
"\n",
"print('Error cuadr谩tico medio (MSE):', mse)\n",
"print('Coeficiente de determinaci贸n (R^2):', r2)\n",
"\n",
"# Imprime los coeficientes del modelo\n",
"print('Coeficientes:', model.coef_)\n",
"print('Intercepto:', model.intercept_)\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "TACBpLn85Ixm",
"outputId": "9000fdd7-92ba-483a-c4fd-21e8faff6987"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Error cuadr谩tico medio (MSE): 417.3006119994701\n",
"Coeficiente de determinaci贸n (R^2): 0.945235852681711\n",
"Coeficientes: [41.51347826 -0.34088269]\n",
"Intercepto: 65.32391638894836\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"Guardar modelo"
],
"metadata": {
"id": "zDOjRcZc5QtS"
}
},
{
"cell_type": "code",
"source": [
"#guardar modelo en formato pickle\n",
"\n",
"import pickle\n",
"\n",
"# Guarda el modelo en un archivo pickle\n",
"filename = 'modelo_regresion.pkl'\n",
"pickle.dump(model, open(filename, 'wb'))\n"
],
"metadata": {
"id": "u1v4mp_H5ymb"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"# prompt: un dataframe llamado new_data, que tiene las mismas columnas que df\n",
"\n",
"import pandas as pd\n",
"new_data = pd.DataFrame({'Floor space of the shop':[11],'Distance to the nearest station':[81]})\n"
],
"metadata": {
"id": "PnXDFA7A6Brs"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"new_data"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 89
},
"id": "lDrHh--C6iGV",
"outputId": "009fd832-5868-4590-ac46-e801ec9413c8"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" Floor space of the shop Distance to the nearest station\n",
"0 11 81"
],
"text/html": [
"\n",
" <div id=\"df-89177922-747e-4041-bf87-bbb7c9be05b9\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Floor space of the shop</th>\n",
" <th>Distance to the nearest station</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>11</td>\n",
" <td>81</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-89177922-747e-4041-bf87-bbb7c9be05b9')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-89177922-747e-4041-bf87-bbb7c9be05b9 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-89177922-747e-4041-bf87-bbb7c9be05b9');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
" <div id=\"id_6c817e9b-c510-4170-ac78-1382c52be29c\">\n",
" <style>\n",
" .colab-df-generate {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-generate:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-generate {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-generate:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
" <button class=\"colab-df-generate\" onclick=\"generateWithVariable('new_data')\"\n",
" title=\"Generate code using this dataframe.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M7,19H8.4L18.45,9,17,7.55,7,17.6ZM5,21V16.75L18.45,3.32a2,2,0,0,1,2.83,0l1.4,1.43a1.91,1.91,0,0,1,.58,1.4,1.91,1.91,0,0,1-.58,1.4L9.25,21ZM18.45,9,17,7.55Zm-12,3A5.31,5.31,0,0,0,4.9,8.1,5.31,5.31,0,0,0,1,6.5,5.31,5.31,0,0,0,4.9,4.9,5.31,5.31,0,0,0,6.5,1,5.31,5.31,0,0,0,8.1,4.9,5.31,5.31,0,0,0,12,6.5,5.46,5.46,0,0,0,6.5,12Z\"/>\n",
" </svg>\n",
" </button>\n",
" <script>\n",
" (() => {\n",
" const buttonEl =\n",
" document.querySelector('#id_6c817e9b-c510-4170-ac78-1382c52be29c button.colab-df-generate');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" buttonEl.onclick = () => {\n",
" google.colab.notebook.generateWithVariable('new_data');\n",
" }\n",
" })();\n",
" </script>\n",
" </div>\n",
"\n",
" </div>\n",
" </div>\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"variable_name": "new_data",
"summary": "{\n \"name\": \"new_data\",\n \"rows\": 1,\n \"fields\": [\n {\n \"column\": \"Floor space of the shop\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": null,\n \"min\": 11,\n \"max\": 11,\n \"num_unique_values\": 1,\n \"samples\": [\n 11\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Distance to the nearest station\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": null,\n \"min\": 81,\n \"max\": 81,\n \"num_unique_values\": 1,\n \"samples\": [\n 81\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
}
},
"metadata": {},
"execution_count": 11
}
]
},
{
"cell_type": "code",
"source": [
"# probar que se puede cargar el modelo e inferir - predecir\n",
"\n",
"# Cargar modelo\n",
"loaded_model = pickle.load(open('modelo_regresion.pkl', 'rb'))\n",
"\n",
"# Ejemplo de c贸mo usar el modelo cargado para hacer una predicci贸n\n",
"# (Asumiendo que tienes nuevos datos en un DataFrame llamado 'new_data')\n",
"# new_data debe tener las mismas columnas que las variables predictoras (X) utilizadas para entrenar el modelo\n",
"\n",
"\n",
"y_pred_new = loaded_model.predict(new_data)\n",
"y_pred_new[0]"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "EKhZL78x55jn",
"outputId": "457a8ad2-e429-4ad4-bf1b-6614845fd388"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"494.36067967101843"
]
},
"metadata": {},
"execution_count": 17
}
]
},
{
"cell_type": "code",
"source": [
"# prompt: codigo que haga un interfaz en gradio para cargar modelo_regresion.pkl e introducir las dos variables y mostrar el resultado\n",
"\n",
"import pandas as pd\n",
"!pip install gradio\n",
"\n",
"import gradio as gr\n",
"import pickle\n",
"\n",
"# Cargar modelo\n",
"loaded_model = pickle.load(open('modelo_regresion.pkl', 'rb'))\n",
"\n",
"def predict_sales(floor_space, distance):\n",
" new_data = pd.DataFrame({'Floor space of the shop':[floor_space],'Distance to the nearest station':[distance]})\n",
" prediction = loaded_model.predict(new_data)\n",
" return prediction[0]\n",
"\n",
"# Crear interfaz Gradio\n",
"iface = gr.Interface(\n",
" fn=predict_sales,\n",
" inputs=[\n",
" gr.inputs.Number(label=\"Floor space of the shop\"),\n",
" gr.inputs.Number(label=\"Distance to the nearest station\")\n",
" ],\n",
" outputs=gr.outputs.Textbox(label=\"Predicted Monthly Sales\")\n",
")\n",
"\n",
"iface.launch()\n"
],
"metadata": {
"id": "U5D1tEOP8AtT"
},
"execution_count": null,
"outputs": []
}
]
} |