{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "cb05a122-9781-43c1-b7e1-4e78633d1e1e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "شكل البيانات (صفوف, أعمدة): (569, 32)\n",
      "\n",
      "أسماء الأعمدة:\n",
      " ['id', 'diagnosis', 'radius_mean', 'texture_mean', 'perimeter_mean', 'area_mean', 'smoothness_mean', 'compactness_mean', 'concavity_mean', 'concave points_mean', 'symmetry_mean', 'fractal_dimension_mean', 'radius_se', 'texture_se', 'perimeter_se', 'area_se', 'smoothness_se', 'compactness_se', 'concavity_se', 'concave points_se', 'symmetry_se', 'fractal_dimension_se', 'radius_worst', 'texture_worst', 'perimeter_worst', 'area_worst', 'smoothness_worst', 'compactness_worst', 'concavity_worst', 'concave points_worst', 'symmetry_worst', 'fractal_dimension_worst']\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<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>id</th>\n",
       "      <th>diagnosis</th>\n",
       "      <th>radius_mean</th>\n",
       "      <th>texture_mean</th>\n",
       "      <th>perimeter_mean</th>\n",
       "      <th>area_mean</th>\n",
       "      <th>smoothness_mean</th>\n",
       "      <th>compactness_mean</th>\n",
       "      <th>concavity_mean</th>\n",
       "      <th>concave points_mean</th>\n",
       "      <th>...</th>\n",
       "      <th>radius_worst</th>\n",
       "      <th>texture_worst</th>\n",
       "      <th>perimeter_worst</th>\n",
       "      <th>area_worst</th>\n",
       "      <th>smoothness_worst</th>\n",
       "      <th>compactness_worst</th>\n",
       "      <th>concavity_worst</th>\n",
       "      <th>concave points_worst</th>\n",
       "      <th>symmetry_worst</th>\n",
       "      <th>fractal_dimension_worst</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>842302</td>\n",
       "      <td>M</td>\n",
       "      <td>17.99</td>\n",
       "      <td>10.38</td>\n",
       "      <td>122.80</td>\n",
       "      <td>1001.0</td>\n",
       "      <td>0.11840</td>\n",
       "      <td>0.27760</td>\n",
       "      <td>0.3001</td>\n",
       "      <td>0.14710</td>\n",
       "      <td>...</td>\n",
       "      <td>25.38</td>\n",
       "      <td>17.33</td>\n",
       "      <td>184.60</td>\n",
       "      <td>2019.0</td>\n",
       "      <td>0.1622</td>\n",
       "      <td>0.6656</td>\n",
       "      <td>0.7119</td>\n",
       "      <td>0.2654</td>\n",
       "      <td>0.4601</td>\n",
       "      <td>0.11890</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>842517</td>\n",
       "      <td>M</td>\n",
       "      <td>20.57</td>\n",
       "      <td>17.77</td>\n",
       "      <td>132.90</td>\n",
       "      <td>1326.0</td>\n",
       "      <td>0.08474</td>\n",
       "      <td>0.07864</td>\n",
       "      <td>0.0869</td>\n",
       "      <td>0.07017</td>\n",
       "      <td>...</td>\n",
       "      <td>24.99</td>\n",
       "      <td>23.41</td>\n",
       "      <td>158.80</td>\n",
       "      <td>1956.0</td>\n",
       "      <td>0.1238</td>\n",
       "      <td>0.1866</td>\n",
       "      <td>0.2416</td>\n",
       "      <td>0.1860</td>\n",
       "      <td>0.2750</td>\n",
       "      <td>0.08902</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>84300903</td>\n",
       "      <td>M</td>\n",
       "      <td>19.69</td>\n",
       "      <td>21.25</td>\n",
       "      <td>130.00</td>\n",
       "      <td>1203.0</td>\n",
       "      <td>0.10960</td>\n",
       "      <td>0.15990</td>\n",
       "      <td>0.1974</td>\n",
       "      <td>0.12790</td>\n",
       "      <td>...</td>\n",
       "      <td>23.57</td>\n",
       "      <td>25.53</td>\n",
       "      <td>152.50</td>\n",
       "      <td>1709.0</td>\n",
       "      <td>0.1444</td>\n",
       "      <td>0.4245</td>\n",
       "      <td>0.4504</td>\n",
       "      <td>0.2430</td>\n",
       "      <td>0.3613</td>\n",
       "      <td>0.08758</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>84348301</td>\n",
       "      <td>M</td>\n",
       "      <td>11.42</td>\n",
       "      <td>20.38</td>\n",
       "      <td>77.58</td>\n",
       "      <td>386.1</td>\n",
       "      <td>0.14250</td>\n",
       "      <td>0.28390</td>\n",
       "      <td>0.2414</td>\n",
       "      <td>0.10520</td>\n",
       "      <td>...</td>\n",
       "      <td>14.91</td>\n",
       "      <td>26.50</td>\n",
       "      <td>98.87</td>\n",
       "      <td>567.7</td>\n",
       "      <td>0.2098</td>\n",
       "      <td>0.8663</td>\n",
       "      <td>0.6869</td>\n",
       "      <td>0.2575</td>\n",
       "      <td>0.6638</td>\n",
       "      <td>0.17300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>84358402</td>\n",
       "      <td>M</td>\n",
       "      <td>20.29</td>\n",
       "      <td>14.34</td>\n",
       "      <td>135.10</td>\n",
       "      <td>1297.0</td>\n",
       "      <td>0.10030</td>\n",
       "      <td>0.13280</td>\n",
       "      <td>0.1980</td>\n",
       "      <td>0.10430</td>\n",
       "      <td>...</td>\n",
       "      <td>22.54</td>\n",
       "      <td>16.67</td>\n",
       "      <td>152.20</td>\n",
       "      <td>1575.0</td>\n",
       "      <td>0.1374</td>\n",
       "      <td>0.2050</td>\n",
       "      <td>0.4000</td>\n",
       "      <td>0.1625</td>\n",
       "      <td>0.2364</td>\n",
       "      <td>0.07678</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 32 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         id diagnosis  radius_mean  texture_mean  perimeter_mean  area_mean  \\\n",
       "0    842302         M        17.99         10.38          122.80     1001.0   \n",
       "1    842517         M        20.57         17.77          132.90     1326.0   \n",
       "2  84300903         M        19.69         21.25          130.00     1203.0   \n",
       "3  84348301         M        11.42         20.38           77.58      386.1   \n",
       "4  84358402         M        20.29         14.34          135.10     1297.0   \n",
       "\n",
       "   smoothness_mean  compactness_mean  concavity_mean  concave points_mean  \\\n",
       "0          0.11840           0.27760          0.3001              0.14710   \n",
       "1          0.08474           0.07864          0.0869              0.07017   \n",
       "2          0.10960           0.15990          0.1974              0.12790   \n",
       "3          0.14250           0.28390          0.2414              0.10520   \n",
       "4          0.10030           0.13280          0.1980              0.10430   \n",
       "\n",
       "   ...  radius_worst  texture_worst  perimeter_worst  area_worst  \\\n",
       "0  ...         25.38          17.33           184.60      2019.0   \n",
       "1  ...         24.99          23.41           158.80      1956.0   \n",
       "2  ...         23.57          25.53           152.50      1709.0   \n",
       "3  ...         14.91          26.50            98.87       567.7   \n",
       "4  ...         22.54          16.67           152.20      1575.0   \n",
       "\n",
       "   smoothness_worst  compactness_worst  concavity_worst  concave points_worst  \\\n",
       "0            0.1622             0.6656           0.7119                0.2654   \n",
       "1            0.1238             0.1866           0.2416                0.1860   \n",
       "2            0.1444             0.4245           0.4504                0.2430   \n",
       "3            0.2098             0.8663           0.6869                0.2575   \n",
       "4            0.1374             0.2050           0.4000                0.1625   \n",
       "\n",
       "   symmetry_worst  fractal_dimension_worst  \n",
       "0          0.4601                  0.11890  \n",
       "1          0.2750                  0.08902  \n",
       "2          0.3613                  0.08758  \n",
       "3          0.6638                  0.17300  \n",
       "4          0.2364                  0.07678  \n",
       "\n",
       "[5 rows x 32 columns]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "هل يوجد عمود 'diagnosis' كهدف؟ True\n",
      "\n",
      "القيم الفريدة في diagnosis: ['M' 'B']\n",
      "\n",
      "تعداد الفئات في diagnosis:\n",
      " diagnosis\n",
      "B    357\n",
      "M    212\n",
      "Name: count, dtype: int64\n",
      "\n",
      "إجمالي القيم المفقودة لكل عمود:\n",
      " id                         0\n",
      "diagnosis                  0\n",
      "symmetry_worst             0\n",
      "concave points_worst       0\n",
      "concavity_worst            0\n",
      "compactness_worst          0\n",
      "smoothness_worst           0\n",
      "area_worst                 0\n",
      "perimeter_worst            0\n",
      "texture_worst              0\n",
      "radius_worst               0\n",
      "fractal_dimension_se       0\n",
      "symmetry_se                0\n",
      "concave points_se          0\n",
      "concavity_se               0\n",
      "compactness_se             0\n",
      "smoothness_se              0\n",
      "area_se                    0\n",
      "perimeter_se               0\n",
      "texture_se                 0\n",
      "radius_se                  0\n",
      "fractal_dimension_mean     0\n",
      "symmetry_mean              0\n",
      "concave points_mean        0\n",
      "concavity_mean             0\n",
      "compactness_mean           0\n",
      "smoothness_mean            0\n",
      "area_mean                  0\n",
      "perimeter_mean             0\n",
      "texture_mean               0\n",
      "radius_mean                0\n",
      "fractal_dimension_worst    0\n",
      "dtype: int64\n"
     ]
    }
   ],
   "source": [
    "# === Step 1: Load Breast Cancer dataset & quick sanity checks ===\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "# عدّل المسار/الاسم إذا لزم\n",
    "CSV_PATH = \"breast-cancer.csv\"\n",
    "\n",
    "# 1) تحميل البيانات\n",
    "df = pd.read_csv(CSV_PATH)\n",
    "\n",
    "# 2) نظرة أولية\n",
    "print(\"شكل البيانات (صفوف, أعمدة):\", df.shape)\n",
    "print(\"\\nأسماء الأعمدة:\\n\", list(df.columns))\n",
    "\n",
    "# 3) عرض أول 5 صفوف\n",
    "display(df.head())\n",
    "\n",
    "# 4) التحقق من وجود عمود الهدف المتوقع (diagnosis)\n",
    "print(\"\\nهل يوجد عمود 'diagnosis' كهدف؟\", \"diagnosis\" in df.columns)\n",
    "\n",
    "# 5) في حال توفره: عرض القيم الفريدة وتعداد كل فئة\n",
    "if \"diagnosis\" in df.columns:\n",
    "    print(\"\\nالقيم الفريدة في diagnosis:\", df[\"diagnosis\"].unique())\n",
    "    print(\"\\nتعداد الفئات في diagnosis:\\n\", df[\"diagnosis\"].value_counts())\n",
    "\n",
    "# 6) فحص سريع للقيم المفقودة (فقط للاستكشاف الآن، المعالجة لاحقًا)\n",
    "print(\"\\nإجمالي القيم المفقودة لكل عمود:\\n\", df.isna().sum().sort_values(ascending=False))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "81655c64-b3a9-4e33-83e2-7810292fb24e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "توازن الفئات:\n",
      " diagnosis\n",
      "0    357\n",
      "1    212\n",
      "Name: count, dtype: int64\n",
      "\n",
      "شكل ميزات X: (569, 30)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<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>radius_mean</th>\n",
       "      <th>texture_mean</th>\n",
       "      <th>perimeter_mean</th>\n",
       "      <th>area_mean</th>\n",
       "      <th>smoothness_mean</th>\n",
       "      <th>compactness_mean</th>\n",
       "      <th>concavity_mean</th>\n",
       "      <th>concave points_mean</th>\n",
       "      <th>symmetry_mean</th>\n",
       "      <th>fractal_dimension_mean</th>\n",
       "      <th>...</th>\n",
       "      <th>radius_worst</th>\n",
       "      <th>texture_worst</th>\n",
       "      <th>perimeter_worst</th>\n",
       "      <th>area_worst</th>\n",
       "      <th>smoothness_worst</th>\n",
       "      <th>compactness_worst</th>\n",
       "      <th>concavity_worst</th>\n",
       "      <th>concave points_worst</th>\n",
       "      <th>symmetry_worst</th>\n",
       "      <th>fractal_dimension_worst</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>17.99</td>\n",
       "      <td>10.38</td>\n",
       "      <td>122.80</td>\n",
       "      <td>1001.0</td>\n",
       "      <td>0.11840</td>\n",
       "      <td>0.27760</td>\n",
       "      <td>0.3001</td>\n",
       "      <td>0.14710</td>\n",
       "      <td>0.2419</td>\n",
       "      <td>0.07871</td>\n",
       "      <td>...</td>\n",
       "      <td>25.38</td>\n",
       "      <td>17.33</td>\n",
       "      <td>184.60</td>\n",
       "      <td>2019.0</td>\n",
       "      <td>0.1622</td>\n",
       "      <td>0.6656</td>\n",
       "      <td>0.7119</td>\n",
       "      <td>0.2654</td>\n",
       "      <td>0.4601</td>\n",
       "      <td>0.11890</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>20.57</td>\n",
       "      <td>17.77</td>\n",
       "      <td>132.90</td>\n",
       "      <td>1326.0</td>\n",
       "      <td>0.08474</td>\n",
       "      <td>0.07864</td>\n",
       "      <td>0.0869</td>\n",
       "      <td>0.07017</td>\n",
       "      <td>0.1812</td>\n",
       "      <td>0.05667</td>\n",
       "      <td>...</td>\n",
       "      <td>24.99</td>\n",
       "      <td>23.41</td>\n",
       "      <td>158.80</td>\n",
       "      <td>1956.0</td>\n",
       "      <td>0.1238</td>\n",
       "      <td>0.1866</td>\n",
       "      <td>0.2416</td>\n",
       "      <td>0.1860</td>\n",
       "      <td>0.2750</td>\n",
       "      <td>0.08902</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>19.69</td>\n",
       "      <td>21.25</td>\n",
       "      <td>130.00</td>\n",
       "      <td>1203.0</td>\n",
       "      <td>0.10960</td>\n",
       "      <td>0.15990</td>\n",
       "      <td>0.1974</td>\n",
       "      <td>0.12790</td>\n",
       "      <td>0.2069</td>\n",
       "      <td>0.05999</td>\n",
       "      <td>...</td>\n",
       "      <td>23.57</td>\n",
       "      <td>25.53</td>\n",
       "      <td>152.50</td>\n",
       "      <td>1709.0</td>\n",
       "      <td>0.1444</td>\n",
       "      <td>0.4245</td>\n",
       "      <td>0.4504</td>\n",
       "      <td>0.2430</td>\n",
       "      <td>0.3613</td>\n",
       "      <td>0.08758</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>11.42</td>\n",
       "      <td>20.38</td>\n",
       "      <td>77.58</td>\n",
       "      <td>386.1</td>\n",
       "      <td>0.14250</td>\n",
       "      <td>0.28390</td>\n",
       "      <td>0.2414</td>\n",
       "      <td>0.10520</td>\n",
       "      <td>0.2597</td>\n",
       "      <td>0.09744</td>\n",
       "      <td>...</td>\n",
       "      <td>14.91</td>\n",
       "      <td>26.50</td>\n",
       "      <td>98.87</td>\n",
       "      <td>567.7</td>\n",
       "      <td>0.2098</td>\n",
       "      <td>0.8663</td>\n",
       "      <td>0.6869</td>\n",
       "      <td>0.2575</td>\n",
       "      <td>0.6638</td>\n",
       "      <td>0.17300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>20.29</td>\n",
       "      <td>14.34</td>\n",
       "      <td>135.10</td>\n",
       "      <td>1297.0</td>\n",
       "      <td>0.10030</td>\n",
       "      <td>0.13280</td>\n",
       "      <td>0.1980</td>\n",
       "      <td>0.10430</td>\n",
       "      <td>0.1809</td>\n",
       "      <td>0.05883</td>\n",
       "      <td>...</td>\n",
       "      <td>22.54</td>\n",
       "      <td>16.67</td>\n",
       "      <td>152.20</td>\n",
       "      <td>1575.0</td>\n",
       "      <td>0.1374</td>\n",
       "      <td>0.2050</td>\n",
       "      <td>0.4000</td>\n",
       "      <td>0.1625</td>\n",
       "      <td>0.2364</td>\n",
       "      <td>0.07678</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 30 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   radius_mean  texture_mean  perimeter_mean  area_mean  smoothness_mean  \\\n",
       "0        17.99         10.38          122.80     1001.0          0.11840   \n",
       "1        20.57         17.77          132.90     1326.0          0.08474   \n",
       "2        19.69         21.25          130.00     1203.0          0.10960   \n",
       "3        11.42         20.38           77.58      386.1          0.14250   \n",
       "4        20.29         14.34          135.10     1297.0          0.10030   \n",
       "\n",
       "   compactness_mean  concavity_mean  concave points_mean  symmetry_mean  \\\n",
       "0           0.27760          0.3001              0.14710         0.2419   \n",
       "1           0.07864          0.0869              0.07017         0.1812   \n",
       "2           0.15990          0.1974              0.12790         0.2069   \n",
       "3           0.28390          0.2414              0.10520         0.2597   \n",
       "4           0.13280          0.1980              0.10430         0.1809   \n",
       "\n",
       "   fractal_dimension_mean  ...  radius_worst  texture_worst  perimeter_worst  \\\n",
       "0                 0.07871  ...         25.38          17.33           184.60   \n",
       "1                 0.05667  ...         24.99          23.41           158.80   \n",
       "2                 0.05999  ...         23.57          25.53           152.50   \n",
       "3                 0.09744  ...         14.91          26.50            98.87   \n",
       "4                 0.05883  ...         22.54          16.67           152.20   \n",
       "\n",
       "   area_worst  smoothness_worst  compactness_worst  concavity_worst  \\\n",
       "0      2019.0            0.1622             0.6656           0.7119   \n",
       "1      1956.0            0.1238             0.1866           0.2416   \n",
       "2      1709.0            0.1444             0.4245           0.4504   \n",
       "3       567.7            0.2098             0.8663           0.6869   \n",
       "4      1575.0            0.1374             0.2050           0.4000   \n",
       "\n",
       "   concave points_worst  symmetry_worst  fractal_dimension_worst  \n",
       "0                0.2654          0.4601                  0.11890  \n",
       "1                0.1860          0.2750                  0.08902  \n",
       "2                0.2430          0.3613                  0.08758  \n",
       "3                0.2575          0.6638                  0.17300  \n",
       "4                0.1625          0.2364                  0.07678  \n",
       "\n",
       "[5 rows x 30 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# === Step 2: تجهيز الهدف وتحويله إلى أرقام 0/1 ===\n",
    "\n",
    "# تحويل الهدف إلى 0/1 (M = 1, B = 0)\n",
    "y = df['diagnosis'].map({'M': 1, 'B': 0})\n",
    "\n",
    "# حذف عمود الهدف وأي عمود ID من الميزات\n",
    "X = df.drop(columns=['diagnosis', 'id'], errors='ignore')\n",
    "\n",
    "# عرض توازن الفئات بعد التحويل\n",
    "print(\"توازن الفئات:\\n\", y.value_counts())\n",
    "\n",
    "# عرض أبعاد الميزات الجديدة\n",
    "print(\"\\nشكل ميزات X:\", X.shape)\n",
    "\n",
    "# عرض أول 5 صفوف من X للتحقق\n",
    "X.head()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "14d6ccb0-ce14-43be-bc28-e430178ea701",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "أبعاد بيانات التدريب: (426, 30)\n",
      "أبعاد بيانات الاختبار: (143, 30)\n",
      "تم تجهيز البايبلاين بنجاح!\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.impute import SimpleImputer\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.compose import ColumnTransformer\n",
    "from sklearn.pipeline import Pipeline\n",
    "\n",
    "# تقسيم البيانات إلى تدريب واختبار\n",
    "X_train, X_test, y_train, y_test = train_test_split(\n",
    "    X, y, test_size=0.25, stratify=y, random_state=42\n",
    ")\n",
    "\n",
    "print(\"أبعاد بيانات التدريب:\", X_train.shape)\n",
    "print(\"أبعاد بيانات الاختبار:\", X_test.shape)\n",
    "\n",
    "# تحديد الأعمدة الرقمية (كل الأعمدة رقمية في هذا الملف)\n",
    "num_cols = X.columns.tolist()\n",
    "\n",
    "# بايبلاين لمعالجة القيم المفقودة + التطبيع\n",
    "num_pipeline = Pipeline(steps=[\n",
    "    ('imputer', SimpleImputer(strategy='median')),\n",
    "    ('scaler', StandardScaler())\n",
    "])\n",
    "\n",
    "# لا توجد أعمدة فئوية هنا، لكن نضع الهيكل العام\n",
    "preprocessor = ColumnTransformer(transformers=[\n",
    "    ('num', num_pipeline, num_cols)\n",
    "])\n",
    "\n",
    "print(\"تم تجهيز البايبلاين بنجاح!\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "72c23176-95a6-48f6-b6d4-61f7cf0ec2c4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "=== LogisticRegression ===\n",
      "أفضل معاملات: {'clf__C': 1, 'clf__solver': 'liblinear'}\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.96      0.99      0.97        90\n",
      "           1       0.98      0.92      0.95        53\n",
      "\n",
      "    accuracy                           0.97       143\n",
      "   macro avg       0.97      0.96      0.96       143\n",
      "weighted avg       0.97      0.97      0.96       143\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhIAAAHFCAYAAACn7hC1AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAQXNJREFUeJzt3XlclOX+//H3oDgsIorKDJgoGpp7pEViBmZ4MvXk19PiUqltFraQpkaUWqegPH3NUtM0F7LMOi22nBYtkxa1sLSFTE+FWR0n3ApFRIXr94df59cIKoxzMzjn9exxPx5x3ffc1+ceRvjwua7rvm3GGCMAAAAvBPk7AAAAcPoikQAAAF4jkQAAAF4jkQAAAF4jkQAAAF4jkQAAAF4jkQAAAF4jkQAAAF4jkQAAAF4jkahDvvrqK40ePVrx8fEKCQlRw4YNdc4552jatGnavXu3pX1v2LBBKSkpioyMlM1m04wZM3zeh81m09SpU31+3pNZvHixbDabbDabVq9eXWm/MUZnnnmmbDabUlNTverjySef1OLFi2v0mtWrVx83ptpgs9l066231mqfR78XW7durdHrsrOztXz58krt3r6Hf/5M2Gw21a9fXzExMRo6dKj+/e9/1+hcp7OpU6fKZrP5Owyc5ur7OwAcMX/+fKWnp6t9+/aaMGGCOnbsqEOHDmn9+vWaO3eu1q5dq1dffdWy/q+77jqVlJRo2bJlatKkiVq3bu3zPtauXaszzjjD5+etroiICC1YsKBSspCXl6cffvhBERERXp/7ySefVLNmzTRq1Khqv+acc87R2rVr1bFjR6/7Pd0MGDBAa9euVUxMTI1el52drcsvv1yDBw/2aD/V93DRokU666yzdODAAX3yySd66KGH9MEHH+i7775TkyZNvDrn6eSGG27QJZdc4u8wcJojkagD1q5dq1tuuUVpaWlavny57Ha7e19aWprGjx+vd955x9IYvvnmG914443q37+/ZX2cf/75lp27Oq666io999xzmj17tho1auRuX7BggXr27Kni4uJaiePQoUOy2Wxq1KiR39+T2ta8eXM1b97cZ+c71fewc+fO6tGjhyQpNTVV5eXlmjJlipYvX67Ro0f7KsxqKS0tVWhoaK32ecYZZ/g1uUdgYGijDsjOzpbNZtO8efM8koijGjRooL/+9a/urysqKjRt2jSdddZZstvtio6O1rXXXqtffvnF43Wpqanq3Lmz8vPz1bt3b4WFhalNmzZ6+OGHVVFRIen/l3gPHz6sOXPmuEu90vHLnlWVp1etWqXU1FQ1bdpUoaGhiouL09/+9jft37/ffUxVQxvffPONLrvsMjVp0kQhISE6++yzlZub63HM0fL1888/r6ysLMXGxqpRo0a6+OKLtXnz5uq9yZKGDRsmSXr++efdbX/88YdefvllXXfddVW+5v7771dSUpKioqLUqFEjnXPOOVqwYIH+/Ky71q1bq6CgQHl5ee7372hF52jsS5Ys0fjx49WiRQvZ7XZ9//33lcryO3fuVMuWLZWcnKxDhw65z//tt98qPDxc11xzTbWv1Vd2796t9PR0tWjRQg0aNFCbNm2UlZWlsrIyj+N+//13XX/99YqKilLDhg01YMAA/fjjj5W+51V9djZs2KCBAwcqOjpadrtdsbGxGjBggPvzbLPZVFJSotzcXPf7e7SqdLyhjU8//VSDBg1S06ZNFRISorZt2yojI+Ok13s0qfjtt9882tevX6+//vWvioqKUkhIiBITE/Xiiy9Wev3HH3+snj17KiQkRC1atNB9992np59+utI1t27dWgMHDtQrr7yixMREhYSE6P7775ckuVwujRkzRmeccYYaNGig+Ph43X///Tp8+LBHX3PmzFG3bt3UsGFDRURE6KyzztI999zj3r9//37ddddd7qHSqKgo9ejRw+PzX9W/cV/+fMF/ByoSflZeXq5Vq1ape/fuatmyZbVec8stt2jevHm69dZbNXDgQG3dulX33XefVq9erS+++ELNmjVzH+tyuTRixAiNHz9eU6ZM0auvvqrMzEzFxsbq2muvdZeae/bsqcsvv1zjx4+v8TVs3bpVAwYMUO/evbVw4UI1btxYv/76q9555x0dPHhQYWFhVb5u8+bNSk5OVnR0tJ544gk1bdpUzz77rEaNGqXffvtNEydO9Dj+nnvuUa9evfT000+ruLhYkyZN0qBBg7Rp0ybVq1fvpHE2atRIl19+uRYuXKgxY8ZIOpJUBAUF6aqrrqpyXsjWrVs1ZswYxcXFSZLWrVun2267Tb/++qsmT54sSXr11Vd1+eWXKzIyUk8++aQkVUoIMzMz1bNnT82dO1dBQUGKjo6Wy+XyOKZZs2ZatmyZUlNTNWnSJE2fPl379+/XFVdcobi4OM2dO/ek1+hLBw4cUJ8+ffTDDz/o/vvvV9euXfXRRx8pJydHGzdu1L/+9S9JR37xDBo0SOvXr9fUqVPdww3VKZmXlJQoLS1N8fHxmj17thwOh1wulz744APt3btX0pGK3UUXXaQ+ffrovvvukySPitKx3n33XQ0aNEgdOnTQ9OnTFRcXp61bt2rFihUnjaewsFCS1K5dO3fbBx98oEsuuURJSUmaO3euIiMjtWzZMl111VXav3+/ezjrq6++Ulpamtq1a6fc3FyFhYVp7ty5evbZZ6vs64svvtCmTZt07733Kj4+XuHh4XK5XDrvvPMUFBSkyZMnq23btlq7dq0efPBBbd26VYsWLZIkLVu2TOnp6brtttv06KOPKigoSN9//72+/fZb9/nHjRunJUuW6MEHH1RiYqJKSkr0zTffaNeuXSd8D3z58wX/JQz8yuVyGUlm6NCh1Tp+06ZNRpJJT0/3aP/000+NJHPPPfe421JSUowk8+mnn3oc27FjR/OXv/zFo02SGTt2rEfblClTTFUfkUWLFhlJprCw0BhjzEsvvWQkmY0bN54wdklmypQp7q+HDh1q7Ha72bZtm8dx/fv3N2FhYeb33383xhjzwQcfGEnm0ksv9TjuxRdfNJLM2rVrT9jv0Xjz8/Pd5/rmm2+MMcace+65ZtSoUcYYYzp16mRSUlKOe57y8nJz6NAh88ADD5imTZuaiooK977jvfZofxdeeOFx933wwQce7Y888oiRZF599VUzcuRIExoaar766qsTXqM3qvqe/9ncuXONJPPiiy9WGd+KFSuMMcb861//MpLMnDlzPI7Lycmp9D0/9rOzfv16I8ksX778hLGGh4ebkSNHVmqv6j1s27atadu2rSktLT3u+Y7GsW7dOnPo0CGzd+9e88477xin02kuvPBCc+jQIfexZ511lklMTPRoM8aYgQMHmpiYGFNeXm6MMeaKK64w4eHhZseOHe5jysvLTceOHT2u2RhjWrVqZerVq2c2b97scc4xY8aYhg0bmp9++smj/dFHHzWSTEFBgTHGmFtvvdU0btz4uNdnjDGdO3c2gwcPPuExx/4bt+rnCwIbQxunmQ8++ECSKk3qO++889ShQwe9//77Hu1Op1PnnXeeR1vXrl31008/+Syms88+Ww0aNNBNN92k3Nxc/fjjj9V63apVq9S3b99KlZhRo0Zp//79Wrt2rUf7n4d3pCPXIalG15KSkqK2bdtq4cKF+vrrr5Wfn3/cYY2jMV588cWKjIxUvXr1FBwcrMmTJ2vXrl0qKiqqdr9/+9vfqn3shAkTNGDAAA0bNky5ubmaOXOmunTpctLXHT582GMzfxp+8caqVasUHh6uyy+/3KP96Gfv6GctLy9PknTllVd6HHd0KOlEzjzzTDVp0kSTJk3S3LlzPf6i9saWLVv0ww8/6Prrr1dISMhJjz///PMVHBysiIgIXXLJJWrSpIlee+011a9/pFj7/fff67vvvtOIESMkeb7Hl156qbZv3+4eXsvLy9NFF13k8Rd7UFBQpfflqK5du3pUPiTpzTffVJ8+fRQbG+vR19G5S0ff6/POO0+///67hg0bptdee007d+6sdP7zzjtPb7/9tu6++26tXr1apaWlJ30/6uLPF9R9JBJ+1qxZM4WFhblLqidztCxZ1az32NjYSmXLpk2bVjrObrdX64dKdbVt21bvvfeeoqOjNXbsWLVt21Zt27bV448/fsLX7dq167jXcXT/nx17LUeHD2pyLTabTaNHj9azzz6ruXPnql27durdu3eVx3722Wfq16+fpCOraj755BPl5+crKyurxv3WZJWCzWbTqFGjdODAATmdzmrNjdi6dauCg4M9tqO/dLy1a9cuOZ3OSmPo0dHRql+/vvv7s2vXLtWvX19RUVEexzkcjpP2ERkZqby8PJ199tm655571KlTJ8XGxmrKlCke80Sqa8eOHZJU7QmEzzzzjPLz87Vq1SqNGTNGmzZt8kiAjs6VuOuuuyq9v+np6ZLk/iW+a9euKq/5eO9DVZ+J3377TW+88Ualvjp16uTR1zXXXKOFCxfqp59+0t/+9jdFR0crKSlJK1eudJ/riSee0KRJk7R8+XL16dNHUVFRGjx48AmXt9bFny+o+5gj4Wf16tVT37599fbbb+uXX3456Q/Ao/9wt2/fXunY//znPx5/DZ2qo3/RlZWVeYz5V/XXT+/evdW7d2+Vl5dr/fr1mjlzpjIyMuRwODR06NAqz9+0aVNt3769Uvt//vMfSfLptfzZqFGjNHnyZM2dO1cPPfTQcY9btmyZgoOD9eabb3r8dVvV/QxOpiZr9bdv366xY8fq7LPPVkFBge666y498cQTJ3xNbGys8vPzPdrat29f4zj/rGnTpvr0009ljPGIv6ioSIcPH3Z/f5o2barDhw9r9+7dHsnEsXNAjqdLly5atmyZjDH66quvtHjxYj3wwAMKDQ3V3XffXaOYj64IOXZi4PF06NDBPcGyT58+Ki8v19NPP62XXnpJl19+ufsaMzMzNWTIkCrPcfR9btq0aaVJmtLx34eqPhPNmjVT165dj/u5PJpkS9Lo0aM1evRolZSU6MMPP9SUKVM0cOBAbdmyRa1atVJ4eLjuv/9+3X///frtt9/c1YlBgwbpu+++q/L8tfnzBYGDikQdkJmZKWOMbrzxRh08eLDS/kOHDumNN96QJF100UWSVGkCV35+vjZt2qS+ffv6LK6jKw+++uorj/ajsVSlXr16SkpK0uzZsyUdmVB2PH379tWqVavcicNRzzzzjMLCwixbGtmiRQtNmDBBgwYN0siRI4973NEbFf15ImdpaamWLFlS6Vhf/RVWXl6uYcOGyWaz6e2331ZOTo5mzpypV1555YSva9CggXr06OGxncp9MaQj3599+/ZVSpyeeeYZ937pyHCRJL3wwgsexy1btqxG/dlsNnXr1k2PPfaYGjdu7PHZqe77265dO/fQ1bErS6pj2rRpatKkiSZPnqyKigq1b99eCQkJ+vLLLyu9v8e+zykpKVq1apVHol1RUaF//vOf1e5/4MCB+uabb9S2bdsq+/pzInFUeHi4+vfvr6ysLB08eFAFBQWVjnE4HBo1apSGDRumzZs3e6ym+rPa/PmCwEFFog7o2bOn5syZo/T0dHXv3l233HKLOnXqpEOHDmnDhg2aN2+eOnfurEGDBql9+/a66aabNHPmTAUFBal///7uWdUtW7bUnXfe6bO4Lr30UkVFRen666/XAw88oPr162vx4sX6+eefPY6bO3euVq1apQEDBiguLk4HDhzQwoULJUkXX3zxcc8/ZcoU95jw5MmTFRUVpeeee07/+te/NG3aNEVGRvrsWo718MMPn/SYAQMGaPr06Ro+fLhuuukm7dq1S48++miVS3SP/lX9wgsvqE2bNgoJCanWvIZjTZkyRR999JFWrFghp9Op8ePHKy8vT9dff70SExMVHx9f43OeyA8//KCXXnqpUnvHjh117bXXavbs2Ro5cqS2bt2qLl266OOPP1Z2drYuvfRS9/f2kksuUa9evTR+/HgVFxere/fuWrt2rTvhCAo6/t8rb775pp588kkNHjxYbdq0kTFGr7zyin7//XelpaW5j+vSpYtWr16tN954QzExMYqIiDhuxWX27NkaNGiQzj//fN15552Ki4vTtm3b9O677+q555474fvRpEkTZWZmauLEiVq6dKmuvvpqPfXUU+rfv7/+8pe/aNSoUWrRooV2796tTZs26YsvvnAnCllZWXrjjTfUt29fZWVlKTQ0VHPnzlVJSclJ34ejHnjgAa1cuVLJycm6/fbb1b59ex04cEBbt27VW2+9pblz5+qMM87QjTfeqNDQUPXq1UsxMTFyuVzKyclRZGSkzj33XElSUlKSBg4cqK5du6pJkybatGmTlixZop49ex53JVVt/nxBAPHrVE942Lhxoxk5cqSJi4szDRo0MOHh4SYxMdFMnjzZFBUVuY8rLy83jzzyiGnXrp0JDg42zZo1M1dffbX5+eefPc6XkpJiOnXqVKmfkSNHmlatWnm06Tgz+D/77DOTnJxswsPDTYsWLcyUKVPM008/7TELfe3ateZ//ud/TKtWrYzdbjdNmzY1KSkp5vXXX6/Ux59n8BtjzNdff20GDRpkIiMjTYMGDUy3bt3MokWLPI45OjP/n//8p0d7YWGhkVTp+GP9edXGiVS18mLhwoWmffv2xm63mzZt2picnByzYMGCSrPwt27davr162ciIiKMJPf7e7zY/7zv6IqDFStWmKCgoErv0a5du0xcXJw599xzTVlZ2QmvoSYkHXc7GsOuXbvMzTffbGJiYkz9+vVNq1atTGZmpjlw4IDHuXbv3m1Gjx5tGjdubMLCwkxaWppZt26dkWQef/xx93HHrtr47rvvzLBhw0zbtm1NaGioiYyMNOedd55ZvHixx/k3btxoevXqZcLCwowk9/fpeCtf1q5da/r3728iIyON3W43bdu2NXfeeWelOKr6TJSWlpq4uDiTkJBgDh8+bIwx5ssvvzRXXnmliY6ONsHBwcbpdJqLLrrIzJ071+O1H330kUlKSjJ2u904nU4zYcIE9yqXo6uQjDmyamPAgAFVfl927Nhhbr/9dhMfH2+Cg4NNVFSU6d69u8nKyjL79u0zxhiTm5tr+vTpYxwOh2nQoIGJjY01V155pcfqnrvvvtv06NHDNGnSxP35vfPOO83OnTvdx1S1MsuKny8IbDZjTnFqNwBUYenSpRoxYoQ++eQTJScn+zsc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vHlz97Gff/659u3bp6ZNm6phw4burbCwUD/88IMkadOmTerZs6dHH8d+/WebNm1SWVmZ+vbtW+2Yd+zYoZ9//lnXX3+9RxwPPvigRxzdunVTWFhYteIAEBgY2gBqWZ8+fTRnzhwFBwcrNjbWY0JleHi4x7EVFRWKiYnR6tWrK52ncePGXvUfGhpa49dUVFRIOjK8kZSU5LHv6BCMMcareACc3kgkgFoWHh6uM888s1rHnnPOOXK5XKpfv75at25d5TEdOnTQunXrdO2117rb1q1bd9xzJiQkKDQ0VO+//75uuOGGSvuPzokoLy93tzkcDrVo0UI//vijRowYUeV5O3bsqCVLlqi0tNSdrJwoDgCBgaENoA67+OKL1bNnTw0ePFjvvvuutm7dqjVr1ujee+/V+vXrJUl33HGHFi5cqIULF2rLli2aMmWKCgoKjnvOkJAQTZo0SRMnTtQzzzyjH374QevWrdOCBQskSdHR0QoNDdU777yj3377TX/88YekIze5ysnJ0eOPP64tW7bo66+/1qJFizR9+nRJ0vDhwxUUFKTrr79e3377rd566y09+uijFr9DAPyNRAKow2w2m9566y1deOGFuu6669SuXTsNHTpUW7dulcPhkCRdddVVmjx5siZNmqTu3bvrp59+0i233HLC8953330aP368Jk+erA4dOuiqq65SUVGRJKl+/fp64okn9NRTTyk2NlaXXXaZJOmGG27Q008/rcWLF6tLly5KSUnR4sWL3ctFGzZsqDfeeEPffvutEhMTlZWVpUceecTCdwdAXWAzDGwCAAAvUZEAAABeI5EAAABeI5EAAABeI5EAAABeI5EAAABeI5EAAABeI5EAAABeI5EAAABeI5EAAABeI5EAAABeI5EAAABeI5EAAABe+3+OFHDARS9J8QAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "=== SVC ===\n",
      "أفضل معاملات: {'clf__C': 10, 'clf__gamma': 'scale', 'clf__kernel': 'rbf'}\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.96      0.99      0.97        90\n",
      "           1       0.98      0.92      0.95        53\n",
      "\n",
      "    accuracy                           0.97       143\n",
      "   macro avg       0.97      0.96      0.96       143\n",
      "weighted avg       0.97      0.97      0.96       143\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhIAAAHFCAYAAACn7hC1AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAOlVJREFUeJzt3XtYVWXax/HfBmELCJSnvaEkUak8p1gEZWAmZY6T43TwUGFaWdhMpKkvManVxFaaMUtK0/KQjVlT6WhTpmXRQS10tIyc7ICnGYk0FY+o8Lx/+LrftqDCbi827r6frnVd8ay113MvLpWb+37WWjZjjBEAAIAXgvwdAAAAOHuRSAAAAK+RSAAAAK+RSAAAAK+RSAAAAK+RSAAAAK+RSAAAAK+RSAAAAK+RSAAAAK+RSMBvvvjiC91xxx2Kj49Xw4YN1ahRI3Xt2lV5eXn66aefLJ173bp1Sk1NVXR0tGw2m6ZMmeLzOWw2myZMmODz857JnDlzZLPZZLPZ9MEHH1TZb4xRmzZtZLPZlJaW5tUczz77rObMmVOrz3zwwQenjKku7Nq1S9nZ2WrXrp0iIiIUHR2tiy++WLfddpu++OILSdLvfvc7hYWFac+ePac8z+DBgxUSEqIffvjBPVZWVqbHH39c3bp1U1RUlOx2u1q2bKmhQ4fqX//6l9WXBvhVA38HgF+nmTNnKjMzUxdddJFGjx6tdu3a6ejRo1qzZo2mT5+uVatWaeHChZbNP3ToUB04cEALFizQueeeq5YtW/p8jlWrVun888/3+XlrKjIyUi+88EKVZKGgoEDfffedIiMjvT73s88+q6ZNm2rIkCE1/kzXrl21atUqtWvXzut5vbV//35dfvnl2r9/v0aPHq3OnTvr0KFD2rRpk9544w2tX79enTp10rBhw7Ro0SLNnz9fmZmZVc6zd+9eLVy4UL/5zW/kcDgkSd99953S09NVWlqqe+65R4888ogaNWqkzZs369VXX1ViYqL27Nmj6Ojour5soG4YoI6tXLnSBAcHm+uuu84cPny4yv7y8nLzj3/8w9IYGjRoYO69915L5/CX2bNnG0nmzjvvNGFhYWbv3r0e+2+99VaTnJxs2rdvb1JTU72aozafPXLkiDl69KhX8/jKrFmzjCSzYsWKavdXVFQYY4w5duyYiY2NNYmJidUeN23aNCPJLFmyxH18x44dTVRUlNmwYUO1n3nrrbfMgQMHfHAVQP1EawN1Ljc3VzabTTNmzJDdbq+yPzQ0VL/97W/dX1dWViovL08XX3yx7Ha7mjdvrttvv13bt2/3+FxaWpo6dOigwsJCde/eXeHh4WrVqpUmTpyoyspKSf9f9j927JimTZvmbgFI0oQJE9z//3MnPrN582b32IoVK5SWlqYmTZooLCxMcXFx+v3vf6+DBw+6j6mutfHll1/qhhtu0LnnnquGDRvqkksu0dy5cz2OOdECePnll5WTk6PY2FhFRUXpmmuu0ddff12zb7KkgQMHSpJefvll99jevXv1+uuva+jQodV+5pFHHlFSUpIaN26sqKgode3aVS+88ILMz97t17JlSxUVFamgoMD9/TtR0TkR+7x58zRq1Cidd955stvt+vbbb6u0Nnbu3KkWLVooJSVFR48edZ//q6++UkREhG677bYaX+uZ7Nq1S5IUExNT7f6goOP/FAYHBysjI0Nr167Vhg0bqhw3e/ZsxcTEqHfv3pKkRYsWacOGDcrOzlaHDh2qPXfv3r0VHh7ui8sA6iUSCdSpiooKrVixQomJiWrRokWNPnPvvfdq7Nix6tWrlxYvXqzHHntMS5cuVUpKinbu3OlxbElJiQYPHqxbb71VixcvVu/evZWdna2XXnpJktSnTx+tWrVKknTjjTdq1apV7q9ravPmzerTp49CQ0M1a9YsLV26VBMnTlRERISOHDlyys99/fXXSklJUVFRkZ5++mm98cYbateunYYMGaK8vLwqxz/00EPasmWLnn/+ec2YMUPffPON+vbtq4qKihrFGRUVpRtvvFGzZs1yj7388ssKCgrSLbfccsprGz58uF599VW98cYb6t+/v/7whz/osccecx+zcOFCtWrVSl26dHF//05uQ2VnZ2vr1q2aPn26lixZoubNm1eZq2nTplqwYIEKCws1duxYSdLBgwd10003KS4uTtOnT6/RddZEcnKyJOn222/XokWL3IlFdYYOHSqbzebxfZOOJzifffaZMjIyFBwcLElatmyZJKlfv34+ixU46/i7JIJfl5KSEiPJDBgwoEbHb9y40UgymZmZHuOffvqpkWQeeugh91hqaqqRZD799FOPY9u1a2euvfZajzFJZsSIER5j48ePN9X9lTjRKiguLjbGGPPaa68ZSWb9+vWnjV2SGT9+vPvrAQMGGLvdbrZu3epxXO/evU14eLjZs2ePMcaY999/30gy119/vcdxr776qpFkVq1addp5T8RbWFjoPteXX35pjDHm0ksvNUOGDDHGnLk9UVFRYY4ePWoeffRR06RJE1NZWened6rPnpjvqquuOuW+999/32N80qRJRpJZuHChycjIMGFhYeaLL7447TV649FHHzWhoaFGkpFk4uPjzT333GM+//zzKsempqaapk2bmiNHjrjHRo0aZSSZTZs2uceuu+46I6naFh3wa0FFAvXa+++/L0lVFvVddtllatu2rd577z2PcafTqcsuu8xjrFOnTtqyZYvPYrrkkksUGhqqu+++W3PnztX3339fo8+tWLFCPXv2rFKJGTJkiA4ePFilMvLz9o50/Dok1epaUlNT1bp1a82aNUsbNmxQYWHhKdsaJ2K85pprFB0dreDgYIWEhGjcuHHatWuXSktLazzv73//+xofO3r0aPXp00cDBw7U3LlzNXXqVHXs2PGMnzt27JjHZn7WfqnOww8/rK1bt2rWrFkaPny4GjVqpOnTpysxMdGj/SNJw4YN086dO7V48WL3XC+99JK6d++uhISEGl8b8GtAIoE61bRpU4WHh6u4uLhGx5+utx0bG1ulRN2kSZMqx9ntdh06dMiLaKvXunVrvfvuu2revLlGjBih1q1bq3Xr1nrqqadO+7ldu3ad8jpO7P+5k6/lxHqS2lyLzWbTHXfcoZdeeknTp0/XhRdeqO7du1d77Geffab09HRJx++q+eSTT1RYWKicnJxaz3uqtQininHIkCE6fPiwnE5njdZGbN68WSEhIR5bQUHBGT/ncDh0xx13aPr06friiy9UUFCg0NBQ3X///R7H3XjjjYqOjtbs2bMlSW+99ZZ++OEHDRs2zOO4uLg4Sarxn2cgEJFIoE4FBwerZ8+eWrt2bZXFktU58cN0x44dVfb997//VdOmTX0WW8OGDSVJ5eXlHuMnr8OQpO7du2vJkiXau3evVq9ereTkZGVlZWnBggWnPH+TJk1OeR2SfHotPzdkyBDt3LlT06dP1x133HHK4xYsWKCQkBC9+eabuvnmm5WSkqJu3bp5NWd1i1ZPZceOHRoxYoQuueQS7dq1Sw8++OAZPxMbG6vCwkKPLTExsdZxXnXVVUpPT9ePP/7oUXEJCwvTwIEDtXTpUu3YsUOz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W3Fxsb777jtJ0saNG5WcnOwxx8lf/9zGjRtVXl6unj171jjmH3/8Udu2bdOwYcM84vjzn//sEUfnzp0VHh5eozgABAZaG0Ad69Gjh6ZNm6aQkBDFxsZ6LKiMiIjwOLayslIxMTH64IMPqpznnHPO8Wr+sLCwWn+msrJS0vH2RlJSkse+Ey0YY4xX8QA4u5FIAHUsIiJCbdq0qdGxXbt2VUlJiRo0aKCWLVtWe0zbtm21evVq3X777e6x1atXn/KcCQkJCgsL03vvvac777yzyv4TayIqKircYw6HQ+edd56+//57DR48uNrztmvXTvPmzdOhQ4fcycrp4gAQGGhtAPXYNddco+TkZPXr10/vvPOONm/erJUrV+pPf/qT1qxZI0m6//77NWvWLM2aNUubNm3S+PHjVVRUdMpzNmzYUGPHjtWYMWP04osv6rvvvtPq1av1wgsvSJKaN2+usLAwLV26VD/88IP27t0r6fhDrlwul5566ilt2rRJGzZs0OzZszV58mRJ0qBBgxQUFKRhw4bpq6++0ltvvaW//OUvFn+HAPgbiQRQj9lsNr311lu66qqrNHToUF144YUaMGCANm/eLIfDIUm65ZZbNG7cOI0dO1aJiYnasmWL7r333tOe9+GHH9aoUaM0btw4tW3bVrfccotKS0slSQ0aNNDTTz+t5557TrGxsbrhhhskSXfeeaeef/55zZkzRx07dlRqaqrmzJnjvl20UaNGWrJkib766it16dJFOTk5mjRpkoXfHQD1gc3Q2AQAAF6iIgEAALxGIgEAALxGIgEAALxGIgEAALxGIgEAALxGIgEAALxGIgEAALxGIgEAALxGIgEAALxGIgEAALxGIgEAALxGIgEAALz2v7aLA46+Sod0AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "=== RandomForest ===\n",
      "أفضل معاملات: {'clf__max_depth': None, 'clf__n_estimators': 200}\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.95      1.00      0.97        90\n",
      "           1       1.00      0.91      0.95        53\n",
      "\n",
      "    accuracy                           0.97       143\n",
      "   macro avg       0.97      0.95      0.96       143\n",
      "weighted avg       0.97      0.97      0.96       143\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhIAAAHFCAYAAACn7hC1AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAQjhJREFUeJzt3XtclGX+//H3oDgCAgrqDJgHNDRPqWkRuIamsqm5uXbQ6IBZZmG7kaUuy6Z0gqRdozSPeapWs93KrC0TO1AtWlhaZm4n8VQSHkgNdUC4f3/0Y76NoDLT3AxOr2eP+/GI677mvj4Do3z8XNd13xbDMAwBAAB4IMDXAQAAgHMXiQQAAPAYiQQAAPAYiQQAAPAYiQQAAPAYiQQAAPAYiQQAAPAYiQQAAPAYiQQAAPAYiYSf+eyzz3TLLbcoJiZGTZs2VbNmzXTRRRcpJydHhw4dMnXszZs3KzExUeHh4bJYLMrNzfX6GBaLRZmZmV6/7tksW7ZMFotFFotF7777bo3zhmHo/PPPl8Vi0cCBAz0aY+7cuVq2bJlbr3n33XdPG1N9qP6eVB9hYWFKSEjQypUrfRKPJO3cuVMWi8Xt76U3x67t6NevX73HUxcrVqww5c8qfjsa+zoAeM+iRYuUmpqqLl26aMqUKerWrZsqKiq0adMmzZ8/Xxs2bNDLL79s2vjjx49XWVmZnn/+ebVo0UIdOnTw+hgbNmzQeeed5/Xr1lVoaKgWL15cI1nIz8/Xt99+q9DQUI+vPXfuXLVs2VLjxo2r82suuugibdiwQd26dfN43F/rmmuu0b333ivDMFRUVKSsrCwlJyfLMAwlJyf7LC5f+tOf/lTjvTdr1sxH0ZzZihUr9PnnnystLc3XoeAcRSLhJzZs2KA777xTQ4cO1erVq2W1Wp3nhg4dqnvvvVdr1641NYbPP/9cEyZM0LBhw0wb49JLLzXt2nUxZswY/fOf/9RTTz2lsLAwZ/vixYsVHx+vI0eO1EscFRUVzgqAr78nNpvNGUN8fLz69++vDh06aMGCBb/ZRKJdu3am/Fyqf+6NG/NXNxoOpjb8RFZWliwWixYuXOiSRFRr0qSJ/vCHPzi/rqqqUk5Oji644AJZrVa1bt1aN998s/bu3evyuoEDB6pHjx4qLCzUgAEDFBwcrI4dO+rRRx9VVVWVpP8r+588eVLz5s1zlnIlKTMz0/n/v1T9mp07dzrb3n77bQ0cOFCRkZEKCgpSu3btdPXVV+vYsWPOPrVNbXz++ee66qqr1KJFCzVt2lS9e/fW8uXLXfpUTwGsXLlSGRkZio6OVlhYmIYMGaIvv/yybt9kSddff70kuZTuDx8+rBdffFHjx4+v9TUPPPCA4uLiFBERobCwMF100UVavHixfvm8vA4dOmjbtm3Kz893fv+qKzrVsT/77LO699571aZNG1mtVn3zzTc1pjYOHDigtm3bKiEhQRUVFc7rf/HFFwoJCdFNN91U5/fqqfbt26tVq1b64YcfXNpXrVqlpKQkRUVFKSgoSF27dtVf/vIXlZWVufQbN26cmjVrpm+++UbDhw9Xs2bN1LZtW917771yOBwufb///ntdd911Cg0NVXh4uMaMGaPi4uJa41qzZo3i4+MVHBys0NBQDR06VBs2bHDpU/15/eyzz3TttdcqPDxcERERmjx5sk6ePKkvv/xSV1xxhUJDQ9WhQwfl5OR49D1y5zNb289dktavX6/BgwcrLCxMwcHB6t+/v9566y2Xa+zfv1+333672rZtK6vVqlatWql///5av369pJ//fP/nP//Rrl27XKZhAHeQSPiByspKvf322+rbt6/atm1bp9fceeedmjZtmoYOHao1a9booYce0tq1a5WQkKADBw649C0uLtYNN9ygG2+8UWvWrNGwYcOUnp6u5557TpI0YsQI51/I11xzjTZs2FDjL+iz2blzp0aMGKEmTZpoyZIlWrt2rR599FGFhISovLz8tK/78ssvlZCQoG3btunJJ5/USy+9pG7dumncuHG1/iX/17/+Vbt27dLTTz+thQsX6uuvv9bIkSNVWVlZpzjDwsJ0zTXXaMmSJc62lStXKiAgQGPGjDnte5s4caJeeOEFvfTSSxo9erT+9Kc/6aGHHnL2efnll9WxY0f16dPH+f07dRoqPT1du3fv1vz58/Xqq6+qdevWNcZq2bKlnn/+eRUWFmratGmSpGPHjunaa69Vu3btNH/+/Dq9z1/j8OHDOnTokDp37uzS/vXXX2v48OFavHix1q5dq7S0NL3wwgsaOXJkjWtUVFToD3/4gwYPHqxXXnlF48eP1+OPP66ZM2c6+xw/flxDhgzRunXrlJ2drX/961+y2+21/hxWrFihq666SmFhYVq5cqUWL16s0tJSDRw4UB988EGN/tddd5169eqlF198URMmTNDjjz+ue+65R6NGjdKIESP08ssv6/LLL9e0adP00ksv1Xh9VVWVTp486XJUJ47ufmZr+7k/99xzSkpKUlhYmJYvX64XXnhBERER+v3vf++STNx0001avXq1pk+frnXr1unpp5/WkCFDdPDgQUk/T6f1799fdrvd+blz988uIAPnvOLiYkOSMXbs2Dr13759uyHJSE1NdWn/8MMPDUnGX//6V2dbYmKiIcn48MMPXfp269bN+P3vf+/SJsmYNGmSS9uMGTOM2j5mS5cuNSQZRUVFhmEYxr///W9DkrFly5Yzxi7JmDFjhvPrsWPHGlar1di9e7dLv2HDhhnBwcHGjz/+aBiGYbzzzjuGJGP48OEu/V544QVDkrFhw4Yzjlsdb2FhofNan3/+uWEYhnHxxRcb48aNMwzDMLp3724kJiae9jqVlZVGRUWF8eCDDxqRkZFGVVWV89zpXls93mWXXXbac++8845L+8yZMw1Jxssvv2ykpKQYQUFBxmeffXbG9+iJ6s9RRUWFUV5ebnz11VfGH/7wByM0NNTYtGnTaV9XVVVlVFRUGPn5+YYk49NPP3WeS0lJMSQZL7zwgstrhg8fbnTp0sX59bx58wxJxiuvvOLSb8KECYYkY+nSpYZh/Pw9j46ONnr27GlUVlY6+x09etRo3bq1kZCQ4Gyr/rz+4x//cLlm7969DUnGSy+95GyrqKgwWrVqZYwePdrZVlRUZEiq9cjLyzMMw/3P7Kk/97KyMiMiIsIYOXKkS3tlZaXRq1cv45JLLnG2NWvWzEhLSzPOZMSIEUb79u3P2Ac4EyoSv0HvvPOOJNVY1HfJJZeoa9euNcqjdrtdl1xyiUvbhRdeqF27dnktpt69e6tJkya6/fbbtXz5cu3YsaNOr3v77bc1ePDgGpWYcePG6dixYzX+dfXL6R3p5/chya33kpiYqE6dOmnJkiXaunWrCgsLTzutUR3jkCFDFB4erkaNGikwMFDTp0/XwYMHVVJSUudxr7766jr3nTJlikaMGKHrr79ey5cv1+zZs9WzZ8+zvu50/4o+k7lz5yowMFBNmjRR586d9cYbb2jlypXq27evS78dO3YoOTlZdrvd+X1ITEyUJG3fvt2lr8ViqVGpOPUz98477yg0NLTGz/TUdRlffvmlvv/+e910000KCPi/v/KaNWumq6++Whs3bnSZPpOkK6+80uXrrl27ymKxuKz/ady4sc4///xaPzt33323CgsLXY64uDhJ7n9mT/25FxQU6NChQ0pJSXH5WVVVVemKK65QYWGhc7rokksu0bJly/Twww9r48aNLtNdgLeQSPiBli1bKjg4WEVFRXXqX13WjIqKqnEuOjraeb5aZGRkjX5Wq1XHjx/3INraderUSevXr1fr1q01adIkderUSZ06ddITTzxxxtcdPHjwtO+j+vwvnfpeqteTuPNeLBaLbrnlFj333HOaP3++OnfurAEDBtTa96OPPlJSUpKkn3fV/Pe//1VhYaEyMjLcHre293mmGMeNG6cTJ07IbrfXaW3Ezp07FRgY6HLk5+ef9XXXXXedCgsLVVBQoAULFig0NFRjx47V119/7ezz008/acCAAfrwww/18MMP691331VhYaFzWuDU70NwcLCaNm3q0ma1WnXixAnn1wcPHpTNZqsRj91ud/n6bJ/3qqoqlZaWurRHRES4fN2kSZNaY2rSpIlLTNXOO+889evXz+Wo3tHj7mf21L7Va0+uueaaGj+vmTNnyjAM51bvVatWKSUlRU8//bTi4+MVERGhm2+++bTrSABPsPTXDzRq1EiDBw/WG2+8ob179551e2T1L9N9+/bV6Pv999+rZcuWXout+i9eh8Phsgj01HUYkjRgwAANGDBAlZWV2rRpk2bPnq20tDTZbDaNHTu21utHRkZq3759Ndq///57SfLqe/mlcePGafr06Zo/f74eeeSR0/Z7/vnnFRgYqNdee83ll9Dq1avdHtOdRXD79u3TpEmT1Lt3b23btk333XefnnzyyTO+Jjo6WoWFhS5tXbp0OetYrVq1ct4jIT4+Xl27dlViYqLuuecevfbaa5J+/lf4999/r3fffddZhZCkH3/8sc7v6VSRkZH66KOParSf+kvyl5/3U33//fcKCAhQixYtPI7DXe5+Zk/9uVefnz179ml3hlQnWC1btlRubq5yc3O1e/durVmzRn/5y19UUlJi+i4u/HZQkfAT6enpMgxDEyZMqHVxYkVFhV599VVJ0uWXXy5JzsWS1QoLC7V9+3YNHjzYa3FV7zz47LPPXNqrY6lNo0aNFBcXp6eeekqS9Mknn5y27+DBg52/pH7pmWeeUXBwsGlbI9u0aaMpU6Zo5MiRSklJOW2/6q16jRo1crYdP35czz77bI2+3qryVFZW6vrrr5fFYtEbb7yh7OxszZ49u9ZFgb/UpEmT0/4r2h0DBgzQzTffrP/85z/OMn31L8NTdxQtWLDA7etXGzRokI4ePao1a9a4tK9YscLl6y5duqhNmzZasWKFy1RNWVmZXnzxRedOjvryaz+z/fv3V/PmzfXFF1/U+HlVH02aNKnxunbt2umuu+7S0KFDXf5Mebu6iN8eKhJ+Ij4+XvPmzVNqaqr69u2rO++8U927d1dFRYU2b96shQsXqkePHho5cqS6dOmi22+/XbNnz1ZAQICGDRumnTt36v7771fbtm11zz33eC2u4cOHKyIiQrfeeqsefPBBNW7cWMuWLdOePXtc+s2fP19vv/22RowYoXbt2unEiRPOnRFDhgw57fVnzJih1157TYMGDdL06dMVERGhf/7zn/rPf/6jnJwchYeHe+29nOrRRx89a58RI0Zo1qxZSk5O1u23366DBw/q73//e61bdHv27Knnn39eq1atUseOHdW0adM6rWs41YwZM/T+++9r3bp1stvtuvfee5Wfn69bb71Vffr0UUxMjNvXdNdDDz2kVatW6f7779f69euVkJCgFi1a6I477tCMGTMUGBiof/7zn/r00089HuPmm2/W448/rptvvlmPPPKIYmNj9frrr+vNN9906RcQEKCcnBzdcMMNuvLKKzVx4kQ5HA499thj+vHHH+v0c/SmX/uZbdasmWbPnq2UlBQdOnRI11xzjVq3bq39+/fr008/1f79+zVv3jwdPnxYgwYNUnJysi644AKFhoaqsLBQa9eu1ejRo53X69mzp1566SXNmzdPffv2VUBAQIO9CycaKN+u9YS3bdmyxUhJSTHatWtnNGnSxAgJCTH69OljTJ8+3SgpKXH2q6ysNGbOnGl07tzZCAwMNFq2bGnceOONxp49e1yul5iYaHTv3r3GOCkpKTVWequWXRuGYRgfffSRkZCQYISEhBht2rQxZsyYYTz99NMuuzY2bNhg/PGPfzTat29vWK1WIzIy0khMTDTWrFlTY4xf7towDMPYunWrMXLkSCM8PNxo0qSJ0atXL+eK/WrVK+D/9a9/ubRXr7I/tf+pfrlr40xq23mxZMkSo0uXLobVajU6duxoZGdnG4sXL3Z5/4ZhGDt37jSSkpKM0NBQQ5Lz+3u62H95rnrXxrp164yAgIAa36ODBw8a7dq1My6++GLD4XCc8T2443Q/c8MwjClTphiSjPz8fMMwDKOgoMCIj483goODjVatWhm33Xab8cknn9T4/qekpBghISE1rlfbDqC9e/caV199tdGsWTMjNDTUuPrqq42CgoJaf6arV6824uLijKZNmxohISHG4MGDjf/+97+1jrF//36X9tPFdOqfj+rP02OPPVbr96Tar/nMVsvPzzdGjBhhREREGIGBgUabNm2MESNGOPufOHHCuOOOO4wLL7zQCAsLM4KCgowuXboYM2bMMMrKypzXOXTokHHNNdcYzZs3NywWS627rIAzsRhGHZZlAwAA1II1EgAAwGMkEgAAwGMkEgAAwGMkEgAA+KmjR48qLS1N7du3V1BQkBISElzuF2MYhjIzMxUdHa2goCANHDhQ27Ztc2sMEgkAAPzUbbfdpry8PD377LPaunWrkpKSNGTIEH333XeSpJycHM2aNUtz5sxRYWGh7Ha7hg4dqqNHj9Z5DHZtAADgh44fP67Q0FC98sorGjFihLO9d+/euvLKK/XQQw8pOjpaaWlpzqcFOxwO2Ww2zZw5UxMnTqzTOFQkAAA4RzgcDh05csTlcDgctfY9efKkKisrazwjJigoSB988IGKiopUXFzsfB6Q9POdThMTE1VQUFDnmPzyzpZBfe7ydQhAg1RaOMfXIQANTtN6+E3ord9L065qqQceeMClbcaMGcrMzKzRNzQ0VPHx8XrooYfUtWtX2Ww2rVy5Uh9++KFiY2Odz6U59eF3NpvNrSciU5EAAOAckZ6ersOHD7sc6enpp+3/7LPPyjAMtWnTRlarVU8++aSSk5Ndnv9z6oPhDMNw6yGBflmRAACgQbF459/tVqu11mf1nE6nTp2Un5+vsrIyHTlyRFFRURozZoxiYmJkt9sl/fzE3F8+rr6kpKRGleJMqEgAAGA2i8U7h4dCQkIUFRWl0tJSvfnmm7rqqqucyUReXp6zX3l5ufLz85WQkFDna1ORAADAbF6qSLjrzTfflGEY6tKli7755htNmTJFXbp00S233CKLxaK0tDRlZWUpNjZWsbGxysrKUnBwsJKTk+s8BokEAAB+qnoNxd69exUREaGrr75ajzzyiAIDAyVJU6dO1fHjx5WamqrS0lLFxcVp3bp1Cg0NrfMYfnkfCXZtALVj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799f0dHR2rVrlyQpNzdXr7zyileDAwDAH3hr10ZD5HYiMW/ePE2ePFnDhw/Xjz/+qMrKSklS8+bNlZub6+34AAA451m8dDREbicSs2fP1qJFi5SRkaFGjRo52/v16+fyMBAAAOD/3F5iUlRUpD59+tRot1qtKisr80pQAAD4E3cfAX4ucbsiERMToy1bttRof+ONN9StWzdvxAQAgF+xWLxzNERuVySmTJmiSZMm6cSJEzIMQx999JFWrlyp7OxsPf3002bECAAAGii3E4lbbrlFJ0+e1NSpU3Xs2DElJyerTZs2euKJJzR27FgzYgQA4JzWUHdceINHt+GYMGGCJkyYoAMHDqiqqkqtW7f2dlwAAPgNP84jft0tslu2bOmtOAAAwDnI7UQiJibmjCWaHTt2/KqAAADwN/68a8PtRCItLc3l64qKCm3evFlr167VlClTvBUXAAB+w4/zCPcTibvvvrvW9qeeekqbNm361QEBAOBv/Hmxpdce2jVs2DC9+OKL3rocAAA4B3jt4an//ve/FRER4a3L/Sp7P8j1dQhAg3Tnv7mNPXCqpWN7mj6GPz9q2+1Eok+fPi4lGsMwVFxcrP3792vu3LleDQ4AAH/gz1MbbicSo0aNcvk6ICBArVq10sCBA3XBBRd4Ky4AAHAOcCuROHnypDp06KDf//73stvtZsUEAIBfCfDfgoR70zaNGzfWnXfeKYfDYVY8AAD4nQCLd46GyO31H3Fxcdq8ebMZsQAAgHOM22skUlNTde+992rv3r3q27evQkJCXM5feOGFXgsOAAB/wGJLSePHj1dubq7GjBkjSfrzn//sPGexWGQYhiwWiyorK70fJQAA57CGOi3hDXVOJJYvX65HH31URUVFZsYDAADOIXVOJAzDkCS1b9/etGAAAPBHfjyz4d4aCX+e4wEAwCw8/fP/69y581mTiUOHDv2qgAAA8DfcIvv/e+CBBxQeHm5WLAAA4BzjViIxduxYtW7d2qxYAADwS348s1H3RIL1EQAAeMaf10jUedqmetcGAABAtTonElVVVUxrAADgAYvFO8evkZ2dLYvForS0NGebYRjKzMxUdHS0goKCNHDgQG3bts2t6/rzQlIAABoEXz+0q7CwUAsXLqzxGIucnBzNmjVLc+bMUWFhoex2u4YOHaqjR4/W/b15HhYAAGjofvrpJ91www1a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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "=== KNN ===\n",
      "أفضل معاملات: {'clf__n_neighbors': 5, 'clf__weights': 'uniform'}\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.95      0.99      0.97        90\n",
      "           1       0.98      0.91      0.94        53\n",
      "\n",
      "    accuracy                           0.96       143\n",
      "   macro avg       0.96      0.95      0.95       143\n",
      "weighted avg       0.96      0.96      0.96       143\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "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YowePdoICgoyvvjii5N+R09Ich6zZ88+4bySkhJDkvHEE08YhmEYo0aNMkJCQoxdu3YZhvGff092797t/Mzo0aONkJAQwzAM46uvvjICAgKM++67z2Xt4/99A/wJFQk0We+//76ko7vif+/iiy9Wt27d9O6777qM2+12XXzxxS5jvXr10g8//OC1mHr37q0WLVro9ttvV0FBgbZt2+bW59577z0NGjSoTiVmzJgxOnjwYJ3KyO/bO9LR7yGpQd8lISFBnTt31ty5c7Vp0yYVFxefsK1xLMbBgwcrPDxcAQEBCgwM1MMPP6xffvlFZWVlbq97zTXXuD130qRJGjJkiEaOHKmCggLNnDlTPXv2POXnqqurXQ7jd+2XExkwYIDOOOMMPfLII/ruu+/ciu/xxx/XkSNH9Mgjj7g1v2vXrho3bpzy8vK0Y8cOtz4DnO5IJNBo2rZtq+DgYJWUlLg1/5dffpEkRURE1DkXGRnpPH9MmzZt6syzWq1e3fzWuXNnrVq1Su3atdOECRPUuXNnde7c+ZR98V9++eWE3+PY+d87/rsc20/SkO9isVh0yy23aMGCBZo1a5bOO+88DRgwoN65n376qZKTkyUdvavmX//6l4qLi5WZmdngdev7nieLccyYMTp8+LDsdrtbeyO2b9+uwMBAl6OoqOiUn+vVq5dWrVqlgwcPKiEhQd98880pP9OxY0elpaXp+eef17fffuvWd8rOzlZAQIAeeught+YDpzsSCTSagIAADRo0SOvXr6+zWbI+x/4w3bVrV51z//73v9W2bVuvxdayZUtJUmVlpcv48fswpKN/s33zzTe1d+9erV27VnFxcUpPT6/3uQPHtGnT5oTfQ5JXv8vvjRkzRnv27NGsWbNOejfM4sWLFRgYqLfeekvXX3+94uPj1a9fP4/WrG/T6ons2rVLEyZMUO/evfXLL7+ccPPj70VGRqq4uNjliImJcWu9mJgYrVq1SocPH9bAgQPd2sD64IMPKjg4WA888IBba0RERCg9PV0LFizQF1984dZngNMZiQQaVUZGhgzD0G233Vbv5sQjR47ozTfflHR057wk52bJY4qLi7V161YNGjTIa3Edu/Pg+P/wH4ulPgEBAYqNjdUzzzwjSfrss89OOHfQoEF67733nInDMS+++KKCg4PVv39/DyM/ubPPPluTJk3S0KFDNXr0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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "=== NaiveBayes ===\n",
      "أفضل معاملات: {'clf__var_smoothing': 1e-09}\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.94      0.98      0.96        90\n",
      "           1       0.96      0.89      0.92        53\n",
      "\n",
      "    accuracy                           0.94       143\n",
      "   macro avg       0.95      0.93      0.94       143\n",
      "weighted avg       0.94      0.94      0.94       143\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhIAAAHFCAYAAACn7hC1AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAPulJREFUeJzt3XtclGX+//H3oDKAAomHGTEPqOQ5NU1WSsEMNjO/udaWhwoPlantxlrqEqXWFqhbhklqmgfKNavNXPOXJh2kWrWwtAO6WYmnTSLLxFBR4fr94df5NoIK09wMTq9nj/vxaK77nvv63DMRHz7Xdd23zRhjBAAA4IEAXwcAAAAuXiQSAADAYyQSAADAYyQSAADAYyQSAADAYyQSAADAYyQSAADAYyQSAADAYyQSAADAYyQSv2GfffaZRo4cqaioKAUFBalevXq64oorNHPmTP3444+W9r1161bFxcUpPDxcNptNGRkZXu/DZrNp2rRpXj/vhSxdulQ2m002m00bNmwot98YozZt2shmsyk+Pt6jPubOnaulS5dW6T0bNmw4Z0zV4cxnMn369HL7znxmW7ZsqfJ5q+O6fvmdntkaNWqk+Ph4rVmzxrJ+gYtBbV8HAN9YuHChxo0bp7Zt22rixInq0KGDTp48qS1btmj+/PnatGmTXnvtNcv6HzVqlIqLi7VixQrVr19fLVu29HofmzZt0qWXXur181ZWaGioFi1aVC5ZyMnJ0TfffKPQ0FCPzz137lw1bNhQI0aMqPR7rrjiCm3atEkdOnTwuF9vmD59uu6++25FRER45XzVeV1LlixRu3btZIxRQUGBMjMzNXDgQK1evVoDBw60vH+gJiKR+A3atGmTxo4dq4SEBK1atUp2u921LyEhQffff7/WrVtnaQxffPGF7rrrLvXv39+yPn73u99Zdu7KuPXWW/WPf/xDzzzzjMLCwlztixYtUq9evVRUVFQtcZw8eVI2m01hYWE+/0yuvfZabdiwQY8//riefPJJr5yzOq+rU6dO6tGjh+v1ddddp/r16+vFF18kkcBvFkMbv0FpaWmy2WxasGCBWxJxRmBgoP7nf/7H9bqsrEwzZ85Uu3btZLfb1bhxY91xxx3av3+/2/vi4+PVqVMn5ebmqnfv3goJCVGrVq00ffp0lZWVSfq/EvGpU6c0b948V5lYkqZNm+b69186857du3e72t555x3Fx8erQYMGCg4OVvPmzXXTTTfp6NGjrmMqGtr44osvdOONN6p+/foKCgpS165dlZWV5XbMmVL5iy++qNTUVEVGRiosLEzXXnutvvzyy8p9yJKGDh0qSXrxxRddbYcPH9arr76qUaNGVfieRx55RDExMYqIiFBYWJiuuOIKLVq0SL98tl7Lli2Vl5ennJwc1+d3pqJzJvYXXnhB999/v5o2bSq73a6vv/663BDAwYMH1axZM8XGxurkyZOu82/fvl1169bV7bffXulrray2bdtq9OjReuaZZ7Rnz57zHrtlyxYNGTJELVu2VHBwsFq2bKmhQ4eWe9/Z15WRkSGbzaavv/663DknT56swMBAHTx40NX21ltvqV+/fgoLC1NISIiuuuoqvf3225W6nqCgIAUGBqpOnTpu7ZX5HkePHq2IiAi3/2bPuOaaa9SxY0fXa2OM5s6dq65duyo4OFj169fXzTffrF27drm9b+vWrbrhhhvUuHFj2e12RUZGasCAAeV+VgFvIpH4jSktLdU777yj7t27q1mzZpV6z9ixYzV58mQlJCRo9erV+tvf/qZ169YpNjbW7X/IklRQUKDhw4frtttu0+rVq9W/f3+lpKRo2bJlkqQBAwZo06ZNkqSbb75ZmzZtcr2urN27d2vAgAEKDAzU4sWLtW7dOk2fPl1169bViRMnzvm+L7/8UrGxscrLy9PTTz+tlStXqkOHDhoxYoRmzpxZ7vgHH3xQe/bs0XPPPacFCxboq6++0sCBA1VaWlqpOMPCwnTzzTdr8eLFrrYXX3xRAQEBuvXWW895bWPGjNHLL7+slStXavDgwfrTn/6kv/3tb65jXnvtNbVq1UrdunVzfX5nD0OlpKRo7969mj9/vl5//XU1bty4XF8NGzbUihUrlJubq8mTJ0uSjh49qj/+8Y9q3ry55s+fX6nrrKpp06apVq1aevjhh8973O7du9W2bVtlZGTozTff1IwZM3TgwAFdeeWV5f67+6XbbrtNgYGB5eaQlJaWatmyZRo4cKAaNmwoSVq2bJkSExMVFhamrKwsvfzyy4qIiNDvf//7CpOJ0tJSnTp1SidPntT+/fuVnJys4uJiDRs2rFzsF/oe77vvPh06dEjLly93e+/27dv17rvvavz48a62MWPGKDk5Wddee61WrVqluXPnKi8vT7Gxsfruu+8kScXFxUpISNB3332nZ555RtnZ2crIyFDz5s115MiR837WwK9i8JtSUFBgJJkhQ4ZU6vgdO3YYSWbcuHFu7R9++KGRZB588EFXW1xcnJFkPvzwQ7djO3ToYH7/+9+7tUky48ePd2ubOnWqqeg/ySVLlhhJJj8/3xhjzD//+U8jyWzbtu28sUsyU6dOdb0eMmSIsdvtZu/evW7H9e/f34SEhJiffvrJGGPMu+++aySZ66+/3u24l19+2UgymzZtOm+/Z+LNzc11neuLL74wxhhz5ZVXmhEjRhhjjOnYsaOJi4s753lKS0vNyZMnzaOPPmoaNGhgysrKXPvO9d4z/fXp0+ec+95991239hkzZhhJ5rXXXjNJSUkmODjYfPbZZ+e9Rk/88jtPTU01AQEB5tNPPzXGuH9m53Lq1Cnz888/m7p165rZs2ef97oGDx5sLr30UlNaWupqe+ONN4wk8/rrrxtjjCkuLjYRERFm4MCBbv2UlpaaLl26mJ49e7razsR39ma3283cuXPPe93n+x7j4uJM165d3Y4fO3asCQsLM0eOHDHGGLNp0yYjyTz55JNux+3bt88EBwebSZMmGWOM2bJli5FkVq1add54AG+jIoHzevfddyWp3KS+nj17qn379uX+anM6nerZs6db2+WXX37BMnZVdO3aVYGBgbr77ruVlZVVrrx7Lu+884769etXrhIzYsQIHT16tFxl5JfDO9Lp65BUpWuJi4tT69attXjxYn3++efKzc0957DGmRivvfZahYeHq1atWqpTp46mTJmiH374QYWFhZXu96abbqr0sRMnTtSAAQM0dOhQZWVlac6cOercufMF33fq1Cm3zfyibH8hkyZNUkREhKsSUpGff/5ZkydPVps2bVS7dm3Vrl1b9erVU3FxsXbs2HHe848cOVL79+/XW2+95WpbsmSJnE6na17Oxo0b9eOPPyopKcntOsrKynTdddcpNzdXxcXFbud9/vnnlZubq9zcXK1du1ZJSUkaP368MjMz3Y6r7Pd43333adu2bfr3v/8tSSoqKtILL7ygpKQk1atXT5K0Zs0a2Ww23XbbbW5xOp1OdenSxTWk06ZNG9WvX1+TJ0/W/PnztX379gt8C4B3kEj8xjRs2FAhISHKz8+v1PE//PCDJKlJkybl9kVGRrr2n9GgQYNyx9ntdh07dsyDaCvWunVrvfXWW2rcuLHGjx+v1q1bq3Xr1po9e/Z53/fDDz+c8zrO7P+ls6/lzHySqlyLzWbTyJEjtWzZMs2fP1+XXXaZevfuXeGxH330kRITEyWdXlXz73//W7m5uUpNTa1yvxVd5/liHDFihI4fPy6n01mpuRG7d+9WnTp13LacnJxK9xkWFqaHHnpI69atcyWrZxs2bJgyMzN155136s0339RHH32k3NxcNWrU6IKfRf/+/dWkSRMtWbJEknTo0CGtXr1ad9xxh2rVqiVJriGBm2++udy1zJgxQ8aYcsug27dvrx49eqhHjx667rrr9OyzzyoxMVGTJk3STz/9JKlq3+ONN96oli1b6plnnpF0ej5QcXGx27DGd999J2OMHA5HuTg3b97sGuYJDw9XTk6OunbtqgcffFAdO3ZUZGSkpk6d6jYHBvA2Vm38xtSqVUv9+vXT2rVrtX///gsujzzzy/TAgQPljv32229dY83eEBQUJEkqKSlxmwRa0Xh479691bt3b5WWlmrLli2aM2eOkpOT5XA4NGTIkArP36BBAx04cKBc+7fffitJXr2WXxoxYoSmTJmi+fPn6/HHHz/ncStWrFCdOnW0Zs0a12chSatWrapynxVNWj2XAwcOaPz48eratavy8vL0wAMP6Omnnz7veyIjI5Wbm+vW1rZt2yrFOHbsWM2ePVuTJ0/W2LFj3fYdPnxYa9as0dSpU/XXv/7V1V5SUlKpe5zUqlVLt99+u55++mn99NNPWr58uUpKSjRy5EjXMWe+7zlz5pxz1YfD4bhgX5dffrnefPNN7dy5Uz179qzS9xgQEKDx48frwQcf1JNPPqm5c+eqX79+bp9lw4YNZbPZ9P7771c4OfqXbZ07d9aKFStkjNFnn32mpUuX6tFHH1VwcLDb5wh4ExWJ36CUlBQZY3TXXXdVODnx5MmTev311yWdnj0uyTVZ8ozc3Fzt2LFD/fr181pcZ1YefPbZZ27tZ2KpSK1atRQTE+P6i+6TTz4557H9+vXTO++840ocznj++ecVEhJi2RLCpk2bauLEiRo4cKCSkpLOeZzNZlPt2rVdfzFLp/96feGFF8od660qT2lpqYYOHSqbzaa1a9cqPT1dc+bM0cqVK8/7vsDAQNdf5me2qt4XIzAwUI899phyc3P1yiuvuO2z2WwyxpT7xfncc89VerLryJEjdfz4cb344otaunSpevXqpXbt2rn2X3XVVbrkkku0ffv2ctdyZgsMDLxgP9u2bZMkNWrUyBV7Zb9HSbrzzjsVGBio4cOH68svv9S9997rtv+GG26QMUb//e9/K4yxomEom82mLl266KmnntIll1xy3p8L4NeiIvEb1KtXL82bN0/jxo1T9+7dNXbsWHXs2FEnT57U1q1btWDBAnXq1EkDBw5U27Ztdffdd2vOnDkKCAhQ//79tXv3bj388MNq1qyZ/vKXv3gtruuvv14REREaPXq0Hn30UdWuXVtLly7Vvn373I6bP3++3nnnHQ0YMEDNmzfX8ePHXSsjrr322nOef+rUqVqzZo369u2rKVOmKCIiQv/4xz/0//7f/9PMmTMVHh7utWs5W0V3czzbgAEDNGvWLA0bNkx33323fvjhBz3xxBMV/hV65i/Pl156Sa1atVJQUFCl5jWcberUqXr//fe1fv16OZ1O3X///crJydHo0aPVrVs3RUVFVfmcVTF06FA98cQTWrt2rVt7WFiY+vTpo7///e9q2LChWrZsqZycHC1atEiXXHJJpc7drl079erVS+np6dq3b58WLFjgtr9evXqaM2eOkpKS9OOPP+rmm29W48aN9f333+vTTz/V999/r3nz5rm954svvtCpU6cknR4KW7lypbKzs/WHP/zB9VlV5XuUpEsuuUR33HGH5s2bpxYtWpS7H8VVV12lu+++WyNHjtSWLVvUp08f1a1bVwcOHNAHH3ygzp07a+zYsVqzZo3mzp2rQYMGqVWrVjLGaOXKlfrpp5+UkJBQqc8M8Ijv5nnC17Zt22aSkpJM8+bNTWBgoKlbt67p1q2bmTJliiksLHQdV1paambMmGEuu+wyU6dOHdOwYUNz2223mX379rmdLy4uznTs2LFcP0lJSaZFixZubapg1YYxxnz00UcmNjbW1K1b1zRt2tRMnTrVPPfcc26rNjZt2mT+8Ic/mBYtWhi73W4aNGhg4uLizOrVq8v18ctVG8YY8/nnn5uBAwea8PBwExgYaLp06WKWLFnidsyZVQCvvPKKW3t+fr6RVO74s1VmBYIxFa+8WLx4sWnbtq2x2+2mVatWJj093SxatMjt+o0xZvfu3SYxMdGEhoYaSa7P91yx/3LfmdUN69evNwEBAeU+ox9++ME0b97cXHnllaakpOS811AV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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.svm import SVC\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "from sklearn.naive_bayes import GaussianNB\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.metrics import classification_report, confusion_matrix\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "\n",
    "# قائمة النماذج ومعاملاتها\n",
    "models_params = {\n",
    "    \"LogisticRegression\": (\n",
    "        LogisticRegression(max_iter=2000),\n",
    "        {\"clf__C\": [0.01, 0.1, 1, 10], \"clf__solver\": [\"liblinear\", \"lbfgs\"]}\n",
    "    ),\n",
    "    \"SVC\": (\n",
    "        SVC(),\n",
    "        {\"clf__C\": [0.1, 1, 10], \"clf__kernel\": [\"linear\", \"rbf\"], \"clf__gamma\": [\"scale\", \"auto\"]}\n",
    "    ),\n",
    "    \"RandomForest\": (\n",
    "        RandomForestClassifier(),\n",
    "        {\"clf__n_estimators\": [100, 200], \"clf__max_depth\": [None, 10, 20]}\n",
    "    ),\n",
    "    \"KNN\": (\n",
    "        KNeighborsClassifier(),\n",
    "        {\"clf__n_neighbors\": [3, 5, 7], \"clf__weights\": [\"uniform\", \"distance\"]}\n",
    "    ),\n",
    "    \"NaiveBayes\": (\n",
    "        GaussianNB(),\n",
    "        {\"clf__var_smoothing\": [1e-9, 1e-8, 1e-7]}\n",
    "    )\n",
    "}\n",
    "\n",
    "results = {}\n",
    "\n",
    "# تجربة كل نموذج\n",
    "for name, (model, params) in models_params.items():\n",
    "    pipe = Pipeline(steps=[('preprocessor', preprocessor), ('clf', model)])\n",
    "    grid = GridSearchCV(pipe, param_grid=params, cv=5, scoring='f1')\n",
    "    grid.fit(X_train, y_train)\n",
    "\n",
    "    y_pred = grid.best_estimator_.predict(X_test)\n",
    "\n",
    "    print(f\"\\n=== {name} ===\")\n",
    "    print(\"أفضل معاملات:\", grid.best_params_)\n",
    "    print(classification_report(y_test, y_pred))\n",
    "\n",
    "    # رسم مصفوفة الالتباس\n",
    "    cm = confusion_matrix(y_test, y_pred)\n",
    "    sns.heatmap(cm, annot=True, fmt='d', cmap='Blues')\n",
    "    plt.title(f\"Confusion Matrix - {name}\")\n",
    "    plt.xlabel('Predicted')\n",
    "    plt.ylabel('True')\n",
    "    plt.show()\n",
    "\n",
    "    # حفظ النتائج\n",
    "    results[name] = {\n",
    "        \"best_params\": grid.best_params_,\n",
    "        \"report\": classification_report(y_test, y_pred, output_dict=True)\n",
    "    }\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "bf2037d2-3930-49a7-b770-72915d29596c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "=== SelectKBest k=5 ===\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.96      0.99      0.97        90\n",
      "           1       0.98      0.92      0.95        53\n",
      "\n",
      "    accuracy                           0.97       143\n",
      "   macro avg       0.97      0.96      0.96       143\n",
      "weighted avg       0.97      0.97      0.96       143\n",
      "\n",
      "\n",
      "=== SelectKBest k=10 ===\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.95      0.99      0.97        90\n",
      "           1       0.98      0.91      0.94        53\n",
      "\n",
      "    accuracy                           0.96       143\n",
      "   macro avg       0.96      0.95      0.95       143\n",
      "weighted avg       0.96      0.96      0.96       143\n",
      "\n",
      "\n",
      "=== SelectKBest k=15 ===\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.97      1.00      0.98        90\n",
      "           1       1.00      0.94      0.97        53\n",
      "\n",
      "    accuracy                           0.98       143\n",
      "   macro avg       0.98      0.97      0.98       143\n",
      "weighted avg       0.98      0.98      0.98       143\n",
      "\n",
      "\n",
      "=== SelectKBest k=20 ===\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.97      1.00      0.98        90\n",
      "           1       1.00      0.94      0.97        53\n",
      "\n",
      "    accuracy                           0.98       143\n",
      "   macro avg       0.98      0.97      0.98       143\n",
      "weighted avg       0.98      0.98      0.98       143\n",
      "\n"
     ]
    }
   ],
   "source": [
    "from sklearn.feature_selection import SelectKBest, f_classif\n",
    "\n",
    "# تجربة SelectKBest على لوجستك ريجريشن كنموذج أساسي\n",
    "kbest_results = {}\n",
    "\n",
    "for k in [5, 10, 15, 20]:\n",
    "    pipe_fs = Pipeline(steps=[\n",
    "        ('preprocessor', preprocessor),\n",
    "        ('select', SelectKBest(score_func=f_classif, k=k)),\n",
    "        ('clf', LogisticRegression(max_iter=2000, C=1, solver='liblinear'))\n",
    "    ])\n",
    "    pipe_fs.fit(X_train, y_train)\n",
    "    y_pred_fs = pipe_fs.predict(X_test)\n",
    "    \n",
    "    print(f\"\\n=== SelectKBest k={k} ===\")\n",
    "    print(classification_report(y_test, y_pred_fs))\n",
    "    \n",
    "    kbest_results[k] = classification_report(y_test, y_pred_fs, output_dict=True)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8901440f-6c09-4998-bdb1-49bfcac2990e",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.13.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
