{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting pandas\n",
" Using cached pandas-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (89 kB)\n",
"Requirement already satisfied: numpy>=1.26.0 in /home/br0kenpixel/Documents/ui-cviko1/lib64/python3.13/site-packages (from pandas) (2.2.4)\n",
"Requirement already satisfied: python-dateutil>=2.8.2 in /home/br0kenpixel/Documents/ui-cviko1/lib64/python3.13/site-packages (from pandas) (2.9.0.post0)\n",
"Collecting pytz>=2020.1 (from pandas)\n",
" Downloading pytz-2025.2-py2.py3-none-any.whl.metadata (22 kB)\n",
"Collecting tzdata>=2022.7 (from pandas)\n",
" Downloading tzdata-2025.2-py2.py3-none-any.whl.metadata (1.4 kB)\n",
"Requirement already satisfied: six>=1.5 in /home/br0kenpixel/Documents/ui-cviko1/lib64/python3.13/site-packages (from python-dateutil>=2.8.2->pandas) (1.17.0)\n",
"Using cached pandas-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.7 MB)\n",
"Downloading pytz-2025.2-py2.py3-none-any.whl (509 kB)\n",
"Downloading tzdata-2025.2-py2.py3-none-any.whl (347 kB)\n",
"Installing collected packages: pytz, tzdata, pandas\n",
"Successfully installed pandas-2.2.3 pytz-2025.2 tzdata-2025.2\n",
"\n",
"\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m24.2\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m25.0.1\u001b[0m\n",
"\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n",
"Note: you may need to restart the kernel to use updated packages.\n"
]
}
],
"source": [
"%pip install pandas"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import pandas"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"loans = pandas.read_csv('loan_historical_data.csv', sep=\";\")"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Client | \n",
" Income | \n",
" Credit | \n",
" Gender | \n",
" Unemployed | \n",
" Safe | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" K1 | \n",
" High | \n",
" Excellent | \n",
" Female | \n",
" No | \n",
" Yes | \n",
"
\n",
" \n",
" | 1 | \n",
" K2 | \n",
" High | \n",
" Excellent | \n",
" Man | \n",
" No | \n",
" Yes | \n",
"
\n",
" \n",
" | 2 | \n",
" K3 | \n",
" Low | \n",
" Poor | \n",
" Man | \n",
" No | \n",
" No | \n",
"
\n",
" \n",
" | 3 | \n",
" K4 | \n",
" Low | \n",
" Excellent | \n",
" Female | \n",
" Yes | \n",
" Yes | \n",
"
\n",
" \n",
" | 4 | \n",
" K5 | \n",
" Low | \n",
" Excellent | \n",
" Man | \n",
" Yes | \n",
" Yes | \n",
"
\n",
" \n",
" | 5 | \n",
" K6 | \n",
" Low | \n",
" Poor | \n",
" Female | \n",
" Yes | \n",
" No | \n",
"
\n",
" \n",
" | 6 | \n",
" K7 | \n",
" High | \n",
" Poor | \n",
" Man | \n",
" No | \n",
" Yes | \n",
"
\n",
" \n",
" | 7 | \n",
" K8 | \n",
" High | \n",
" Poor | \n",
" Female | \n",
" Yes | \n",
" Yes | \n",
"
\n",
" \n",
" | 8 | \n",
" K9 | \n",
" Low | \n",
" Fair | \n",
" Man | \n",
" Yes | \n",
" No | \n",
"
\n",
" \n",
" | 9 | \n",
" K10 | \n",
" High | \n",
" Fair | \n",
" Female | \n",
" No | \n",
" Yes | \n",
"
\n",
" \n",
" | 10 | \n",
" K11 | \n",
" Low | \n",
" Fair | \n",
" Female | \n",
" Yes | \n",
" No | \n",
"
\n",
" \n",
" | 11 | \n",
" K12 | \n",
" Low | \n",
" Fair | \n",
" Man | \n",
" No | \n",
" Yes | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Client Income Credit Gender Unemployed Safe\n",
"0 K1 High Excellent Female No Yes\n",
"1 K2 High Excellent Man No Yes\n",
"2 K3 Low Poor Man No No\n",
"3 K4 Low Excellent Female Yes Yes\n",
"4 K5 Low Excellent Man Yes Yes\n",
"5 K6 Low Poor Female Yes No\n",
"6 K7 High Poor Man No Yes\n",
"7 K8 High Poor Female Yes Yes\n",
"8 K9 Low Fair Man Yes No\n",
"9 K10 High Fair Female No Yes\n",
"10 K11 Low Fair Female Yes No\n",
"11 K12 Low Fair Man No Yes"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"loans"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting scikit-learn\n",
" Downloading scikit_learn-1.6.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (18 kB)\n",
"Requirement already satisfied: numpy>=1.19.5 in /home/br0kenpixel/Documents/ui-cviko1/lib64/python3.13/site-packages (from scikit-learn) (2.2.4)\n",
"Requirement already satisfied: scipy>=1.6.0 in /home/br0kenpixel/Documents/ui-cviko1/lib64/python3.13/site-packages (from scikit-learn) (1.15.2)\n",
"Collecting joblib>=1.2.0 (from scikit-learn)\n",
" Downloading joblib-1.4.2-py3-none-any.whl.metadata (5.4 kB)\n",
"Collecting threadpoolctl>=3.1.0 (from scikit-learn)\n",
" Downloading threadpoolctl-3.6.0-py3-none-any.whl.metadata (13 kB)\n",
"Downloading scikit_learn-1.6.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.2 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m13.2/13.2 MB\u001b[0m \u001b[31m8.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0ma \u001b[36m0:00:01\u001b[0m\n",
"\u001b[?25hDownloading joblib-1.4.2-py3-none-any.whl (301 kB)\n",
"Downloading threadpoolctl-3.6.0-py3-none-any.whl (18 kB)\n",
"Installing collected packages: threadpoolctl, joblib, scikit-learn\n",
"Successfully installed joblib-1.4.2 scikit-learn-1.6.1 threadpoolctl-3.6.0\n",
"\n",
"\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m24.2\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m25.0.1\u001b[0m\n",
"\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n",
"Note: you may need to restart the kernel to use updated packages.\n"
]
}
],
"source": [
"%pip install scikit-learn"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.tree import DecisionTreeClassifier # Import Decision Tree Classifier\n",
"from sklearn.model_selection import train_test_split # Import train_test_split function\n",
"from sklearn import metrics #Import scikit-learn metrics module for accuracy calculation"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"arr1 = [1,1,2,2,2,4,4,2,3]"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2, 3, 4}"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"set(arr1)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 2, 3, 4]"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list(set(arr1))"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"arr2 = [\"High\", \"Low\", \"Low\", \"Low\", \"High\"]"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['High', 'Low']"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list(set(arr2))"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"def cat2int(col):\n",
" vals = list(set(col))\n",
" for i, string in enumerate(col):\n",
" col[i] = vals.index(string)\n",
" return col"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 0\n",
"1 1\n",
"2 1\n",
"3 0\n",
"4 1\n",
"5 0\n",
"6 1\n",
"7 0\n",
"8 1\n",
"9 0\n",
"10 0\n",
"11 1\n",
"Name: Gender, dtype: object"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cat2int(loans[\"Gender\"])"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Client | \n",
" Income | \n",
" Credit | \n",
" Gender | \n",
" Unemployed | \n",
" Safe | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" K1 | \n",
" High | \n",
" Excellent | \n",
" 0 | \n",
" No | \n",
" Yes | \n",
"
\n",
" \n",
" | 1 | \n",
" K2 | \n",
" High | \n",
" Excellent | \n",
" 1 | \n",
" No | \n",
" Yes | \n",
"
\n",
" \n",
" | 2 | \n",
" K3 | \n",
" Low | \n",
" Poor | \n",
" 1 | \n",
" No | \n",
" No | \n",
"
\n",
" \n",
" | 3 | \n",
" K4 | \n",
" Low | \n",
" Excellent | \n",
" 0 | \n",
" Yes | \n",
" Yes | \n",
"
\n",
" \n",
" | 4 | \n",
" K5 | \n",
" Low | \n",
" Excellent | \n",
" 1 | \n",
" Yes | \n",
" Yes | \n",
"
\n",
" \n",
" | 5 | \n",
" K6 | \n",
" Low | \n",
" Poor | \n",
" 0 | \n",
" Yes | \n",
" No | \n",
"
\n",
" \n",
" | 6 | \n",
" K7 | \n",
" High | \n",
" Poor | \n",
" 1 | \n",
" No | \n",
" Yes | \n",
"
\n",
" \n",
" | 7 | \n",
" K8 | \n",
" High | \n",
" Poor | \n",
" 0 | \n",
" Yes | \n",
" Yes | \n",
"
\n",
" \n",
" | 8 | \n",
" K9 | \n",
" Low | \n",
" Fair | \n",
" 1 | \n",
" Yes | \n",
" No | \n",
"
\n",
" \n",
" | 9 | \n",
" K10 | \n",
" High | \n",
" Fair | \n",
" 0 | \n",
" No | \n",
" Yes | \n",
"
\n",
" \n",
" | 10 | \n",
" K11 | \n",
" Low | \n",
" Fair | \n",
" 0 | \n",
" Yes | \n",
" No | \n",
"
\n",
" \n",
" | 11 | \n",
" K12 | \n",
" Low | \n",
" Fair | \n",
" 1 | \n",
" No | \n",
" Yes | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Client Income Credit Gender Unemployed Safe\n",
"0 K1 High Excellent 0 No Yes\n",
"1 K2 High Excellent 1 No Yes\n",
"2 K3 Low Poor 1 No No\n",
"3 K4 Low Excellent 0 Yes Yes\n",
"4 K5 Low Excellent 1 Yes Yes\n",
"5 K6 Low Poor 0 Yes No\n",
"6 K7 High Poor 1 No Yes\n",
"7 K8 High Poor 0 Yes Yes\n",
"8 K9 Low Fair 1 Yes No\n",
"9 K10 High Fair 0 No Yes\n",
"10 K11 Low Fair 0 Yes No\n",
"11 K12 Low Fair 1 No Yes"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"loans"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 0\n",
"1 0\n",
"2 0\n",
"3 1\n",
"4 1\n",
"5 1\n",
"6 0\n",
"7 1\n",
"8 1\n",
"9 0\n",
"10 1\n",
"11 0\n",
"Name: Unemployed, dtype: object"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cat2int(loans[\"Income\"])\n",
"cat2int(loans[\"Credit\"])\n",
"cat2int(loans[\"Unemployed\"])"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Client | \n",
" Income | \n",
" Credit | \n",
" Gender | \n",
" Unemployed | \n",
" Safe | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" K1 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" Yes | \n",
"
\n",
" \n",
" | 1 | \n",
" K2 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
" Yes | \n",
"
\n",
" \n",
" | 2 | \n",
" K3 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 0 | \n",
" No | \n",
"
\n",
" \n",
" | 3 | \n",
" K4 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" Yes | \n",
"
\n",
" \n",
" | 4 | \n",
" K5 | \n",
" 1 | \n",
" 0 | \n",
" 1 | \n",
" 1 | \n",
" Yes | \n",
"
\n",
" \n",
" | 5 | \n",
" K6 | \n",
" 1 | \n",
" 1 | \n",
" 0 | \n",
" 1 | \n",
" No | \n",
"
\n",
" \n",
" | 6 | \n",
" K7 | \n",
" 0 | \n",
" 1 | \n",
" 1 | \n",
" 0 | \n",
" Yes | \n",
"
\n",
" \n",
" | 7 | \n",
" K8 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
" 1 | \n",
" Yes | \n",
"
\n",
" \n",
" | 8 | \n",
" K9 | \n",
" 1 | \n",
" 2 | \n",
" 1 | \n",
" 1 | \n",
" No | \n",
"
\n",
" \n",
" | 9 | \n",
" K10 | \n",
" 0 | \n",
" 2 | \n",
" 0 | \n",
" 0 | \n",
" Yes | \n",
"
\n",
" \n",
" | 10 | \n",
" K11 | \n",
" 1 | \n",
" 2 | \n",
" 0 | \n",
" 1 | \n",
" No | \n",
"
\n",
" \n",
" | 11 | \n",
" K12 | \n",
" 1 | \n",
" 2 | \n",
" 1 | \n",
" 0 | \n",
" Yes | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Client Income Credit Gender Unemployed Safe\n",
"0 K1 0 0 0 0 Yes\n",
"1 K2 0 0 1 0 Yes\n",
"2 K3 1 1 1 0 No\n",
"3 K4 1 0 0 1 Yes\n",
"4 K5 1 0 1 1 Yes\n",
"5 K6 1 1 0 1 No\n",
"6 K7 0 1 1 0 Yes\n",
"7 K8 0 1 0 1 Yes\n",
"8 K9 1 2 1 1 No\n",
"9 K10 0 2 0 0 Yes\n",
"10 K11 1 2 0 1 No\n",
"11 K12 1 2 1 0 Yes"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"loans"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
"#split dataset in features and target variable\n",
"\n",
"X = loans[['Income','Credit','Gender','Unemployed']] # Features\n",
"y = loans.Safe # Target variable"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Income | \n",
" Credit | \n",
" Gender | \n",
" Unemployed | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | 1 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
"
\n",
" \n",
" | 2 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 0 | \n",
"
\n",
" \n",
" | 3 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
"
\n",
" \n",
" | 4 | \n",
" 1 | \n",
" 0 | \n",
" 1 | \n",
" 1 | \n",
"
\n",
" \n",
" | 5 | \n",
" 1 | \n",
" 1 | \n",
" 0 | \n",
" 1 | \n",
"
\n",
" \n",
" | 6 | \n",
" 0 | \n",
" 1 | \n",
" 1 | \n",
" 0 | \n",
"
\n",
" \n",
" | 7 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
" 1 | \n",
"
\n",
" \n",
" | 8 | \n",
" 1 | \n",
" 2 | \n",
" 1 | \n",
" 1 | \n",
"
\n",
" \n",
" | 9 | \n",
" 0 | \n",
" 2 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | 10 | \n",
" 1 | \n",
" 2 | \n",
" 0 | \n",
" 1 | \n",
"
\n",
" \n",
" | 11 | \n",
" 1 | \n",
" 2 | \n",
" 1 | \n",
" 0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Income Credit Gender Unemployed\n",
"0 0 0 0 0\n",
"1 0 0 1 0\n",
"2 1 1 1 0\n",
"3 1 0 0 1\n",
"4 1 0 1 1\n",
"5 1 1 0 1\n",
"6 0 1 1 0\n",
"7 0 1 0 1\n",
"8 1 2 1 1\n",
"9 0 2 0 0\n",
"10 1 2 0 1\n",
"11 1 2 1 0"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 Yes\n",
"1 Yes\n",
"2 No\n",
"3 Yes\n",
"4 Yes\n",
"5 No\n",
"6 Yes\n",
"7 Yes\n",
"8 No\n",
"9 Yes\n",
"10 No\n",
"11 Yes\n",
"Name: Safe, dtype: object"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [],
"source": [
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=15) # 70% training and 30% test"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Income | \n",
" Credit | \n",
" Gender | \n",
" Unemployed | \n",
"
\n",
" \n",
" \n",
" \n",
" | 9 | \n",
" 0 | \n",
" 2 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | 3 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
"
\n",
" \n",
" | 4 | \n",
" 1 | \n",
" 0 | \n",
" 1 | \n",
" 1 | \n",
"
\n",
" \n",
" | 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | 7 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
" 1 | \n",
"
\n",
" \n",
" | 10 | \n",
" 1 | \n",
" 2 | \n",
" 0 | \n",
" 1 | \n",
"
\n",
" \n",
" | 5 | \n",
" 1 | \n",
" 1 | \n",
" 0 | \n",
" 1 | \n",
"
\n",
" \n",
" | 8 | \n",
" 1 | \n",
" 2 | \n",
" 1 | \n",
" 1 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Income Credit Gender Unemployed\n",
"9 0 2 0 0\n",
"3 1 0 0 1\n",
"4 1 0 1 1\n",
"0 0 0 0 0\n",
"7 0 1 0 1\n",
"10 1 2 0 1\n",
"5 1 1 0 1\n",
"8 1 2 1 1"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_train"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"9 Yes\n",
"3 Yes\n",
"4 Yes\n",
"0 Yes\n",
"7 Yes\n",
"10 No\n",
"5 No\n",
"8 No\n",
"Name: Safe, dtype: object"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_train"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Income | \n",
" Credit | \n",
" Gender | \n",
" Unemployed | \n",
"
\n",
" \n",
" \n",
" \n",
" | 11 | \n",
" 1 | \n",
" 2 | \n",
" 1 | \n",
" 0 | \n",
"
\n",
" \n",
" | 6 | \n",
" 0 | \n",
" 1 | \n",
" 1 | \n",
" 0 | \n",
"
\n",
" \n",
" | 2 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 0 | \n",
"
\n",
" \n",
" | 1 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Income Credit Gender Unemployed\n",
"11 1 2 1 0\n",
"6 0 1 1 0\n",
"2 1 1 1 0\n",
"1 0 0 1 0"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_test"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"11 Yes\n",
"6 Yes\n",
"2 No\n",
"1 Yes\n",
"Name: Safe, dtype: object"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_test"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [],
"source": [
"# Create Decision Tree classifer object\n",
"clf = DecisionTreeClassifier()\n",
"\n",
"# Train Decision Tree Classifer\n",
"# Training the model on the data, storing the information learned from the data\n",
"# Model is learning the relationship between x (features: Income, Credit,\tGender,\tUnemployed) and y (Safe)\n",
"clf = clf.fit(X_train,y_train)"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [],
"source": [
"y_pred = clf.predict(X_test)"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Income | \n",
" Credit | \n",
" Gender | \n",
" Unemployed | \n",
"
\n",
" \n",
" \n",
" \n",
" | 11 | \n",
" 1 | \n",
" 2 | \n",
" 1 | \n",
" 0 | \n",
"
\n",
" \n",
" | 6 | \n",
" 0 | \n",
" 1 | \n",
" 1 | \n",
" 0 | \n",
"
\n",
" \n",
" | 2 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 0 | \n",
"
\n",
" \n",
" | 1 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Income Credit Gender Unemployed\n",
"11 1 2 1 0\n",
"6 0 1 1 0\n",
"2 1 1 1 0\n",
"1 0 0 1 0"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_test"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['No', 'Yes', 'No', 'Yes'], dtype=object)"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_pred"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"11 Yes\n",
"6 Yes\n",
"2 No\n",
"1 Yes\n",
"Name: Safe, dtype: object"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_test"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Accuracy: 0.75\n"
]
}
],
"source": [
"# Model Accuracy, how often is the classifier correct?\n",
"print(\"Accuracy:\",metrics.accuracy_score(y_test, y_pred))"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [],
"source": [
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [],
"source": [
"clf = DecisionTreeClassifier()\n",
"clf = clf.fit(X_train,y_train)"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [],
"source": [
"y_pred = clf.predict(X_test)"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Accuracy: 0.5\n"
]
}
],
"source": [
"print(\"Accuracy:\",metrics.accuracy_score(y_test, y_pred))"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting pydotplus\n",
" Downloading pydotplus-2.0.2.tar.gz (278 kB)\n",
" Installing build dependencies ... \u001b[?25ldone\n",
"\u001b[?25h Getting requirements to build wheel ... \u001b[?25ldone\n",
"\u001b[?25h Preparing metadata (pyproject.toml) ... \u001b[?25ldone\n",
"\u001b[?25hRequirement already satisfied: pyparsing>=2.0.1 in /home/br0kenpixel/Documents/ui-cviko1/lib64/python3.13/site-packages (from pydotplus) (3.2.3)\n",
"Building wheels for collected packages: pydotplus\n",
" Building wheel for pydotplus (pyproject.toml) ... \u001b[?25ldone\n",
"\u001b[?25h Created wheel for pydotplus: filename=pydotplus-2.0.2-py3-none-any.whl size=24687 sha256=c477e8981a47f023f93b6f4aa926f3899a8d5302c81197821877eb34780c3280\n",
" Stored in directory: /home/br0kenpixel/.cache/pip/wheels/4a/c0/ed/a9eeeb08c3c53bb90d3822cf76557c8fdcbc349ee11a011169\n",
"Successfully built pydotplus\n",
"Installing collected packages: pydotplus\n",
"Successfully installed pydotplus-2.0.2\n",
"\n",
"\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m24.2\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m25.0.1\u001b[0m\n",
"\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n",
"Note: you may need to restart the kernel to use updated packages.\n"
]
}
],
"source": [
"%pip install pydotplus"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.tree import export_graphviz\n",
"from six import StringIO\n",
"from IPython.display import Image"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [],
"source": [
"import pydotplus"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dot_data = StringIO()\n",
"export_graphviz(clf, out_file=dot_data,\n",
" filled=True, rounded=False,\n",
" special_characters=True,feature_names = ['Income','Credit','Gender','Unemployed'],class_names=['no','yes'])\n",
"graph = pydotplus.graph_from_dot_data(dot_data.getvalue())\n",
"graph.write_png('graf.png')\n",
"Image(graph.create_png())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Titanic"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [],
"source": [
"titanic = pandas.read_csv('titanic_full.csv')"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" PassengerId | \n",
" Survived | \n",
" Pclass | \n",
" Name | \n",
" Sex | \n",
" Age | \n",
" SibSp | \n",
" Parch | \n",
" Ticket | \n",
" Fare | \n",
" Cabin | \n",
" Embarked | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 1 | \n",
" 0 | \n",
" 3 | \n",
" Braund, Mr. Owen Harris | \n",
" male | \n",
" 22.0 | \n",
" 1 | \n",
" 0 | \n",
" A/5 21171 | \n",
" 7.2500 | \n",
" NaN | \n",
" S | \n",
"
\n",
" \n",
" | 1 | \n",
" 2 | \n",
" 1 | \n",
" 1 | \n",
" Cumings, Mrs. John Bradley (Florence Briggs Th... | \n",
" female | \n",
" 38.0 | \n",
" 1 | \n",
" 0 | \n",
" PC 17599 | \n",
" 71.2833 | \n",
" C85 | \n",
" C | \n",
"
\n",
" \n",
" | 2 | \n",
" 3 | \n",
" 1 | \n",
" 3 | \n",
" Heikkinen, Miss. Laina | \n",
" female | \n",
" 26.0 | \n",
" 0 | \n",
" 0 | \n",
" STON/O2. 3101282 | \n",
" 7.9250 | \n",
" NaN | \n",
" S | \n",
"
\n",
" \n",
" | 3 | \n",
" 4 | \n",
" 1 | \n",
" 1 | \n",
" Futrelle, Mrs. Jacques Heath (Lily May Peel) | \n",
" female | \n",
" 35.0 | \n",
" 1 | \n",
" 0 | \n",
" 113803 | \n",
" 53.1000 | \n",
" C123 | \n",
" S | \n",
"
\n",
" \n",
" | 4 | \n",
" 5 | \n",
" 0 | \n",
" 3 | \n",
" Allen, Mr. William Henry | \n",
" male | \n",
" 35.0 | \n",
" 0 | \n",
" 0 | \n",
" 373450 | \n",
" 8.0500 | \n",
" NaN | \n",
" S | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" PassengerId Survived Pclass \\\n",
"0 1 0 3 \n",
"1 2 1 1 \n",
"2 3 1 3 \n",
"3 4 1 1 \n",
"4 5 0 3 \n",
"\n",
" Name Sex Age SibSp \\\n",
"0 Braund, Mr. Owen Harris male 22.0 1 \n",
"1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n",
"2 Heikkinen, Miss. Laina female 26.0 0 \n",
"3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n",
"4 Allen, Mr. William Henry male 35.0 0 \n",
"\n",
" Parch Ticket Fare Cabin Embarked \n",
"0 0 A/5 21171 7.2500 NaN S \n",
"1 0 PC 17599 71.2833 C85 C \n",
"2 0 STON/O2. 3101282 7.9250 NaN S \n",
"3 0 113803 53.1000 C123 S \n",
"4 0 373450 8.0500 NaN S "
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"titanic.head()"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" PassengerId | \n",
" Survived | \n",
" Pclass | \n",
" Name | \n",
" Sex | \n",
" Age | \n",
" SibSp | \n",
" Parch | \n",
" Ticket | \n",
" Fare | \n",
" Cabin | \n",
" Embarked | \n",
"
\n",
" \n",
" \n",
" \n",
" | 886 | \n",
" 887 | \n",
" 0 | \n",
" 2 | \n",
" Montvila, Rev. Juozas | \n",
" male | \n",
" 27.0 | \n",
" 0 | \n",
" 0 | \n",
" 211536 | \n",
" 13.00 | \n",
" NaN | \n",
" S | \n",
"
\n",
" \n",
" | 887 | \n",
" 888 | \n",
" 1 | \n",
" 1 | \n",
" Graham, Miss. Margaret Edith | \n",
" female | \n",
" 19.0 | \n",
" 0 | \n",
" 0 | \n",
" 112053 | \n",
" 30.00 | \n",
" B42 | \n",
" S | \n",
"
\n",
" \n",
" | 888 | \n",
" 889 | \n",
" 0 | \n",
" 3 | \n",
" Johnston, Miss. Catherine Helen \"Carrie\" | \n",
" female | \n",
" NaN | \n",
" 1 | \n",
" 2 | \n",
" W./C. 6607 | \n",
" 23.45 | \n",
" NaN | \n",
" S | \n",
"
\n",
" \n",
" | 889 | \n",
" 890 | \n",
" 1 | \n",
" 1 | \n",
" Behr, Mr. Karl Howell | \n",
" male | \n",
" 26.0 | \n",
" 0 | \n",
" 0 | \n",
" 111369 | \n",
" 30.00 | \n",
" C148 | \n",
" C | \n",
"
\n",
" \n",
" | 890 | \n",
" 891 | \n",
" 0 | \n",
" 3 | \n",
" Dooley, Mr. Patrick | \n",
" male | \n",
" 32.0 | \n",
" 0 | \n",
" 0 | \n",
" 370376 | \n",
" 7.75 | \n",
" NaN | \n",
" Q | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" PassengerId Survived Pclass Name \\\n",
"886 887 0 2 Montvila, Rev. Juozas \n",
"887 888 1 1 Graham, Miss. Margaret Edith \n",
"888 889 0 3 Johnston, Miss. Catherine Helen \"Carrie\" \n",
"889 890 1 1 Behr, Mr. Karl Howell \n",
"890 891 0 3 Dooley, Mr. Patrick \n",
"\n",
" Sex Age SibSp Parch Ticket Fare Cabin Embarked \n",
"886 male 27.0 0 0 211536 13.00 NaN S \n",
"887 female 19.0 0 0 112053 30.00 B42 S \n",
"888 female NaN 1 2 W./C. 6607 23.45 NaN S \n",
"889 male 26.0 0 0 111369 30.00 C148 C \n",
"890 male 32.0 0 0 370376 7.75 NaN Q "
]
},
"execution_count": 56,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"titanic.tail()"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" PassengerId | \n",
" Survived | \n",
" Pclass | \n",
" Age | \n",
" SibSp | \n",
" Parch | \n",
" Fare | \n",
"
\n",
" \n",
" \n",
" \n",
" | count | \n",
" 891.000000 | \n",
" 891.000000 | \n",
" 891.000000 | \n",
" 714.000000 | \n",
" 891.000000 | \n",
" 891.000000 | \n",
" 891.000000 | \n",
"
\n",
" \n",
" | mean | \n",
" 446.000000 | \n",
" 0.383838 | \n",
" 2.308642 | \n",
" 29.699118 | \n",
" 0.523008 | \n",
" 0.381594 | \n",
" 32.204208 | \n",
"
\n",
" \n",
" | std | \n",
" 257.353842 | \n",
" 0.486592 | \n",
" 0.836071 | \n",
" 14.526497 | \n",
" 1.102743 | \n",
" 0.806057 | \n",
" 49.693429 | \n",
"
\n",
" \n",
" | min | \n",
" 1.000000 | \n",
" 0.000000 | \n",
" 1.000000 | \n",
" 0.420000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
"
\n",
" \n",
" | 25% | \n",
" 223.500000 | \n",
" 0.000000 | \n",
" 2.000000 | \n",
" 20.125000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 7.910400 | \n",
"
\n",
" \n",
" | 50% | \n",
" 446.000000 | \n",
" 0.000000 | \n",
" 3.000000 | \n",
" 28.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 14.454200 | \n",
"
\n",
" \n",
" | 75% | \n",
" 668.500000 | \n",
" 1.000000 | \n",
" 3.000000 | \n",
" 38.000000 | \n",
" 1.000000 | \n",
" 0.000000 | \n",
" 31.000000 | \n",
"
\n",
" \n",
" | max | \n",
" 891.000000 | \n",
" 1.000000 | \n",
" 3.000000 | \n",
" 80.000000 | \n",
" 8.000000 | \n",
" 6.000000 | \n",
" 512.329200 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" PassengerId Survived Pclass Age SibSp \\\n",
"count 891.000000 891.000000 891.000000 714.000000 891.000000 \n",
"mean 446.000000 0.383838 2.308642 29.699118 0.523008 \n",
"std 257.353842 0.486592 0.836071 14.526497 1.102743 \n",
"min 1.000000 0.000000 1.000000 0.420000 0.000000 \n",
"25% 223.500000 0.000000 2.000000 20.125000 0.000000 \n",
"50% 446.000000 0.000000 3.000000 28.000000 0.000000 \n",
"75% 668.500000 1.000000 3.000000 38.000000 1.000000 \n",
"max 891.000000 1.000000 3.000000 80.000000 8.000000 \n",
"\n",
" Parch Fare \n",
"count 891.000000 891.000000 \n",
"mean 0.381594 32.204208 \n",
"std 0.806057 49.693429 \n",
"min 0.000000 0.000000 \n",
"25% 0.000000 7.910400 \n",
"50% 0.000000 14.454200 \n",
"75% 0.000000 31.000000 \n",
"max 6.000000 512.329200 "
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"titanic.describe()"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Survived\n",
"0 549\n",
"1 342\n",
"Name: count, dtype: int64"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"titanic.Survived.value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Sex\n",
"male 577\n",
"female 314\n",
"Name: count, dtype: int64"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"titanic.Sex.value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Cabin\n",
"G6 4\n",
"C23 C25 C27 4\n",
"B96 B98 4\n",
"F2 3\n",
"D 3\n",
" ..\n",
"E17 1\n",
"A24 1\n",
"C50 1\n",
"B42 1\n",
"C148 1\n",
"Name: count, Length: 147, dtype: int64"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"titanic.Cabin.value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Embarked\n",
"S 644\n",
"C 168\n",
"Q 77\n",
"Name: count, dtype: int64"
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"titanic.Embarked.value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/tmp/ipykernel_4882/3535274200.py:1: FutureWarning: Downcasting behavior in `replace` is deprecated and will be removed in a future version. To retain the old behavior, explicitly call `result.infer_objects(copy=False)`. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n",
" titanic['Sex'] = titanic['Sex'].replace({'male': 0, 'female': 1})\n"
]
}
],
"source": [
"titanic['Sex'] = titanic['Sex'].replace({'male': 0, 'female': 1})"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {},
"outputs": [],
"source": [
"X = titanic[titanic.columns.difference(['Survived','PassengerId','','Name','Ticket','Cabin','Embarked'])] # Všetko okrem\n",
"y = titanic.Survived"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Age | \n",
" Fare | \n",
" Parch | \n",
" Pclass | \n",
" Sex | \n",
" SibSp | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 22.0 | \n",
" 7.2500 | \n",
" 0 | \n",
" 3 | \n",
" 0 | \n",
" 1 | \n",
"
\n",
" \n",
" | 1 | \n",
" 38.0 | \n",
" 71.2833 | \n",
" 0 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
"
\n",
" \n",
" | 2 | \n",
" 26.0 | \n",
" 7.9250 | \n",
" 0 | \n",
" 3 | \n",
" 1 | \n",
" 0 | \n",
"
\n",
" \n",
" | 3 | \n",
" 35.0 | \n",
" 53.1000 | \n",
" 0 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
"
\n",
" \n",
" | 4 | \n",
" 35.0 | \n",
" 8.0500 | \n",
" 0 | \n",
" 3 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" | 886 | \n",
" 27.0 | \n",
" 13.0000 | \n",
" 0 | \n",
" 2 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | 887 | \n",
" 19.0 | \n",
" 30.0000 | \n",
" 0 | \n",
" 1 | \n",
" 1 | \n",
" 0 | \n",
"
\n",
" \n",
" | 888 | \n",
" NaN | \n",
" 23.4500 | \n",
" 2 | \n",
" 3 | \n",
" 1 | \n",
" 1 | \n",
"
\n",
" \n",
" | 889 | \n",
" 26.0 | \n",
" 30.0000 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | 890 | \n",
" 32.0 | \n",
" 7.7500 | \n",
" 0 | \n",
" 3 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
"
\n",
"
891 rows × 6 columns
\n",
"
"
],
"text/plain": [
" Age Fare Parch Pclass Sex SibSp\n",
"0 22.0 7.2500 0 3 0 1\n",
"1 38.0 71.2833 0 1 1 1\n",
"2 26.0 7.9250 0 3 1 0\n",
"3 35.0 53.1000 0 1 1 1\n",
"4 35.0 8.0500 0 3 0 0\n",
".. ... ... ... ... ... ...\n",
"886 27.0 13.0000 0 2 0 0\n",
"887 19.0 30.0000 0 1 1 0\n",
"888 NaN 23.4500 2 3 1 1\n",
"889 26.0 30.0000 0 1 0 0\n",
"890 32.0 7.7500 0 3 0 0\n",
"\n",
"[891 rows x 6 columns]"
]
},
"execution_count": 64,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 0\n",
"1 1\n",
"2 1\n",
"3 1\n",
"4 0\n",
" ..\n",
"886 0\n",
"887 1\n",
"888 0\n",
"889 1\n",
"890 0\n",
"Name: Survived, Length: 891, dtype: int64"
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [],
"source": [
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {},
"outputs": [],
"source": [
"clf = DecisionTreeClassifier(max_depth=4)\n",
"\n",
"# Train Decision Tree Classifer\n",
"clf = clf.fit(X_train,y_train)\n",
"\n",
"#Predict the response for test dataset\n",
"y_pred = clf.predict(X_test)"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Accuracy: 0.7821229050279329\n"
]
}
],
"source": [
"# Model Accuracy, how often is the classifier correct?\n",
"print(\"Accuracy:\",metrics.accuracy_score(y_test, y_pred))"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"person = np.array([ # 23 ročný muž bez detí\n",
" 23,\n",
" 100,\n",
" 0,\n",
" 1,\n",
" 1,\n",
" 0\n",
"])"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 23, 100, 0, 1, 1, 0])"
]
},
"execution_count": 72,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"person"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 23, 100, 0, 1, 1, 0]])"
]
},
"execution_count": 73,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"person.reshape(1, -1)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Prediction: [1]\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/br0kenpixel/Documents/ui-cviko1/lib64/python3.13/site-packages/sklearn/utils/validation.py:2739: UserWarning: X does not have valid feature names, but DecisionTreeClassifier was fitted with feature names\n",
" warnings.warn(\n"
]
}
],
"source": [
"print('Prediction: ', clf.predict(person.reshape(1,-1))) # Prežije?"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "ui-cviko1",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.13.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}