{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Zadanie\n", "\n", "Klasyfikacja za pomocą naiwnej metody bayesowskiej (rozkłady ciągłe). Implementacja powinna założyć, że cechy są ciągłe (do wyboru rozkład normalny i jądrowe wygładzenie). Na wejściu oczekiwany jest zbiór, który zawiera p-cech ciągłych, wektor etykiet oraz wektor prawdopodobieństw a priori dla klas. Na wyjściu otrzymujemy prognozowane etykiety oraz prawdopodobieństwa a posteriori. Dodatkową wartością może być wizualizacja obszarów decyzyjnych w przypadku dwóch cech.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Zbiór danych\n", "\n", "Do prezentacji wyników użyliśmy danych pochodzących z [UCI ML Breast Cancer Wisconsin (Diagnostic) dataset](https://archive.ics.uci.edu/dataset/17/breast+cancer+wisconsin+diagnostic). Zbiór zawiera 30 cech, na podstawie których klasyfikowany jest nowotwór - jako złośliwy lub niezsłośliwy.\n", "\n", "![Grafika zaciągnięta z internetu](https://miro.medium.com/v2/resize:fit:1100/format:webp/1*pxFCmhRFTighUn88baLcSA.png)\n", " " ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
mean radiusmean texturemean perimetermean areamean smoothnessmean compactnessmean concavitymean concave pointsmean symmetrymean fractal dimension...worst textureworst perimeterworst areaworst smoothnessworst compactnessworst concavityworst concave pointsworst symmetryworst fractal dimensiontarget
017.9910.38122.801001.00.118400.277600.30010.147100.24190.07871...17.33184.602019.00.16220.66560.71190.26540.46010.118900.0
120.5717.77132.901326.00.084740.078640.08690.070170.18120.05667...23.41158.801956.00.12380.18660.24160.18600.27500.089020.0
219.6921.25130.001203.00.109600.159900.19740.127900.20690.05999...25.53152.501709.00.14440.42450.45040.24300.36130.087580.0
311.4220.3877.58386.10.142500.283900.24140.105200.25970.09744...26.5098.87567.70.20980.86630.68690.25750.66380.173000.0
420.2914.34135.101297.00.100300.132800.19800.104300.18090.05883...16.67152.201575.00.13740.20500.40000.16250.23640.076780.0
\n", "

5 rows × 31 columns

\n", "
" ], "text/plain": [ " mean radius mean texture mean perimeter mean area mean smoothness \\\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", " mean compactness mean concavity mean concave points mean symmetry \\\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", " mean fractal dimension ... worst texture worst perimeter worst area \\\n", "0 0.07871 ... 17.33 184.60 2019.0 \n", "1 0.05667 ... 23.41 158.80 1956.0 \n", "2 0.05999 ... 25.53 152.50 1709.0 \n", "3 0.09744 ... 26.50 98.87 567.7 \n", "4 0.05883 ... 16.67 152.20 1575.0 \n", "\n", " worst smoothness worst compactness worst concavity worst concave points \\\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", " worst symmetry worst fractal dimension target \n", "0 0.4601 0.11890 0.0 \n", "1 0.2750 0.08902 0.0 \n", "2 0.3613 0.08758 0.0 \n", "3 0.6638 0.17300 0.0 \n", "4 0.2364 0.07678 0.0 \n", "\n", "[5 rows x 31 columns]" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import matplotlib.pyplot as plt\n", "from sklearn.datasets import load_breast_cancer\n", "import numpy as np\n", "import pandas as pd\n", "from sklearn.model_selection import train_test_split\n", "\n", "breast_cancer = load_breast_cancer()\n", "\n", "# Sprawdzenie poprawności rozmiarów\n", "assert len(breast_cancer.data[0]) == len(breast_cancer.feature_names)\n", "assert len(breast_cancer.target) == len(breast_cancer.data)\n", "\n", "values = np.c_[breast_cancer.data, breast_cancer.target]\n", "columns = np.array(list(breast_cancer.feature_names) + ['target'])\n", "\n", "df = pd.DataFrame(values, columns=columns)\n", "\n", "X = df.iloc[:, 0:-1]\n", "y = df.iloc[:,-1]\n", "\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Implementacja naiwnej metody Bayesowskiej\n", "\n", "Implementacja jest w dwóch wariantach:\n", "- Rozkład normalny - Gaussian (Normal) Distribution\n", "- Rozkład log-normalny - Log-Gaussian (Log-Normal) Distribution\n", "\n", "# Matematyczny opis algorytmu\n", "\n", "## Twierdzenie Bayesa\n", "\n", "${X}$ będzie pewnym zdarzeniem o ${n}$ cechach $$ X = (x_1, x_2, \\ldots, x_n)$$\n", "prawdopodobieństwo a posteriori ${P(C_k | X)}$ dla klasy ${C_k}$ jest dane przez: $$P(C_k | X) = \\frac{P(X | C_k) P(C_k)}{P(X)}$$\n", "\n", "Gdzie:\n", "$$\n", "\\begin{align*}\n", "& \\text{(1)}\\hspace{1cm}P(C_k | X)\\text{ to prawdopodobieństwo (probability) a posteriori klasy } C_k \\text{ pod warunkiem zajścia zdarzenia } X \\\\\n", "& \\text{(2)}\\hspace{1cm}P(X | C_k) \\text{ to prawdopodobieństwo (likelihood) obserwacji zdarzenia } X \\text{ pod warunkiem klasy } C_k \\\\\n", "& \\text{(3)}\\hspace{1cm}P(C_k) \\text{ to prawdopodobieństwo apriori klasy } C_k \\\\\n", "& \\text{(4)}\\hspace{1cm}P(X) \\text{ to całkowite prawdopodobieństwo obserwacji zdarzenia X we wszystkich klasach} \\\\\n", "\\end{align*}\n", "$$\n", "\n", "\n", "### Wzory na średnią i odchylenie standardowe\n", "\n", "#### Średnia (Mean)\n", "\n", "Średnia ${\\mu}$ zestawu danych ${X}$ składającego się z ${n}$ obserwacji jest obliczana jako:\n", "\n", "$$\n", "\\mu = \\frac{1}{n} \\sum_{i=1}^{n} x_i\n", "$$\n", "\n", "Gdzie:\n", "- ${\\mu}$ to średnia (mean)\n", "- ${n}$ to liczba obserwacji w zestawie danych\n", "- ${x_i}$ to pojedyncza obserwacja w zestawie danych\n", "\n", "#### Odchylenie standardowe (Standard Deviation)\n", "\n", "Odchylenie standardowe ${ \\sigma }$ zestawu danych ${ X }$ składającego się z ${ n }$ obserwacji jest obliczane jako pierwiastek kwadratowy z wariancji:\n", "\n", "$$\n", "\\sigma = \\sqrt{\\frac{1}{n} \\sum_{i=1}^{n} (x_i - \\mu)^2}\n", "$$\n", "\n", "Gdzie:\n", "- ${\\sigma}$ to odchylenie standardowe (standard deviation)\n", "- ${\\mu}$ to średnia (mean) zestawu danych\n", "- ${n}$ to liczba obserwacji w zestawie danych\n", "- ${x_i}$ to pojedyncza obserwacja w zestawie danych\n", "\n", "\n", "### Prawdpodobiestwo (Likelihood) obserwacji zdarzenia - rozkład normalny\n", "$$ \n", "\\text{Likelihood}(x | \\mu, \\sigma) = \\frac{1}{\\sqrt{2\\pi\\sigma^2}} \\exp\\left(-\\frac{(x - \\mu)^2}{2\\sigma^2}\\right) \n", "$$\n", "\n", "$$\n", "\\text{Posterior} = \\text{Likelihood} \\times \\text{Prior}\n", "$$\n", "\n", "### Prawdopodobieństwo (Log-Likelihood) obserwacji zdarzenia - rozkład log-normalny\n", "\n", "$$\n", "\\text{Log-Likelihood}(x | \\mu, \\sigma) = -\\frac{1}{2} \\log(2\\pi\\sigma^2) - \\frac{(x - \\mu)^2}{2\\sigma^2} \n", "$$\n", "\n", "$$\n", "\\text{Log-Posterior} = \\text{Log-Likelihood} + \\text{Log-Prior}\n", "$$" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "from scipy.stats import norm\n", "\n", "class GaussianNaiveBayes:\n", " def __init__(self, priors=None, var_smoothing=1e-8, log=False):\n", " self.priors = priors\n", " self.classes = None\n", " self.means = None\n", " self.stds = None\n", " self.log = log\n", " self.var_smoothing = var_smoothing\n", "\n", " def fit(self, X, y):\n", " self.epsilon = self.var_smoothing * np.var(X, axis=0).max()\n", " \n", " self.classes = np.unique(y)\n", " self.means = np.zeros((len(self.classes), X.shape[1]))\n", " self.stds = np.zeros((len(self.classes), X.shape[1]))\n", " \n", " for idx, cls in enumerate(self.classes):\n", " X_c = X[y == cls]\n", " self.means[idx, :] = X_c.mean(axis=0)\n", " self.stds[idx, :] = X_c.std(axis=0)\n", "\n", " if self.priors is None:\n", " self.priors = np.bincount(y) / len(y)\n", "\n", " self.stds += self.epsilon\n", "\n", " def predict(self, X):\n", " posteriors = self.predict_proba(X)\n", " return np.argmax(posteriors, axis=1)\n", "\n", " def score(self, X, y_true):\n", " posteriors = self.predict_proba(X)\n", " y_pred = np.argmax(posteriors, axis=1)\n", "\n", " correct_predictions = np.sum(y_true == y_pred)\n", " accuracy = correct_predictions / len(y_true)\n", " return accuracy\n", "\n", " def score_visualize(self, X, y_true):\n", " \"\"\"\n", " Funkcja rysuje dwa wykresy słupkowe przedstawiające rzeczywiste wartości i przewidywane wartości.\n", " \"\"\"\n", " posteriors = self.predict_proba(X)\n", " y_pred = np.argmax(posteriors, axis=1)\n", "\n", " # Liczymy ilość wystąpień każdej klasy dla rzeczywistych i przewidywanych wartości\n", " true_counts = np.bincount(y_true)\n", " pred_counts = np.bincount(y_pred)\n", "\n", " # Tworzymy subplots - dwa wykresy obok siebie\n", " fig, axes = plt.subplots(1, 2, figsize=(12, 6))\n", " \n", " # Pierwszy wykres - rzeczywiste wartości\n", " axes[0].bar([0, 1], true_counts, color=['blue', 'orange'])\n", " axes[0].set_title('Rzeczywiste wartości')\n", " axes[0].set_xticks([0, 1])\n", " axes[0].set_xticklabels(['Nowotwór złośliwy', 'Nowotwór łagodny'])\n", " axes[0].set_ylabel('Liczba wystąpień')\n", " \n", " # Drugi wykres - przewidywane wartości\n", " axes[1].bar([0, 1], pred_counts, color=['blue', 'orange'])\n", " axes[1].set_title('Przewidywane wartości')\n", " axes[1].set_xticks([0, 1])\n", " axes[1].set_xticklabels(['Nowotwór złośliwy', 'Nowotwór łagodny'])\n", " axes[1].set_ylabel('Liczba wystąpień')\n", " \n", " # Wyświetlamy wykresy\n", " plt.show()\n", "\n", " def predict_proba(self, X):\n", " if self.log:\n", " return self._calculate_posterior_log(X)\n", " else:\n", " return self._calculate_posterior_normal_vectorized(X)\n", "\n", " def _normal_gaussian_pdf(self, x, mean, std):\n", " \"\"\"\n", " Implementacja Normal Gaussian (likelihood) z użyciem SciKit - używana do testów\n", " \"\"\"\n", " return np.prod(norm.pdf(x, mean, std))\n", "\n", " def normal_gaussian_pdf(self, x, mean, std):\n", " \"\"\"\n", " implementacja Normal Gaussian (likelihood)\n", "\n", " kształt x jest zmieniany na (n_samples, 1, n_features) aby numpy mógł broadcastować\n", " operacje z mediąną, której kształt to (n_classes, n_features)\n", " \"\"\"\n", " coefficient = 1 / (np.sqrt(2 * np.pi * std**2))\n", " exponent = np.exp(-(np.square(x[:, np.newaxis] - mean)) / (2 * np.square(std)))\n", " return coefficient * exponent\n", " \n", " def log_gaussian_pdf(self, x, mean, std):\n", " \"\"\"\n", " implementacja Log-Normal Gaussian (likelihood)\n", " \"\"\"\n", " return -0.5 * np.log(2 * np.pi * std**2) - ((x - mean)**2 / (2 * std**2))\n", "\n", " def _calculate_posterior_log(self, x):\n", " \"\"\"\n", " Log-normal\n", " Użyliśmy log-sum-exp trick dla numerycznej stabilności.\n", " \"\"\"\n", " log_likelihoods = np.zeros((x.shape[0], len(self.classes)))\n", " for idx, _ in enumerate(self.classes):\n", " prior = np.log(self.priors[idx])\n", " log_likelihood = np.sum(self.log_gaussian_pdf(x, self.means[idx, :], self.stds[idx, :]), axis=1)\n", " log_likelihoods[:, idx] = log_likelihood + prior\n", " \n", " # The Log-Sum-Exp Trick\n", " max_log_likelihoods = np.max(log_likelihoods, axis=1, keepdims=True)\n", " log_posteriors = log_likelihoods - max_log_likelihoods\n", " posteriors = np.exp(log_posteriors)\n", " posteriors = posteriors / np.sum(posteriors, axis=1, keepdims=True)\n", " return posteriors\n", " \n", " def _calculate_posterior_normal_vectorized(self, X):\n", " \"\"\"\n", " Implementacja z użyciem wektorów - zwraca takie same wyniki jak _calculate_posterior_normal_iterative\n", " Działa szybciej i pomija konieczność iteracji w pętli.\n", " \"\"\"\n", " likelihoods = self.normal_gaussian_pdf(X, self.means, self.stds)\n", " posteriors = likelihoods.prod(axis=2) * self.priors\n", " posteriors = posteriors / np.sum(posteriors, axis=1, keepdims=True)\n", " return posteriors\n", "\n", " def _calculate_posterior_normal_iterative(self, X):\n", " \"\"\"\n", " Implementacja iteracyjna - zwraca takie same wyniki _calculate_posterior_normal_vectorized\n", " Używana do testów, aby sprawdzić czy wersja z użyciem wektorów działa poprawnie\n", " \"\"\"\n", " posteriors = []\n", " for x in X:\n", " likelihoods = np.zeros((len(self.classes)))\n", " for idx, _ in enumerate(self.classes):\n", " likelihoods[idx] = self._normal_gaussian_pdf(x, self.means[idx, :], self.stds[idx, ]) * self.priors[idx]\n", " posteriors.append(likelihoods)\n", " posteriors = np.array(posteriors)\n", " posteriors = posteriors / np.sum(posteriors, axis=1, keepdims=True)\n", " return posteriors\n", "\n", "def pp_predictions(preds, probs):\n", " i = 1\n", " for pred, prob in zip(preds, probs):\n", " print(f\"\\n=== {i} ===\")\n", " \n", " if pred == 0:\n", " print(f\"Predykcja: {pred} - (Nowotwór złośliwy)\")\n", " else:\n", " print(f\"Predykcja: {pred} - (Nowotwór łagodny)\")\n", " \n", " print(f\"Prawdpodobieństwo (Złośliwy, Łagodny): {np.round(prob, 4)}\")\n", " i += 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Prezentacja działania algorytmu" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "data": { "image/png": "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jcKaNWsQHByMFStWYN26dXB3d78s9yOPPII777wTt9xyC/z9/dGnTx/s3r37iq/1ajQaDT7++GPExMRg1KhRaNWqFR577DH07dsX4eHhOHLkCPr37299/Oeff46ffvrJWkD7+flZ/86sXbsWTz/9NEJDQ3H69Okaz7vrrrvw1FNPYcKECQgICEDnzp3xww8/XFPWi3+LLly4gBkzZlxW1L3wwgs4cOAAAgMDcccdd9T4zAwGA55++mmEhYUhIiICFy5cwCuvvGK9v3///tBqtejRo0eNkxHOTCOudB6bHNqgQYNw3333YdasWbKjOKVp06YhOjq61rUIiUidFi5ciFOnTuGzzz5rlO2dOnUKL7/8srWLdsGCBUhJSWm07auRxWKBm5sbMjIy0Lx5c2k5hgwZgokTJ7rM30iuVEhERC6hsLAQS5YswYoVKxptm99//z169+7daNtzBkePHoWXl1eNCR32tnfvXhw4cOC6u7DVhF2uRETk9P773/8iJiYGt91222Vdsdejd+/eeOedd/Dggw822jbV7KuvvsLgwYPx6quvwsPDQ0qGqVOn4uabb8Zbb70Ff39/KRlkYJcrERERkcrxDB0RERGRyrGgIyIiIlI5FnREREREKseCjoiIiEjlWNARERERqRwLOiIiIiKVY0FHREREpHIs6IiIiIhUjgUdERERkcqxoCMiIiJSORZ0RERERCrHgo6IiIhI5VjQEREREakcCzoiIiIilWNBR0RERKRyLOiIiIiIVI4FHREREZHKsaAjIiIiUjkWdEREREQqx4KOiIiISOVY0BERERGpHAs6IiIiIpVjQUdERESkcizoiIiIiFSOBR0RERGRyrGgIyIiIlI5FnREREREKseCjoiIiEjlWNARERERqRwLOiIiIiKVY0FHREREpHIs6IiIiIhUjgUdERERkcrpZAcgItszGo3Izs6GXq+XHYXszMvLC9HR0XB3d5cdhYhsSCOEELJDEJFtpaWlwd/fH6GhodBoNLLjkJ0IIVBQUICysjK0bNlSdhwisiF2uRK5AL1ez2LOBWk0GoSGhvLMLJELYEFH5CJYzLkmfu5EroEFHREREZHKsaAjItXx8/Oz/v/7779H27ZtkZmZiQULFuD111+XmIyISA7OcqUahBCoNAlUmSyoMgtUmizQmwSqzJYa39ebLLAIwPLHcywCmHx+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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Podział zbioru danych na treningowy i testowy\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.1, random_state=48)\n", "\n", "gnb = GaussianNaiveBayes(log=False)\n", "gnb.fit(X_train.values, y_train)\n", "\n", "# Prawdopodobieństwa prior\n", "priors = np.array(gnb.priors)\n", "counts = [np.sum(y_train == 0.0), np.sum(y_train == 1.0)]\n", "\n", "# Etykiety klas\n", "labels = ['Nowotwór złośliwy', 'Nowotwór łagodny']\n", "\n", "# Tworzenie diagramu kołowego\n", "fig, axes = plt.subplots(1, 2, figsize=(11, 6), facecolor='white')\n", "\n", "wedges, _, _ = axes[0].pie(priors, autopct='%1.1f%%', startangle=90, colors=['skyblue', 'orange'])\n", "axes[0].axis('equal') # Równe proporcje, aby koło było kołem\n", "axes[0].set_title('Prawdopodobieństwa prior')\n", "\n", "# Funkcja zwracająca liczbę dla autopct\n", "def func(pct, allvals):\n", " absolute = int(np.round(pct/100.*np.sum(allvals)))\n", " return f\"{absolute}\"\n", "\n", "axes[1].pie(counts, autopct=lambda pct: func(pct, counts), startangle=90, colors=['skyblue', 'orange'])\n", "axes[1].axis('equal') # Równe proporcje, aby koło było kołem\n", "axes[1].set_title('Liczba wystąpień każdej klasy')\n", "\n", "# Dodanie jednej legendy dla obu wykresów\n", "fig.legend(wedges, labels, title=\"Klasy\", loc=\"center right\", bbox_to_anchor=(0.6, 0.75))\n", "\n", "# Ustawienie białego tła dla wykresów\n", "fig.patch.set_facecolor('white')\n", "\n", "# Wyświetlenie wykresu\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 70, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Prawdopodobieństwa prior: [0.38085938 0.61914062]\n", "Celność na zbiorze testowym: 0.9824561403508771\n", "\n", "=== 1 ===\n", "Predykcja: 1 - (Nowotwór łagodny)\n", "Prawdpodobieństwo (Złośliwy, Łagodny): [0. 1.]\n", "\n", "=== 2 ===\n", "Predykcja: 1 - (Nowotwór łagodny)\n", "Prawdpodobieństwo (Złośliwy, Łagodny): [0.1798 0.8202]\n", "\n", "=== 3 ===\n", "Predykcja: 1 - (Nowotwór łagodny)\n", "Prawdpodobieństwo (Złośliwy, Łagodny): [0.0067 0.9933]\n", "\n", "=== 4 ===\n", "Predykcja: 1 - (Nowotwór łagodny)\n", "Prawdpodobieństwo (Złośliwy, Łagodny): [0.0472 0.9528]\n", "\n", "=== 5 ===\n", "Predykcja: 0 - (Nowotwór złośliwy)\n", "Prawdpodobieństwo (Złośliwy, Łagodny): [1. 0.]\n" ] } ], "source": [ "print(f\"Prawdopodobieństwa prior: {gnb.priors}\")\n", "score = gnb.score(X_test.values, y_test)\n", "print(\"Celność na zbiorze testowym:\", score)\n", "\n", "# Predykcje\n", "preds = gnb.predict(X_test.values[15:20])\n", "probs = gnb.predict_proba(X_test.values[15:20])\n", "pp_predictions(preds, probs)" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(14, 14))\n", "score = gnb.score_visualize(X_test.values, y_test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Porównanie wyników z gotową implementacją z użyciem biblioteki sklearn" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Celność na zbiorze testowym: 0.9824561403508771\n", "\n", "=== 1 ===\n", "Predykcja: 1.0 - (Nowotwór łagodny)\n", "Prawdpodobieństwo (Złośliwy, Łagodny): [0. 1.]\n", "\n", "=== 2 ===\n", "Predykcja: 1.0 - (Nowotwór łagodny)\n", "Prawdpodobieństwo (Złośliwy, Łagodny): [0.1123 0.8877]\n", "\n", "=== 3 ===\n", "Predykcja: 1.0 - (Nowotwór łagodny)\n", "Prawdpodobieństwo (Złośliwy, Łagodny): [0. 1.]\n", "\n", "=== 4 ===\n", "Predykcja: 1.0 - (Nowotwór łagodny)\n", "Prawdpodobieństwo (Złośliwy, Łagodny): [0.047 0.953]\n", "\n", "=== 5 ===\n", "Predykcja: 0.0 - (Nowotwór złośliwy)\n", "Prawdpodobieństwo (Złośliwy, Łagodny): [1. 0.]\n" ] } ], "source": [ "from sklearn.naive_bayes import GaussianNB\n", "\n", "clf = GaussianNB()\n", "clf.fit(X_train.values, y_train)\n", "print(\"Celność na zbiorze testowym:\", clf.score(X_test.values, y_test))\n", "preds = clf.predict(X_test.values[15:20])\n", "probs = clf.predict_proba(X_test.values[15:20])\n", "pp_predictions(preds, probs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Wizualizacja obszarów decyzyjnych" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from matplotlib.colors import ListedColormap\n", "from sklearn.decomposition import PCA\n", "\n", "# Wizualizacja obszarów decyzyjnych\n", "def plot_decision_boundaries(X, y, model, title, h=0.9):\n", " x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1\n", " y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1\n", " xx, yy = np.meshgrid(np.arange(x_min, x_max, h),np.arange(y_min, y_max, h))\n", " \n", " Z = model.predict(np.c_[xx.ravel(), yy.ravel()])\n", " Z = Z.reshape(xx.shape)\n", " plt.figure(figsize=(12, 9))\n", " colors_background = ['#FFFFFF', '#00AACC']\n", " colors_points = ['#0000FF', '#00FF00']\n", " plt.contourf(xx, yy, Z, alpha=0.8, cmap=ListedColormap(colors_background))\n", " plt.scatter(X[:, 0], X[:, 1], c=y, s=50, edgecolor='b', cmap=ListedColormap(colors_points))\n", " plt.title(title)\n", " plt.show()\n", "\n", "# 30 cech zostało zredukowane do dwóch\n", "# PCA dokonuje liniowej redukcji wymiarów za pomocą algorytmu Singular Value Decomposition (SVD).\n", "pca = PCA(n_components=2)\n", "X_pca = pca.fit_transform(X_train.values)\n", "\n", "gnb = GaussianNaiveBayes(log=True)\n", "gnb.fit(X_pca, y_train)\n", "plot_decision_boundaries(X_pca, y_train, gnb, \"Wizualizacja obszarów decyzyjnych\")" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.10.12" } }, "nbformat": 4, "nbformat_minor": 2 }