Spaces:
Sleeping
Sleeping
Upload Predictive_Maintenance_for_Industrial_Equipment (1).ipynb
Browse files
Predictive_Maintenance_for_Industrial_Equipment (1).ipynb
ADDED
|
@@ -0,0 +1,904 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"nbformat": 4,
|
| 3 |
+
"nbformat_minor": 0,
|
| 4 |
+
"metadata": {
|
| 5 |
+
"colab": {
|
| 6 |
+
"provenance": [],
|
| 7 |
+
"gpuType": "T4"
|
| 8 |
+
},
|
| 9 |
+
"kernelspec": {
|
| 10 |
+
"name": "python3",
|
| 11 |
+
"display_name": "Python 3"
|
| 12 |
+
},
|
| 13 |
+
"language_info": {
|
| 14 |
+
"name": "python"
|
| 15 |
+
},
|
| 16 |
+
"accelerator": "GPU"
|
| 17 |
+
},
|
| 18 |
+
"cells": [
|
| 19 |
+
{
|
| 20 |
+
"cell_type": "code",
|
| 21 |
+
"execution_count": 1,
|
| 22 |
+
"metadata": {
|
| 23 |
+
"id": "diYfxyOV04ih"
|
| 24 |
+
},
|
| 25 |
+
"outputs": [],
|
| 26 |
+
"source": [
|
| 27 |
+
"import pandas as pd\n",
|
| 28 |
+
"import numpy as np\n",
|
| 29 |
+
"import zipfile\n",
|
| 30 |
+
"import os\n",
|
| 31 |
+
"import matplotlib.pyplot as plt\n",
|
| 32 |
+
"import seaborn as sns\n",
|
| 33 |
+
"from sklearn.model_selection import train_test_split\n",
|
| 34 |
+
"from sklearn.preprocessing import StandardScaler, LabelEncoder\n",
|
| 35 |
+
"from sklearn.ensemble import RandomForestClassifier\n",
|
| 36 |
+
"from sklearn.metrics import classification_report, confusion_matrix\n"
|
| 37 |
+
]
|
| 38 |
+
},
|
| 39 |
+
{
|
| 40 |
+
"cell_type": "code",
|
| 41 |
+
"source": [
|
| 42 |
+
"# Define file paths\n",
|
| 43 |
+
"zip_path = \"/content/drive/MyDrive/Predictive Maintenance for Industrial Equipment.zip\"\n",
|
| 44 |
+
"extract_path = \"/content/drive/MyDrive/extracted_maintenance_dataset/\"\n",
|
| 45 |
+
"\n",
|
| 46 |
+
"# Extract the zip file\n",
|
| 47 |
+
"with zipfile.ZipFile(zip_path, 'r') as zip_ref:\n",
|
| 48 |
+
" zip_ref.extractall(extract_path)\n",
|
| 49 |
+
"\n",
|
| 50 |
+
"# Identify CSV file\n",
|
| 51 |
+
"dataset_file = [f for f in os.listdir(extract_path) if f.endswith('.csv')][0]\n",
|
| 52 |
+
"csv_path = os.path.join(extract_path, dataset_file)\n",
|
| 53 |
+
"\n",
|
| 54 |
+
"# Load dataset\n",
|
| 55 |
+
"df = pd.read_csv(csv_path)\n"
|
| 56 |
+
],
|
| 57 |
+
"metadata": {
|
| 58 |
+
"id": "ZsffxavC1vNd"
|
| 59 |
+
},
|
| 60 |
+
"execution_count": 2,
|
| 61 |
+
"outputs": []
|
| 62 |
+
},
|
| 63 |
+
{
|
| 64 |
+
"cell_type": "code",
|
| 65 |
+
"source": [
|
| 66 |
+
"df.drop(columns=['UDI', 'Product ID'], inplace=True)\n"
|
| 67 |
+
],
|
| 68 |
+
"metadata": {
|
| 69 |
+
"id": "bMRs7ivO18uc"
|
| 70 |
+
},
|
| 71 |
+
"execution_count": 3,
|
| 72 |
+
"outputs": []
|
| 73 |
+
},
|
| 74 |
+
{
|
| 75 |
+
"cell_type": "code",
|
| 76 |
+
"source": [
|
| 77 |
+
"df['Type'] = LabelEncoder().fit_transform(df['Type'])\n"
|
| 78 |
+
],
|
| 79 |
+
"metadata": {
|
| 80 |
+
"id": "pASp6v1O1_dA"
|
| 81 |
+
},
|
| 82 |
+
"execution_count": 4,
|
| 83 |
+
"outputs": []
|
| 84 |
+
},
|
| 85 |
+
{
|
| 86 |
+
"cell_type": "code",
|
| 87 |
+
"source": [
|
| 88 |
+
"X = df.drop(columns=['Machine failure'])\n",
|
| 89 |
+
"y = df['Machine failure']\n"
|
| 90 |
+
],
|
| 91 |
+
"metadata": {
|
| 92 |
+
"id": "fehfGra52Bi7"
|
| 93 |
+
},
|
| 94 |
+
"execution_count": 5,
|
| 95 |
+
"outputs": []
|
| 96 |
+
},
|
| 97 |
+
{
|
| 98 |
+
"cell_type": "code",
|
| 99 |
+
"source": [
|
| 100 |
+
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n"
|
| 101 |
+
],
|
| 102 |
+
"metadata": {
|
| 103 |
+
"id": "3d7gWAG_2FAw"
|
| 104 |
+
},
|
| 105 |
+
"execution_count": 6,
|
| 106 |
+
"outputs": []
|
| 107 |
+
},
|
| 108 |
+
{
|
| 109 |
+
"cell_type": "code",
|
| 110 |
+
"source": [
|
| 111 |
+
"scaler = StandardScaler()\n",
|
| 112 |
+
"X_train = scaler.fit_transform(X_train)\n",
|
| 113 |
+
"X_test = scaler.transform(X_test)\n"
|
| 114 |
+
],
|
| 115 |
+
"metadata": {
|
| 116 |
+
"id": "cnMyXyXR2Hf8"
|
| 117 |
+
},
|
| 118 |
+
"execution_count": 7,
|
| 119 |
+
"outputs": []
|
| 120 |
+
},
|
| 121 |
+
{
|
| 122 |
+
"cell_type": "code",
|
| 123 |
+
"source": [
|
| 124 |
+
"model = RandomForestClassifier(n_estimators=100, random_state=42)\n",
|
| 125 |
+
"model.fit(X_train, y_train)\n"
|
| 126 |
+
],
|
| 127 |
+
"metadata": {
|
| 128 |
+
"colab": {
|
| 129 |
+
"base_uri": "https://localhost:8080/",
|
| 130 |
+
"height": 80
|
| 131 |
+
},
|
| 132 |
+
"id": "s3ouiTV62J9b",
|
| 133 |
+
"outputId": "65262bea-04b8-4436-ad14-94f500d03449"
|
| 134 |
+
},
|
| 135 |
+
"execution_count": 8,
|
| 136 |
+
"outputs": [
|
| 137 |
+
{
|
| 138 |
+
"output_type": "execute_result",
|
| 139 |
+
"data": {
|
| 140 |
+
"text/plain": [
|
| 141 |
+
"RandomForestClassifier(random_state=42)"
|
| 142 |
+
],
|
| 143 |
+
"text/html": [
|
| 144 |
+
"<style>#sk-container-id-1 {\n",
|
| 145 |
+
" /* Definition of color scheme common for light and dark mode */\n",
|
| 146 |
+
" --sklearn-color-text: #000;\n",
|
| 147 |
+
" --sklearn-color-text-muted: #666;\n",
|
| 148 |
+
" --sklearn-color-line: gray;\n",
|
| 149 |
+
" /* Definition of color scheme for unfitted estimators */\n",
|
| 150 |
+
" --sklearn-color-unfitted-level-0: #fff5e6;\n",
|
| 151 |
+
" --sklearn-color-unfitted-level-1: #f6e4d2;\n",
|
| 152 |
+
" --sklearn-color-unfitted-level-2: #ffe0b3;\n",
|
| 153 |
+
" --sklearn-color-unfitted-level-3: chocolate;\n",
|
| 154 |
+
" /* Definition of color scheme for fitted estimators */\n",
|
| 155 |
+
" --sklearn-color-fitted-level-0: #f0f8ff;\n",
|
| 156 |
+
" --sklearn-color-fitted-level-1: #d4ebff;\n",
|
| 157 |
+
" --sklearn-color-fitted-level-2: #b3dbfd;\n",
|
| 158 |
+
" --sklearn-color-fitted-level-3: cornflowerblue;\n",
|
| 159 |
+
"\n",
|
| 160 |
+
" /* Specific color for light theme */\n",
|
| 161 |
+
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
|
| 162 |
+
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
|
| 163 |
+
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
|
| 164 |
+
" --sklearn-color-icon: #696969;\n",
|
| 165 |
+
"\n",
|
| 166 |
+
" @media (prefers-color-scheme: dark) {\n",
|
| 167 |
+
" /* Redefinition of color scheme for dark theme */\n",
|
| 168 |
+
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
|
| 169 |
+
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
|
| 170 |
+
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
|
| 171 |
+
" --sklearn-color-icon: #878787;\n",
|
| 172 |
+
" }\n",
|
| 173 |
+
"}\n",
|
| 174 |
+
"\n",
|
| 175 |
+
"#sk-container-id-1 {\n",
|
| 176 |
+
" color: var(--sklearn-color-text);\n",
|
| 177 |
+
"}\n",
|
| 178 |
+
"\n",
|
| 179 |
+
"#sk-container-id-1 pre {\n",
|
| 180 |
+
" padding: 0;\n",
|
| 181 |
+
"}\n",
|
| 182 |
+
"\n",
|
| 183 |
+
"#sk-container-id-1 input.sk-hidden--visually {\n",
|
| 184 |
+
" border: 0;\n",
|
| 185 |
+
" clip: rect(1px 1px 1px 1px);\n",
|
| 186 |
+
" clip: rect(1px, 1px, 1px, 1px);\n",
|
| 187 |
+
" height: 1px;\n",
|
| 188 |
+
" margin: -1px;\n",
|
| 189 |
+
" overflow: hidden;\n",
|
| 190 |
+
" padding: 0;\n",
|
| 191 |
+
" position: absolute;\n",
|
| 192 |
+
" width: 1px;\n",
|
| 193 |
+
"}\n",
|
| 194 |
+
"\n",
|
| 195 |
+
"#sk-container-id-1 div.sk-dashed-wrapped {\n",
|
| 196 |
+
" border: 1px dashed var(--sklearn-color-line);\n",
|
| 197 |
+
" margin: 0 0.4em 0.5em 0.4em;\n",
|
| 198 |
+
" box-sizing: border-box;\n",
|
| 199 |
+
" padding-bottom: 0.4em;\n",
|
| 200 |
+
" background-color: var(--sklearn-color-background);\n",
|
| 201 |
+
"}\n",
|
| 202 |
+
"\n",
|
| 203 |
+
"#sk-container-id-1 div.sk-container {\n",
|
| 204 |
+
" /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
|
| 205 |
+
" but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
|
| 206 |
+
" so we also need the `!important` here to be able to override the\n",
|
| 207 |
+
" default hidden behavior on the sphinx rendered scikit-learn.org.\n",
|
| 208 |
+
" See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
|
| 209 |
+
" display: inline-block !important;\n",
|
| 210 |
+
" position: relative;\n",
|
| 211 |
+
"}\n",
|
| 212 |
+
"\n",
|
| 213 |
+
"#sk-container-id-1 div.sk-text-repr-fallback {\n",
|
| 214 |
+
" display: none;\n",
|
| 215 |
+
"}\n",
|
| 216 |
+
"\n",
|
| 217 |
+
"div.sk-parallel-item,\n",
|
| 218 |
+
"div.sk-serial,\n",
|
| 219 |
+
"div.sk-item {\n",
|
| 220 |
+
" /* draw centered vertical line to link estimators */\n",
|
| 221 |
+
" background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
|
| 222 |
+
" background-size: 2px 100%;\n",
|
| 223 |
+
" background-repeat: no-repeat;\n",
|
| 224 |
+
" background-position: center center;\n",
|
| 225 |
+
"}\n",
|
| 226 |
+
"\n",
|
| 227 |
+
"/* Parallel-specific style estimator block */\n",
|
| 228 |
+
"\n",
|
| 229 |
+
"#sk-container-id-1 div.sk-parallel-item::after {\n",
|
| 230 |
+
" content: \"\";\n",
|
| 231 |
+
" width: 100%;\n",
|
| 232 |
+
" border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
|
| 233 |
+
" flex-grow: 1;\n",
|
| 234 |
+
"}\n",
|
| 235 |
+
"\n",
|
| 236 |
+
"#sk-container-id-1 div.sk-parallel {\n",
|
| 237 |
+
" display: flex;\n",
|
| 238 |
+
" align-items: stretch;\n",
|
| 239 |
+
" justify-content: center;\n",
|
| 240 |
+
" background-color: var(--sklearn-color-background);\n",
|
| 241 |
+
" position: relative;\n",
|
| 242 |
+
"}\n",
|
| 243 |
+
"\n",
|
| 244 |
+
"#sk-container-id-1 div.sk-parallel-item {\n",
|
| 245 |
+
" display: flex;\n",
|
| 246 |
+
" flex-direction: column;\n",
|
| 247 |
+
"}\n",
|
| 248 |
+
"\n",
|
| 249 |
+
"#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
|
| 250 |
+
" align-self: flex-end;\n",
|
| 251 |
+
" width: 50%;\n",
|
| 252 |
+
"}\n",
|
| 253 |
+
"\n",
|
| 254 |
+
"#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
|
| 255 |
+
" align-self: flex-start;\n",
|
| 256 |
+
" width: 50%;\n",
|
| 257 |
+
"}\n",
|
| 258 |
+
"\n",
|
| 259 |
+
"#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
|
| 260 |
+
" width: 0;\n",
|
| 261 |
+
"}\n",
|
| 262 |
+
"\n",
|
| 263 |
+
"/* Serial-specific style estimator block */\n",
|
| 264 |
+
"\n",
|
| 265 |
+
"#sk-container-id-1 div.sk-serial {\n",
|
| 266 |
+
" display: flex;\n",
|
| 267 |
+
" flex-direction: column;\n",
|
| 268 |
+
" align-items: center;\n",
|
| 269 |
+
" background-color: var(--sklearn-color-background);\n",
|
| 270 |
+
" padding-right: 1em;\n",
|
| 271 |
+
" padding-left: 1em;\n",
|
| 272 |
+
"}\n",
|
| 273 |
+
"\n",
|
| 274 |
+
"\n",
|
| 275 |
+
"/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
|
| 276 |
+
"clickable and can be expanded/collapsed.\n",
|
| 277 |
+
"- Pipeline and ColumnTransformer use this feature and define the default style\n",
|
| 278 |
+
"- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
|
| 279 |
+
"*/\n",
|
| 280 |
+
"\n",
|
| 281 |
+
"/* Pipeline and ColumnTransformer style (default) */\n",
|
| 282 |
+
"\n",
|
| 283 |
+
"#sk-container-id-1 div.sk-toggleable {\n",
|
| 284 |
+
" /* Default theme specific background. It is overwritten whether we have a\n",
|
| 285 |
+
" specific estimator or a Pipeline/ColumnTransformer */\n",
|
| 286 |
+
" background-color: var(--sklearn-color-background);\n",
|
| 287 |
+
"}\n",
|
| 288 |
+
"\n",
|
| 289 |
+
"/* Toggleable label */\n",
|
| 290 |
+
"#sk-container-id-1 label.sk-toggleable__label {\n",
|
| 291 |
+
" cursor: pointer;\n",
|
| 292 |
+
" display: flex;\n",
|
| 293 |
+
" width: 100%;\n",
|
| 294 |
+
" margin-bottom: 0;\n",
|
| 295 |
+
" padding: 0.5em;\n",
|
| 296 |
+
" box-sizing: border-box;\n",
|
| 297 |
+
" text-align: center;\n",
|
| 298 |
+
" align-items: start;\n",
|
| 299 |
+
" justify-content: space-between;\n",
|
| 300 |
+
" gap: 0.5em;\n",
|
| 301 |
+
"}\n",
|
| 302 |
+
"\n",
|
| 303 |
+
"#sk-container-id-1 label.sk-toggleable__label .caption {\n",
|
| 304 |
+
" font-size: 0.6rem;\n",
|
| 305 |
+
" font-weight: lighter;\n",
|
| 306 |
+
" color: var(--sklearn-color-text-muted);\n",
|
| 307 |
+
"}\n",
|
| 308 |
+
"\n",
|
| 309 |
+
"#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
|
| 310 |
+
" /* Arrow on the left of the label */\n",
|
| 311 |
+
" content: \"βΈ\";\n",
|
| 312 |
+
" float: left;\n",
|
| 313 |
+
" margin-right: 0.25em;\n",
|
| 314 |
+
" color: var(--sklearn-color-icon);\n",
|
| 315 |
+
"}\n",
|
| 316 |
+
"\n",
|
| 317 |
+
"#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
|
| 318 |
+
" color: var(--sklearn-color-text);\n",
|
| 319 |
+
"}\n",
|
| 320 |
+
"\n",
|
| 321 |
+
"/* Toggleable content - dropdown */\n",
|
| 322 |
+
"\n",
|
| 323 |
+
"#sk-container-id-1 div.sk-toggleable__content {\n",
|
| 324 |
+
" max-height: 0;\n",
|
| 325 |
+
" max-width: 0;\n",
|
| 326 |
+
" overflow: hidden;\n",
|
| 327 |
+
" text-align: left;\n",
|
| 328 |
+
" /* unfitted */\n",
|
| 329 |
+
" background-color: var(--sklearn-color-unfitted-level-0);\n",
|
| 330 |
+
"}\n",
|
| 331 |
+
"\n",
|
| 332 |
+
"#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
|
| 333 |
+
" /* fitted */\n",
|
| 334 |
+
" background-color: var(--sklearn-color-fitted-level-0);\n",
|
| 335 |
+
"}\n",
|
| 336 |
+
"\n",
|
| 337 |
+
"#sk-container-id-1 div.sk-toggleable__content pre {\n",
|
| 338 |
+
" margin: 0.2em;\n",
|
| 339 |
+
" border-radius: 0.25em;\n",
|
| 340 |
+
" color: var(--sklearn-color-text);\n",
|
| 341 |
+
" /* unfitted */\n",
|
| 342 |
+
" background-color: var(--sklearn-color-unfitted-level-0);\n",
|
| 343 |
+
"}\n",
|
| 344 |
+
"\n",
|
| 345 |
+
"#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
|
| 346 |
+
" /* unfitted */\n",
|
| 347 |
+
" background-color: var(--sklearn-color-fitted-level-0);\n",
|
| 348 |
+
"}\n",
|
| 349 |
+
"\n",
|
| 350 |
+
"#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
|
| 351 |
+
" /* Expand drop-down */\n",
|
| 352 |
+
" max-height: 200px;\n",
|
| 353 |
+
" max-width: 100%;\n",
|
| 354 |
+
" overflow: auto;\n",
|
| 355 |
+
"}\n",
|
| 356 |
+
"\n",
|
| 357 |
+
"#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
|
| 358 |
+
" content: \"βΎ\";\n",
|
| 359 |
+
"}\n",
|
| 360 |
+
"\n",
|
| 361 |
+
"/* Pipeline/ColumnTransformer-specific style */\n",
|
| 362 |
+
"\n",
|
| 363 |
+
"#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
| 364 |
+
" color: var(--sklearn-color-text);\n",
|
| 365 |
+
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
| 366 |
+
"}\n",
|
| 367 |
+
"\n",
|
| 368 |
+
"#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
| 369 |
+
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
| 370 |
+
"}\n",
|
| 371 |
+
"\n",
|
| 372 |
+
"/* Estimator-specific style */\n",
|
| 373 |
+
"\n",
|
| 374 |
+
"/* Colorize estimator box */\n",
|
| 375 |
+
"#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
| 376 |
+
" /* unfitted */\n",
|
| 377 |
+
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
| 378 |
+
"}\n",
|
| 379 |
+
"\n",
|
| 380 |
+
"#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
| 381 |
+
" /* fitted */\n",
|
| 382 |
+
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
| 383 |
+
"}\n",
|
| 384 |
+
"\n",
|
| 385 |
+
"#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
|
| 386 |
+
"#sk-container-id-1 div.sk-label label {\n",
|
| 387 |
+
" /* The background is the default theme color */\n",
|
| 388 |
+
" color: var(--sklearn-color-text-on-default-background);\n",
|
| 389 |
+
"}\n",
|
| 390 |
+
"\n",
|
| 391 |
+
"/* On hover, darken the color of the background */\n",
|
| 392 |
+
"#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
|
| 393 |
+
" color: var(--sklearn-color-text);\n",
|
| 394 |
+
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
| 395 |
+
"}\n",
|
| 396 |
+
"\n",
|
| 397 |
+
"/* Label box, darken color on hover, fitted */\n",
|
| 398 |
+
"#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
|
| 399 |
+
" color: var(--sklearn-color-text);\n",
|
| 400 |
+
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
| 401 |
+
"}\n",
|
| 402 |
+
"\n",
|
| 403 |
+
"/* Estimator label */\n",
|
| 404 |
+
"\n",
|
| 405 |
+
"#sk-container-id-1 div.sk-label label {\n",
|
| 406 |
+
" font-family: monospace;\n",
|
| 407 |
+
" font-weight: bold;\n",
|
| 408 |
+
" display: inline-block;\n",
|
| 409 |
+
" line-height: 1.2em;\n",
|
| 410 |
+
"}\n",
|
| 411 |
+
"\n",
|
| 412 |
+
"#sk-container-id-1 div.sk-label-container {\n",
|
| 413 |
+
" text-align: center;\n",
|
| 414 |
+
"}\n",
|
| 415 |
+
"\n",
|
| 416 |
+
"/* Estimator-specific */\n",
|
| 417 |
+
"#sk-container-id-1 div.sk-estimator {\n",
|
| 418 |
+
" font-family: monospace;\n",
|
| 419 |
+
" border: 1px dotted var(--sklearn-color-border-box);\n",
|
| 420 |
+
" border-radius: 0.25em;\n",
|
| 421 |
+
" box-sizing: border-box;\n",
|
| 422 |
+
" margin-bottom: 0.5em;\n",
|
| 423 |
+
" /* unfitted */\n",
|
| 424 |
+
" background-color: var(--sklearn-color-unfitted-level-0);\n",
|
| 425 |
+
"}\n",
|
| 426 |
+
"\n",
|
| 427 |
+
"#sk-container-id-1 div.sk-estimator.fitted {\n",
|
| 428 |
+
" /* fitted */\n",
|
| 429 |
+
" background-color: var(--sklearn-color-fitted-level-0);\n",
|
| 430 |
+
"}\n",
|
| 431 |
+
"\n",
|
| 432 |
+
"/* on hover */\n",
|
| 433 |
+
"#sk-container-id-1 div.sk-estimator:hover {\n",
|
| 434 |
+
" /* unfitted */\n",
|
| 435 |
+
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
| 436 |
+
"}\n",
|
| 437 |
+
"\n",
|
| 438 |
+
"#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
|
| 439 |
+
" /* fitted */\n",
|
| 440 |
+
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
| 441 |
+
"}\n",
|
| 442 |
+
"\n",
|
| 443 |
+
"/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
|
| 444 |
+
"\n",
|
| 445 |
+
"/* Common style for \"i\" and \"?\" */\n",
|
| 446 |
+
"\n",
|
| 447 |
+
".sk-estimator-doc-link,\n",
|
| 448 |
+
"a:link.sk-estimator-doc-link,\n",
|
| 449 |
+
"a:visited.sk-estimator-doc-link {\n",
|
| 450 |
+
" float: right;\n",
|
| 451 |
+
" font-size: smaller;\n",
|
| 452 |
+
" line-height: 1em;\n",
|
| 453 |
+
" font-family: monospace;\n",
|
| 454 |
+
" background-color: var(--sklearn-color-background);\n",
|
| 455 |
+
" border-radius: 1em;\n",
|
| 456 |
+
" height: 1em;\n",
|
| 457 |
+
" width: 1em;\n",
|
| 458 |
+
" text-decoration: none !important;\n",
|
| 459 |
+
" margin-left: 0.5em;\n",
|
| 460 |
+
" text-align: center;\n",
|
| 461 |
+
" /* unfitted */\n",
|
| 462 |
+
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
|
| 463 |
+
" color: var(--sklearn-color-unfitted-level-1);\n",
|
| 464 |
+
"}\n",
|
| 465 |
+
"\n",
|
| 466 |
+
".sk-estimator-doc-link.fitted,\n",
|
| 467 |
+
"a:link.sk-estimator-doc-link.fitted,\n",
|
| 468 |
+
"a:visited.sk-estimator-doc-link.fitted {\n",
|
| 469 |
+
" /* fitted */\n",
|
| 470 |
+
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
|
| 471 |
+
" color: var(--sklearn-color-fitted-level-1);\n",
|
| 472 |
+
"}\n",
|
| 473 |
+
"\n",
|
| 474 |
+
"/* On hover */\n",
|
| 475 |
+
"div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
|
| 476 |
+
".sk-estimator-doc-link:hover,\n",
|
| 477 |
+
"div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
|
| 478 |
+
".sk-estimator-doc-link:hover {\n",
|
| 479 |
+
" /* unfitted */\n",
|
| 480 |
+
" background-color: var(--sklearn-color-unfitted-level-3);\n",
|
| 481 |
+
" color: var(--sklearn-color-background);\n",
|
| 482 |
+
" text-decoration: none;\n",
|
| 483 |
+
"}\n",
|
| 484 |
+
"\n",
|
| 485 |
+
"div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
|
| 486 |
+
".sk-estimator-doc-link.fitted:hover,\n",
|
| 487 |
+
"div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
|
| 488 |
+
".sk-estimator-doc-link.fitted:hover {\n",
|
| 489 |
+
" /* fitted */\n",
|
| 490 |
+
" background-color: var(--sklearn-color-fitted-level-3);\n",
|
| 491 |
+
" color: var(--sklearn-color-background);\n",
|
| 492 |
+
" text-decoration: none;\n",
|
| 493 |
+
"}\n",
|
| 494 |
+
"\n",
|
| 495 |
+
"/* Span, style for the box shown on hovering the info icon */\n",
|
| 496 |
+
".sk-estimator-doc-link span {\n",
|
| 497 |
+
" display: none;\n",
|
| 498 |
+
" z-index: 9999;\n",
|
| 499 |
+
" position: relative;\n",
|
| 500 |
+
" font-weight: normal;\n",
|
| 501 |
+
" right: .2ex;\n",
|
| 502 |
+
" padding: .5ex;\n",
|
| 503 |
+
" margin: .5ex;\n",
|
| 504 |
+
" width: min-content;\n",
|
| 505 |
+
" min-width: 20ex;\n",
|
| 506 |
+
" max-width: 50ex;\n",
|
| 507 |
+
" color: var(--sklearn-color-text);\n",
|
| 508 |
+
" box-shadow: 2pt 2pt 4pt #999;\n",
|
| 509 |
+
" /* unfitted */\n",
|
| 510 |
+
" background: var(--sklearn-color-unfitted-level-0);\n",
|
| 511 |
+
" border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
|
| 512 |
+
"}\n",
|
| 513 |
+
"\n",
|
| 514 |
+
".sk-estimator-doc-link.fitted span {\n",
|
| 515 |
+
" /* fitted */\n",
|
| 516 |
+
" background: var(--sklearn-color-fitted-level-0);\n",
|
| 517 |
+
" border: var(--sklearn-color-fitted-level-3);\n",
|
| 518 |
+
"}\n",
|
| 519 |
+
"\n",
|
| 520 |
+
".sk-estimator-doc-link:hover span {\n",
|
| 521 |
+
" display: block;\n",
|
| 522 |
+
"}\n",
|
| 523 |
+
"\n",
|
| 524 |
+
"/* \"?\"-specific style due to the `<a>` HTML tag */\n",
|
| 525 |
+
"\n",
|
| 526 |
+
"#sk-container-id-1 a.estimator_doc_link {\n",
|
| 527 |
+
" float: right;\n",
|
| 528 |
+
" font-size: 1rem;\n",
|
| 529 |
+
" line-height: 1em;\n",
|
| 530 |
+
" font-family: monospace;\n",
|
| 531 |
+
" background-color: var(--sklearn-color-background);\n",
|
| 532 |
+
" border-radius: 1rem;\n",
|
| 533 |
+
" height: 1rem;\n",
|
| 534 |
+
" width: 1rem;\n",
|
| 535 |
+
" text-decoration: none;\n",
|
| 536 |
+
" /* unfitted */\n",
|
| 537 |
+
" color: var(--sklearn-color-unfitted-level-1);\n",
|
| 538 |
+
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
|
| 539 |
+
"}\n",
|
| 540 |
+
"\n",
|
| 541 |
+
"#sk-container-id-1 a.estimator_doc_link.fitted {\n",
|
| 542 |
+
" /* fitted */\n",
|
| 543 |
+
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
|
| 544 |
+
" color: var(--sklearn-color-fitted-level-1);\n",
|
| 545 |
+
"}\n",
|
| 546 |
+
"\n",
|
| 547 |
+
"/* On hover */\n",
|
| 548 |
+
"#sk-container-id-1 a.estimator_doc_link:hover {\n",
|
| 549 |
+
" /* unfitted */\n",
|
| 550 |
+
" background-color: var(--sklearn-color-unfitted-level-3);\n",
|
| 551 |
+
" color: var(--sklearn-color-background);\n",
|
| 552 |
+
" text-decoration: none;\n",
|
| 553 |
+
"}\n",
|
| 554 |
+
"\n",
|
| 555 |
+
"#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
|
| 556 |
+
" /* fitted */\n",
|
| 557 |
+
" background-color: var(--sklearn-color-fitted-level-3);\n",
|
| 558 |
+
"}\n",
|
| 559 |
+
"</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>RandomForestClassifier(random_state=42)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>RandomForestClassifier</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.ensemble.RandomForestClassifier.html\">?<span>Documentation for RandomForestClassifier</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\"><pre>RandomForestClassifier(random_state=42)</pre></div> </div></div></div></div>"
|
| 560 |
+
]
|
| 561 |
+
},
|
| 562 |
+
"metadata": {},
|
| 563 |
+
"execution_count": 8
|
| 564 |
+
}
|
| 565 |
+
]
|
| 566 |
+
},
|
| 567 |
+
{
|
| 568 |
+
"cell_type": "code",
|
| 569 |
+
"source": [
|
| 570 |
+
"y_pred = model.predict(X_test)\n"
|
| 571 |
+
],
|
| 572 |
+
"metadata": {
|
| 573 |
+
"id": "1-Upn0E32MxU"
|
| 574 |
+
},
|
| 575 |
+
"execution_count": 9,
|
| 576 |
+
"outputs": []
|
| 577 |
+
},
|
| 578 |
+
{
|
| 579 |
+
"cell_type": "code",
|
| 580 |
+
"source": [
|
| 581 |
+
"print(\"Classification Report:\")\n",
|
| 582 |
+
"print(classification_report(y_test, y_pred))\n"
|
| 583 |
+
],
|
| 584 |
+
"metadata": {
|
| 585 |
+
"colab": {
|
| 586 |
+
"base_uri": "https://localhost:8080/"
|
| 587 |
+
},
|
| 588 |
+
"id": "Y8qyDEw72PJ4",
|
| 589 |
+
"outputId": "8b5529ac-9848-43a3-e19e-3be67f8acb0e"
|
| 590 |
+
},
|
| 591 |
+
"execution_count": 10,
|
| 592 |
+
"outputs": [
|
| 593 |
+
{
|
| 594 |
+
"output_type": "stream",
|
| 595 |
+
"name": "stdout",
|
| 596 |
+
"text": [
|
| 597 |
+
"Classification Report:\n",
|
| 598 |
+
" precision recall f1-score support\n",
|
| 599 |
+
"\n",
|
| 600 |
+
" 0 1.00 1.00 1.00 1939\n",
|
| 601 |
+
" 1 1.00 0.97 0.98 61\n",
|
| 602 |
+
"\n",
|
| 603 |
+
" accuracy 1.00 2000\n",
|
| 604 |
+
" macro avg 1.00 0.98 0.99 2000\n",
|
| 605 |
+
"weighted avg 1.00 1.00 1.00 2000\n",
|
| 606 |
+
"\n"
|
| 607 |
+
]
|
| 608 |
+
}
|
| 609 |
+
]
|
| 610 |
+
},
|
| 611 |
+
{
|
| 612 |
+
"cell_type": "code",
|
| 613 |
+
"source": [
|
| 614 |
+
"plt.figure(figsize=(6, 4))\n",
|
| 615 |
+
"sns.heatmap(confusion_matrix(y_test, y_pred), annot=True, fmt='d', cmap='Blues', xticklabels=['No Failure', 'Failure'], yticklabels=['No Failure', 'Failure'])\n",
|
| 616 |
+
"plt.xlabel(\"Predicted\")\n",
|
| 617 |
+
"plt.ylabel(\"Actual\")\n",
|
| 618 |
+
"plt.title(\"Confusion Matrix\")\n",
|
| 619 |
+
"plt.show()\n"
|
| 620 |
+
],
|
| 621 |
+
"metadata": {
|
| 622 |
+
"colab": {
|
| 623 |
+
"base_uri": "https://localhost:8080/",
|
| 624 |
+
"height": 410
|
| 625 |
+
},
|
| 626 |
+
"id": "1aU22T_z2Ros",
|
| 627 |
+
"outputId": "dd7154d9-9cd6-49b1-eb06-e8c3c56d777b"
|
| 628 |
+
},
|
| 629 |
+
"execution_count": 11,
|
| 630 |
+
"outputs": [
|
| 631 |
+
{
|
| 632 |
+
"output_type": "display_data",
|
| 633 |
+
"data": {
|
| 634 |
+
"text/plain": [
|
| 635 |
+
"<Figure size 600x400 with 2 Axes>"
|
| 636 |
+
],
|
| 637 |
+
"image/png": "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\n"
|
| 638 |
+
},
|
| 639 |
+
"metadata": {}
|
| 640 |
+
}
|
| 641 |
+
]
|
| 642 |
+
},
|
| 643 |
+
{
|
| 644 |
+
"cell_type": "code",
|
| 645 |
+
"source": [
|
| 646 |
+
"!pip install gradio pandas numpy scikit-learn\n"
|
| 647 |
+
],
|
| 648 |
+
"metadata": {
|
| 649 |
+
"colab": {
|
| 650 |
+
"base_uri": "https://localhost:8080/"
|
| 651 |
+
},
|
| 652 |
+
"id": "4qTFGF5PeCYY",
|
| 653 |
+
"outputId": "c4ca558c-e68a-4714-9b16-3164a450cd69"
|
| 654 |
+
},
|
| 655 |
+
"execution_count": 12,
|
| 656 |
+
"outputs": [
|
| 657 |
+
{
|
| 658 |
+
"output_type": "stream",
|
| 659 |
+
"name": "stdout",
|
| 660 |
+
"text": [
|
| 661 |
+
"Collecting gradio\n",
|
| 662 |
+
" Downloading gradio-5.21.0-py3-none-any.whl.metadata (16 kB)\n",
|
| 663 |
+
"Requirement already satisfied: pandas in /usr/local/lib/python3.11/dist-packages (2.2.2)\n",
|
| 664 |
+
"Requirement already satisfied: numpy in /usr/local/lib/python3.11/dist-packages (1.26.4)\n",
|
| 665 |
+
"Requirement already satisfied: scikit-learn in /usr/local/lib/python3.11/dist-packages (1.6.1)\n",
|
| 666 |
+
"Collecting aiofiles<24.0,>=22.0 (from gradio)\n",
|
| 667 |
+
" Downloading aiofiles-23.2.1-py3-none-any.whl.metadata (9.7 kB)\n",
|
| 668 |
+
"Requirement already satisfied: anyio<5.0,>=3.0 in /usr/local/lib/python3.11/dist-packages (from gradio) (3.7.1)\n",
|
| 669 |
+
"Collecting fastapi<1.0,>=0.115.2 (from gradio)\n",
|
| 670 |
+
" Downloading fastapi-0.115.11-py3-none-any.whl.metadata (27 kB)\n",
|
| 671 |
+
"Collecting ffmpy (from gradio)\n",
|
| 672 |
+
" Downloading ffmpy-0.5.0-py3-none-any.whl.metadata (3.0 kB)\n",
|
| 673 |
+
"Collecting gradio-client==1.7.2 (from gradio)\n",
|
| 674 |
+
" Downloading gradio_client-1.7.2-py3-none-any.whl.metadata (7.1 kB)\n",
|
| 675 |
+
"Collecting groovy~=0.1 (from gradio)\n",
|
| 676 |
+
" Downloading groovy-0.1.2-py3-none-any.whl.metadata (6.1 kB)\n",
|
| 677 |
+
"Requirement already satisfied: httpx>=0.24.1 in /usr/local/lib/python3.11/dist-packages (from gradio) (0.28.1)\n",
|
| 678 |
+
"Requirement already satisfied: huggingface-hub>=0.28.1 in /usr/local/lib/python3.11/dist-packages (from gradio) (0.28.1)\n",
|
| 679 |
+
"Requirement already satisfied: jinja2<4.0 in /usr/local/lib/python3.11/dist-packages (from gradio) (3.1.5)\n",
|
| 680 |
+
"Collecting markupsafe~=2.0 (from gradio)\n",
|
| 681 |
+
" Downloading MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (3.0 kB)\n",
|
| 682 |
+
"Requirement already satisfied: orjson~=3.0 in /usr/local/lib/python3.11/dist-packages (from gradio) (3.10.15)\n",
|
| 683 |
+
"Requirement already satisfied: packaging in /usr/local/lib/python3.11/dist-packages (from gradio) (24.2)\n",
|
| 684 |
+
"Requirement already satisfied: pillow<12.0,>=8.0 in /usr/local/lib/python3.11/dist-packages (from gradio) (11.1.0)\n",
|
| 685 |
+
"Requirement already satisfied: pydantic>=2.0 in /usr/local/lib/python3.11/dist-packages (from gradio) (2.10.6)\n",
|
| 686 |
+
"Collecting pydub (from gradio)\n",
|
| 687 |
+
" Downloading pydub-0.25.1-py2.py3-none-any.whl.metadata (1.4 kB)\n",
|
| 688 |
+
"Collecting python-multipart>=0.0.18 (from gradio)\n",
|
| 689 |
+
" Downloading python_multipart-0.0.20-py3-none-any.whl.metadata (1.8 kB)\n",
|
| 690 |
+
"Requirement already satisfied: pyyaml<7.0,>=5.0 in /usr/local/lib/python3.11/dist-packages (from gradio) (6.0.2)\n",
|
| 691 |
+
"Collecting ruff>=0.9.3 (from gradio)\n",
|
| 692 |
+
" Downloading ruff-0.11.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (25 kB)\n",
|
| 693 |
+
"Collecting safehttpx<0.2.0,>=0.1.6 (from gradio)\n",
|
| 694 |
+
" Downloading safehttpx-0.1.6-py3-none-any.whl.metadata (4.2 kB)\n",
|
| 695 |
+
"Collecting semantic-version~=2.0 (from gradio)\n",
|
| 696 |
+
" Downloading semantic_version-2.10.0-py2.py3-none-any.whl.metadata (9.7 kB)\n",
|
| 697 |
+
"Collecting starlette<1.0,>=0.40.0 (from gradio)\n",
|
| 698 |
+
" Downloading starlette-0.46.1-py3-none-any.whl.metadata (6.2 kB)\n",
|
| 699 |
+
"Collecting tomlkit<0.14.0,>=0.12.0 (from gradio)\n",
|
| 700 |
+
" Downloading tomlkit-0.13.2-py3-none-any.whl.metadata (2.7 kB)\n",
|
| 701 |
+
"Requirement already satisfied: typer<1.0,>=0.12 in /usr/local/lib/python3.11/dist-packages (from gradio) (0.15.2)\n",
|
| 702 |
+
"Requirement already satisfied: typing-extensions~=4.0 in /usr/local/lib/python3.11/dist-packages (from gradio) (4.12.2)\n",
|
| 703 |
+
"Collecting uvicorn>=0.14.0 (from gradio)\n",
|
| 704 |
+
" Downloading uvicorn-0.34.0-py3-none-any.whl.metadata (6.5 kB)\n",
|
| 705 |
+
"Requirement already satisfied: fsspec in /usr/local/lib/python3.11/dist-packages (from gradio-client==1.7.2->gradio) (2024.10.0)\n",
|
| 706 |
+
"Requirement already satisfied: websockets<16.0,>=10.0 in /usr/local/lib/python3.11/dist-packages (from gradio-client==1.7.2->gradio) (14.2)\n",
|
| 707 |
+
"Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.11/dist-packages (from pandas) (2.8.2)\n",
|
| 708 |
+
"Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.11/dist-packages (from pandas) (2025.1)\n",
|
| 709 |
+
"Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.11/dist-packages (from pandas) (2025.1)\n",
|
| 710 |
+
"Requirement already satisfied: scipy>=1.6.0 in /usr/local/lib/python3.11/dist-packages (from scikit-learn) (1.13.1)\n",
|
| 711 |
+
"Requirement already satisfied: joblib>=1.2.0 in /usr/local/lib/python3.11/dist-packages (from scikit-learn) (1.4.2)\n",
|
| 712 |
+
"Requirement already satisfied: threadpoolctl>=3.1.0 in /usr/local/lib/python3.11/dist-packages (from scikit-learn) (3.5.0)\n",
|
| 713 |
+
"Requirement already satisfied: idna>=2.8 in /usr/local/lib/python3.11/dist-packages (from anyio<5.0,>=3.0->gradio) (3.10)\n",
|
| 714 |
+
"Requirement already satisfied: sniffio>=1.1 in /usr/local/lib/python3.11/dist-packages (from anyio<5.0,>=3.0->gradio) (1.3.1)\n",
|
| 715 |
+
"Requirement already satisfied: certifi in /usr/local/lib/python3.11/dist-packages (from httpx>=0.24.1->gradio) (2025.1.31)\n",
|
| 716 |
+
"Requirement already satisfied: httpcore==1.* in /usr/local/lib/python3.11/dist-packages (from httpx>=0.24.1->gradio) (1.0.7)\n",
|
| 717 |
+
"Requirement already satisfied: h11<0.15,>=0.13 in /usr/local/lib/python3.11/dist-packages (from httpcore==1.*->httpx>=0.24.1->gradio) (0.14.0)\n",
|
| 718 |
+
"Requirement already satisfied: filelock in /usr/local/lib/python3.11/dist-packages (from huggingface-hub>=0.28.1->gradio) (3.17.0)\n",
|
| 719 |
+
"Requirement already satisfied: requests in /usr/local/lib/python3.11/dist-packages (from huggingface-hub>=0.28.1->gradio) (2.32.3)\n",
|
| 720 |
+
"Requirement already satisfied: tqdm>=4.42.1 in /usr/local/lib/python3.11/dist-packages (from huggingface-hub>=0.28.1->gradio) (4.67.1)\n",
|
| 721 |
+
"Requirement already satisfied: annotated-types>=0.6.0 in /usr/local/lib/python3.11/dist-packages (from pydantic>=2.0->gradio) (0.7.0)\n",
|
| 722 |
+
"Requirement already satisfied: pydantic-core==2.27.2 in /usr/local/lib/python3.11/dist-packages (from pydantic>=2.0->gradio) (2.27.2)\n",
|
| 723 |
+
"Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.11/dist-packages (from python-dateutil>=2.8.2->pandas) (1.17.0)\n",
|
| 724 |
+
"Requirement already satisfied: click>=8.0.0 in /usr/local/lib/python3.11/dist-packages (from typer<1.0,>=0.12->gradio) (8.1.8)\n",
|
| 725 |
+
"Requirement already satisfied: shellingham>=1.3.0 in /usr/local/lib/python3.11/dist-packages (from typer<1.0,>=0.12->gradio) (1.5.4)\n",
|
| 726 |
+
"Requirement already satisfied: rich>=10.11.0 in /usr/local/lib/python3.11/dist-packages (from typer<1.0,>=0.12->gradio) (13.9.4)\n",
|
| 727 |
+
"Requirement already satisfied: markdown-it-py>=2.2.0 in /usr/local/lib/python3.11/dist-packages (from rich>=10.11.0->typer<1.0,>=0.12->gradio) (3.0.0)\n",
|
| 728 |
+
"Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /usr/local/lib/python3.11/dist-packages (from rich>=10.11.0->typer<1.0,>=0.12->gradio) (2.18.0)\n",
|
| 729 |
+
"Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.11/dist-packages (from requests->huggingface-hub>=0.28.1->gradio) (3.4.1)\n",
|
| 730 |
+
"Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.11/dist-packages (from requests->huggingface-hub>=0.28.1->gradio) (2.3.0)\n",
|
| 731 |
+
"Requirement already satisfied: mdurl~=0.1 in /usr/local/lib/python3.11/dist-packages (from markdown-it-py>=2.2.0->rich>=10.11.0->typer<1.0,>=0.12->gradio) (0.1.2)\n",
|
| 732 |
+
"Downloading gradio-5.21.0-py3-none-any.whl (46.2 MB)\n",
|
| 733 |
+
"\u001b[2K \u001b[90mββββββββββββββββββββββββββββββββββββββββ\u001b[0m \u001b[32m46.2/46.2 MB\u001b[0m \u001b[31m17.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
|
| 734 |
+
"\u001b[?25hDownloading gradio_client-1.7.2-py3-none-any.whl (322 kB)\n",
|
| 735 |
+
"\u001b[2K \u001b[90mββββββββββββββββββββββββββββββββββββββββ\u001b[0m \u001b[32m322.1/322.1 kB\u001b[0m \u001b[31m20.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
|
| 736 |
+
"\u001b[?25hDownloading aiofiles-23.2.1-py3-none-any.whl (15 kB)\n",
|
| 737 |
+
"Downloading fastapi-0.115.11-py3-none-any.whl (94 kB)\n",
|
| 738 |
+
"\u001b[2K \u001b[90mββββββββββββββββββββββββββββββββββββββββ\u001b[0m \u001b[32m94.9/94.9 kB\u001b[0m \u001b[31m7.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
|
| 739 |
+
"\u001b[?25hDownloading groovy-0.1.2-py3-none-any.whl (14 kB)\n",
|
| 740 |
+
"Downloading MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (28 kB)\n",
|
| 741 |
+
"Downloading python_multipart-0.0.20-py3-none-any.whl (24 kB)\n",
|
| 742 |
+
"Downloading ruff-0.11.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.3 MB)\n",
|
| 743 |
+
"\u001b[2K \u001b[90mββββββββββββββββββββββββββββββββββββββββ\u001b[0m \u001b[32m11.3/11.3 MB\u001b[0m \u001b[31m49.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
|
| 744 |
+
"\u001b[?25hDownloading safehttpx-0.1.6-py3-none-any.whl (8.7 kB)\n",
|
| 745 |
+
"Downloading semantic_version-2.10.0-py2.py3-none-any.whl (15 kB)\n",
|
| 746 |
+
"Downloading starlette-0.46.1-py3-none-any.whl (71 kB)\n",
|
| 747 |
+
"\u001b[2K \u001b[90mββββββββββββββββββββββββββββββββββββββββ\u001b[0m \u001b[32m72.0/72.0 kB\u001b[0m \u001b[31m4.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
|
| 748 |
+
"\u001b[?25hDownloading tomlkit-0.13.2-py3-none-any.whl (37 kB)\n",
|
| 749 |
+
"Downloading uvicorn-0.34.0-py3-none-any.whl (62 kB)\n",
|
| 750 |
+
"\u001b[2K \u001b[90mββββββββββββββββββββββββββββββββββββββββ\u001b[0m \u001b[32m62.3/62.3 kB\u001b[0m \u001b[31m4.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
|
| 751 |
+
"\u001b[?25hDownloading ffmpy-0.5.0-py3-none-any.whl (6.0 kB)\n",
|
| 752 |
+
"Downloading pydub-0.25.1-py2.py3-none-any.whl (32 kB)\n",
|
| 753 |
+
"Installing collected packages: pydub, uvicorn, tomlkit, semantic-version, ruff, python-multipart, markupsafe, groovy, ffmpy, aiofiles, starlette, safehttpx, gradio-client, fastapi, gradio\n",
|
| 754 |
+
" Attempting uninstall: markupsafe\n",
|
| 755 |
+
" Found existing installation: MarkupSafe 3.0.2\n",
|
| 756 |
+
" Uninstalling MarkupSafe-3.0.2:\n",
|
| 757 |
+
" Successfully uninstalled MarkupSafe-3.0.2\n",
|
| 758 |
+
"Successfully installed aiofiles-23.2.1 fastapi-0.115.11 ffmpy-0.5.0 gradio-5.21.0 gradio-client-1.7.2 groovy-0.1.2 markupsafe-2.1.5 pydub-0.25.1 python-multipart-0.0.20 ruff-0.11.0 safehttpx-0.1.6 semantic-version-2.10.0 starlette-0.46.1 tomlkit-0.13.2 uvicorn-0.34.0\n"
|
| 759 |
+
]
|
| 760 |
+
}
|
| 761 |
+
]
|
| 762 |
+
},
|
| 763 |
+
{
|
| 764 |
+
"cell_type": "code",
|
| 765 |
+
"source": [
|
| 766 |
+
"import gradio as gr\n",
|
| 767 |
+
"import pandas as pd\n",
|
| 768 |
+
"import numpy as np\n",
|
| 769 |
+
"import joblib # If you saved a trained model\n"
|
| 770 |
+
],
|
| 771 |
+
"metadata": {
|
| 772 |
+
"id": "PVUuaH2XeELM"
|
| 773 |
+
},
|
| 774 |
+
"execution_count": 13,
|
| 775 |
+
"outputs": []
|
| 776 |
+
},
|
| 777 |
+
{
|
| 778 |
+
"cell_type": "code",
|
| 779 |
+
"source": [
|
| 780 |
+
"import joblib\n",
|
| 781 |
+
"\n",
|
| 782 |
+
"# Assuming 'model' is your trained predictive maintenance model\n",
|
| 783 |
+
"joblib.dump(model, \"predictive_maintenance_model.pkl\")\n",
|
| 784 |
+
"\n",
|
| 785 |
+
"# Verify if the file is saved\n",
|
| 786 |
+
"import os\n",
|
| 787 |
+
"print(os.listdir()) # Now, you should see 'predictive_maintenance_model.pkl'\n"
|
| 788 |
+
],
|
| 789 |
+
"metadata": {
|
| 790 |
+
"colab": {
|
| 791 |
+
"base_uri": "https://localhost:8080/"
|
| 792 |
+
},
|
| 793 |
+
"id": "e58DPCn2es0d",
|
| 794 |
+
"outputId": "81a06f3a-6f11-46c1-af3b-a50194471b1a"
|
| 795 |
+
},
|
| 796 |
+
"execution_count": 16,
|
| 797 |
+
"outputs": [
|
| 798 |
+
{
|
| 799 |
+
"output_type": "stream",
|
| 800 |
+
"name": "stdout",
|
| 801 |
+
"text": [
|
| 802 |
+
"['.config', 'drive', 'predictive_maintenance_model.pkl', 'sample_data']\n"
|
| 803 |
+
]
|
| 804 |
+
}
|
| 805 |
+
]
|
| 806 |
+
},
|
| 807 |
+
{
|
| 808 |
+
"cell_type": "code",
|
| 809 |
+
"source": [
|
| 810 |
+
"model = joblib.load(\"predictive_maintenance_model.pkl\") # Change to your actual model path\n"
|
| 811 |
+
],
|
| 812 |
+
"metadata": {
|
| 813 |
+
"id": "4CygicsXeIQe"
|
| 814 |
+
},
|
| 815 |
+
"execution_count": 17,
|
| 816 |
+
"outputs": []
|
| 817 |
+
},
|
| 818 |
+
{
|
| 819 |
+
"cell_type": "code",
|
| 820 |
+
"source": [
|
| 821 |
+
"def predict_maintenance(feature1, feature2, feature3, feature4):\n",
|
| 822 |
+
" input_data = np.array([[feature1, feature2, feature3, feature4]]) # Modify according to your dataset\n",
|
| 823 |
+
" prediction = model.predict(input_data)\n",
|
| 824 |
+
" return f\"Predicted Maintenance Requirement: {prediction[0]}\"\n"
|
| 825 |
+
],
|
| 826 |
+
"metadata": {
|
| 827 |
+
"id": "vR4RMu9meVAY"
|
| 828 |
+
},
|
| 829 |
+
"execution_count": 18,
|
| 830 |
+
"outputs": []
|
| 831 |
+
},
|
| 832 |
+
{
|
| 833 |
+
"cell_type": "code",
|
| 834 |
+
"source": [
|
| 835 |
+
"interface = gr.Interface(\n",
|
| 836 |
+
" fn=predict_maintenance,\n",
|
| 837 |
+
" inputs=[\n",
|
| 838 |
+
" gr.Number(label=\"Feature 1\"),\n",
|
| 839 |
+
" gr.Number(label=\"Feature 2\"),\n",
|
| 840 |
+
" gr.Number(label=\"Feature 3\"),\n",
|
| 841 |
+
" gr.Number(label=\"Feature 4\"),\n",
|
| 842 |
+
" ],\n",
|
| 843 |
+
" outputs=gr.Textbox(label=\"Prediction\"),\n",
|
| 844 |
+
" title=\"Predictive Maintenance for Industrial Equipment\",\n",
|
| 845 |
+
" description=\"Enter sensor readings to predict maintenance requirements.\"\n",
|
| 846 |
+
")\n",
|
| 847 |
+
"\n",
|
| 848 |
+
"interface.launch()\n"
|
| 849 |
+
],
|
| 850 |
+
"metadata": {
|
| 851 |
+
"colab": {
|
| 852 |
+
"base_uri": "https://localhost:8080/",
|
| 853 |
+
"height": 645
|
| 854 |
+
},
|
| 855 |
+
"id": "ig--2AXDfCol",
|
| 856 |
+
"outputId": "6487a442-5192-4137-ac8b-e28972189e62"
|
| 857 |
+
},
|
| 858 |
+
"execution_count": 19,
|
| 859 |
+
"outputs": [
|
| 860 |
+
{
|
| 861 |
+
"output_type": "stream",
|
| 862 |
+
"name": "stdout",
|
| 863 |
+
"text": [
|
| 864 |
+
"Running Gradio in a Colab notebook requires sharing enabled. Automatically setting `share=True` (you can turn this off by setting `share=False` in `launch()` explicitly).\n",
|
| 865 |
+
"\n",
|
| 866 |
+
"Colab notebook detected. To show errors in colab notebook, set debug=True in launch()\n",
|
| 867 |
+
"* Running on public URL: https://60213a30826fcd7f78.gradio.live\n",
|
| 868 |
+
"\n",
|
| 869 |
+
"This share link expires in 72 hours. For free permanent hosting and GPU upgrades, run `gradio deploy` from the terminal in the working directory to deploy to Hugging Face Spaces (https://huggingface.co/spaces)\n"
|
| 870 |
+
]
|
| 871 |
+
},
|
| 872 |
+
{
|
| 873 |
+
"output_type": "display_data",
|
| 874 |
+
"data": {
|
| 875 |
+
"text/plain": [
|
| 876 |
+
"<IPython.core.display.HTML object>"
|
| 877 |
+
],
|
| 878 |
+
"text/html": [
|
| 879 |
+
"<div><iframe src=\"https://60213a30826fcd7f78.gradio.live\" width=\"100%\" height=\"500\" allow=\"autoplay; camera; microphone; clipboard-read; clipboard-write;\" frameborder=\"0\" allowfullscreen></iframe></div>"
|
| 880 |
+
]
|
| 881 |
+
},
|
| 882 |
+
"metadata": {}
|
| 883 |
+
},
|
| 884 |
+
{
|
| 885 |
+
"output_type": "execute_result",
|
| 886 |
+
"data": {
|
| 887 |
+
"text/plain": []
|
| 888 |
+
},
|
| 889 |
+
"metadata": {},
|
| 890 |
+
"execution_count": 19
|
| 891 |
+
}
|
| 892 |
+
]
|
| 893 |
+
},
|
| 894 |
+
{
|
| 895 |
+
"cell_type": "code",
|
| 896 |
+
"source": [],
|
| 897 |
+
"metadata": {
|
| 898 |
+
"id": "6lZo0mAFfGf7"
|
| 899 |
+
},
|
| 900 |
+
"execution_count": null,
|
| 901 |
+
"outputs": []
|
| 902 |
+
}
|
| 903 |
+
]
|
| 904 |
+
}
|