From 37352ddc0d03a8364371813d3a79b7d7757fd64b Mon Sep 17 00:00:00 2001 From: s464968 Date: Fri, 3 Feb 2023 15:39:51 +0100 Subject: [PATCH] finished project --- Jadalnosc_grzybow.pdf | Bin 0 -> 34101 bytes README.md | 0 Wzór raportu.docx | Bin 0 -> 7894 bytes Wzór raportu.pdf | Bin 0 -> 32087 bytes dane_z_moodle.txt | 21 + mushrooms | 1 + mushrooms.ipynb | 1585 +++++++++++++++++++++++++++++++++++++++++ 7 files changed, 1607 insertions(+) create mode 100644 Jadalnosc_grzybow.pdf create mode 100644 README.md create mode 100644 Wzór raportu.docx create mode 100644 Wzór raportu.pdf create mode 100644 dane_z_moodle.txt create mode 160000 mushrooms create mode 100644 mushrooms.ipynb diff --git a/Jadalnosc_grzybow.pdf b/Jadalnosc_grzybow.pdf new file mode 100644 index 0000000000000000000000000000000000000000..596fd41bbd1a2d7742cf6869bedc9fdf7ee20bc4 GIT binary patch literal 34101 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 literal 0 HcmV?d00001 diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/Wzór raportu.docx b/Wzór raportu.docx new file mode 100644 index 0000000000000000000000000000000000000000..a580b941aff9ddc5106a4c48329b5caa446ca73c GIT binary patch literal 7894 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 RLP4QEF34k? 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 literal 0 HcmV?d00001 diff --git a/dane_z_moodle.txt b/dane_z_moodle.txt new file mode 100644 index 0000000..781e9c7 --- /dev/null +++ b/dane_z_moodle.txt @@ -0,0 +1,21 @@ +Projekt realizowany jest indywidualnie. + +Projekt polega na zastosowaniu poznanych metod uczenia maszynowego do znalezienia rozwiązania wybranego problemu. + +Oprócz zbudowania odpowiedniego modelu, oceniane będzie odpowiednie przygotowanie danych uczących oraz ewaluacja stworzonego modelu. + +Dodatkowo, żeby otrzymać maksymalną liczbę punktów, przynajmniej jeden z modeli powinien być siecią neuronową. + +Pliki potrzebne do uruchomienia projektu (kod i dane) należy dołączyć na Moodle'u lub umieścić w repozytorium (wówczas wystarczy podać jego adres). + +Do oceny projektu proszę przygotować również krótki raport, zawierający: + + cel projektu / definicję problemu (jakie zagadnienie Państwo rozwiązywali) + opis użytych danych (skąd pochodzą dane, ile przykładów zawierają zbiory uczący i testowy) + opis wykorzystanych metod (jakich modeli Państwo użyli) + tabelkę z wynikami ewaluacji + ewentualne wnioski + +Wzór raportu znajduje się w pliku Wzór raportu.docx + +Maksymalna liczba punktów: 34 \ No newline at end of file diff --git a/mushrooms b/mushrooms new file mode 160000 index 0000000..88ec0ad --- /dev/null +++ b/mushrooms @@ -0,0 +1 @@ +Subproject commit 88ec0ad5fffcac6a6909099199c3ef659977e721 diff --git a/mushrooms.ipynb b/mushrooms.ipynb new file mode 100644 index 0000000..27d5d54 --- /dev/null +++ b/mushrooms.ipynb @@ -0,0 +1,1585 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 127, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 128, + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv('mushrooms/train/train.tsv',sep='\\t', header=None)\n", + "X_ver = pd.read_csv('mushrooms/dev-0/in.tsv',sep='\\t', header=None)\n", + "y_ver = pd.read_csv('mushrooms/dev-0/expected.tsv',sep='\\t', header=None)" + ] + }, + { + "cell_type": "code", + "execution_count": 129, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " 0 1 2 3 4 5 6 7 8 9 ... 13 14 15 16 17 18 19 20 21 22\n", + "0 p x s n t p f c n k ... s w w p w o p k s u\n", + "1 e x s y t a f c b k ... s w w p w o p n n g\n", + "2 p x y w t p f c n n ... s w w p w o p k s u\n", + "3 e x s g f n f w b k ... s w w p w o e n a g\n", + "4 e x y y t a f c b n ... s w w p w o p k n g\n", + "\n", + "[5 rows x 23 columns]\n", + "0 0\n", + "1 0\n", + "2 0\n", + "3 0\n", + "4 0\n", + "5 0\n", + "6 0\n", + "7 0\n", + "8 0\n", + "9 0\n", + "10 0\n", + "11 0\n", + "12 0\n", + "13 0\n", + "14 0\n", + "15 0\n", + "16 0\n", + "17 0\n", + "18 0\n", + "19 0\n", + "20 0\n", + "21 0\n", + "22 0\n", + "dtype: int64\n", + "(6465, 23)\n" + ] + } + ], + "source": [ + "print(df.head())\n", + "print(df.isna().sum())\n", + "print(df.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 130, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 2\n", + "1 6\n", + "2 4\n", + "3 10\n", + "4 2\n", + "5 9\n", + "6 2\n", + "7 2\n", + "8 2\n", + "9 12\n", + "10 2\n", + "11 5\n", + "12 4\n", + "13 4\n", + "14 9\n", + "15 9\n", + "16 1\n", + "17 4\n", + "18 3\n", + "19 5\n", + "20 9\n", + "21 6\n", + "22 7\n", + "dtype: int64" + ] + }, + "execution_count": 130, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.nunique()" + ] + }, + { + "cell_type": "code", + "execution_count": 131, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 6\n", + "1 3\n", + "2 10\n", + "3 2\n", + "4 9\n", + "5 2\n", + "6 2\n", + "7 2\n", + "8 12\n", + "9 2\n", + "10 5\n", + "11 4\n", + "12 4\n", + "13 9\n", + "14 9\n", + "15 1\n", + "16 4\n", + "17 3\n", + "18 5\n", + "19 9\n", + "20 6\n", + "21 7\n", + "dtype: int64" + ] + }, + "execution_count": 131, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_ver.nunique()" + ] + }, + { + "cell_type": "code", + "execution_count": 132, + "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", + " \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", + "
0_b0_c0_f0_k0_s0_x1_s1_y1_f1_g...20_s20_v20_y21_d21_g21_l21_m21_p21_u21_w
01000001000...0000001000
10000010100...0100100000
21000000100...0000001000
31000001000...1000001000
40000010100...0000001000
..................................................................
7870000011000...0101000000
7880010001000...0100010000
7890001001000...0100010000
7900001000100...0100010000
7910000011000...0100010000
\n", + "

792 rows × 117 columns

\n", + "
" + ], + "text/plain": [ + " 0_b 0_c 0_f 0_k 0_s 0_x 1_s 1_y 1_f 1_g ... 20_s 20_v 20_y \\\n", + "0 1 0 0 0 0 0 1 0 0 0 ... 0 0 0 \n", + "1 0 0 0 0 0 1 0 1 0 0 ... 0 1 0 \n", + "2 1 0 0 0 0 0 0 1 0 0 ... 0 0 0 \n", + "3 1 0 0 0 0 0 1 0 0 0 ... 1 0 0 \n", + "4 0 0 0 0 0 1 0 1 0 0 ... 0 0 0 \n", + ".. ... ... ... ... ... ... ... ... ... ... ... ... ... ... \n", + "787 0 0 0 0 0 1 1 0 0 0 ... 0 1 0 \n", + "788 0 0 1 0 0 0 1 0 0 0 ... 0 1 0 \n", + "789 0 0 0 1 0 0 1 0 0 0 ... 0 1 0 \n", + "790 0 0 0 1 0 0 0 1 0 0 ... 0 1 0 \n", + "791 0 0 0 0 0 1 1 0 0 0 ... 0 1 0 \n", + "\n", + " 21_d 21_g 21_l 21_m 21_p 21_u 21_w \n", + "0 0 0 0 1 0 0 0 \n", + "1 0 1 0 0 0 0 0 \n", + "2 0 0 0 1 0 0 0 \n", + "3 0 0 0 1 0 0 0 \n", + "4 0 0 0 1 0 0 0 \n", + ".. ... ... ... ... ... ... ... \n", + "787 1 0 0 0 0 0 0 \n", + "788 0 0 1 0 0 0 0 \n", + "789 0 0 1 0 0 0 0 \n", + "790 0 0 1 0 0 0 0 \n", + "791 0 0 1 0 0 0 0 \n", + "\n", + "[792 rows x 117 columns]" + ] + }, + "execution_count": 132, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_ver = pd.get_dummies(y_ver,columns=[0],drop_first=True)\n", + "df2_unique = df[2].unique()\n", + "X_ver[1] = pd.Categorical(X_ver[1],categories=df2_unique)\n", + "X_ver = pd.get_dummies(X_ver)\n", + "X_ver" + ] + }, + { + "cell_type": "code", + "execution_count": 133, + "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", + " \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", + "
0_p1_b1_c1_f1_k1_s1_x2_f2_g2_s...21_s21_v21_y22_d22_g22_l22_m22_p22_u22_w
01000001001...1000000010
10000001001...0000100000
21000001000...1000000010
30000001001...0000100000
40000001000...0000100000
..................................................................
64601000100000...0101000000
64610000100001...0000010000
64620001000001...0000010000
64631000100000...0100010000
64640000001001...0000010000
\n", + "

6465 rows × 118 columns

\n", + "
" + ], + "text/plain": [ + " 0_p 1_b 1_c 1_f 1_k 1_s 1_x 2_f 2_g 2_s ... 21_s 21_v 21_y \\\n", + "0 1 0 0 0 0 0 1 0 0 1 ... 1 0 0 \n", + "1 0 0 0 0 0 0 1 0 0 1 ... 0 0 0 \n", + "2 1 0 0 0 0 0 1 0 0 0 ... 1 0 0 \n", + "3 0 0 0 0 0 0 1 0 0 1 ... 0 0 0 \n", + "4 0 0 0 0 0 0 1 0 0 0 ... 0 0 0 \n", + "... ... ... ... ... ... ... ... ... ... ... ... ... ... ... \n", + "6460 1 0 0 0 1 0 0 0 0 0 ... 0 1 0 \n", + "6461 0 0 0 0 1 0 0 0 0 1 ... 0 0 0 \n", + "6462 0 0 0 1 0 0 0 0 0 1 ... 0 0 0 \n", + "6463 1 0 0 0 1 0 0 0 0 0 ... 0 1 0 \n", + "6464 0 0 0 0 0 0 1 0 0 1 ... 0 0 0 \n", + "\n", + " 22_d 22_g 22_l 22_m 22_p 22_u 22_w \n", + "0 0 0 0 0 0 1 0 \n", + "1 0 1 0 0 0 0 0 \n", + "2 0 0 0 0 0 1 0 \n", + "3 0 1 0 0 0 0 0 \n", + "4 0 1 0 0 0 0 0 \n", + "... ... ... ... ... ... ... ... \n", + "6460 1 0 0 0 0 0 0 \n", + "6461 0 0 1 0 0 0 0 \n", + "6462 0 0 1 0 0 0 0 \n", + "6463 0 0 1 0 0 0 0 \n", + "6464 0 0 1 0 0 0 0 \n", + "\n", + "[6465 rows x 118 columns]" + ] + }, + "execution_count": 133, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.get_dummies(df,columns=[0],drop_first=True)\n", + "df = pd.get_dummies(df)\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 134, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(4848, 117)\n", + "(1617, 117)\n" + ] + } + ], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "\n", + "X = df.loc[:, df.columns != '0_p']\n", + "y = df['0_p']\n", + "X_train,X_test,y_train,y_test = train_test_split(X,y)\n", + "print(X_train.shape)\n", + "print(X_test.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 135, + "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", + " \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", + "
1_b1_c1_f1_k1_s1_x2_f2_g2_s2_y...21_s21_v21_y22_d22_g22_l22_m22_p22_u22_w
01000001000...0000001000
10000010100...0100100000
21000000100...0000001000
31000001000...1000001000
40000010100...0000001000
..................................................................
7870000011000...0101000000
7880010001000...0100010000
7890001001000...0100010000
7900001000100...0100010000
7910000011000...0100010000
\n", + "

792 rows × 117 columns

\n", + "
" + ], + "text/plain": [ + " 1_b 1_c 1_f 1_k 1_s 1_x 2_f 2_g 2_s 2_y ... 21_s 21_v 21_y \\\n", + "0 1 0 0 0 0 0 1 0 0 0 ... 0 0 0 \n", + "1 0 0 0 0 0 1 0 1 0 0 ... 0 1 0 \n", + "2 1 0 0 0 0 0 0 1 0 0 ... 0 0 0 \n", + "3 1 0 0 0 0 0 1 0 0 0 ... 1 0 0 \n", + "4 0 0 0 0 0 1 0 1 0 0 ... 0 0 0 \n", + ".. ... ... ... ... ... ... ... ... ... ... ... ... ... ... \n", + "787 0 0 0 0 0 1 1 0 0 0 ... 0 1 0 \n", + "788 0 0 1 0 0 0 1 0 0 0 ... 0 1 0 \n", + "789 0 0 0 1 0 0 1 0 0 0 ... 0 1 0 \n", + "790 0 0 0 1 0 0 0 1 0 0 ... 0 1 0 \n", + "791 0 0 0 0 0 1 1 0 0 0 ... 0 1 0 \n", + "\n", + " 22_d 22_g 22_l 22_m 22_p 22_u 22_w \n", + "0 0 0 0 1 0 0 0 \n", + "1 0 1 0 0 0 0 0 \n", + "2 0 0 0 1 0 0 0 \n", + "3 0 0 0 1 0 0 0 \n", + "4 0 0 0 1 0 0 0 \n", + ".. ... ... ... ... ... ... ... \n", + "787 1 0 0 0 0 0 0 \n", + "788 0 0 1 0 0 0 0 \n", + "789 0 0 1 0 0 0 0 \n", + "790 0 0 1 0 0 0 0 \n", + "791 0 0 1 0 0 0 0 \n", + "\n", + "[792 rows x 117 columns]" + ] + }, + "execution_count": 135, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_ver.columns = X_test.columns\n", + "X_ver" + ] + }, + { + "cell_type": "code", + "execution_count": 136, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.00\n", + "1.00\n" + ] + } + ], + "source": [ + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn.preprocessing import PolynomialFeatures\n", + "\n", + "poly = PolynomialFeatures(degree=2,include_bias=False)\n", + "X_poly = poly.fit_transform(X_train)\n", + "lr = LogisticRegression(C=10).fit(X_poly,y_train)\n", + "print('{:.2f}'.format(lr.score(X_poly,y_train)))\n", + "print('{:.2f}'.format(lr.score(poly.fit_transform(X_test),y_test)))" + ] + }, + { + "cell_type": "code", + "execution_count": 137, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.96\n", + "0.96\n" + ] + } + ], + "source": [ + "from sklearn.naive_bayes import GaussianNB\n", + "\n", + "gnb = GaussianNB()\n", + "gnb.fit(X_train,y_train)\n", + "\n", + "print('{:.2f}'.format(gnb.score(X_train,y_train)))\n", + "print('{:.2f}'.format(gnb.score(X_test,y_test)))" + ] + }, + { + "cell_type": "code", + "execution_count": 138, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.00\n", + "1.00\n" + ] + } + ], + "source": [ + "from sklearn.svm import SVC\n", + "\n", + "svc = SVC(kernel='rbf',C=10, gamma=0.1).fit(X_train,y_train)\n", + "\n", + "print('{:.2f}'.format(svc.score(X_train,y_train)))\n", + "print('{:.2f}'.format(svc.score(X_test,y_test)))" + ] + }, + { + "cell_type": "code", + "execution_count": 139, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/tonywesoly/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n", + " mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.00\n", + "1.00\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/tonywesoly/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n", + " mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n" + ] + } + ], + "source": [ + "from sklearn.neighbors import KNeighborsClassifier\n", + "\n", + "knn = KNeighborsClassifier(n_neighbors=3).fit(X_train,y_train)\n", + "print('{:.2f}'.format(knn.score(X_train,y_train)))\n", + "print('{:.2f}'.format(knn.score(X_test,y_test)))" + ] + }, + { + "cell_type": "code", + "execution_count": 140, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.00\n", + "1.00\n" + ] + } + ], + "source": [ + "from sklearn.neural_network import MLPClassifier\n", + "\n", + "mlp = MLPClassifier(activation='relu', hidden_layer_sizes=[10],solver='lbfgs').fit(X_train,y_train)\n", + "\n", + "print('{:.2f}'.format(mlp.score(X_train,y_train)))\n", + "print('{:.2f}'.format(mlp.score(X_test,y_test)))" + ] + }, + { + "cell_type": "code", + "execution_count": 141, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Bayes raport:\n", + "Accuracy score 0.91\n", + " precision recall f1-score support\n", + "\n", + " jadalne 1.00 0.82 0.90 406\n", + " trujące 0.84 1.00 0.91 386\n", + "\n", + " accuracy 0.91 792\n", + " macro avg 0.92 0.91 0.90 792\n", + "weighted avg 0.92 0.91 0.90 792\n", + "\n" + ] + } + ], + "source": [ + "from sklearn.metrics import classification_report,accuracy_score\n", + "\n", + "pred_bayes = gnb.predict(X_ver)\n", + "print('Bayes raport:')\n", + "print('Accuracy score {:.2f}'.format(accuracy_score(y_ver,pred_bayes)))\n", + "print(classification_report(y_ver,pred_bayes,target_names=['jadalne','trujące']))" + ] + }, + { + "cell_type": "code", + "execution_count": 142, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Logistic Regression raport:\n", + "Accuracy score 1.00\n", + " precision recall f1-score support\n", + "\n", + " jadalne 1.00 1.00 1.00 406\n", + " trujące 1.00 1.00 1.00 386\n", + "\n", + " accuracy 1.00 792\n", + " macro avg 1.00 1.00 1.00 792\n", + "weighted avg 1.00 1.00 1.00 792\n", + "\n" + ] + } + ], + "source": [ + "pred_log = lr.predict(poly.fit_transform(X_ver))\n", + "print('Logistic Regression raport:')\n", + "print('Accuracy score {:.2f}'.format(accuracy_score(y_ver,pred_log)))\n", + "print(classification_report(y_ver,pred_log,target_names=['jadalne','trujące']))" + ] + }, + { + "cell_type": "code", + "execution_count": 143, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Support Vector Machines raport:\n", + "Accuracy score 1.00\n", + " precision recall f1-score support\n", + "\n", + " jadalne 1.00 1.00 1.00 406\n", + " trujące 1.00 1.00 1.00 386\n", + "\n", + " accuracy 1.00 792\n", + " macro avg 1.00 1.00 1.00 792\n", + "weighted avg 1.00 1.00 1.00 792\n", + "\n" + ] + } + ], + "source": [ + "pred_svc = svc.predict(X_ver)\n", + "print('Support Vector Machines raport:')\n", + "print('Accuracy score {:.2f}'.format(accuracy_score(y_ver,pred_svc)))\n", + "print(classification_report(y_ver,pred_svc,target_names=['jadalne','trujące']))" + ] + }, + { + "cell_type": "code", + "execution_count": 144, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "K-nearest neighbors raport:\n", + "Accuracy score 1.00\n", + " precision recall f1-score support\n", + "\n", + " jadalne 1.00 1.00 1.00 406\n", + " trujące 1.00 1.00 1.00 386\n", + "\n", + " accuracy 1.00 792\n", + " macro avg 1.00 1.00 1.00 792\n", + "weighted avg 1.00 1.00 1.00 792\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/tonywesoly/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n", + " mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n" + ] + } + ], + "source": [ + "pred_knn = knn.predict(X_ver)\n", + "print('K-nearest neighbors raport:')\n", + "print('Accuracy score {:.2f}'.format(accuracy_score(y_ver,pred_knn)))\n", + "print(classification_report(y_ver,pred_knn,target_names=['jadalne','trujące']))" + ] + }, + { + "cell_type": "code", + "execution_count": 145, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Neural network raport:\n", + "Accuracy score 1.00\n", + " precision recall f1-score support\n", + "\n", + " jadalne 1.00 1.00 1.00 406\n", + " trujące 1.00 1.00 1.00 386\n", + "\n", + " accuracy 1.00 792\n", + " macro avg 1.00 1.00 1.00 792\n", + "weighted avg 1.00 1.00 1.00 792\n", + "\n" + ] + } + ], + "source": [ + "pred_mlp = mlp.predict(X_ver)\n", + "print('Neural network raport:')\n", + "print('Accuracy score {:.2f}'.format(accuracy_score(y_ver,pred_mlp)))\n", + "print(classification_report(y_ver,pred_mlp,target_names=['jadalne','trujące']))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "base", + "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.9.13" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "fbbbb91f3443f337fad6219902aa19c75c8f48b69079f7de3a01210f85667a20" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}