dl_project/titanic.ipynb

640 lines
56 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"source": [
"Preprocessing danych. Niektóre kolumny nie mają wpływu na predykcję i je usuwamy. Trzeba też uzyc one-hot-encodingu do kolumn będących\n",
"kategoriami."
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": null,
"outputs": [],
"source": [
"import pandas as pd\n",
"\n",
"df = pd.read_csv('data/titanic.csv')\n",
"df.head()\n",
"df = df[['Survived', 'Age', 'Sex', 'Pclass']]\n",
"df = pd.get_dummies(df, columns=['Sex', 'Pclass'])\n",
"df.dropna(inplace=True)\n",
"df.head()"
],
"metadata": {
"collapsed": false,
"is_executing": true
}
},
{
"cell_type": "markdown",
"source": [
"Podzial danych na testowe i treningowe (80/20)"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 20,
"outputs": [],
"source": [
"from sklearn.model_selection import train_test_split\n",
"\n",
"X = df.drop('Survived', axis=1)\n",
"y = df['Survived']\n",
"\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, stratify=y, random_state=42)"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"end_time": "2024-04-14T12:40:47.464233Z",
"start_time": "2024-04-14T12:40:47.443556Z"
}
}
},
{
"cell_type": "code",
"execution_count": 49,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"RBF: 0.6153846153846154\n"
]
}
],
"source": [
"from sklearn.svm import SVC\n",
"\n",
"model = SVC(kernel=\"rbf\", probability=True, random_state=42)\n",
"model.fit(X_train, y_train)\n",
"print(f\"RBF: {model.score(X_test, y_test)}\")"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"end_time": "2024-04-14T13:41:02.969628Z",
"start_time": "2024-04-14T13:41:02.806174Z"
}
}
},
{
"cell_type": "code",
"execution_count": 50,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Linear: 0.7832167832167832\n"
]
}
],
"source": [
"from sklearn.svm import SVC\n",
"\n",
"model = SVC(kernel=\"linear\", probability=True, random_state=42)\n",
"model.fit(X_train, y_train)\n",
"print(f\"Linear: {model.score(X_test, y_test)}\")"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"end_time": "2024-04-14T13:41:04.509561Z",
"start_time": "2024-04-14T13:41:04.220245Z"
}
}
},
{
"cell_type": "code",
"execution_count": 51,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Sigmoid: 0.5594405594405595\n"
]
}
],
"source": [
"from sklearn.svm import SVC\n",
"\n",
"model = SVC(kernel=\"sigmoid\", probability=True, random_state=42)\n",
"model.fit(X_train, y_train)\n",
"print(f\"Sigmoid: {model.score(X_test, y_test)}\")"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"end_time": "2024-04-14T13:41:05.759314Z",
"start_time": "2024-04-14T13:41:05.654662Z"
}
}
},
{
"cell_type": "markdown",
"source": [
"Wyniki dla domyslnych parametrow dla roznych funkcji jadra nie sa powalajace (56-78%)"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "markdown",
"source": [
"Spróbuję sprawdzić różne wariancje funkcji jądra oraz parametrów, które mówią o tym jak bardzo chcemy unikać misklasyfikacji oraz jak bardzo odległe przypadki mają wpływać na decyzję. Daje to sprawdzenie 300 roznych wariancji modelu."
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "markdown",
"source": [],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 25,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Fitting 5 folds for each of 60 candidates, totalling 300 fits\n",
"[CV] END ......................C=0.5, gamma=1, kernel=linear; total time= 0.1s\n",
"[CV] END ......................C=0.5, gamma=1, kernel=linear; total time= 0.1s\n",
"[CV] END ......................C=0.5, gamma=1, kernel=linear; total time= 0.1s\n",
"[CV] END ......................C=0.5, gamma=1, kernel=linear; total time= 0.0s\n",
"[CV] END ......................C=0.5, gamma=1, kernel=linear; total time= 0.1s\n",
"[CV] END .........................C=0.5, gamma=1, kernel=rbf; total time= 0.1s\n",
"[CV] END .........................C=0.5, gamma=1, kernel=rbf; total time= 0.1s\n",
"[CV] END .........................C=0.5, gamma=1, kernel=rbf; total time= 0.1s\n",
"[CV] END .........................C=0.5, gamma=1, kernel=rbf; total time= 0.1s\n",
"[CV] END .........................C=0.5, gamma=1, kernel=rbf; total time= 0.1s\n",
"[CV] END .....................C=0.5, gamma=1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END .....................C=0.5, gamma=1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END .....................C=0.5, gamma=1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END .....................C=0.5, gamma=1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END .....................C=0.5, gamma=1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ....................C=0.5, gamma=0.1, kernel=linear; total time= 0.1s\n",
"[CV] END ....................C=0.5, gamma=0.1, kernel=linear; total time= 0.1s\n",
"[CV] END ....................C=0.5, gamma=0.1, kernel=linear; total time= 0.1s\n",
"[CV] END ....................C=0.5, gamma=0.1, kernel=linear; total time= 0.0s\n",
"[CV] END ....................C=0.5, gamma=0.1, kernel=linear; total time= 0.0s\n",
"[CV] END .......................C=0.5, gamma=0.1, kernel=rbf; total time= 0.1s\n",
"[CV] END .......................C=0.5, gamma=0.1, kernel=rbf; total time= 0.1s\n",
"[CV] END .......................C=0.5, gamma=0.1, kernel=rbf; total time= 0.1s\n",
"[CV] END .......................C=0.5, gamma=0.1, kernel=rbf; total time= 0.1s\n",
"[CV] END .......................C=0.5, gamma=0.1, kernel=rbf; total time= 0.1s\n",
"[CV] END ...................C=0.5, gamma=0.1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ...................C=0.5, gamma=0.1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ...................C=0.5, gamma=0.1, kernel=sigmoid; total time= 0.1s\n",
"[CV] END ...................C=0.5, gamma=0.1, kernel=sigmoid; total time= 0.1s\n",
"[CV] END ...................C=0.5, gamma=0.1, kernel=sigmoid; total time= 0.1s\n",
"[CV] END ...................C=0.5, gamma=0.01, kernel=linear; total time= 0.1s\n",
"[CV] END ...................C=0.5, gamma=0.01, kernel=linear; total time= 0.1s\n",
"[CV] END ...................C=0.5, gamma=0.01, kernel=linear; total time= 0.1s\n",
"[CV] END ...................C=0.5, gamma=0.01, kernel=linear; total time= 0.0s\n",
"[CV] END ...................C=0.5, gamma=0.01, kernel=linear; total time= 0.1s\n",
"[CV] END ......................C=0.5, gamma=0.01, kernel=rbf; total time= 0.1s\n",
"[CV] END ......................C=0.5, gamma=0.01, kernel=rbf; total time= 0.1s\n",
"[CV] END ......................C=0.5, gamma=0.01, kernel=rbf; total time= 0.1s\n",
"[CV] END ......................C=0.5, gamma=0.01, kernel=rbf; total time= 0.1s\n",
"[CV] END ......................C=0.5, gamma=0.01, kernel=rbf; total time= 0.1s\n",
"[CV] END ..................C=0.5, gamma=0.01, kernel=sigmoid; total time= 0.1s\n",
"[CV] END ..................C=0.5, gamma=0.01, kernel=sigmoid; total time= 0.1s\n",
"[CV] END ..................C=0.5, gamma=0.01, kernel=sigmoid; total time= 0.1s\n",
"[CV] END ..................C=0.5, gamma=0.01, kernel=sigmoid; total time= 0.1s\n",
"[CV] END ..................C=0.5, gamma=0.01, kernel=sigmoid; total time= 0.1s\n",
"[CV] END ..................C=0.5, gamma=0.001, kernel=linear; total time= 0.1s\n",
"[CV] END ..................C=0.5, gamma=0.001, kernel=linear; total time= 0.1s\n",
"[CV] END ..................C=0.5, gamma=0.001, kernel=linear; total time= 0.1s\n",
"[CV] END ..................C=0.5, gamma=0.001, kernel=linear; total time= 0.0s\n",
"[CV] END ..................C=0.5, gamma=0.001, kernel=linear; total time= 0.0s\n",
"[CV] END .....................C=0.5, gamma=0.001, kernel=rbf; total time= 0.1s\n",
"[CV] END .....................C=0.5, gamma=0.001, kernel=rbf; total time= 0.1s\n",
"[CV] END .....................C=0.5, gamma=0.001, kernel=rbf; total time= 0.1s\n",
"[CV] END .....................C=0.5, gamma=0.001, kernel=rbf; total time= 0.1s\n",
"[CV] END .....................C=0.5, gamma=0.001, kernel=rbf; total time= 0.1s\n",
"[CV] END .................C=0.5, gamma=0.001, kernel=sigmoid; total time= 0.0s\n",
"[CV] END .................C=0.5, gamma=0.001, kernel=sigmoid; total time= 0.0s\n",
"[CV] END .................C=0.5, gamma=0.001, kernel=sigmoid; total time= 0.0s\n",
"[CV] END .................C=0.5, gamma=0.001, kernel=sigmoid; total time= 0.0s\n",
"[CV] END .................C=0.5, gamma=0.001, kernel=sigmoid; total time= 0.0s\n",
"[CV] END .................C=0.5, gamma=0.0001, kernel=linear; total time= 0.1s\n",
"[CV] END .................C=0.5, gamma=0.0001, kernel=linear; total time= 0.1s\n",
"[CV] END .................C=0.5, gamma=0.0001, kernel=linear; total time= 0.1s\n",
"[CV] END .................C=0.5, gamma=0.0001, kernel=linear; total time= 0.0s\n",
"[CV] END .................C=0.5, gamma=0.0001, kernel=linear; total time= 0.0s\n",
"[CV] END ....................C=0.5, gamma=0.0001, kernel=rbf; total time= 0.1s\n",
"[CV] END ....................C=0.5, gamma=0.0001, kernel=rbf; total time= 0.1s\n",
"[CV] END ....................C=0.5, gamma=0.0001, kernel=rbf; total time= 0.1s\n",
"[CV] END ....................C=0.5, gamma=0.0001, kernel=rbf; total time= 0.1s\n",
"[CV] END ....................C=0.5, gamma=0.0001, kernel=rbf; total time= 0.1s\n",
"[CV] END ................C=0.5, gamma=0.0001, kernel=sigmoid; total time= 0.1s\n",
"[CV] END ................C=0.5, gamma=0.0001, kernel=sigmoid; total time= 0.1s\n",
"[CV] END ................C=0.5, gamma=0.0001, kernel=sigmoid; total time= 0.1s\n",
"[CV] END ................C=0.5, gamma=0.0001, kernel=sigmoid; total time= 0.1s\n",
"[CV] END ................C=0.5, gamma=0.0001, kernel=sigmoid; total time= 0.1s\n",
"[CV] END ........................C=1, gamma=1, kernel=linear; total time= 0.1s\n",
"[CV] END ........................C=1, gamma=1, kernel=linear; total time= 0.1s\n",
"[CV] END ........................C=1, gamma=1, kernel=linear; total time= 0.1s\n",
"[CV] END ........................C=1, gamma=1, kernel=linear; total time= 0.0s\n",
"[CV] END ........................C=1, gamma=1, kernel=linear; total time= 0.1s\n",
"[CV] END ...........................C=1, gamma=1, kernel=rbf; total time= 0.1s\n",
"[CV] END ...........................C=1, gamma=1, kernel=rbf; total time= 0.1s\n",
"[CV] END ...........................C=1, gamma=1, kernel=rbf; total time= 0.1s\n",
"[CV] END ...........................C=1, gamma=1, kernel=rbf; total time= 0.1s\n",
"[CV] END ...........................C=1, gamma=1, kernel=rbf; total time= 0.1s\n",
"[CV] END .......................C=1, gamma=1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END .......................C=1, gamma=1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END .......................C=1, gamma=1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END .......................C=1, gamma=1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END .......................C=1, gamma=1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ......................C=1, gamma=0.1, kernel=linear; total time= 0.1s\n",
"[CV] END ......................C=1, gamma=0.1, kernel=linear; total time= 0.1s\n",
"[CV] END ......................C=1, gamma=0.1, kernel=linear; total time= 0.1s\n",
"[CV] END ......................C=1, gamma=0.1, kernel=linear; total time= 0.0s\n",
"[CV] END ......................C=1, gamma=0.1, kernel=linear; total time= 0.1s\n",
"[CV] END .........................C=1, gamma=0.1, kernel=rbf; total time= 0.1s\n",
"[CV] END .........................C=1, gamma=0.1, kernel=rbf; total time= 0.1s\n",
"[CV] END .........................C=1, gamma=0.1, kernel=rbf; total time= 0.1s\n",
"[CV] END .........................C=1, gamma=0.1, kernel=rbf; total time= 0.1s\n",
"[CV] END .........................C=1, gamma=0.1, kernel=rbf; total time= 0.1s\n",
"[CV] END .....................C=1, gamma=0.1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END .....................C=1, gamma=0.1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END .....................C=1, gamma=0.1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END .....................C=1, gamma=0.1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END .....................C=1, gamma=0.1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END .....................C=1, gamma=0.01, kernel=linear; total time= 0.1s\n",
"[CV] END .....................C=1, gamma=0.01, kernel=linear; total time= 0.1s\n",
"[CV] END .....................C=1, gamma=0.01, kernel=linear; total time= 0.1s\n",
"[CV] END .....................C=1, gamma=0.01, kernel=linear; total time= 0.0s\n",
"[CV] END .....................C=1, gamma=0.01, kernel=linear; total time= 0.1s\n",
"[CV] END ........................C=1, gamma=0.01, kernel=rbf; total time= 0.1s\n",
"[CV] END ........................C=1, gamma=0.01, kernel=rbf; total time= 0.1s\n",
"[CV] END ........................C=1, gamma=0.01, kernel=rbf; total time= 0.1s\n",
"[CV] END ........................C=1, gamma=0.01, kernel=rbf; total time= 0.1s\n",
"[CV] END ........................C=1, gamma=0.01, kernel=rbf; total time= 0.1s\n",
"[CV] END ....................C=1, gamma=0.01, kernel=sigmoid; total time= 0.1s\n",
"[CV] END ....................C=1, gamma=0.01, kernel=sigmoid; total time= 0.1s\n",
"[CV] END ....................C=1, gamma=0.01, kernel=sigmoid; total time= 0.1s\n",
"[CV] END ....................C=1, gamma=0.01, kernel=sigmoid; total time= 0.1s\n",
"[CV] END ....................C=1, gamma=0.01, kernel=sigmoid; total time= 0.1s\n",
"[CV] END ....................C=1, gamma=0.001, kernel=linear; total time= 0.1s\n",
"[CV] END ....................C=1, gamma=0.001, kernel=linear; total time= 0.1s\n",
"[CV] END ....................C=1, gamma=0.001, kernel=linear; total time= 0.1s\n",
"[CV] END ....................C=1, gamma=0.001, kernel=linear; total time= 0.0s\n",
"[CV] END ....................C=1, gamma=0.001, kernel=linear; total time= 0.1s\n",
"[CV] END .......................C=1, gamma=0.001, kernel=rbf; total time= 0.1s\n",
"[CV] END .......................C=1, gamma=0.001, kernel=rbf; total time= 0.1s\n",
"[CV] END .......................C=1, gamma=0.001, kernel=rbf; total time= 0.1s\n",
"[CV] END .......................C=1, gamma=0.001, kernel=rbf; total time= 0.1s\n",
"[CV] END .......................C=1, gamma=0.001, kernel=rbf; total time= 0.1s\n",
"[CV] END ...................C=1, gamma=0.001, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ...................C=1, gamma=0.001, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ...................C=1, gamma=0.001, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ...................C=1, gamma=0.001, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ...................C=1, gamma=0.001, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ...................C=1, gamma=0.0001, kernel=linear; total time= 0.1s\n",
"[CV] END ...................C=1, gamma=0.0001, kernel=linear; total time= 0.1s\n",
"[CV] END ...................C=1, gamma=0.0001, kernel=linear; total time= 0.1s\n",
"[CV] END ...................C=1, gamma=0.0001, kernel=linear; total time= 0.0s\n",
"[CV] END ...................C=1, gamma=0.0001, kernel=linear; total time= 0.1s\n",
"[CV] END ......................C=1, gamma=0.0001, kernel=rbf; total time= 0.1s\n",
"[CV] END ......................C=1, gamma=0.0001, kernel=rbf; total time= 0.1s\n",
"[CV] END ......................C=1, gamma=0.0001, kernel=rbf; total time= 0.1s\n",
"[CV] END ......................C=1, gamma=0.0001, kernel=rbf; total time= 0.1s\n",
"[CV] END ......................C=1, gamma=0.0001, kernel=rbf; total time= 0.1s\n",
"[CV] END ..................C=1, gamma=0.0001, kernel=sigmoid; total time= 0.1s\n",
"[CV] END ..................C=1, gamma=0.0001, kernel=sigmoid; total time= 0.1s\n",
"[CV] END ..................C=1, gamma=0.0001, kernel=sigmoid; total time= 0.1s\n",
"[CV] END ..................C=1, gamma=0.0001, kernel=sigmoid; total time= 0.1s\n",
"[CV] END ..................C=1, gamma=0.0001, kernel=sigmoid; total time= 0.1s\n",
"[CV] END .......................C=10, gamma=1, kernel=linear; total time= 0.6s\n",
"[CV] END .......................C=10, gamma=1, kernel=linear; total time= 0.4s\n",
"[CV] END .......................C=10, gamma=1, kernel=linear; total time= 0.3s\n",
"[CV] END .......................C=10, gamma=1, kernel=linear; total time= 0.2s\n",
"[CV] END .......................C=10, gamma=1, kernel=linear; total time= 0.3s\n",
"[CV] END ..........................C=10, gamma=1, kernel=rbf; total time= 0.1s\n",
"[CV] END ..........................C=10, gamma=1, kernel=rbf; total time= 0.1s\n",
"[CV] END ..........................C=10, gamma=1, kernel=rbf; total time= 0.1s\n",
"[CV] END ..........................C=10, gamma=1, kernel=rbf; total time= 0.1s\n",
"[CV] END ..........................C=10, gamma=1, kernel=rbf; total time= 0.1s\n",
"[CV] END ......................C=10, gamma=1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ......................C=10, gamma=1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ......................C=10, gamma=1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ......................C=10, gamma=1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ......................C=10, gamma=1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END .....................C=10, gamma=0.1, kernel=linear; total time= 0.5s\n",
"[CV] END .....................C=10, gamma=0.1, kernel=linear; total time= 0.4s\n",
"[CV] END .....................C=10, gamma=0.1, kernel=linear; total time= 0.3s\n",
"[CV] END .....................C=10, gamma=0.1, kernel=linear; total time= 0.2s\n",
"[CV] END .....................C=10, gamma=0.1, kernel=linear; total time= 0.3s\n",
"[CV] END ........................C=10, gamma=0.1, kernel=rbf; total time= 0.1s\n",
"[CV] END ........................C=10, gamma=0.1, kernel=rbf; total time= 0.1s\n",
"[CV] END ........................C=10, gamma=0.1, kernel=rbf; total time= 0.1s\n",
"[CV] END ........................C=10, gamma=0.1, kernel=rbf; total time= 0.1s\n",
"[CV] END ........................C=10, gamma=0.1, kernel=rbf; total time= 0.1s\n",
"[CV] END ....................C=10, gamma=0.1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ....................C=10, gamma=0.1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ....................C=10, gamma=0.1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ....................C=10, gamma=0.1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ....................C=10, gamma=0.1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ....................C=10, gamma=0.01, kernel=linear; total time= 0.6s\n",
"[CV] END ....................C=10, gamma=0.01, kernel=linear; total time= 0.4s\n",
"[CV] END ....................C=10, gamma=0.01, kernel=linear; total time= 0.3s\n",
"[CV] END ....................C=10, gamma=0.01, kernel=linear; total time= 0.2s\n",
"[CV] END ....................C=10, gamma=0.01, kernel=linear; total time= 0.3s\n",
"[CV] END .......................C=10, gamma=0.01, kernel=rbf; total time= 0.1s\n",
"[CV] END .......................C=10, gamma=0.01, kernel=rbf; total time= 0.1s\n",
"[CV] END .......................C=10, gamma=0.01, kernel=rbf; total time= 0.1s\n",
"[CV] END .......................C=10, gamma=0.01, kernel=rbf; total time= 0.1s\n",
"[CV] END .......................C=10, gamma=0.01, kernel=rbf; total time= 0.1s\n",
"[CV] END ...................C=10, gamma=0.01, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ...................C=10, gamma=0.01, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ...................C=10, gamma=0.01, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ...................C=10, gamma=0.01, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ...................C=10, gamma=0.01, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ...................C=10, gamma=0.001, kernel=linear; total time= 0.5s\n",
"[CV] END ...................C=10, gamma=0.001, kernel=linear; total time= 0.4s\n",
"[CV] END ...................C=10, gamma=0.001, kernel=linear; total time= 0.3s\n",
"[CV] END ...................C=10, gamma=0.001, kernel=linear; total time= 0.2s\n",
"[CV] END ...................C=10, gamma=0.001, kernel=linear; total time= 0.3s\n",
"[CV] END ......................C=10, gamma=0.001, kernel=rbf; total time= 0.1s\n",
"[CV] END ......................C=10, gamma=0.001, kernel=rbf; total time= 0.1s\n",
"[CV] END ......................C=10, gamma=0.001, kernel=rbf; total time= 0.1s\n",
"[CV] END ......................C=10, gamma=0.001, kernel=rbf; total time= 0.1s\n",
"[CV] END ......................C=10, gamma=0.001, kernel=rbf; total time= 0.1s\n",
"[CV] END ..................C=10, gamma=0.001, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ..................C=10, gamma=0.001, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ..................C=10, gamma=0.001, kernel=sigmoid; total time= 0.1s\n",
"[CV] END ..................C=10, gamma=0.001, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ..................C=10, gamma=0.001, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ..................C=10, gamma=0.0001, kernel=linear; total time= 0.7s\n",
"[CV] END ..................C=10, gamma=0.0001, kernel=linear; total time= 0.4s\n",
"[CV] END ..................C=10, gamma=0.0001, kernel=linear; total time= 0.3s\n",
"[CV] END ..................C=10, gamma=0.0001, kernel=linear; total time= 0.2s\n",
"[CV] END ..................C=10, gamma=0.0001, kernel=linear; total time= 0.3s\n",
"[CV] END .....................C=10, gamma=0.0001, kernel=rbf; total time= 0.1s\n",
"[CV] END .....................C=10, gamma=0.0001, kernel=rbf; total time= 0.1s\n",
"[CV] END .....................C=10, gamma=0.0001, kernel=rbf; total time= 0.1s\n",
"[CV] END .....................C=10, gamma=0.0001, kernel=rbf; total time= 0.1s\n",
"[CV] END .....................C=10, gamma=0.0001, kernel=rbf; total time= 0.1s\n",
"[CV] END .................C=10, gamma=0.0001, kernel=sigmoid; total time= 0.1s\n",
"[CV] END .................C=10, gamma=0.0001, kernel=sigmoid; total time= 0.1s\n",
"[CV] END .................C=10, gamma=0.0001, kernel=sigmoid; total time= 0.1s\n",
"[CV] END .................C=10, gamma=0.0001, kernel=sigmoid; total time= 0.1s\n",
"[CV] END .................C=10, gamma=0.0001, kernel=sigmoid; total time= 0.1s\n",
"[CV] END ......................C=100, gamma=1, kernel=linear; total time= 9.8s\n",
"[CV] END ......................C=100, gamma=1, kernel=linear; total time= 5.1s\n",
"[CV] END ......................C=100, gamma=1, kernel=linear; total time= 10.0s\n",
"[CV] END ......................C=100, gamma=1, kernel=linear; total time= 3.6s\n",
"[CV] END ......................C=100, gamma=1, kernel=linear; total time= 5.2s\n",
"[CV] END .........................C=100, gamma=1, kernel=rbf; total time= 0.1s\n",
"[CV] END .........................C=100, gamma=1, kernel=rbf; total time= 0.1s\n",
"[CV] END .........................C=100, gamma=1, kernel=rbf; total time= 0.1s\n",
"[CV] END .........................C=100, gamma=1, kernel=rbf; total time= 0.1s\n",
"[CV] END .........................C=100, gamma=1, kernel=rbf; total time= 0.1s\n",
"[CV] END .....................C=100, gamma=1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END .....................C=100, gamma=1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END .....................C=100, gamma=1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END .....................C=100, gamma=1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END .....................C=100, gamma=1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ....................C=100, gamma=0.1, kernel=linear; total time= 11.1s\n",
"[CV] END ....................C=100, gamma=0.1, kernel=linear; total time= 4.7s\n",
"[CV] END ....................C=100, gamma=0.1, kernel=linear; total time= 8.4s\n",
"[CV] END ....................C=100, gamma=0.1, kernel=linear; total time= 2.0s\n",
"[CV] END ....................C=100, gamma=0.1, kernel=linear; total time= 3.8s\n",
"[CV] END .......................C=100, gamma=0.1, kernel=rbf; total time= 0.2s\n",
"[CV] END .......................C=100, gamma=0.1, kernel=rbf; total time= 0.1s\n",
"[CV] END .......................C=100, gamma=0.1, kernel=rbf; total time= 0.2s\n",
"[CV] END .......................C=100, gamma=0.1, kernel=rbf; total time= 0.3s\n",
"[CV] END .......................C=100, gamma=0.1, kernel=rbf; total time= 0.2s\n",
"[CV] END ...................C=100, gamma=0.1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ...................C=100, gamma=0.1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ...................C=100, gamma=0.1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ...................C=100, gamma=0.1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ...................C=100, gamma=0.1, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ...................C=100, gamma=0.01, kernel=linear; total time= 10.5s\n",
"[CV] END ...................C=100, gamma=0.01, kernel=linear; total time= 4.6s\n",
"[CV] END ...................C=100, gamma=0.01, kernel=linear; total time= 7.4s\n",
"[CV] END ...................C=100, gamma=0.01, kernel=linear; total time= 1.8s\n",
"[CV] END ...................C=100, gamma=0.01, kernel=linear; total time= 3.4s\n",
"[CV] END ......................C=100, gamma=0.01, kernel=rbf; total time= 0.2s\n",
"[CV] END ......................C=100, gamma=0.01, kernel=rbf; total time= 0.2s\n",
"[CV] END ......................C=100, gamma=0.01, kernel=rbf; total time= 0.2s\n",
"[CV] END ......................C=100, gamma=0.01, kernel=rbf; total time= 0.3s\n",
"[CV] END ......................C=100, gamma=0.01, kernel=rbf; total time= 0.2s\n",
"[CV] END ..................C=100, gamma=0.01, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ..................C=100, gamma=0.01, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ..................C=100, gamma=0.01, kernel=sigmoid; total time= 0.1s\n",
"[CV] END ..................C=100, gamma=0.01, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ..................C=100, gamma=0.01, kernel=sigmoid; total time= 0.0s\n",
"[CV] END ..................C=100, gamma=0.001, kernel=linear; total time= 10.6s\n",
"[CV] END ..................C=100, gamma=0.001, kernel=linear; total time= 5.0s\n",
"[CV] END ..................C=100, gamma=0.001, kernel=linear; total time= 9.5s\n",
"[CV] END ..................C=100, gamma=0.001, kernel=linear; total time= 2.2s\n",
"[CV] END ..................C=100, gamma=0.001, kernel=linear; total time= 4.1s\n",
"[CV] END .....................C=100, gamma=0.001, kernel=rbf; total time= 0.1s\n",
"[CV] END .....................C=100, gamma=0.001, kernel=rbf; total time= 0.1s\n",
"[CV] END .....................C=100, gamma=0.001, kernel=rbf; total time= 0.1s\n",
"[CV] END .....................C=100, gamma=0.001, kernel=rbf; total time= 0.2s\n",
"[CV] END .....................C=100, gamma=0.001, kernel=rbf; total time= 0.1s\n",
"[CV] END .................C=100, gamma=0.001, kernel=sigmoid; total time= 0.0s\n",
"[CV] END .................C=100, gamma=0.001, kernel=sigmoid; total time= 0.0s\n",
"[CV] END .................C=100, gamma=0.001, kernel=sigmoid; total time= 0.0s\n",
"[CV] END .................C=100, gamma=0.001, kernel=sigmoid; total time= 0.0s\n",
"[CV] END .................C=100, gamma=0.001, kernel=sigmoid; total time= 0.0s\n",
"[CV] END .................C=100, gamma=0.0001, kernel=linear; total time= 10.9s\n",
"[CV] END .................C=100, gamma=0.0001, kernel=linear; total time= 4.5s\n",
"[CV] END .................C=100, gamma=0.0001, kernel=linear; total time= 7.5s\n",
"[CV] END .................C=100, gamma=0.0001, kernel=linear; total time= 1.8s\n",
"[CV] END .................C=100, gamma=0.0001, kernel=linear; total time= 3.4s\n",
"[CV] END ....................C=100, gamma=0.0001, kernel=rbf; total time= 0.1s\n",
"[CV] END ....................C=100, gamma=0.0001, kernel=rbf; total time= 0.1s\n",
"[CV] END ....................C=100, gamma=0.0001, kernel=rbf; total time= 0.1s\n",
"[CV] END ....................C=100, gamma=0.0001, kernel=rbf; total time= 0.1s\n",
"[CV] END ....................C=100, gamma=0.0001, kernel=rbf; total time= 0.1s\n",
"[CV] END ................C=100, gamma=0.0001, kernel=sigmoid; total time= 0.1s\n",
"[CV] END ................C=100, gamma=0.0001, kernel=sigmoid; total time= 0.1s\n",
"[CV] END ................C=100, gamma=0.0001, kernel=sigmoid; total time= 0.1s\n",
"[CV] END ................C=100, gamma=0.0001, kernel=sigmoid; total time= 0.1s\n",
"[CV] END ................C=100, gamma=0.0001, kernel=sigmoid; total time= 0.1s\n"
]
}
],
"source": [
"from sklearn.model_selection import GridSearchCV\n",
"\n",
"model = SVC(probability=True, random_state=42)\n",
"\n",
"param_grid = {\n",
" 'C': [0.5, 1, 10, 100],\n",
" 'gamma': [1, 0.1, 0.01, 0.001, 0.0001],\n",
" 'kernel': ['linear', 'rbf', 'sigmoid']\n",
"}\n",
"\n",
"grid_search = GridSearchCV(estimator=model, param_grid=param_grid, cv=5, verbose=2)\n",
"grid_search.fit(X, y)\n",
"\n",
"best_model = grid_search.best_estimator_"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"end_time": "2024-04-14T13:01:09.444905Z",
"start_time": "2024-04-14T12:58:11.642838Z"
}
}
},
{
"cell_type": "code",
"execution_count": 26,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'C': 1, 'gamma': 1, 'kernel': 'rbf'}\n"
]
}
],
"source": [
"print(grid_search.best_params_)"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"end_time": "2024-04-14T13:01:14.725788Z",
"start_time": "2024-04-14T13:01:14.717342Z"
}
}
},
{
"cell_type": "markdown",
"source": [],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 36,
"outputs": [
{
"data": {
"text/plain": "0.8951048951048951"
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"best_model.score(X_test, y_test)\n"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"end_time": "2024-04-14T13:06:57.012689Z",
"start_time": "2024-04-14T13:06:57.001809Z"
}
}
},
{
"cell_type": "markdown",
"source": [
"Najlepszy okazal sie model z funkcja jadra RBF oraz z C = 1 oraz gamma = 1. Skutecznosc wzrosla az do 89%. Mozna by pewnie zawężać jeszcze C oraz gamma aby uzyskac jeszcze wieksza dokladnosc."
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 41,
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/usr/local/lib/python3.9/site-packages/sklearn/utils/deprecation.py:87: FutureWarning: Function plot_confusion_matrix is deprecated; Function `plot_confusion_matrix` is deprecated in 1.0 and will be removed in 1.2. Use one of the class methods: ConfusionMatrixDisplay.from_predictions or ConfusionMatrixDisplay.from_estimator.\n",
" warnings.warn(msg, category=FutureWarning)\n"
]
},
{
"data": {
"text/plain": "<sklearn.metrics._plot.confusion_matrix.ConfusionMatrixDisplay at 0x1244ac610>"
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": "<Figure size 640x480 with 2 Axes>",
"image/png": "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KS8vTy1atLAdk5eXp27dulX7PowxAQDAgOp6Vs61116rrCz713R8//33atXqzIshW7durfDwcG3atMm2v7CwULt27VJsbGy171PvKiYAAHgDV83Kqa7x48frmmuu0TPPPKPhw4fr3//+t1577TW99tpr/72eSY888oieeuoptWvXTq1bt9a0adMUERHh0AtxSUwAAMBFXXXVVVq1apWmTp2qmTNnqnXr1po3b56SkpJsx0yaNEmnT5/Wn/70J+Xn5+u6667Thg0b5O/vX+37kJgAAGBAZrNJZnPNSybWGpx788036+abbz7vfpPJpJkzZ2rmzJk1jovEBAAAA6rrVk5dYfArAADwGFRMAAAwoJq+iO+353siEhMAAAzIW1s5JCYAABiQt1ZMGGMCAAA8BhUTAAAMyFsrJiQmAAAYkLeOMaGVAwAAPAYVEwAADMgkJ1s58sySCYkJAAAGRCsHAACgllExAQDAgJiVAwAAPAatHAAAgFpGxQQAAAOilQMAADyGt7ZySEwAADAgb62YMMYEAAB4DComAAAYkZOtHA998CuJCQAARkQrBwAAoJZRMQEAwICYlQMAADwGrRwAAIBaRsUEAAADopUDAAA8Bq0cAACAWkbFBAAAA/LWigmJCQAABsQYEwAA4DG8tWLCGBMAAOAxqJgAAGBAtHIAAIDHoJUDAABQy6iYAABgQCY52cpxWSSuRWICAIABmU0mmZ3ITJw5tzbRygEAAB6DigkAAAbkrbNyqJgAAGBAZ2flOLM44oknnjjn/OjoaNv+4uJijRkzRk2bNlVgYKCGDRumvLw8hz8XiQkAAAZkNjm/OOoPf/iDcnJybMv27dtt+8aPH6+1a9dqxYoVysjI0PHjx5WYmOjwPWjlAACAavHx8VF4ePg52wsKCrR48WKlp6erX79+kqTU1FR16NBBO3fuVK9evap9DyomAAAYkcm5ds7Z+cKFhYV2S0lJyXlvuX//fkVERKhNmzZKSkrSsWPHJEmZmZkqKytTXFyc7djo6GhFRUVpx44dDn0sEhMAAAzo7OBXZxZJioyMVHBwsG1JSUmp8n49e/ZUWlqaNmzYoIULF+rw4cO6/vrrderUKeXm5srX11chISF254SFhSk3N9ehz0UrBwCAeiw7O1sWi8W27ufnV+VxgwYNsv26S5cu6tmzp1q1aqV33nlHAQEBLouH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MUNPPPFElecsX75cn3/+uT777NyXcebm5srX11chISF228PCwpSbm1vtuBxOTEwmk/7617/qscce04EDB1RUVKSOHTsqMDDQ0UsBAIAaMsu5cSJmnTk3Ozvb7o32fn5+VR6fnZ2tcePG6cMPP5S/v3+N73sxNX7Amq+vrzp27OjKWAAAQB2zWCx2icn5ZGZm6qefflJMTIxtW0VFhbZu3apXXnlFGzduVGlpqfLz8+2qJnl5eQoPD692PA4nJn379r3g0+I2b97s6CUBAICDXNXKqa4bb7xRe/futdt2zz33KDo6WpMnT1ZkZKQaNmyoTZs2adiwYZLOzOQ9duyYYmNjq30fhxOTbt262a2XlZVpz549+vrrr5WcnOzo5QAAQA3U9Uv8goKC1KlTJ7ttjRs3VtOmTW3bR48erQkTJig0NFQWi0Vjx45VbGysevXqVe37OJyYzJ07t8rtTzzxhIqKihy9HAAA8BJz586V2WzWsGHDVFJSovj4eL366qsOXcNlL/EbOXKkrr76ar3wwguuuiQAADgPk0lODX51xTv8tmzZYrfu7++vBQsWaMGCBTW+pssSkx07dtTqKF0AAPA/dT3GpK44nJj8/tGyVqtVOTk52r17t6ZNm+aywAAAQP3jcGISHBxst242m9W+fXvNnDlTAwYMcFlgAADg/Op68GtdcSgxqaio0D333KPOnTvbPR8fAADULdN//3HmfE/k0LtyGjRooAEDBvAWYQAA3OxsxcSZxRM5/BK/Tp066dChQ7URCwAAqOccTkyeeuopTZw4UevWrVNOTs45byUEAAC1z1srJtUeYzJz5kw9+uijuummmyRJgwcPtns0vdVqlclkUkVFheujBAAAdkwm0wVfEVOd8z1RtROTJ598Un/+85/18ccf12Y8AACgHqt2YmK1WiVJffr0qbVgAABA9TBdWJ5b9gEAoL7hya+SrrjiiosmJydOnHAqIAAAUH85lJg8+eST5zz5FQAA1D2zyeTUS/ycObc2OZSYjBgxQs2bN6+tWAAAQDV56xiTaj/HhPElAACgtjk8KwcAAHgAJwe/euircqqfmFRWVtZmHAAAwAFmmWR2Irtw5tza5NAYEwAA4Bm8dbqww+/KAQAAqC1UTAAAMCBvnZVDYgIAgAF563NMaOUAAACPQcUEAAAD8tbBryQmAAAYkFlOtnI8dLowrRwAAOAxqJgAAGBAtHIAAIDHMMu5toentkw8NS4AAFAPUTEBAMCATCaTTE70Y5w5tzaRmAAAYEAmOfeCYM9MS0hMAAAwJJ78CgAAUMuomAAAYFCeWfNwDokJAAAG5K3PMaGVAwAAPAYVEwAADIjpwgAAwGPw5FcAAIBaRsUEAAADopUDAAA8hrc++ZVWDgAAuKiFCxeqS5cuslgsslgsio2N1fr16237i4uLNWbMGDVt2lSBgYEaNmyY8vLyHL4PiQkAAAZ0tpXjzOKIli1bavbs2crMzNTu3bvVr18/JSQk6JtvvpEkjR8/XmvXrtWKFSuUkZGh48ePKzEx0eHPRSsHAAADctWsnMLCQrvtfn5+8vPzO+f4W265xW796aef1sKFC7Vz5061bNlSixcvVnp6uvr16ydJSk1NVYcOHbRz50716tXL4bgAAICBuKpiEhkZqeDgYNuSkpJy0XtXVFRo+fLlOn36tGJjY5WZmamysjLFxcXZjomOjlZUVJR27Njh0OeiYgIAQD2WnZ0ti8ViW6+qWnLW3r17FRsbq+LiYgUGBmrVqlXq2LGj9uzZI19fX4WEhNgdHxYWptzcXIfiITEBAMCAXDUr5+xg1upo37699uzZo4KCAr377rtKTk5WRkaGE1Gci8QEAAADcsdL/Hx9fdW2bVtJUvfu3fXZZ5/ppZde0u23367S0lLl5+fbVU3y8vIUHh7u0D0YYwIAAGqksrJSJSUl6t69uxo2bKhNmzbZ9mVlZenYsWOKjY116JpUTAAAMCCzTDI70cxx9NypU6dq0KBBioqK0qlTp5Senq4tW7Zo48aNCg4O1ujRozVhwgSFhobKYrFo7Nixio2NdWhGjkRiAgCAIdV1K+enn37S3XffrZycHAUHB6tLly7auHGj+vfvL0maO3euzGazhg0bppKSEsXHx+vVV191OC4SEwAAcFGLFy++4H5/f38tWLBACxYscOo+JCYAABiQ6b//OHO+JyIxAQDAgNwxK6cuMCsHAAB4DComAAAYkMnJWTm0cgAAgMt4ayuHxAQAAAPy1sSEMSYAAMBjUDEBAMCAmC4MAAA8htl0ZnHmfE9EKwcAAHgMKiYAABgQrRwAAOAxmJUDAABQy6iYAABgQCY5147x0IIJiQkAAEbErBwAAIBaRsUE9VLR6WI9+/oHWr/1K/1yskidrrhUsx5JVLcOrdwdGuCUhM7hurNHpD74Jldv/jtbkhQW5KeRV0UqOixQPmazvvyxQKk7j6qguNzN0cIZ3jorp15WTLZs2SKTyaT8/Pxavc+oUaM0ZMiQWr0HaubR2cu19bMsvTx9pDb/fbL6XB2t4eNeVc7P+e4ODaixyy9prLj2zXX0xK+2bX4+Zv1lwBWSpJkbsjT9g33yMZs0Ka6dh/5YQnWdnZXjzOKJ3JqY/Pzzz3rggQcUFRUlPz8/hYeHKz4+Xp988kmt3veaa65RTk6OgoODa/U+8Ez/KSnV+xlfatqYwYrt1latWzbTxNGDdFnLS/Tmqtr9swfUFj8fsx7q3UavfXJERSX/q4S0bx6o5oF+enXbIWWf/I+yT/5HC7YdVptLGqtTC4sbI4azTC5YPJFbWznDhg1TaWmp3nzzTbVp00Z5eXnatGmTfvnllxpdz2q1qqKiQj4+F/5Yvr6+Cg8Pr9E9YHwV5ZWqqKiUn6/9nxN/v4b691eH3BQV4JzRsa30xQ/52ptTqKFdW9i2+zQwySqprMJq21ZWUSmrVWofFqi9OYVuiBY4P7dVTPLz87Vt2zY9++yz6tu3r1q1aqWrr75aU6dO1eDBg3XkyBGZTCbt2bPH7hyTyaQtW7ZI+l9LZv369erevbv8/Py0ZMkSmUwmfffdd3b3mzt3ri6//HK78/Lz81VYWKiAgACtX7/e7vhVq1YpKChIv/56piSanZ2t4cOHKyQkRKGhoUpISNCRI0dsx1dUVGjChAkKCQlR06ZNNWnSJFmtVl1ISUmJCgsL7RbUvsDG/urR6TLNTfuXcn8uUEVFpd7d+Jkyvz6in/6P3wMYzzWtQ9W6aSO9lfnDOfv2/3RaJeUVSurRUr4NzPLzMeuuqyLVwGxSk0YN3RAtXMUsk8wmJxYPrZm4LTEJDAxUYGCgVq9erZKSEqeuNWXKFM2ePVv79u3Trbfeqh49emjZsmV2xyxbtkx33nnnOedaLBbdfPPNSk9PP+f4IUOGqFGjRiorK1N8fLyCgoK0bds2ffLJJwoMDNTAgQNVWloqSZozZ47S0tK0ZMkSbd++XSdOnNCqVasuGHdKSoqCg4NtS2RkpFP/HVB9L0+7S1arVVcOma5WfR/V4hVbNSQuRiZPnT8HnEfTxr5K7hmllzMO2VVFzjpVUq65Hx9UTGSI3rwrRqlJMWrk20CH/u+0Ki/8dyd4OFo5rr6xj4/S0tJ0//33a9GiRYqJiVGfPn00YsQIdenSxaFrzZw5U/3797etJyUl6ZVXXtGsWbMkSd9//70yMzP1j3/8o8rzk5KSdNddd+nXX39Vo0aNVFhYqPfff9+WWLz99tuqrKzUG2+8IdN/RwulpqYqJCREW7Zs0YABAzRv3jxNnTpViYmJkqRFixZp48aNF4x76tSpmjBhgm29sLCQ5KSOXNbyEq1a8LB+/U+JTp0uVtglwfp/09LUKqKpu0MDHNK6aSOFBDTU7MF/sG1rYDapQ3iQ4juEKWnpbn11vFDj3turID8fVVit+rW0Qn+7vZt+OnXCjZEDVXPr4Ndhw4bp+PHjWrNmjQYOHKgtW7YoJiZGaWlpDl2nR48edusjRozQkSNHtHPnTklnqh8xMTGKjo6u8vybbrpJDRs21Jo1ayRJ7733niwWi+Li4iRJX375pQ4cOKCgoCBbpSc0NFTFxcU6ePCgCgoKlJOTo549e9qu6ePjc05cv+fn5yeLxWK3oG41CvBT2CXByi/8VVv+/Z3ir+/s7pAAh3x9vFATV32tyf/8xrYc/Pm0th/8RZP/+Y1+21E+VVKuX0sr9IcWQbIE+Gj3sXy3xQ0X8NKSidufY+Lv76/+/furf//+mjZtmu677z7NmDFD27ZtkyS7cRplZWVVXqNx48Z26+Hh4erXr5/S09PVq1cvpaen64EHHjhvDL6+vrr11luVnp6uESNGKD09XbfffrttEG1RUZG6d+9+TntIkpo1a+bwZ4b7fbxrn6xWqW1Ucx3+4WfNWrBGbaOaa8Qfe178ZMCDFJdXKjv/P7/bVqGiknLb9hvaXqIfC/6jwuJytWsWqFE9o/TBN3nKKSx2R8hwEW99jonbE5Pf69ixo1avXm37gZ+Tk6Mrr7xSkuwGwl5MUlKSJk2apDvuuEOHDh3SiBEjLnp8//799c0332jz5s166qmnbPtiYmL09ttvq3nz5uetarRo0UK7du1S7969JUnl5eXKzMxUTExMtWNG3TlVVKxnFq1Vzs/5CrE01h/7dNWU//dHNfRp4O7QAJdrEeyvO7q3VKBfA/1UVKpVXx3X+9/kuTssoEpuS0x++eUX3Xbbbbr33nvVpUsXBQUFaffu3XruueeUkJCggIAA9erVS7Nnz1br1q31008/6fHHH6/29RMTE/XAAw/ogQceUN++fRUREXHB43v37q3w8HAlJSWpdevWdm2ZpKQkPf/880pISNDMmTPVsmVLHT16VCtXrtSkSZPUsmVLjRs3TrNnz1a7du0UHR2tF198sdYf4IaaG3zjlRp845XuDgOoFTM3ZNmtv5X5Q5UzdmBwzj4kzTMLJu6dldOzZ0/NnTtXvXv3VqdOnTRt2jTdf//9euWVVyRJS5YsUXl5ubp3765HHnnEropxMUFBQbrlllv05ZdfKikp6aLHm0wm3XHHHVUe36hRI23dulVRUVFKTExUhw4dNHr0aBUXF9sqKI8++qjuuusuJScnKzY2VkFBQRo6dKgD/0UAAKg+Lx1iIpP1Yg/bQJ0pLCxUcHCwjuacYCAsvFbyss/dHQJQa8r+U6T14/qpoKCg1r7Hz/6s2LznmAKDan6PolOF6tctqlZjrQmPG2MCAACqwdmyh4eWTEhMAAAwIGblAAAAj+HsG4J5uzAAAMBFUDEBAMCAvHSICYkJAACG5KWZCa0cAADgMaiYAABgQMzKAQAAHoNZOQAAALWMxAQAAAOq63flpKSk6KqrrlJQUJCaN2+uIUOGKCvL/oWRxcXFGjNmjJo2barAwEANGzZMeXmOvcmaxAQAACOq48wkIyNDY8aM0c6dO/Xhhx+qrKxMAwYM0OnTp23HjB8/XmvXrtWKFSuUkZGh48ePKzEx0aH7MMYEAABc1IYNG+zW09LS1Lx5c2VmZqp3794qKCjQ4sWLlZ6ern79+kmSUlNT1aFDB+3cuVO9evWq1n2omAAAYEAmF/wjnXlb8W+XkpKSat2/oKBAkhQaGipJyszMVFlZmeLi4mzHREdHKyoqSjt27Kj25yIxAQDAgM7OynFmkaTIyEgFBwfblpSUlIveu7KyUo888oiuvfZaderUSZKUm5srX19fhYSE2B0bFham3Nzcan8uWjkAABiQqx78mp2dLYvFYtvu5+d30XPHjBmjr7/+Wtu3b3cigqqRmAAAUI9ZLBa7xORiHnroIa1bt05bt25Vy5YtbdvDw8NVWlqq/Px8u6pJXl6ewsPDq319WjkAABhRHc/KsVqteuihh7Rq1Spt3rxZrVu3ttvfvXt3NWzYUJs2bbJty8rK0rFjxxQbG1vt+1AxAQDAgOr6kfRjxoxRenq6/vnPfyooKMg2biQ4OFgBAQEKDg7W6NGjNWHCBIWGhspisWjs2LGKjY2t9owcicQEAABUw8KFCyVJN9xwg9321NRUjRo1SpI0d+5cmc1mDRs2TCUlJYqPj9err77q0H1ITAAAMKC6fleO1Wq96DH+/v5asGCBFixYUMOoSEwAADAkV83K8TQMfgUAAB6DigkAAEbkpSUTEhMAAAyormfl1BVaOQAAwGNQMQEAwIDqelZOXSExAQDAgLx0iAmJCQAAhuSlmQljTAAAgMegYgIAgAF566wcEhMAAIzIycGvHpqX0MoBAACeg4oJAAAG5KVjX0lMAAAwJC/NTGjlAAAAj0HFBAAAA2JWDgAA8Bje+kh6WjkAAMBjUDEBAMCAvHTsK4kJAACG5KWZCYkJAAAG5K2DXxljAgAAPAYVEwAADMgkJ2fluCwS1yIxAQDAgLx0iAmtHAAA4DmomAAAYEDe+oA1EhMAAAzJO5s5tHIAAIDHoGICAIAB0coBAAAewzsbObRyAACAB6FiAgCAAdHKAQAAHsNb35VDYgIAgBF56SATxpgAAACPQcUEAAAD8tKCCYkJAABG5K2DX2nlAAAAj0HFBAAAA2JWDgAA8BxeOsiEVg4AALiorVu36pZbblFERIRMJpNWr15tt99qtWr69Olq0aKFAgICFBcXp/379zt8HxITAAAMyOSCxRGnT59W165dtWDBgir3P/fcc5o/f74WLVqkXbt2qXHjxoqPj1dxcbFD96GVAwCAAblqVk5hYaHddj8/P/n5+Z1z/KBBgzRo0KAqr2W1WjVv3jw9/vjjSkhIkCQtXbpUYWFhWr16tUaMGFHtuKiYAABQj0VGRio4ONi2pKSkOHyNw4cPKzc3V3FxcbZtwcHB6tmzp3bs2OHQtaiYAABgSM7NyjnbzMnOzpbFYrFtrapacjG5ubmSpLCwMLvtYWFhtn3VRWICAIABuaqVY7FY7BITd6OVAwAAnBIeHi5JysvLs9uel5dn21ddJCYAAMAprVu3Vnh4uDZt2mTbVlhYqF27dik2Ntaha9HKAQDAgOr6XTlFRUU6cOCAbf3w4cPas2ePQkNDFRUVpUceeURPPfWU2rVrp9atW2vatGmKiIjQkCFDHLoPiQkAAAZU14+k3717t/r27WtbnzBhgiQpOTlZaWlpmjRpkk6fPq0//elPys/P13XXXacNGzbI39/fofuQmAAAgIu64YYbZLVaz7vfZDJp5syZmjlzplP3ITEBAMCA6rqVU1dITAAAMCAvfYcfs3IAAIDnoGICAIAReWnJhMQEAAADqutZOXWFVg4AAPAYVEwAADAgZuUAAACP4aVDTEhMAAAwJC/NTBhjAgAAPAYVEwAADMhbZ+WQmAAAYEAMfkWtO/typFOnCt0cCVB7yv5T5O4QgFpTVnxaki74sjtXKSx07meFs+fXFhITD3Lq1ClJUqcrLnNvIAAAp5w6dUrBwcG1cm1fX1+Fh4erXetIp68VHh4uX19fF0TlOiZrXaR1qJbKykodP35cQUFBMnlqjc3LFBYWKjIyUtnZ2bJYLO4OB3Ap/nzXPavVqlOnTikiIkJmc+3NLykuLlZpaanT1/H19ZW/v78LInIdKiYexGw2q2XLlu4Oo16yWCx8ccNr8ee7btVWpeS3/P39PS6hcBWmCwMAAI9BYgIAADwGiQnqNT8/P82YMUN+fn7uDgVwOf58w4gY/AoAADwGFRMAAOAxSEwAAIDHIDEBAAAeg8QEAAB4DBITAADgMUhMAACAx+CR9ABgcImJidU+duXKlbUYCeA8EhPUC3xxw5v99t0sVqtVq1atUnBwsHr06CFJyszMVH5+vkP/HwDuQmKCeoEvbniz1NRU268nT56s4cOHa9GiRWrQoIEkqaKiQg8++CAv8oMh8ORX1DuTJ0/WiRMnzvvF/fzzz7s5QqDmmjVrpu3bt6t9+/Z227OysnTNNdfol19+cVNkQPUw+BX1zpIlSzRx4kRbUiJJDRo00IQJE7RkyRI3RgY4r7y8XN99990527/77jtVVla6ISLAMbRyUO+c/eL+/d8o+eKGN7jnnns0evRoHTx4UFdffbUkadeuXZo9e7buueceN0cHXByJCeodvrjhzV544QWFh4drzpw5ysnJkSS1aNFCjz32mB599FE3RwdcHGNMUO9UVlbqhRde0EsvvWT3xT1u3Dg9+uijdi0ewMgKCwsliUGvMBQSE9RrfHHDG5WXl2vLli06ePCg7rzzTgUFBen48eOyWCwKDAx0d3jABZGYoF7iixve6ujRoxo4cKCOHTumkpISff/992rTpo3GjRunkpISLVq0yN0hAhfErBzUO0ePHlXnzp2VkJCgMWPG6Oeff5YkPfvss5o4caKbowOcM27cOPXo0UMnT55UQECAbfvQoUO1adMmN0YGVA+JCeodvrjhzbZt26bHH39cvr6+dtsvu+wy/fjjj26KCqg+ZuWg3tm2bZs+/fRTvrjhlSorK1VRUXHO9h9++EFBQUFuiAhwDBUT1Dt8ccObDRgwQPPmzbOtm0wmFRUVacaMGbrpppvcFxhQTQx+Rb1z++23Kzg4WK+99pqCgoL01VdfqVmzZkpISFBUVJTde0cAo/nhhx8UHx8vq9Wq/fv3q0ePHtq/f78uueQSbd26Vc2bN3d3iMAFkZig3uGLG96uvLxcy5cv11dffaWioiLFxMQoKSnJbkwV4KlITFAv8cUNb1VcXCx/f393hwHUGIkJAHgRi8WioUOHauTIkbrxxhtlNjOUEMZCYoJ6Yc2aNRo0aJAaNmyoNWvWXPDYwYMH11FUgOutWrVK6enpev/99xUcHKzbb79dI0eOVI8ePdwdGlAtJCaoF8xms3Jzc9W8efML/g3SZDJVOWMHMJpTp07p3Xff1VtvvaXNmzerTZs2GjlypKZPn+7u0IALIjEBAC/37bffKikpSV999RWJNzwezUfUK5WVlVqyZIluvvlmderUyfZo+qVLl4ocHd6kuLhY77zzjoYMGaKYmBidOHFCjz32mLvDAi6KignqDavVqltuuUUffPCBunbtqujoaFmtVu3bt0979+7V4MGDtXr1aneHCThl48aNSk9P1+rVq+Xj46Nbb71VSUlJ6t27t7tDA6qFR9Kj3khLS9PWrVu1adMm9e3b127f5s2bNWTIEC1dulR33323myIEnDd06FDdfPPNWrp0qW666SY1bNjQ3SEBDqFignpjwIAB6tevn6ZMmVLl/meeeUYZGRnauHFjHUcGuM6pU6d4tQIMjcQE9UZ4eLg2bNigbt26Vbn/iy++0KBBg5Sbm1u3gQFOKiwslMVisf36Qs4eB3gqWjmoN06cOKGwsLDz7g8LC9PJkyfrMCLANZo0aaKcnBw1b95cISEhMplM5xxjtVqZDg9DIDFBvVFRUSEfn/P/kW/QoIHKy8vrMCLANTZv3qzQ0FDbr6tKTACjoJWDesNsNmvQoEHy8/Orcn9JSYk2bNjA3ygBwI2omKDeSE5OvugxzMiB0bVr105JSUlKSkpSu3bt3B0O4DAqJgDgRebOnav09HR9/vnniomJ0ciRI3X77bcrPDzc3aEB1UJiAgBe6Pvvv9eyZcv01ltv6fDhw+rbt69GjhxJVRAej8QEALzczp079cADD/CuHBgCY0wAwEv9+9//Vnp6ut5++20VFhbqtttuc3dIwEVRMQEAL/L7Fk6/fv2UlJSkxMREBQYGujs84KJITADAi5jNZl111VW68847NWLEiAs+VBDwRCQmAOAlKioqtGTJEt16661q0qSJu8MBaoTEBAC8iL+/v/bt26fWrVu7OxSgRszuDgAA4DqdOnXSoUOH3B0GUGNUTADAi2zYsEFTp07VrFmz1L17dzVu3NhuP28XhqcjMQEAL2I2/68Q/tuX+fF2YRgFzzEBAC/y8ccfuzsEwClUTAAAgMegYgIAXmTr1q0X3N+7d+86igSoGSomAOBFfjvG5KzfjjVhjAk8HdOFAcCLnDx50m756aeftGHDBl111VX617/+5e7wgIuiYgIA9UBGRoYmTJigzMxMd4cCXBAVEwCoB8LCwpSVleXuMICLYvArAHiRr776ym7darUqJydHs2fPVrdu3dwTFOAAWjkA4EXMZrNMJpN+/9Xeq1cvLVmyRNHR0W6KDKgeEhMA8CJHjx61WzebzWrWrJn8/f3dFBHgGMaYAIAX2LFjh9atW6dWrVrZloyMDPXu3VtRUVH605/+pJKSEneHCVwUiQkAeIGZM2fqm2++sa3v3btXo0ePVlxcnKZMmaK1a9cqJSXFjREC1UMrBwC8QIsWLbR27Vr16NFDkvTXv/5VGRkZ2r59uyRpxYoVmjFjhr799lt3hglcFBUTAPACJ0+eVFhYmG09IyNDgwYNsq1fddVVys7OdkdogENITADAC4SFhenw4cOSpNLSUn3++efq1auXbf+pU6fUsGFDd4UHVBuJCQB4gZtuuklTpkzRtm3bNHXqVDVq1EjXX3+9bf9XX32lyy+/3I0RAtXDA9YAwAvMmjVLiYmJ6tOnjwIDA/Xmm2/K19fXtn/JkiUaMGCAGyMEqofBrwDgRQoKChQYGKgGDRrYbT9x4oQCAwPtkhXAE5GYAAAAj8EYEwAA4DFITAAAgMcgMQEAAB6DxAQAAHgMEhMAdkaNGqUhQ4bY1m+44QY98sgjdR7Hli1bZDKZlJ+ff95jTCaTVq9eXe1rPvHEE+rWrZtTcR05ckQmk0l79uxx6joAqkZiAhjAqFGjZDKZZDKZ5Ovrq7Zt22rmzJkqLy+v9XuvXLlSs2bNqtax1UkmAOBCeMAaYBADBw5UamqqSkpK9MEHH2jMmDFq2LChpk6des6xpaWlLnteRWhoqEuuAwDVQcUEMAg/Pz+Fh4erVatWeuCBBxQXF6c1a9ZI+l/75emnn1ZERITat28vScrOztbw4cMVEhKi0NBQJSQk6MiRI7ZrVlRUaMKECQoJCVHTpk01adIk/f7RRr9v5ZSUlGjy5MmKjIyUn5+f2rZtq8WLF+vIkSPq27evJKlJkyYymUwaNWqUJKmyslIpKSlq3bq1AgIC1LVrV7377rt29/nggw90xRVXKCAgQH379rWLs7omT56sK664Qo0aNVKbNm00bdo0lZWVnXPc3/72N0VGRqpRo0YaPny4CgoK7Pa/8cYb6tChg/z9/RUdHa1XX33V4VgA1AyJCWBQAQEBKi0tta1v2rRJWVlZ+vDDD7Vu3TqVlZUpPj5eQUFB2rZtmz755BMFBgZq4MCBtvPmzJmjtLQ0LVmyRNu3b9eJEye0atWqC9737rvv1ltvvaX58+dr3759+tvf/qbAwEBFRkbqvffekyRlZWUpJydHL730kiQpJSVFS5cu1aJFi/TNN99o/PjxGjlypDIyMiSdSaASExN1yy23aM+ePbrvvvs0ZcoUh/+bBAUFKS0tTd9++61eeuklvf7665o7d67dMQcOHNA777yjtWvXasOGDfriiy/04IMP2vYvW7ZM06dP19NPP619+/bpmWee0bRp0/Tmm286HA+AGrAC8HjJycnWhIQEq9VqtVZWVlo//PBDq5+fn3XixIm2/WFhYdaSkhLbOX//+9+t7du3t1ZWVtq2lZSUWAMCAqwbN260Wq1Wa4sWLazPPfecbX9ZWZm1ZcuWtntZrVZrnz59rOPGjbNarVZrVlaWVZL1ww8/rDLOjz/+2CrJevLkSdu24uJia6NGjayffvqp3bGjR4+23nHHHVar1WqdOnWqtWPHjnb7J0+efM61fk+SddWqVefd//zzz1u7d+9uW58xY4a1QYMG1h9++MG2bf369Vaz2WzNycmxWq1W6+WXX25NT0+3u86sWbOssbGxVqvVaj18+LBVkvWLL744730B1BxjTACDWLdunQIDA1VWVqbKykrdeeedeuKJJ2z7O3fubDeu5Msvv9SBAwcUFBRkd53i4mIdPHhQBQUFysnJUc+ePW37fHx81KNHj3PaOWft2bNHDRo0UJ8+faod94EDB/Trr7+qf//+dttLS0t15ZVXSpL27dtnF4ckxcbGVvseZ7399tuaP3++Dh48qKKiIpWXl8tisdgdExUVpUsvvdTuPpWVlcrKylJQUJAOHjyo0aNH6/7777cdU15eruDgYIfjAeA4EhPAIPr27auFCxfK19dXERER8vGx/9+3cePGdutFRUXq3r27li1bds61mjVrVqMYAgICHD6nqKhIkvT+++/bJQTSmXEzrrJjxw4lJSXpySefVHx8vIKDg7V8+XLNmTPH4Vhff/31cxKl378UD0DtIDEBDKJx48Zq27ZttY+PiYnR22+/rebNm59TNTirRYsW2rVrl3r37i3pTGUgMzNTMTExVR7fuXNnVVZWKiMjQ3FxcefsP1uxqaiosG3r2LGj/Pz8dOzYsfNWWjp06GAbyHvWzp07L/4hf+PTTz9Vq1at9Ne//tW27ejRo+ccd+zYMR0/flwRERG2+5jNZrVv315hYWGKiIjQoUOHlJSU5ND9AbgGg18BL5WUlKRLLrlECQkJ2rZtmw4fPqwtW7bo4Ycf1g8//CBJGjdunGbPnq3Vq1fru+++04MPPnjBZ5BcdtllSk5O1r333qvVq1fbrvnOO+9Iklq1aiWTyaR169bp559/VlFRkYKCgjRx4kSNHz9eb775pg4ePKjPP/9cL7/8sm1A6Z///Gft379fjz32mLKyspSenq60tDSHPm+7du107NgxLV++XAcPHtT8+fOrHMjr7++v5ORkffnll9q2bZsefvhhDR8+XOHh4ZKkJ598UikpKZo/f76+//577d27V6mpqXrxxRcdigdAzZCYAF6qUaNG2rp1q6KiopSYmKgOHTpo9OjRKi4utlVQHn30Ud11111KTk5WbGysgoKCNHTo0Ated+HChbr11lv14IMPKjo6Wvfff79Onz4tSbr00kv15JNPasqUKQoLC9NDDz0kSZo1a5amTZumlJQUdejQQQMHDtT777+v1q1bSzoz7uO9997T6tWr1bVrVy1atEjPPPOMQ5938ODBGj9+vB566CF169ZNn376qaZNm3bOcW3btlViYqJuuukmDRgwQF26dLGbDnzffffpjTfeUGpqqjp37qw+ffooLS3NFiuA2mWynm+UGwAAQB2jYgIAADwGiQkAAPAYJCYAAMBjkJgAAACPQWICAAA8BokJAADwGCQmAADAY5CYAAAAj0FiAgAAPAaJCQAA8BgkJgAAwGP8fwIjS7qQAvxLAAAAAElFTkSuQmCC"
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from sklearn.metrics import plot_confusion_matrix\n",
"\n",
"plot_confusion_matrix(best_model, X_test, y_test, display_labels=['Died', 'Survived'], cmap='Blues', xticks_rotation='vertical')"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"end_time": "2024-04-14T13:35:14.404281Z",
"start_time": "2024-04-14T13:35:14.211756Z"
}
}
},
{
"cell_type": "markdown",
"source": [
"Confusion matrix pokazujący rozklad TP, TN, FP oraz FN. W zależności od tego czy bardziej chcemy unikac FN czy tez FP mozna doostosowac model, nawet kosztem ogolnej skutecznosci."
],
"metadata": {
"collapsed": false
}
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 0
}