{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "provenance": [] }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" } }, "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 206 }, "id": "NezcyI41oBTd", "outputId": "13100a09-94dc-4e25-e39d-8bd8fe5aa7b2" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " Character Universe Strength Speed Intelligence SpecialAbilities \\\n", "0 Wonder Woman Marvel 7 8 3 Telekinesis \n", "1 Iron Man Marvel 4 7 9 Telekinesis \n", "2 Iron Man DC Comics 8 7 5 Telekinesis \n", "3 Spider-Man DC Comics 5 6 10 Telekinesis \n", "4 Flash Marvel 7 6 2 Invisibility \n", "\n", " Weaknesses BattleOutcome \n", "0 Kryptonite 0 \n", "1 Kryptonite 0 \n", "2 Magic 0 \n", "3 Kryptonite 0 \n", "4 Magic 0 " ], "text/html": [ "\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CharacterUniverseStrengthSpeedIntelligenceSpecialAbilitiesWeaknessesBattleOutcome
0Wonder WomanMarvel783TelekinesisKryptonite0
1Iron ManMarvel479TelekinesisKryptonite0
2Iron ManDC Comics875TelekinesisMagic0
3Spider-ManDC Comics5610TelekinesisKryptonite0
4FlashMarvel762InvisibilityMagic0
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "\n", "
\n", "
\n" ], "application/vnd.google.colaboratory.intrinsic+json": { "type": "dataframe", "variable_name": "df", "summary": "{\n \"name\": \"df\",\n \"rows\": 2351,\n \"fields\": [\n {\n \"column\": \"Character\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 8,\n \"samples\": [\n \"Iron Man\",\n \"Batman\",\n \"Wonder Woman\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Universe\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 2,\n \"samples\": [\n \"DC Comics\",\n \"Marvel\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Strength\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 2,\n \"min\": 1,\n \"max\": 10,\n \"num_unique_values\": 10,\n \"samples\": [\n 1,\n 4\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Speed\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 2,\n \"min\": 1,\n \"max\": 10,\n \"num_unique_values\": 10,\n \"samples\": [\n 1,\n 7\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Intelligence\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 2,\n \"min\": 1,\n \"max\": 10,\n \"num_unique_values\": 10,\n \"samples\": [\n 6,\n 9\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"SpecialAbilities\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 4,\n \"samples\": [\n \"Invisibility\",\n \"Flight\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Weaknesses\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 4,\n \"samples\": [\n \"Magic\",\n \"Silver\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"BattleOutcome\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0,\n \"min\": 0,\n \"max\": 1,\n \"num_unique_values\": 2,\n \"samples\": [\n 1,\n 0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" } }, "metadata": {}, "execution_count": 1 } ], "source": [ "import pandas as pd\n", "\n", "# Cargar el archivo .csv\n", "df = pd.read_csv('/content/sample_data/fictional_character_battles_complex.csv')\n", "\n", "# Mostrar las primeras filas del DataFrame\n", "df.head()\n" ] }, { "cell_type": "code", "source": [ "import pandas as pd\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.tree import DecisionTreeClassifier\n", "from sklearn.metrics import accuracy_score\n", "\n", "# Cargar el archivo .csv\n", "df = pd.read_csv('/content/sample_data/fictional_character_battles_complex.csv')\n", "\n", "# Mostrar las primeras filas del DataFrame\n", "print(df.head())\n", "\n", "# Mostrar los nombres de las columnas\n", "print(df.columns)\n", "\n", "# Asumiendo que 'BattleOutcome' es la columna objetivo\n", "X = df.drop('BattleOutcome', axis=1)\n", "y = df['BattleOutcome']\n", "\n", "# Convertir características categóricas a numéricas\n", "X = pd.get_dummies(X)\n", "\n", "# Dividir los datos en conjunto de entrenamiento y prueba\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)\n", "\n", "# Crear el modelo de árbol de decisión\n", "clf = DecisionTreeClassifier()\n", "clf.fit(X_train, y_train)\n", "\n", "# Predecir en el conjunto de prueba\n", "y_pred = clf.predict(X_test)\n", "\n", "# Calcular la precisión del modelo\n", "accuracy = accuracy_score(y_test, y_pred)\n", "print(f'Accuracy: {accuracy}')\n", "\n" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "FlrzvGXaoM2g", "outputId": "c72f91c1-bb95-4f91-845d-fcc647069dcf" }, "execution_count": 7, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ " Character Universe Strength Speed Intelligence SpecialAbilities \\\n", "0 Wonder Woman Marvel 7 8 3 Telekinesis \n", "1 Iron Man Marvel 4 7 9 Telekinesis \n", "2 Iron Man DC Comics 8 7 5 Telekinesis \n", "3 Spider-Man DC Comics 5 6 10 Telekinesis \n", "4 Flash Marvel 7 6 2 Invisibility \n", "\n", " Weaknesses BattleOutcome \n", "0 Kryptonite 0 \n", "1 Kryptonite 0 \n", "2 Magic 0 \n", "3 Kryptonite 0 \n", "4 Magic 0 \n", "Index(['Character', 'Universe', 'Strength', 'Speed', 'Intelligence',\n", " 'SpecialAbilities', 'Weaknesses', 'BattleOutcome'],\n", " dtype='object')\n", "Accuracy: 0.7195467422096318\n" ] } ] }, { "cell_type": "code", "source": [ "from sklearn.model_selection import cross_val_score\n", "\n", "# Evaluar el modelo utilizando validación cruzada\n", "scores = cross_val_score(clf, X, y, cv=5)\n", "print(f'Cross-Validation Accuracy Scores: {scores}')\n", "print(f'Mean Cross-Validation Accuracy: {scores.mean()}')\n" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "mW8m0DpfrgUO", "outputId": "2d48b79f-11f1-41ec-f935-07b83a2efc0d" }, "execution_count": 8, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Cross-Validation Accuracy Scores: [0.73036093 0.70425532 0.72340426 0.73404255 0.74042553]\n", "Mean Cross-Validation Accuracy: 0.7264977187514117\n" ] } ] }, { "cell_type": "code", "source": [ "import joblib\n", "\n", "# Guardar el modelo entrenado\n", "joblib.dump(clf, 'model.joblib')\n" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "h-On3jAGrhxu", "outputId": "53077bda-6f68-4243-a134-c3aba45058be" }, "execution_count": 9, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "['model.joblib']" ] }, "metadata": {}, "execution_count": 9 } ] }, { "cell_type": "code", "source": [ "import pandas as pd\n", "from sklearn.model_selection import train_test_split, cross_val_score\n", "from sklearn.tree import DecisionTreeClassifier\n", "from sklearn.metrics import accuracy_score\n", "import joblib\n", "\n", "# Cargar el archivo .csv\n", "df = pd.read_csv('/content/sample_data/fictional_character_battles_complex.csv')\n", "\n", "# Mostrar las primeras filas del DataFrame\n", "print(df.head())\n", "\n", "# Mostrar los nombres de las columnas\n", "print(df.columns)\n", "\n", "# Asumiendo que 'BattleOutcome' es la columna objetivo\n", "X = df.drop('BattleOutcome', axis=1)\n", "y = df['BattleOutcome']\n", "\n", "# Convertir características categóricas a numéricas\n", "X = pd.get_dummies(X)\n", "\n", "# Dividir los datos en conjunto de entrenamiento y prueba\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)\n", "\n", "# Crear el modelo de árbol de decisión\n", "clf = DecisionTreeClassifier()\n", "clf.fit(X_train, y_train)\n", "\n", "# Predecir en el conjunto de prueba\n", "y_pred = clf.predict(X_test)\n", "\n", "# Calcular la precisión del modelo\n", "accuracy = accuracy_score(y_test, y_pred)\n", "print(f'Accuracy: {accuracy}')\n", "\n", "# Evaluar el modelo utilizando validación cruzada\n", "scores = cross_val_score(clf, X, y, cv=5)\n", "print(f'Cross-Validation Accuracy Scores: {scores}')\n", "print(f'Mean Cross-Validation Accuracy: {scores.mean()}')\n", "\n", "# Guardar el modelo entrenado\n", "joblib.dump(clf, 'model.joblib')\n" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "sACbNIeurkYu", "outputId": "846e1cbf-d338-4b58-bcad-e11f4f971c0b" }, "execution_count": 11, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ " Character Universe Strength Speed Intelligence SpecialAbilities \\\n", "0 Wonder Woman Marvel 7 8 3 Telekinesis \n", "1 Iron Man Marvel 4 7 9 Telekinesis \n", "2 Iron Man DC Comics 8 7 5 Telekinesis \n", "3 Spider-Man DC Comics 5 6 10 Telekinesis \n", "4 Flash Marvel 7 6 2 Invisibility \n", "\n", " Weaknesses BattleOutcome \n", "0 Kryptonite 0 \n", "1 Kryptonite 0 \n", "2 Magic 0 \n", "3 Kryptonite 0 \n", "4 Magic 0 \n", "Index(['Character', 'Universe', 'Strength', 'Speed', 'Intelligence',\n", " 'SpecialAbilities', 'Weaknesses', 'BattleOutcome'],\n", " dtype='object')\n", "Accuracy: 0.7294617563739377\n", "Cross-Validation Accuracy Scores: [0.73673036 0.68723404 0.7212766 0.74255319 0.74042553]\n", "Mean Cross-Validation Accuracy: 0.725643944527262\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "['model.joblib']" ] }, "metadata": {}, "execution_count": 11 } ] }, { "cell_type": "code", "source": [ "!pip3 freeze > requirements.txt\n" ], "metadata": { "id": "xMAnXM0BtfwM" }, "execution_count": 14, "outputs": [] }, { "cell_type": "code", "source": [ "!pip install fastapi uvicorn pyngrok\n" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "rG8DkKIWttxk", "outputId": "47e34d7a-e29a-48ac-dfc6-0e6f60728d65" }, "execution_count": 17, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Collecting fastapi\n", " Downloading fastapi-0.111.0-py3-none-any.whl (91 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m92.0/92.0 kB\u001b[0m \u001b[31m2.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hCollecting uvicorn\n", " Downloading uvicorn-0.30.1-py3-none-any.whl (62 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m62.4/62.4 kB\u001b[0m \u001b[31m5.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hCollecting pyngrok\n", " Downloading pyngrok-7.1.6-py3-none-any.whl (22 kB)\n", "Collecting starlette<0.38.0,>=0.37.2 (from fastapi)\n", " Downloading starlette-0.37.2-py3-none-any.whl (71 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m71.9/71.9 kB\u001b[0m \u001b[31m5.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hRequirement already satisfied: pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4 in /usr/local/lib/python3.10/dist-packages (from fastapi) (2.7.4)\n", "Requirement already satisfied: typing-extensions>=4.8.0 in /usr/local/lib/python3.10/dist-packages (from fastapi) (4.12.2)\n", "Collecting fastapi-cli>=0.0.2 (from fastapi)\n", " Downloading fastapi_cli-0.0.4-py3-none-any.whl (9.5 kB)\n", "Collecting httpx>=0.23.0 (from fastapi)\n", " Downloading httpx-0.27.0-py3-none-any.whl (75 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m75.6/75.6 kB\u001b[0m \u001b[31m5.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hRequirement already satisfied: jinja2>=2.11.2 in /usr/local/lib/python3.10/dist-packages (from fastapi) (3.1.4)\n", "Collecting python-multipart>=0.0.7 (from fastapi)\n", " Downloading python_multipart-0.0.9-py3-none-any.whl (22 kB)\n", "Collecting ujson!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0,>=4.0.1 (from fastapi)\n", " Downloading ujson-5.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (53 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m53.6/53.6 kB\u001b[0m \u001b[31m5.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hCollecting orjson>=3.2.1 (from fastapi)\n", " Downloading orjson-3.10.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (144 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m145.0/145.0 kB\u001b[0m \u001b[31m11.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hCollecting email_validator>=2.0.0 (from fastapi)\n", " Downloading email_validator-2.2.0-py3-none-any.whl (33 kB)\n", "Requirement already satisfied: click>=7.0 in /usr/local/lib/python3.10/dist-packages (from uvicorn) (8.1.7)\n", "Collecting h11>=0.8 (from uvicorn)\n", " Downloading h11-0.14.0-py3-none-any.whl (58 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m6.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hRequirement already satisfied: PyYAML>=5.1 in /usr/local/lib/python3.10/dist-packages (from pyngrok) (6.0.1)\n", "Collecting dnspython>=2.0.0 (from email_validator>=2.0.0->fastapi)\n", " Downloading dnspython-2.6.1-py3-none-any.whl (307 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m307.7/307.7 kB\u001b[0m \u001b[31m26.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hRequirement already satisfied: idna>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from email_validator>=2.0.0->fastapi) (3.7)\n", "Requirement already satisfied: typer>=0.12.3 in /usr/local/lib/python3.10/dist-packages (from fastapi-cli>=0.0.2->fastapi) (0.12.3)\n", "Requirement already satisfied: anyio in /usr/local/lib/python3.10/dist-packages (from httpx>=0.23.0->fastapi) (3.7.1)\n", "Requirement already satisfied: certifi in /usr/local/lib/python3.10/dist-packages (from httpx>=0.23.0->fastapi) (2024.6.2)\n", "Collecting httpcore==1.* (from httpx>=0.23.0->fastapi)\n", " Downloading httpcore-1.0.5-py3-none-any.whl (77 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m77.9/77.9 kB\u001b[0m \u001b[31m8.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hRequirement already satisfied: sniffio in /usr/local/lib/python3.10/dist-packages (from httpx>=0.23.0->fastapi) (1.3.1)\n", "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from jinja2>=2.11.2->fastapi) (2.1.5)\n", "Requirement already satisfied: annotated-types>=0.4.0 in /usr/local/lib/python3.10/dist-packages (from pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4->fastapi) (0.7.0)\n", "Requirement already satisfied: pydantic-core==2.18.4 in /usr/local/lib/python3.10/dist-packages (from pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4->fastapi) (2.18.4)\n", "Collecting httptools>=0.5.0 (from uvicorn)\n", " Downloading httptools-0.6.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (341 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m341.4/341.4 kB\u001b[0m \u001b[31m26.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hCollecting python-dotenv>=0.13 (from uvicorn)\n", " Downloading python_dotenv-1.0.1-py3-none-any.whl (19 kB)\n", "Collecting uvloop!=0.15.0,!=0.15.1,>=0.14.0 (from uvicorn)\n", " Downloading uvloop-0.19.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.4 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.4/3.4 MB\u001b[0m \u001b[31m50.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hCollecting watchfiles>=0.13 (from uvicorn)\n", " Downloading watchfiles-0.22.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.2/1.2 MB\u001b[0m \u001b[31m38.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hCollecting websockets>=10.4 (from uvicorn)\n", " Downloading websockets-12.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (130 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m130.2/130.2 kB\u001b[0m \u001b[31m14.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hRequirement already satisfied: exceptiongroup in /usr/local/lib/python3.10/dist-packages (from anyio->httpx>=0.23.0->fastapi) (1.2.1)\n", "Requirement already satisfied: shellingham>=1.3.0 in /usr/local/lib/python3.10/dist-packages (from typer>=0.12.3->fastapi-cli>=0.0.2->fastapi) (1.5.4)\n", "Requirement already satisfied: rich>=10.11.0 in /usr/local/lib/python3.10/dist-packages (from typer>=0.12.3->fastapi-cli>=0.0.2->fastapi) (13.7.1)\n", "Requirement already satisfied: markdown-it-py>=2.2.0 in /usr/local/lib/python3.10/dist-packages (from rich>=10.11.0->typer>=0.12.3->fastapi-cli>=0.0.2->fastapi) (3.0.0)\n", "Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /usr/local/lib/python3.10/dist-packages (from rich>=10.11.0->typer>=0.12.3->fastapi-cli>=0.0.2->fastapi) (2.16.1)\n", "Requirement already satisfied: mdurl~=0.1 in /usr/local/lib/python3.10/dist-packages (from markdown-it-py>=2.2.0->rich>=10.11.0->typer>=0.12.3->fastapi-cli>=0.0.2->fastapi) (0.1.2)\n", "Installing collected packages: websockets, uvloop, ujson, python-multipart, python-dotenv, pyngrok, orjson, httptools, h11, dnspython, watchfiles, uvicorn, starlette, httpcore, email_validator, httpx, fastapi-cli, fastapi\n", "Successfully installed dnspython-2.6.1 email_validator-2.2.0 fastapi-0.111.0 fastapi-cli-0.0.4 h11-0.14.0 httpcore-1.0.5 httptools-0.6.1 httpx-0.27.0 orjson-3.10.5 pyngrok-7.1.6 python-dotenv-1.0.1 python-multipart-0.0.9 starlette-0.37.2 ujson-5.10.0 uvicorn-0.30.1 uvloop-0.19.0 watchfiles-0.22.0 websockets-12.0\n" ] } ] }, { "cell_type": "code", "source": [ "from fastapi import FastAPI\n", "\n", "app = FastAPI()\n", "\n", "@app.get(\"/\")\n", "def read_root():\n", " return {\"message\": \"¡Hola desde FastAPI en Colab!\"}\n", "\n" ], "metadata": { "id": "NcJZKxYvuqd8" }, "execution_count": 18, "outputs": [] }, { "cell_type": "code", "source": [ "pip install fastapi uvicorn\n" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "hLeGs7VCxnDw", "outputId": "72181c58-e9c5-411a-9aae-539c321b32d2" }, "execution_count": 25, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Requirement already satisfied: fastapi in /usr/local/lib/python3.10/dist-packages (0.111.0)\n", "Requirement already satisfied: uvicorn in /usr/local/lib/python3.10/dist-packages (0.30.1)\n", "Requirement already satisfied: starlette<0.38.0,>=0.37.2 in /usr/local/lib/python3.10/dist-packages (from fastapi) (0.37.2)\n", "Requirement already satisfied: pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4 in /usr/local/lib/python3.10/dist-packages (from fastapi) (2.7.4)\n", "Requirement already satisfied: typing-extensions>=4.8.0 in /usr/local/lib/python3.10/dist-packages (from fastapi) (4.12.2)\n", "Requirement already satisfied: fastapi-cli>=0.0.2 in /usr/local/lib/python3.10/dist-packages (from fastapi) (0.0.4)\n", "Requirement already satisfied: httpx>=0.23.0 in /usr/local/lib/python3.10/dist-packages (from fastapi) (0.27.0)\n", "Requirement already satisfied: jinja2>=2.11.2 in /usr/local/lib/python3.10/dist-packages (from fastapi) (3.1.4)\n", "Requirement already satisfied: python-multipart>=0.0.7 in /usr/local/lib/python3.10/dist-packages (from fastapi) (0.0.9)\n", "Requirement already satisfied: ujson!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0,>=4.0.1 in /usr/local/lib/python3.10/dist-packages (from fastapi) (5.10.0)\n", "Requirement already satisfied: orjson>=3.2.1 in /usr/local/lib/python3.10/dist-packages (from fastapi) (3.10.5)\n", "Requirement already satisfied: email_validator>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from fastapi) (2.2.0)\n", "Requirement already satisfied: click>=7.0 in /usr/local/lib/python3.10/dist-packages (from uvicorn) (8.1.7)\n", "Requirement already satisfied: h11>=0.8 in /usr/local/lib/python3.10/dist-packages (from uvicorn) (0.14.0)\n", "Requirement already satisfied: dnspython>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from email_validator>=2.0.0->fastapi) (2.6.1)\n", "Requirement already satisfied: idna>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from email_validator>=2.0.0->fastapi) (3.7)\n", "Requirement already satisfied: typer>=0.12.3 in /usr/local/lib/python3.10/dist-packages (from fastapi-cli>=0.0.2->fastapi) (0.12.3)\n", "Requirement already satisfied: anyio in /usr/local/lib/python3.10/dist-packages (from httpx>=0.23.0->fastapi) (3.7.1)\n", "Requirement already satisfied: certifi in /usr/local/lib/python3.10/dist-packages (from httpx>=0.23.0->fastapi) (2024.6.2)\n", "Requirement already satisfied: httpcore==1.* in /usr/local/lib/python3.10/dist-packages (from httpx>=0.23.0->fastapi) (1.0.5)\n", "Requirement already satisfied: sniffio in /usr/local/lib/python3.10/dist-packages (from httpx>=0.23.0->fastapi) (1.3.1)\n", "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from jinja2>=2.11.2->fastapi) (2.1.5)\n", "Requirement already satisfied: annotated-types>=0.4.0 in /usr/local/lib/python3.10/dist-packages (from pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4->fastapi) (0.7.0)\n", "Requirement already satisfied: pydantic-core==2.18.4 in /usr/local/lib/python3.10/dist-packages (from pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4->fastapi) (2.18.4)\n", "Requirement already satisfied: httptools>=0.5.0 in /usr/local/lib/python3.10/dist-packages (from uvicorn) (0.6.1)\n", "Requirement already satisfied: python-dotenv>=0.13 in /usr/local/lib/python3.10/dist-packages (from uvicorn) (1.0.1)\n", "Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.10/dist-packages (from uvicorn) (6.0.1)\n", "Requirement already satisfied: uvloop!=0.15.0,!=0.15.1,>=0.14.0 in /usr/local/lib/python3.10/dist-packages (from uvicorn) (0.19.0)\n", "Requirement already satisfied: watchfiles>=0.13 in /usr/local/lib/python3.10/dist-packages (from uvicorn) (0.22.0)\n", "Requirement already satisfied: websockets>=10.4 in /usr/local/lib/python3.10/dist-packages (from uvicorn) (12.0)\n", "Requirement already satisfied: exceptiongroup in /usr/local/lib/python3.10/dist-packages (from anyio->httpx>=0.23.0->fastapi) (1.2.1)\n", "Requirement already satisfied: shellingham>=1.3.0 in /usr/local/lib/python3.10/dist-packages (from typer>=0.12.3->fastapi-cli>=0.0.2->fastapi) (1.5.4)\n", "Requirement already satisfied: rich>=10.11.0 in /usr/local/lib/python3.10/dist-packages (from typer>=0.12.3->fastapi-cli>=0.0.2->fastapi) (13.7.1)\n", "Requirement already satisfied: markdown-it-py>=2.2.0 in /usr/local/lib/python3.10/dist-packages (from rich>=10.11.0->typer>=0.12.3->fastapi-cli>=0.0.2->fastapi) (3.0.0)\n", "Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /usr/local/lib/python3.10/dist-packages (from rich>=10.11.0->typer>=0.12.3->fastapi-cli>=0.0.2->fastapi) (2.16.1)\n", "Requirement already satisfied: mdurl~=0.1 in /usr/local/lib/python3.10/dist-packages (from markdown-it-py>=2.2.0->rich>=10.11.0->typer>=0.12.3->fastapi-cli>=0.0.2->fastapi) (0.1.2)\n" ] } ] }, { "cell_type": "code", "source": [ "!ngrok authtoken \n" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "M_wKRYiTybVB", "outputId": "d9ece4ad-7a27-46cc-cf47-36f2a6947570" }, "execution_count": 30, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "/bin/bash: -c: line 1: syntax error near unexpected token `newline'\n", "/bin/bash: -c: line 1: `ngrok authtoken '\n" ] } ] }, { "cell_type": "code", "source": [ "# Crear el archivo app.py\n", "with open('app.py', 'w') as f:\n", " f.write(\"\"\"from fastapi import FastAPI\n", "import pandas as pd\n", "import joblib\n", "\n", "app = FastAPI()\n", "\n", "# Cargar el modelo entrenado\n", "model = joblib.load(\"model.joblib\")\n", "\n", "@app.post(\"/predict\")\n", "def predict(data: dict):\n", " df = pd.DataFrame([data])\n", " df = pd.get_dummies(df)\n", " prediction = model.predict(df)\n", " return {\"prediction\": prediction[0]}\n", "\"\"\")\n" ], "metadata": { "id": "ZF3UjAHN2zdT" }, "execution_count": 35, "outputs": [] }, { "cell_type": "code", "source": [ "!git clone https://huggingface.co/spaces/AniaAri/pregunta05.git\n", "\n" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "g2MxXkuS2930", "outputId": "3e95d54f-cbca-4df3-a510-c92d3f8b0e89" }, "execution_count": 38, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Cloning into 'pregunta05'...\n", "remote: Enumerating objects: 4, done.\u001b[K\n", "remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 4 (from 1)\u001b[K\n", "Unpacking objects: 100% (4/4), 1.26 KiB | 647.00 KiB/s, done.\n" ] } ] }, { "cell_type": "code", "source": [ "%cd pregunta05\n" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "M_ywqXi85NaE", "outputId": "a6da64d5-5e4f-4d2e-92dd-ee6a415a5672" }, "execution_count": 39, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "/content/pregunta05\n" ] } ] }, { "cell_type": "code", "source": [ "# Crear el archivo requirements.txt\n", "with open('requirements.txt', 'w') as f:\n", " f.write(\"\"\"pandas\n", "scikit-learn\n", "joblib\n", "fastapi\n", "uvicorn\"\"\")\n", "\n", "# Crear el archivo app.py\n", "with open('app.py', 'w') as f:\n", " f.write(\"\"\"from fastapi import FastAPI\n", "import pandas as pd\n", "import joblib\n", "\n", "app = FastAPI()\n", "\n", "# Cargar el modelo entrenado\n", "model = joblib.load(\"model.joblib\")\n", "\n", "@app.post(\"/predict\")\n", "def predict(data: dict):\n", " df = pd.DataFrame([data])\n", " df = pd.get_dummies(df)\n", " prediction = model.predict(df)\n", " return {\"prediction\": prediction[0]}\n", "\"\"\")\n", "\n", "# Guardar el archivo del modelo\n", "import joblib\n", "joblib.dump(clf, 'model.joblib')\n" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "o_ATIr9W5RmS", "outputId": "1581821e-2ff2-4011-a3ad-ac074c075965" }, "execution_count": 40, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "['model.joblib']" ] }, "metadata": {}, "execution_count": 40 } ] }, { "cell_type": "code", "source": [ "!git add .\n", "!git commit -m \"Initial commit\"\n", "!git push\n" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "XBAHUkKU5VE5", "outputId": "e04849db-8438-407c-9e3c-cd9aba8c8760" }, "execution_count": 41, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Author identity unknown\n", "\n", "*** Please tell me who you are.\n", "\n", "Run\n", "\n", " git config --global user.email \"you@example.com\"\n", " git config --global user.name \"Your Name\"\n", "\n", "to set your account's default identity.\n", "Omit --global to set the identity only in this repository.\n", "\n", "fatal: unable to auto-detect email address (got 'root@9f9795763e92.(none)')\n", "fatal: could not read Username for 'https://huggingface.co': No such device or address\n" ] } ] }, { "cell_type": "code", "source": [ "!git config --global user.email \"anniea030204@gmail.com\"\n", "!git config --global user.name \"AniaAri\"\n" ], "metadata": { "id": "tygINiaR5tEJ" }, "execution_count": 42, "outputs": [] } ] }