"Wszystkie zadania ćwiczeniowe należy rozwiązywać w języku Python w kopii Jupyter Notebook'a dla danych zajęć w wyznaczonych miejscach (komórki z komentarzem `# Solution`).\n",
"Lubię borowiki, borowiki i jeszcze raz borowiki. NIE SPAM\n",
"<br>\n",
"Poszedłem na zakupy. NIE SPAM\n",
"\n",
"P(borowiki|NIE SPAM) = 4 / 14\n",
"\n",
"P(zakupy|NIE SPAM) = 1 / 14\n",
"\n",
"P(X|NIE SPAM) = 4/14 * 1/14 * ...\n",
"\n",
"\n",
"\n",
"100 tekstów ze spamem, każde ma po 8 słów (i w pozostałych 99 nie występuje słowo borowiki)\n",
"<br>\n",
"1 SPAM\n",
"<br>\n",
"2 SPAM\n",
"<br>\n",
"...\n",
"<br>\n",
"Kup kup nasze nasze borowiki borowiki (TANIO TANIO)!!! SPAM\n",
"<br>\n",
"...\n",
"<br>\n",
"99 SPAM\n",
"<br>\n",
"100 SPAM\n",
"\n",
"P(borowiki|SPAM) = 2 / 800"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Inferencja (czyli dokonanie predykcji modelu) na zbiorze testowym\n",
"\n",
"Dla zdania ze zbioru testowego dla każdego słowa, które znajduje się w słowniku, obliczamy wartości P(xi|C), gdzie wartość z licznika oraz mianiownika bazuje na danych ze zbioru treningowego.\n",
"\n",
"Czyli np. dla zdania \"Kup pyszne borowiki\" jeżeli tylko słowa \"kup\" oraz \"pyszne\" występują w słowniku obliczamy P(X|C) = P(kup|C) * P(borowiki|C).\n"
"Można spróbować z różnymi wartościami alpha oraz liczbą słów w słowniku (czyli w kroku P(X|C) możemy uwzględniać tylko np. 500 najczęściej występujących słów - nie gwarantuję że to pomoże).\n",