From 923bfce2194945b6bfa8ac578c463ca31e0705fa Mon Sep 17 00:00:00 2001 From: Andreaierardi Date: Sun, 1 Mar 2020 13:09:38 +0100 Subject: [PATCH] Updating --- ...near regression, KNN, SVM-checkpoint.ipynb | 1183 +++++++++++ .../RandomForestExample-checkpoint.ipynb | 959 +++++++++ .../exercises_in_python-checkpoint.ipynb | 710 +++++++ .../Python/Datasets/Car Data Set/car.data | 1729 +++++++++++++++++ .../Python/Datasets/Students/student-mat.csv | 396 ++++ .../ML - Linear regression, KNN, SVM.ipynb | 1230 ++++++++++++ .../Python/Models/studentgrades.pickle | Bin 0 -> 578 bytes .../Python/RandomForestExample.ipynb | 28 +- .../Python/studentgrades.pickle | Bin 0 -> 578 bytes 9 files changed, 6214 insertions(+), 21 deletions(-) create mode 100644 1anno/2trimestre/Coding for DataScience/Python/.ipynb_checkpoints/ML - Linear regression, KNN, SVM-checkpoint.ipynb create mode 100644 1anno/2trimestre/Coding for DataScience/Python/.ipynb_checkpoints/RandomForestExample-checkpoint.ipynb create mode 100644 1anno/2trimestre/Coding for DataScience/Python/.ipynb_checkpoints/exercises_in_python-checkpoint.ipynb create mode 100644 1anno/2trimestre/Coding for DataScience/Python/Datasets/Car Data Set/car.data create mode 100644 1anno/2trimestre/Coding for DataScience/Python/Datasets/Students/student-mat.csv create mode 100644 1anno/2trimestre/Coding for DataScience/Python/ML - Linear regression, KNN, SVM.ipynb create mode 100644 1anno/2trimestre/Coding for DataScience/Python/Models/studentgrades.pickle create mode 100644 1anno/2trimestre/Coding for DataScience/Python/studentgrades.pickle diff --git a/1anno/2trimestre/Coding for DataScience/Python/.ipynb_checkpoints/ML - Linear regression, KNN, SVM-checkpoint.ipynb b/1anno/2trimestre/Coding for DataScience/Python/.ipynb_checkpoints/ML - Linear regression, KNN, SVM-checkpoint.ipynb new file mode 100644 index 000000000..8f6d31365 --- /dev/null +++ b/1anno/2trimestre/Coding for DataScience/Python/.ipynb_checkpoints/ML - Linear regression, KNN, SVM-checkpoint.ipynb @@ -0,0 +1,1183 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ML - Linear regression, KNN, SVM" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Linear regression" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " school sex age address famsize Pstatus Medu Fedu Mjob Fjob ... \\\n", + "0 GP F 18 U GT3 A 4 4 at_home teacher ... \n", + "1 GP F 17 U GT3 T 1 1 at_home other ... \n", + "2 GP F 15 U LE3 T 1 1 at_home other ... \n", + "3 GP F 15 U GT3 T 4 2 health services ... \n", + "4 GP F 16 U GT3 T 3 3 other other ... \n", + "\n", + " famrel freetime goout Dalc Walc health absences G1 G2 G3 \n", + "0 4 3 4 1 1 3 6 5 6 6 \n", + "1 5 3 3 1 1 3 4 5 5 6 \n", + "2 4 3 2 2 3 3 10 7 8 10 \n", + "3 3 2 2 1 1 5 2 15 14 15 \n", + "4 4 3 2 1 2 5 4 6 10 10 \n", + "\n", + "[5 rows x 33 columns]\n" + ] + } + ], + "source": [ + "#Import Library\n", + "import numpy as np\n", + "import pandas as pd\n", + "from sklearn import linear_model\n", + "import sklearn\n", + "from sklearn.utils import shuffle\n", + "import matplotlib.pyplot as plt\n", + "from matplotlib import style\n", + "import pickle\n", + "\n", + "data = pd.read_csv(\"Datasets/Students/student-mat.csv\", sep=\";\")\n", + "# Since our data is seperated by semicolons we need to do sep=\";\"\n", + "print(data.head())" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [], + "source": [ + "data = data[[\"G1\", \"G2\", \"G3\", \"studytime\", \"failures\", \"absences\"]]\n", + "predict = \"G3\"\n", + "\n", + "X = np.array(data.drop([predict], 1)) # Features\n", + "y = np.array(data[predict]) # Labels" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [], + "source": [ + "x_train, x_test, y_train, y_test = sklearn.model_selection.train_test_split(X, y, test_size=0.1)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.8521230122769358\n", + "Coefficient: \n", + " [ 0.15164891 0.98147393 -0.16509308 -0.32193465 0.04498984]\n", + "Intercept: \n", + " -1.5907529202513135\n", + "12.279895401470538 [14 12 1 0 3] 12\n", + "7.503962373930127 [8 8 2 0 8] 6\n", + "15.227552394977513 [16 15 2 0 0] 15\n", + "7.745590968178561 [ 9 8 2 0 10] 8\n", + "16.205791131538525 [14 16 1 0 3] 16\n", + "10.84670994730399 [13 11 2 0 0] 10\n", + "19.45816805298856 [19 19 4 0 4] 20\n", + "14.93912087678917 [14 15 3 0 4] 16\n", + "3.4793613983764784 [3 5 2 1 8] 5\n", + "7.309136703621595 [8 8 1 0 0] 11\n", + "14.197853422314571 [14 14 1 0 2] 14\n", + "6.199182798446923 [ 7 6 2 0 26] 6\n", + "11.803053678911542 [10 9 2 0 75] 9\n", + "12.093074669254824 [10 12 2 0 16] 11\n", + "8.712198607146872 [9 9 1 0 6] 10\n", + "9.576804496598653 [11 10 3 0 4] 10\n", + "19.268409826386197 [17 18 2 0 21] 18\n", + "18.09686079769726 [16 18 3 0 2] 18\n", + "6.1157667639535385 [7 7 3 0 6] 7\n", + "8.802178295526796 [9 9 1 0 8] 10\n", + "9.286950862204275 [ 8 10 2 0 4] 10\n", + "5.547010861464581 [7 7 2 2 4] 9\n", + "12.064764198363493 [11 12 2 0 12] 11\n", + "10.708505218778123 [11 11 1 0 0] 12\n", + "5.479345291407545 [ 7 6 2 0 10] 6\n", + "13.94420276692953 [15 14 4 0 4] 14\n", + "7.234023308790361 [8 8 2 0 2] 8\n", + "12.771106406160298 [12 13 1 1 6] 14\n", + "-0.8459525682513952 [6 0 1 0 0] 0\n", + "9.452043945415435 [ 8 10 1 0 4] 10\n", + "7.8972398740470755 [10 8 2 0 10] 8\n", + "5.140731269448818 [ 6 6 2 1 13] 8\n", + "15.075903489109 [15 15 2 0 0] 15\n", + "7.845337552501315 [6 9 1 1 4] 8\n", + "6.992394714541925 [7 8 2 0 0] 0\n", + "9.998392467606932 [12 10 3 0 10] 12\n", + "10.633391823946887 [11 11 2 0 2] 11\n", + "15.525801931008607 [15 15 2 0 10] 15\n", + "9.779881684669405 [11 10 2 1 12] 10\n", + "17.535552719982505 [16 17 1 0 4] 18\n" + ] + } + ], + "source": [ + "\n", + "linear = linear_model.LinearRegression()\n", + "\n", + "linear.fit(x_train, y_train)\n", + "acc = linear.score(x_test, y_test)\n", + "print(acc)\n", + "\n", + "print('Coefficient: \\n', linear.coef_)\n", + "print('Intercept: \\n', linear.intercept_)\n", + "\n", + "predictions = linear.predict(x_test)\n", + "\n", + "for x in range(len(predictions)):\n", + " print(predictions[x], x_test[x], y_test[x])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Saving model and importing" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.utils import shuffle\n", + "import matplotlib.pyplot as plt\n", + "from matplotlib import style\n", + "import pickle" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Saving " + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "with open(\"Models/studentgrades.pickle\", \"wb\") as f:\n", + " pickle.dump(linear, f)\n", + "\n", + "# linear is the name of the model we created in the last tutorial\n", + "# it should be defined above this" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Loading model " + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "pickle_in = open(\"Models/studentgrades.pickle\", \"rb\")\n", + "linear = pickle.load(pickle_in)\n", + "\n", + "# Now we can use linear to predict grades like before" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Training multiple model\n" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "Found input variables with inconsistent numbers of samples: [569, 395]", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[0mbest\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0m_\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m20\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 4\u001b[1;33m \u001b[0mx_train\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mx_test\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my_train\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my_test\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msklearn\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmodel_selection\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtrain_test_split\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtest_size\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m0.1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 5\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 6\u001b[0m \u001b[0mlinear\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlinear_model\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mLinearRegression\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mE:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_split.py\u001b[0m in \u001b[0;36mtrain_test_split\u001b[1;34m(*arrays, **options)\u001b[0m\n\u001b[0;32m 2094\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Invalid parameters passed: %s\"\u001b[0m \u001b[1;33m%\u001b[0m \u001b[0mstr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0moptions\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2095\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2096\u001b[1;33m \u001b[0marrays\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mindexable\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0marrays\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2097\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2098\u001b[0m \u001b[0mn_samples\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_num_samples\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marrays\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mE:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\validation.py\u001b[0m in \u001b[0;36mindexable\u001b[1;34m(*iterables)\u001b[0m\n\u001b[0;32m 228\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 229\u001b[0m \u001b[0mresult\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0marray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 230\u001b[1;33m \u001b[0mcheck_consistent_length\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mresult\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 231\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 232\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mE:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\validation.py\u001b[0m in \u001b[0;36mcheck_consistent_length\u001b[1;34m(*arrays)\u001b[0m\n\u001b[0;32m 203\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0muniques\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m>\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 204\u001b[0m raise ValueError(\"Found input variables with inconsistent numbers of\"\n\u001b[1;32m--> 205\u001b[1;33m \" samples: %r\" % [int(l) for l in lengths])\n\u001b[0m\u001b[0;32m 206\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 207\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mValueError\u001b[0m: Found input variables with inconsistent numbers of samples: [569, 395]" + ] + } + ], + "source": [ + "# TRAIN MODEL MULTIPLE TIMES FOR BEST SCORE\n", + "best = 0\n", + "for _ in range(20):\n", + " x_train, x_test, y_train, y_test = sklearn.model_selection.train_test_split(x, y, test_size=0.1)\n", + "\n", + " linear = linear_model.LinearRegression()\n", + " \n", + " linear.fit(x_train, y_train)\n", + " acc = linear.score(x_test, y_test)\n", + " print(\"Accuracy: \" + str(acc))\n", + " \n", + " # If the current model has a better score than one we've already trained then save it\n", + " if acc > best:\n", + " best = acc\n", + " with open(\"Models/studentgrades.pickle\", \"wb\") as f:\n", + " pickle.dump(linear, f)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Plotting data" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "No handles with labels found to put in legend.\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Drawing and plotting model\n", + "plot = \"failures\" # Change this to G1, G2, studytime or absences to see other graphs\n", + "plt.scatter(data[plot], data[\"G3\"]) \n", + "plt.legend(loc=4)\n", + "plt.xlabel(plot)\n", + "plt.ylabel(\"Final Grade\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# K-Nearest Neighbors (KNN)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " buying maint door persons lug_boot safety class\n", + "0 vhigh vhigh 2 2 small low unacc\n", + "1 vhigh vhigh 2 2 small med unacc\n", + "2 vhigh vhigh 2 2 small high unacc\n", + "3 vhigh vhigh 2 2 med low unacc\n", + "4 vhigh vhigh 2 2 med med unacc\n" + ] + } + ], + "source": [ + "import sklearn\n", + "from sklearn.utils import shuffle\n", + "from sklearn.neighbors import KNeighborsClassifier\n", + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn import linear_model, preprocessing\n", + "\n", + "data = pd.read_csv(\"Datasets/Car Data Set/car.data\")\n", + "print(data.head())\n", + "\n", + "le = preprocessing.LabelEncoder()\n", + "buying = le.fit_transform(list(data[\"buying\"]))\n", + "maint = le.fit_transform(list(data[\"maint\"]))\n", + "door = le.fit_transform(list(data[\"door\"]))\n", + "persons = le.fit_transform(list(data[\"persons\"]))\n", + "lug_boot = le.fit_transform(list(data[\"lug_boot\"]))\n", + "safety = le.fit_transform(list(data[\"safety\"]))\n", + "cls = le.fit_transform(list(data[\"class\"]))\n", + " \n", + "predict = \"class\" #optional\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy model: 0.9479768786127167\n" + ] + } + ], + "source": [ + "X = list(zip(buying, maint, door, persons, lug_boot, safety))\n", + "y = list(cls)\n", + "\n", + "x_train, x_test, y_train, y_test = sklearn.model_selection.train_test_split(X, y, test_size = 0.1)\n", + "\n", + "model = KNeighborsClassifier(n_neighbors=9)\n", + "\n", + "model.fit(x_train, y_train)\n", + "acc = model.score(x_test, y_test)\n", + "print(\"Accuracy model: \",acc)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Predicted: good Data: (3, 3, 3, 2, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1.41421356, 1.41421356, 1.41421356, 1.41421356]]), array([[1237, 705, 154, 339, 1066, 1092, 239, 757, 1143]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (3, 2, 2, 2, 2, 0) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 680, 814, 913, 466, 842, 266, 927, 508, 1218]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (0, 0, 3, 1, 0, 0) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[1115, 94, 1417, 673, 1000, 1512, 796, 11, 510]],\n", + " dtype=int64))\n", + "Predicted: acc Data: (1, 2, 3, 1, 2, 0) Actual: acc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 460, 1480, 1498, 942, 1268, 78, 766, 1521, 970]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 0, 2, 0, 1, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 571, 1239, 222, 76, 31, 1546, 531, 1126, 211]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 0, 3, 1, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[1161, 1285, 1110, 1290, 1347, 1189, 118, 695, 1171]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (0, 1, 2, 2, 1, 2) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 194, 1086, 82, 1238, 1025, 998, 173, 1483, 440]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 2, 3, 1, 1, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[1339, 306, 999, 663, 1524, 865, 1470, 168, 1515]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 2, 1, 0, 2, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 721, 487, 1241, 867, 261, 15, 119, 1529, 1013]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 2, 1, 1, 0, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[181, 887, 809, 238, 529, 433, 866, 736, 34]], dtype=int64))\n", + "Predicted: good Data: (0, 3, 3, 0, 2, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1.41421356, 1.41421356, 1.41421356, 1.41421356]]), array([[ 795, 644, 979, 526, 91, 437, 1425, 1545, 619]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (2, 2, 0, 2, 0, 2) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 883, 598, 48, 52, 1294, 21, 423, 1325, 574]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 1, 2, 2, 1, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[1125, 267, 548, 1029, 1372, 1473, 732, 353, 422]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (0, 0, 3, 2, 0, 2) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1.41421356,\n", + " 1.41421356, 1.41421356, 1.41421356, 1.41421356]]), array([[ 240, 385, 1099, 1483, 445, 1115, 1177, 1301, 370]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 2, 0, 0, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 299, 368, 166, 1131, 277, 92, 164, 403, 1036]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 1, 2, 0, 0, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 337, 1348, 309, 836, 941, 928, 620, 831, 533]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 3, 0, 1, 2, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 910, 380, 593, 282, 1314, 1313, 546, 226, 495]],\n", + " dtype=int64))\n", + "Predicted: vgood Data: (2, 2, 2, 1, 1, 0) Actual: vgood\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 679, 622, 754, 37, 805, 1218, 1084, 83, 431]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 1, 3, 1, 1, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 350, 586, 357, 872, 803, 1552, 142, 222, 1115]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 3, 2, 2, 1, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[1021, 79, 1309, 1326, 1365, 667, 1068, 732, 475]],\n", + " dtype=int64))\n", + "Predicted: acc Data: (1, 1, 1, 2, 0, 2) Actual: acc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 410, 416, 1477, 369, 969, 66, 1360, 1172, 181]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 0, 0, 0, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[1020, 656, 747, 456, 1071, 1010, 605, 120, 853]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 0, 1, 1, 1, 2) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 27, 895, 930, 745, 204, 1201, 115, 1400, 1491]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 1, 3, 2, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[1388, 1034, 1252, 652, 611, 1353, 1125, 548, 255]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 0, 2, 0, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1.41421356, 1.41421356, 1.41421356, 1.41421356]]), array([[1024, 773, 1482, 1171, 901, 1394, 444, 176, 941]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 3, 2, 0, 0, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 2, 84, 1192, 1152, 1374, 159, 1081, 1532, 207]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 3, 1, 1, 2, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[1122, 345, 879, 256, 1457, 1042, 701, 1410, 1170]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 1, 2, 1, 2, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 970, 1076, 1426, 512, 1548, 476, 1455, 1265, 1001]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 2, 0, 1, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[1062, 529, 400, 433, 763, 1419, 647, 633, 1211]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 1, 3, 2, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[ 634, 30, 255, 705, 1478, 1038, 1385, 770, 201]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 1, 2, 2, 1, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 201, 770, 150, 923, 112, 1388, 748, 1353, 1308]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 0, 0, 0, 2, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 185, 456, 987, 1322, 692, 1071, 1074, 55, 774]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 3, 3, 1, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1437, 371, 242, 1451, 93, 794, 1193, 498, 332]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 3, 0, 0, 2, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 920, 380, 463, 546, 119, 693, 15, 1122, 1212]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 0, 2, 2, 1, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 214, 326, 20, 353, 573, 1308, 784, 1493, 1385]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 1, 0, 1, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1045, 1297, 1235, 919, 637, 496, 453, 1463, 412]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 1, 2, 2, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[ 561, 440, 811, 381, 1250, 1133, 82, 259, 411]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 3, 2, 1, 1, 2) Actual: unacc\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 894, 1324, 1021, 761, 992, 643, 830, 823, 1326]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 1, 3, 0, 0, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 645, 90, 1393, 1176, 1424, 731, 1479, 1274, 510]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (0, 0, 1, 2, 1, 0) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 746, 193, 407, 228, 224, 1044, 1243, 1278, 1027]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (1, 0, 0, 2, 1, 0) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1094, 439, 676, 1416, 500, 1375, 746, 193, 819]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (0, 0, 2, 2, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1.41421356, 1.41421356, 1.41421356, 1.41421356]]), array([[ 893, 1483, 1234, 126, 1543, 1475, 673, 531, 194]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 0, 2, 1, 1, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[ 20, 326, 901, 1491, 178, 528, 444, 770, 1385]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 2, 2, 0, 2, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 867, 1407, 927, 915, 1336, 361, 1529, 300, 1035]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 1, 0, 2, 1, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 592, 558, 1525, 923, 1357, 270, 518, 206, 971]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 3, 3, 2, 1, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[1188, 364, 580, 29, 626, 1466, 106, 1186, 680]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 3, 1, 2, 0, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[441, 59, 926, 559, 768, 505, 607, 316, 81]], dtype=int64))\n", + "Predicted: good Data: (0, 2, 2, 2, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1.41421356, 1.41421356, 1.41421356, 1.41421356]]), array([[ 675, 965, 88, 1179, 57, 246, 1250, 381, 525]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 1, 2, 0, 2, 0) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 476, 952, 1442, 1181, 145, 187, 636, 970, 543]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (0, 2, 2, 2, 1, 2) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[1233, 1210, 525, 151, 538, 360, 344, 998, 82]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 0, 0, 0, 0, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 243, 1397, 954, 815, 847, 706, 848, 892, 439]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 3, 3, 2, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[1022, 1231, 239, 1430, 51, 522, 26, 339, 1053]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 1, 3, 0, 2, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1448, 1061, 898, 452, 570, 367, 1069, 606, 1394]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 3, 3, 0, 1, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[1192, 587, 1522, 1081, 493, 1004, 1186, 917, 334]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 3, 3, 0, 1, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 480, 591, 1206, 884, 666, 984, 669, 767, 1120]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 0, 3, 1, 0, 0) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[1078, 903, 564, 951, 1000, 1150, 430, 730, 271]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 3, 1, 0, 2, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1412, 1122, 226, 1088, 1500, 751, 1212, 1457, 1350]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 2, 3, 0, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 897, 743, 984, 236, 467, 480, 1389, 286, 452]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (1, 0, 1, 1, 0, 2) Actual: unacc\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[1477, 1205, 1201, 1106, 66, 900, 1003, 1400, 599]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 2, 3, 0, 1, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[699, 858, 301, 537, 889, 917, 170, 334, 499]], dtype=int64))\n", + "Predicted: good Data: (2, 3, 3, 0, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[ 51, 666, 984, 504, 459, 105, 587, 509, 499]], dtype=int64))\n", + "Predicted: good Data: (2, 2, 1, 2, 1, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 659, 902, 1140, 1304, 398, 678, 712, 373, 319]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 0, 3, 2, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[ 711, 958, 1099, 1234, 1230, 1418, 1000, 1177, 1115]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 2, 1, 2, 1, 2) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1025, 310, 1427, 1519, 1453, 876, 948, 88, 1360]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 3, 3, 0, 1, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1437, 1425, 493, 587, 1370, 619, 276, 242, 399]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 0, 1, 1, 1, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 785, 870, 930, 1155, 137, 1102, 1491, 223, 573]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 1, 0, 0, 0, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 449, 565, 243, 97, 1196, 633, 848, 38, 420]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 3, 2, 1, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1464, 888, 563, 34, 881, 612, 1082, 232, 761]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (3, 1, 3, 1, 0, 0) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[1376, 611, 1252, 1078, 1184, 1012, 1334, 1080, 1245]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 0, 0, 1, 0, 0) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 863, 1405, 815, 780, 845, 1397, 488, 1321, 14]],\n", + " dtype=int64))\n", + "Predicted: acc Data: (1, 2, 3, 2, 0, 2) Actual: acc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 103, 448, 660, 1262, 1490, 972, 534, 184, 1229]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 3, 2, 0, 2, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 867, 50, 1223, 15, 254, 361, 560, 728, 1035]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 2, 0, 0, 1, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[1469, 1169, 1209, 719, 1432, 322, 449, 554, 1196]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 3, 2, 1, 0, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1458, 159, 674, 1316, 1242, 260, 292, 2, 788]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (2, 2, 3, 1, 0, 2) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1262, 318, 596, 534, 1236, 279, 583, 741, 1537]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 0, 1, 0, 1, 0) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[1072, 682, 1097, 847, 342, 819, 220, 1446, 954]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 1, 1, 0, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 635, 747, 1163, 1538, 536, 1050, 1377, 216, 1359]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 1, 0, 1, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 602, 1211, 97, 647, 1476, 742, 1167, 633, 265]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 3, 3, 2, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1414, 1528, 1365, 93, 1451, 327, 1068, 1191, 364]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 1, 3, 0, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[ 499, 1111, 367, 1478, 1482, 898, 444, 537, 1394]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 2, 2, 2, 2, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[ 816, 151, 246, 42, 1250, 198, 908, 1265, 82]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 1, 1, 2, 2, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 744, 671, 547, 1265, 885, 1382, 41, 315, 274]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 1, 3, 0, 0, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1.41421356, 1.41421356, 1.41421356, 1.41421356]]), array([[ 11, 321, 96, 730, 594, 1298, 1000, 1512, 165]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (0, 2, 0, 2, 2, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[1516, 653, 506, 1185, 582, 5, 1006, 1517, 148]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (0, 1, 2, 1, 2, 0) Actual: unacc\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[1214, 113, 1434, 654, 145, 1426, 28, 970, 1113]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 3, 1, 0, 2, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 481, 89, 235, 1046, 976, 702, 347, 492, 966]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (0, 1, 1, 2, 0, 0) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[1248, 351, 697, 1391, 224, 1226, 633, 602, 1006]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (1, 0, 1, 1, 2, 2) Actual: unacc\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 962, 245, 1377, 204, 1400, 434, 990, 1020, 747]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 1, 1, 2, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 602, 1211, 1543, 468, 893, 850, 1172, 265, 1025]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 3, 3, 2, 1, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 13, 1068, 717, 79, 302, 93, 242, 1138, 934]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 2, 1, 2, 2, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 209, 246, 690, 712, 1153, 198, 613, 229, 373]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (0, 1, 1, 2, 2, 0) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[1516, 1044, 547, 1434, 315, 113, 1517, 672, 1006]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 0, 2, 2, 1, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[213, 194, 445, 407, 259, 228, 531, 82, 978]], dtype=int64))\n", + "Predicted: good Data: (1, 2, 3, 1, 2, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[1435, 735, 1470, 512, 236, 1515, 1455, 743, 183]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 1, 2, 0, 1, 0) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 62, 420, 187, 340, 145, 31, 1126, 1113, 1220]],\n", + " dtype=int64))\n", + "Predicted: vgood Data: (1, 1, 0, 2, 0, 0) Actual: vgood\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 676, 1321, 351, 1014, 1378, 1375, 1039, 1248, 274]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 1, 2, 0, 1, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 337, 889, 1394, 537, 748, 941, 230, 461, 176]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 0, 2, 0, 1, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 128, 298, 1031, 176, 230, 632, 149, 773, 1135]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (3, 1, 0, 2, 0, 2) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[1357, 270, 317, 598, 21, 868, 1431, 186, 807]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 3, 0, 0, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 716, 1036, 40, 1551, 328, 109, 617, 33, 982]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 0, 2, 1, 2, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 839, 962, 1157, 695, 245, 39, 912, 127, 825]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 1, 1, 2, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[1039, 1121, 1549, 1415, 181, 1248, 887, 1360, 647]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 3, 0, 0, 1, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[1060, 36, 490, 1169, 244, 1107, 179, 1017, 449]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 3, 1, 2, 2, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[1413, 253, 1516, 74, 1187, 1185, 1270, 1350, 624]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (3, 1, 2, 2, 2, 0) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 838, 150, 700, 47, 201, 1493, 101, 1135, 1308]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (2, 3, 2, 1, 0, 2) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1180, 596, 741, 413, 232, 881, 63, 551, 292]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 2, 1, 2, 2, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 712, 814, 1304, 197, 466, 290, 1317, 487, 1307]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 0, 3, 1, 1, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 125, 370, 445, 531, 1115, 343, 94, 222, 727]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (0, 1, 1, 2, 1, 0) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[1032, 672, 850, 1254, 1006, 274, 547, 265, 351]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 0, 3, 0, 2, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[1015, 100, 199, 1161, 1285, 1002, 773, 824, 1171]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 3, 0, 0, 1, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[1436, 843, 179, 102, 983, 852, 490, 1036, 322]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 3, 0, 2, 1, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 627, 1531, 140, 1427, 429, 233, 876, 355, 1439]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 1, 2, 1, 1, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 575, 754, 461, 1030, 1275, 1076, 748, 1154, 622]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (0, 0, 3, 2, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1.41421356,\n", + " 1.41421356, 1.41421356, 1.41421356, 1.41421356]]), array([[ 796, 445, 1115, 1251, 1099, 958, 126, 1230, 240]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 2, 3, 1, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1191, 1451, 1273, 498, 1553, 1194, 1481, 698, 170]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 2, 0, 0, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 920, 1051, 75, 637, 261, 119, 919, 1178, 687]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (2, 3, 1, 1, 1, 0) Actual: unacc\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[1457, 1539, 879, 394, 1489, 1190, 392, 751, 797]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 0, 2, 1, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1.41421356, 1.41421356, 1.41421356, 1.41421356]]), array([[ 713, 1189, 1385, 444, 412, 773, 20, 72, 634]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 2, 2, 0, 0, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1532, 159, 330, 377, 1080, 260, 1174, 300, 207]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 1, 1, 1, 2, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[1452, 885, 1095, 219, 933, 414, 107, 1382, 691]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 3, 3, 0, 1, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[1411, 405, 1425, 428, 437, 493, 526, 168, 556]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 2, 0, 0, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[ 544, 449, 1456, 1017, 133, 97, 188, 763, 1503]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 1, 0, 2, 2, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1.41421356, 1.41421356, 1.41421356, 1.41421356]]), array([[ 148, 1517, 1278, 1006, 625, 113, 349, 457, 547]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 0, 0, 0, 2, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1.41421356, 1.41421356, 1.41421356, 1.41421356]]), array([[1016, 43, 994, 774, 248, 1071, 863, 639, 954]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 1, 3, 2, 1, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 826, 1251, 1238, 663, 82, 1256, 445, 1139, 1552]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 2, 3, 0, 0, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 911, 1224, 399, 1533, 834, 556, 1151, 1437, 96]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (0, 0, 3, 1, 0, 2) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[1176, 1177, 731, 1475, 1115, 370, 240, 937, 1205]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 2, 0, 2, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 568, 1043, 1211, 468, 116, 710, 776, 1419, 1062]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (2, 0, 1, 2, 1, 0) Actual: unacc\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[1416, 1303, 0, 1132, 294, 746, 436, 455, 1033]],\n", + " dtype=int64))\n", + "Predicted: vgood Data: (1, 1, 3, 1, 0, 0) Actual: vgood\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1417, 1158, 135, 1078, 911, 703, 1000, 160, 958]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 2, 0, 0, 1, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[1444, 164, 102, 567, 249, 1505, 1131, 1209, 723]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 2, 1, 1, 2, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[1108, 608, 659, 712, 686, 613, 487, 721, 1440]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 2, 2, 1, 2, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 965, 352, 654, 1515, 306, 283, 512, 1426, 908]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 1, 1, 0, 1, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 320, 1207, 139, 1155, 1241, 223, 786, 553, 432]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 1, 0, 0, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[ 55, 762, 311, 1168, 1026, 1300, 729, 1101, 1396]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 2, 3, 0, 1, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 587, 276, 117, 1061, 570, 1481, 509, 1004, 698]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (0, 0, 3, 2, 1, 0) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 94, 445, 796, 228, 1256, 1164, 1124, 958, 1486]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 0, 1, 2, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 434, 1381, 714, 1540, 204, 1134, 177, 115, 916]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 1, 0, 0, 1, 2) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 146, 1362, 1485, 871, 1266, 541, 1168, 46, 311]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 3, 0, 1, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 359, 827, 1291, 738, 919, 920, 546, 495, 1042]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 1, 2, 0, 0, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 111, 62, 1533, 45, 1306, 187, 1255, 160, 549]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 3, 3, 0, 1, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[ 29, 864, 917, 1450, 334, 1495, 254, 1336, 17]],\n", + " dtype=int64))\n", + "Predicted: vgood Data: (1, 2, 0, 1, 0, 0) Actual: vgood\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[1321, 221, 809, 1209, 400, 529, 1378, 322, 387]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 2, 3, 0, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[ 509, 1009, 570, 1199, 499, 367, 459, 858, 666]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 0, 4, 1, 1, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1.41421356, 1.41421356, 1.41421356, 1.41421356]]), array([[ 384, 557, 313, 1264, 1356, 890, 1454, 832, 1334]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 1, 1, 0, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1130, 25, 521, 133, 565, 97, 1019, 602, 988]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 2, 3, 1, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 301, 961, 1184, 611, 609, 583, 170, 652, 330]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 0, 1, 0, 2, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1322, 479, 223, 773, 1074, 1241, 1024, 870, 813]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 0, 0, 1, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[1049, 1010, 997, 1020, 524, 986, 990, 284, 799]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 3, 0, 1, 1, 2) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 907, 1305, 288, 1472, 429, 196, 233, 402, 579]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 1, 1, 2, 1, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[1360, 382, 373, 1029, 1502, 850, 274, 1127, 267]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 0, 3, 1, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1158, 1298, 451, 430, 1115, 343, 1177, 1000, 510]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 3, 2, 1, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1217, 390, 1179, 486, 891, 908, 272, 965, 1429]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (3, 1, 2, 2, 0, 2) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 152, 1279, 317, 1358, 1388, 770, 831, 784, 533]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 1, 2, 0, 2, 2) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[1171, 1163, 367, 216, 72, 1482, 1199, 1069, 158]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 3, 0, 0, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[ 702, 976, 1100, 1145, 200, 1240, 1461, 1281, 1244]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (3, 1, 3, 2, 0, 2) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1.41421356,\n", + " 1.41421356, 1.41421356, 1.41421356, 1.41421356]]), array([[1494, 262, 8, 255, 152, 831, 770, 1227, 1279]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 2, 0, 0, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 403, 736, 529, 1036, 1432, 817, 322, 647, 1173]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 3, 2, 2, 2, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[1187, 806, 955, 1179, 253, 908, 1200, 485, 7]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 2, 1, 0, 1, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 446, 297, 629, 889, 210, 555, 1013, 1178, 261]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (1, 3, 2, 1, 0, 0) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 336, 1260, 794, 949, 2, 477, 1374, 707, 612]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 0, 1, 0, 2, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 479, 1074, 1097, 1028, 664, 1446, 54, 774, 1016]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 1, 2, 0, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 111, 31, 62, 1479, 6, 1346, 1393, 549, 539]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 1, 0, 0, 1, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 875, 1072, 954, 249, 1196, 1396, 848, 554, 45]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 0, 2, 0, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1.41421356, 1.41421356, 1.41421356, 1.41421356]]), array([[1130, 549, 426, 510, 878, 1255, 1126, 1239, 1475]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (2, 1, 0, 2, 1, 0) Actual: acc\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 676, 640, 1033, 835, 206, 1525, 1014, 1416, 406]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 0, 2, 1, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 451, 1475, 1346, 1115, 16, 531, 673, 549, 126]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (3, 1, 0, 1, 0, 0) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 157, 425, 186, 180, 85, 780, 1405, 957, 1182]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 0, 1, 2, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 990, 986, 434, 811, 1133, 366, 801, 1504, 407]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 3, 3, 0, 0, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[ 17, 251, 56, 1537, 540, 1395, 858, 170, 851]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (3, 1, 2, 1, 1, 2) Actual: unacc\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 444, 1333, 831, 141, 748, 941, 1520, 770, 575]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 2, 0, 0, 2, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 719, 1500, 1212, 1355, 994, 264, 581, 983, 1128]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 0, 0, 2, 0, 0) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[ 455, 70, 1225, 1375, 1014, 1416, 494, 1249, 780]],\n", + " dtype=int64))\n" + ] + } + ], + "source": [ + "predicted = model.predict(x_test)\n", + "names = [\"unacc\", \"acc\", \"good\", \"vgood\"]\n", + "\n", + "for x in range(len(predicted)):\n", + " print(\"Predicted: \", names[predicted[x]], \"Data: \", x_test[x], \"Actual: \", names[y_test[x]])\n", + " n = model.kneighbors([x_test[x]], 9, True)\n", + " print(\"N: \", n)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Support Vector Machines (SVM)" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['mean radius' 'mean texture' 'mean perimeter' 'mean area'\n", + " 'mean smoothness' 'mean compactness' 'mean concavity'\n", + " 'mean concave points' 'mean symmetry' 'mean fractal dimension'\n", + " 'radius error' 'texture error' 'perimeter error' 'area error'\n", + " 'smoothness error' 'compactness error' 'concavity error'\n", + " 'concave points error' 'symmetry error' 'fractal dimension error'\n", + " 'worst radius' 'worst texture' 'worst perimeter' 'worst area'\n", + " 'worst smoothness' 'worst compactness' 'worst concavity'\n", + " 'worst concave points' 'worst symmetry' 'worst fractal dimension']\n", + "['malignant' 'benign']\n" + ] + } + ], + "source": [ + "import sklearn\n", + "from sklearn import datasets\n", + "from sklearn import svm\n", + "from sklearn import metrics\n", + "from sklearn.neighbors import KNeighborsClassifier\n", + "\n", + "cancer = datasets.load_breast_cancer()\n", + "\n", + "print(cancer.feature_names)\n", + "print(cancer.target_names)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[1.095e+01 2.135e+01 7.190e+01 ... 1.424e-01 2.964e-01 9.606e-02]\n", + " [1.300e+01 2.182e+01 8.750e+01 ... 2.060e-01 4.378e-01 1.072e-01]\n", + " [1.184e+01 1.894e+01 7.551e+01 ... 6.913e-02 2.535e-01 7.993e-02]\n", + " ...\n", + " [1.187e+01 2.154e+01 7.683e+01 ... 8.750e-02 2.305e-01 9.952e-02]\n", + " [1.094e+01 1.859e+01 7.039e+01 ... 7.887e-02 2.251e-01 7.732e-02]\n", + " [1.049e+01 1.861e+01 6.686e+01 ... 6.528e-02 2.213e-01 7.842e-02]] [0 0 1 1 1 1 0 0 0 1 1 0 1 1 1 1 0 1 0 1 0 1 0 0 0 0 1 1 0 1 0 1 1 1 0 1 1\n", + " 1 0 1 1 0 1 0 0 1 1 1 0 1 1 0 0 1 1 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 1 1\n", + " 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 1 1 0 1 0 1 1 0 1 0 1 0 0 1 1 1\n", + " 1 0 0 0 1 1 0 0 1 1 1 1 1 0 0 1 1 1 0 1 1 0 0 1 0 1 0 1 0 0 0 0 1 1 1 1 1\n", + " 0 0 0 1 0 1 0 0 1 1 1 1 1 1 1 1 0 1 1 0 0 1 0 1 1 0 1 1 0 1 0 0 0 0 1 0 1\n", + " 0 1 0 1 1 0 1 1 1 1 1 1 1 1 0 1 1 0 0 0 1 1 0 0 1 1 1 0 1 1 1 1 1 1 1 1 0\n", + " 1 0 1 0 1 1 1 1 1 1 1 0 1 1 0 0 0 0 1 1 1 1 0 0 1 0 1 1 1 0 1 0 1 1 1 1 0\n", + " 1 1 0 1 1 0 1 1 1 0 0 1 1 1 0 1 0 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1\n", + " 1 1 0 0 1 1 1 1 1 1 1 1 0 0 1 0 1 1 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 1 0\n", + " 0 0 0 0 1 0 0 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0 0 0 1 1 1\n", + " 0 1 1 0 0 0 0 0 1 1 0 0 0 1 0 1 1 0 1 0 1 1 0 0 0 0 1 1 1 1 1 1 1 0 1 0 0\n", + " 1 1 1 1 1 1 1 1 0 0 1 0 1 0 1 1 0 1 1 1 1 0 1 1 1 1 0 0 1 0 0 0 1 1 1 0 1\n", + " 0 1 1 1 0 0 1 0 1 1 1]\n" + ] + } + ], + "source": [ + "x = cancer.data\n", + "y = cancer.target\n", + "\n", + "x_train, x_test, y_train, y_test = sklearn.model_selection.train_test_split(x, y, test_size=0.2)\n", + "\n", + "print(x_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy: 0.9385964912280702\n" + ] + } + ], + "source": [ + "clf = svm.SVC(kernel=\"linear\")\n", + "clf.fit(x_train, y_train)\n", + "\n", + "y_pred = clf.predict(x_test)\n", + "\n", + "acc = metrics.accuracy_score(y_test, y_pred)\n", + "\n", + "print(\"Accuracy: \",acc)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/1anno/2trimestre/Coding for DataScience/Python/.ipynb_checkpoints/RandomForestExample-checkpoint.ipynb b/1anno/2trimestre/Coding for DataScience/Python/.ipynb_checkpoints/RandomForestExample-checkpoint.ipynb new file mode 100644 index 000000000..8a768c0ec --- /dev/null +++ b/1anno/2trimestre/Coding for DataScience/Python/.ipynb_checkpoints/RandomForestExample-checkpoint.ipynb @@ -0,0 +1,959 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.ensemble import RandomForestClassifier\n", + "\n", + "import numpy as np\n", + "import pandas as pd\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "\n", + "from sklearn.metrics import accuracy_score\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn.ensemble import RandomForestClassifier\n", + "from sklearn.ensemble import BaggingClassifier\n", + "from sklearn.model_selection import train_test_split, cross_val_score, validation_curve, learning_curve" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "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", + "
label1x11x21x31x41x51x61x71x81x9...28x1928x2028x2128x2228x2328x2428x2528x2628x2728x28
07000000000...0000000000
12000000000...0000000000
21000000000...0000000000
30000000000...0000000000
44000000000...0000000000
\n", + "

5 rows × 785 columns

\n", + "
" + ], + "text/plain": [ + " label 1x1 1x2 1x3 1x4 1x5 1x6 1x7 1x8 1x9 ... 28x19 28x20 \\\n", + "0 7 0 0 0 0 0 0 0 0 0 ... 0 0 \n", + "1 2 0 0 0 0 0 0 0 0 0 ... 0 0 \n", + "2 1 0 0 0 0 0 0 0 0 0 ... 0 0 \n", + "3 0 0 0 0 0 0 0 0 0 0 ... 0 0 \n", + "4 4 0 0 0 0 0 0 0 0 0 ... 0 0 \n", + "\n", + " 28x21 28x22 28x23 28x24 28x25 28x26 28x27 28x28 \n", + "0 0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 0 0 0 \n", + "\n", + "[5 rows x 785 columns]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mnist = pd.read_csv(\"Datasets/MNIST/mnist_test.csv\")\n", + "mnist.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(10000, 785)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mnist.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 7\n", + "1 2\n", + "2 1\n", + "3 0\n", + "4 4\n", + " ..\n", + "9995 2\n", + "9996 3\n", + "9997 4\n", + "9998 5\n", + "9999 6\n", + "Name: label, Length: 10000, dtype: int64" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mnist_X = mnist.drop(\"label\",1)\n", + "mnist_X\n", + "mnist_y = mnist[\"label\"]\n", + "mnist_y" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([7, 2, 1, ..., 4, 5, 6], dtype=int64)" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mnist_y.values" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "X = mnist_X.values\n", + "y = mnist_y.values\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "X train : (8000, 784) -- X test : (2000, 784) \n", + "Y train : (8000,) -- Y test : (2000,)\n" + ] + } + ], + "source": [ + "print(\"X train :\",X_train.shape, \"-- X test :\", X_test.shape\n", + " ,\"\\nY train :\",y_train.shape, \"-- Y test :\", y_test.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "
" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(6,6))" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "for digit_num in range(0,64):\n", + " plt.subplot(8,8,digit_num+1)\n", + " grid_data = mnist_X.iloc[digit_num].values.reshape(28,28)\n", + " plt.imshow(grid_data, interpolation = \"none\", cmap = \"bone_r\")\n", + " plt.xticks([])\n", + " plt.yticks([])" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "multiclass format is not supported", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 8\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0msklearn\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmetrics\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mroc_auc_score\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 9\u001b[1;33m \u001b[0mroc_value\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mroc_auc_score\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my_train\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrf_probs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 10\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 11\u001b[0m \u001b[1;31m#sizes = range(1000, 6666, 1000)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mE:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\metrics\\ranking.py\u001b[0m in \u001b[0;36mroc_auc_score\u001b[1;34m(y_true, y_score, average, sample_weight, max_fpr)\u001b[0m\n\u001b[0;32m 353\u001b[0m return _average_binary_score(\n\u001b[0;32m 354\u001b[0m \u001b[0m_binary_roc_auc_score\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my_true\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my_score\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0maverage\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 355\u001b[1;33m sample_weight=sample_weight)\n\u001b[0m\u001b[0;32m 356\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 357\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mE:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\metrics\\base.py\u001b[0m in \u001b[0;36m_average_binary_score\u001b[1;34m(binary_metric, y_true, y_score, average, sample_weight)\u001b[0m\n\u001b[0;32m 71\u001b[0m \u001b[0my_type\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtype_of_target\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my_true\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 72\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0my_type\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32min\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;34m\"binary\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"multilabel-indicator\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 73\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"{0} format is not supported\"\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my_type\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 74\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 75\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0my_type\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m\"binary\"\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mValueError\u001b[0m: multiclass format is not supported" + ] + } + ], + "source": [ + "model = RandomForestClassifier(n_estimators=10, max_depth=10)\n", + "model.fit(X_train,y_train)\n", + "\n", + "pred = model.predict(X_test)\n", + "\n", + "rf_probs = model.predict_proba(X_test)[:, 1]\n", + "\n", + "from sklearn.metrics import roc_auc_score\n", + "\n", + "#sizes = range(1000, 6666, 1000)\n", + "#train_size, train_score, val_score = learning_curve(rf_lrn, X, y, train_sizes=sizes, cv=3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# MILAN POLLUTION RF REGRESSOR" + ] + }, + { + "cell_type": "code", + "execution_count": 170, + "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", + "
stazione_iddatainquinantevalore
032019/01/03NO251.0
132019/01/03CO_8h1.2
242019/01/03PM1029.0
342019/01/03NO2139.0
442019/01/03CO_8h1.3
\n", + "
" + ], + "text/plain": [ + " stazione_id data inquinante valore\n", + "0 3 2019/01/03 NO2 51.0\n", + "1 3 2019/01/03 CO_8h 1.2\n", + "2 4 2019/01/03 PM10 29.0\n", + "3 4 2019/01/03 NO2 139.0\n", + "4 4 2019/01/03 CO_8h 1.3" + ] + }, + "execution_count": 170, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dataset = pd.read_csv(\"Datasets/RilevazioneQA/qaria_2019.csv\")\n", + "dataset.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(6162, 4)" + ] + }, + "execution_count": 84, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dataset.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 NO2\n", + "1 CO_8h\n", + "2 PM10\n", + "3 NO2\n", + "4 CO_8h\n", + " ... \n", + "6157 NO2\n", + "6158 O3\n", + "6159 NO2\n", + "6160 CO_8h\n", + "6161 C6H6\n", + "Name: inquinante, Length: 6162, dtype: object" + ] + }, + "execution_count": 85, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dataset[\"inquinante\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "stazione_id int64\n", + "data object\n", + "inquinante object\n", + "valore float64\n", + "dtype: object" + ] + }, + "execution_count": 86, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dataset.dtypes\n" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "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", + "
stazione_idvalore
count6162.0000004488.000000
mean4.61538535.406009
std2.16771539.452066
min1.0000000.250000
25%2.0000002.100000
50%4.50000021.000000
75%6.00000060.000000
max8.000000234.000000
\n", + "
" + ], + "text/plain": [ + " stazione_id valore\n", + "count 6162.000000 4488.000000\n", + "mean 4.615385 35.406009\n", + "std 2.167715 39.452066\n", + "min 1.000000 0.250000\n", + "25% 2.000000 2.100000\n", + "50% 4.500000 21.000000\n", + "75% 6.000000 60.000000\n", + "max 8.000000 234.000000" + ] + }, + "execution_count": 87, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dataset.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 171, + "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", + "
stazione_iddatainquinantevalore
242019/01/03PM1029.0
922019/01/03PM1020.0
1562019/01/03PM1024.0
2072019/01/03PM1032.0
2942019/01/04PM1025.0
...............
612022019/12/30PM1059.0
612562019/12/30PM1069.0
613942019/12/31PM1057.0
614622019/12/31PM1051.0
615162019/12/31PM1059.0
\n", + "

900 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " stazione_id data inquinante valore\n", + "2 4 2019/01/03 PM10 29.0\n", + "9 2 2019/01/03 PM10 20.0\n", + "15 6 2019/01/03 PM10 24.0\n", + "20 7 2019/01/03 PM10 32.0\n", + "29 4 2019/01/04 PM10 25.0\n", + "... ... ... ... ...\n", + "6120 2 2019/12/30 PM10 59.0\n", + "6125 6 2019/12/30 PM10 69.0\n", + "6139 4 2019/12/31 PM10 57.0\n", + "6146 2 2019/12/31 PM10 51.0\n", + "6151 6 2019/12/31 PM10 59.0\n", + "\n", + "[900 rows x 4 columns]" + ] + }, + "execution_count": 171, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "indexName = dataset[ dataset[\"inquinante\"]!=\"PM10\"].index\n", + "indexName\n", + "dataset.drop(indexName, inplace=True)\n", + "dataset = dataset.dropna()\n", + "dataset.describe()\n", + "dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 186, + "metadata": {}, + "outputs": [], + "source": [ + "y = dataset.iloc[:, 3].values\n", + "lenght = [i for i in range(1,len(y)+1)]\n", + "dataset[\"n\"] = lenght\n", + "dataset\n", + "x = dataset.iloc[:,4:5]\n", + "X = x" + ] + }, + { + "cell_type": "code", + "execution_count": 187, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.ensemble import RandomForestRegressor\n", + "regressor = RandomForestRegressor(n_estimators=10, random_state=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 188, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "RandomForestRegressor(bootstrap=True, criterion='mse', max_depth=None,\n", + " max_features='auto', max_leaf_nodes=None,\n", + " min_impurity_decrease=0.0, min_impurity_split=None,\n", + " min_samples_leaf=1, min_samples_split=2,\n", + " min_weight_fraction_leaf=0.0, n_estimators=10,\n", + " n_jobs=None, oob_score=False, random_state=0, verbose=0,\n", + " warm_start=False)" + ] + }, + "execution_count": 188, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "regressor.fit(x,y)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 197, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The predicted value of PM10 at 6.5 time is [28.1]\n" + ] + } + ], + "source": [ + "# Step 4 - Predict\n", + "time = 100\n", + "y_pred = regressor.predict([[time]])\n", + "print('The predicted value of PM10 at',time,' time is ',y_pred)" + ] + }, + { + "cell_type": "code", + "execution_count": 205, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "644 30.0\n", + "Name: valore, dtype: float64" + ] + }, + "execution_count": 205, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dataset[\"valore\"][99:100]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/1anno/2trimestre/Coding for DataScience/Python/.ipynb_checkpoints/exercises_in_python-checkpoint.ipynb b/1anno/2trimestre/Coding for DataScience/Python/.ipynb_checkpoints/exercises_in_python-checkpoint.ipynb new file mode 100644 index 000000000..d27a2b1b0 --- /dev/null +++ b/1anno/2trimestre/Coding for DataScience/Python/.ipynb_checkpoints/exercises_in_python-checkpoint.ipynb @@ -0,0 +1,710 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Exercises in Python\n", + "\n", + "In the first three lessons, you have seen:\n", + "\n", + "- lists (including list comprehensions);\n", + "- tuples;\n", + "- flow control (selection and loop statements);\n", + "- modules;\n", + "- dictionaries;\n", + "\n", + "We will revise the above topics with five exercises.\n", + "\n", + "## Exercise 1\n", + "\n", + "Write a program to create a multiplication table, from 2 to 20 with a step of 2, of a number.\n", + "\n", + "For instance, given ``n = 10``, the program should output:\n", + "\n", + "``10 x 2 = 20\n", + "10 x 4 = 40\n", + "10 x 6 = 60\n", + "10 x 8 = 80\n", + "10 x 10 = 100\n", + "10 x 12 = 120\n", + "10 x 14 = 140\n", + "10 x 16 = 160\n", + "10 x 18 = 180\n", + "10 x 20 = 200``" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can simply address the required task using a ``for`` loop and ``range``: it represents an immutable sequence of numbers and is commonly used for looping a specific number of times in for loops." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10 x 2 = 20\n", + "10 x 4 = 40\n", + "10 x 6 = 60\n", + "10 x 8 = 80\n", + "10 x 10 = 100\n", + "10 x 12 = 120\n", + "10 x 14 = 140\n", + "10 x 16 = 160\n", + "10 x 18 = 180\n", + "10 x 20 = 200\n" + ] + } + ], + "source": [ + "n = 10\n", + "for i in range(1,n+1):\n", + " print(n,\"x\",i*2,\"=\",n*i*2)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We recall that ``range`` also accept a ``step`` argument. Then, we improve the code avoiding the ``if`` statement and setting ``step = 2``.\n", + "\n", + "We also get rid of the variable ``v``: if you don't need to use its value later, just don't create it." + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10 x 2 = 40\n", + "10 x 4 = 80\n", + "10 x 6 = 120\n", + "10 x 8 = 160\n", + "10 x 10 = 200\n", + "10 x 12 = 240\n", + "10 x 14 = 280\n", + "10 x 16 = 320\n", + "10 x 18 = 360\n", + "10 x 20 = 400\n" + ] + } + ], + "source": [ + "n = 10\n", + "for i in range(2,n*2+1, 2):\n", + " print(n,\"x\",i,\"=\",n*i*2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, we write the same program in one line using list comprehensions: they provide a compact way to filter elements from a sequence and they implement the following for loop\n", + "\n", + "``result = []\n", + "for in :\n", + " if :\n", + " result.append()``\n", + " \n", + "in the following equivalent form\n", + "\n", + "``[ for in if ]``\n", + "\n", + "In our case, we avoid the filtering part and we can obtain results as:" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10 x 1 = 20\n", + "10 x 2 = 40\n", + "10 x 3 = 60\n", + "10 x 4 = 80\n", + "10 x 5 = 100\n", + "10 x 6 = 120\n", + "10 x 7 = 140\n", + "10 x 8 = 160\n", + "10 x 9 = 180\n", + "10 x 10 = 200\n" + ] + }, + { + "data": { + "text/plain": [ + "['10x1=20',\n", + " '10x2=40',\n", + " '10x3=60',\n", + " '10x4=80',\n", + " '10x5=100',\n", + " '10x6=120',\n", + " '10x7=140',\n", + " '10x8=160',\n", + " '10x9=180',\n", + " '10x10=200']" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "n = 10\n", + "[print(n,\"x\",i,\"=\",n*i*2) for i in range(1,n+1)]\n", + "\n", + "# To get a list of strings\n", + "[str(n)+\"x\"+str(i)+\"=\"+str(n*i*2) for i in range(1,n+1)]\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To obtain the same pretty printing, we create a formatted string inside the list comprehension." + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['10 x 1 = 20',\n", + " '10 x 2 = 40',\n", + " '10 x 3 = 60',\n", + " '10 x 4 = 80',\n", + " '10 x 5 = 100',\n", + " '10 x 6 = 120',\n", + " '10 x 7 = 140',\n", + " '10 x 8 = 160',\n", + " '10 x 9 = 180',\n", + " '10 x 10 = 200']" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "s = \"{0} x {1} = {2}\"\n", + "[s.format(*[n,i,n*i*2]) for i in range(1,n+1)]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10 x 2 = 20\n", + "10 x 4 = 40\n", + "10 x 6 = 60\n", + "10 x 8 = 80\n", + "10 x 10 = 100\n", + "10 x 12 = 120\n", + "10 x 14 = 140\n", + "10 x 16 = 160\n", + "10 x 18 = 180\n", + "10 x 20 = 200\n" + ] + } + ], + "source": [ + "#OR \n", + "s = \"{0} x {1} = {2}\"\n", + "for i in range(1,n+1):\n", + " print(s.format(*[n,i*2,n*i*2]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, we use the ``join()`` method of strings: it concatenates each element of an iterable (such our list) to a string and returns the concatenated string. The syntax is ``string.join(iterable)``. An example:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'10 x 2 = 2010 x 4 = 4010 x 6 = 6010 x 8 = 8010 x 10 = 10010 x 12 = 12010 x 14 = 14010 x 16 = 16010 x 18 = 18010 x 20 = 200'" + ] + }, + "execution_count": 79, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "l = \"\"\n", + "s = \"{0} x {1} = {2}\"\n", + "#[s.format(*[n,i,n*i*2]) for i in range(1,n+1)]\n", + "l.join([s.format(*[n,i*2,n*i*2]) for i in range(1,n+1)])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We concatenate with ``\\n`` to go to the next line, then we print." + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'10 x 1 = 20 \\n10 x 2 = 40 \\n10 x 3 = 60 \\n10 x 4 = 80 \\n10 x 5 = 100 \\n10 x 6 = 120 \\n10 x 7 = 140 \\n10 x 8 = 160 \\n10 x 9 = 180 \\n10 x 10 = 200 \\n'" + ] + }, + "execution_count": 101, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "l = \"\"\n", + "s = \"{0} x {1} = {2} {3}\"\n", + "#[s.format(*[n,i,n*i*2]) for i in range(1,n+1)]\n", + "l.join([s.format(*[n,i,n*i*2],'\\n') for i in range(1,n+1)])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 2\n", + "\n", + "Write a Python program to replace the last value of the tuples in a list with the product of the respective first two elements of the tuple. Suppose that the list is composed only by tuples of three integers.\n", + "\n", + "For instance, given in input the list ``l = [(10, 20, 40), (40, 50, 60), (70, 80, 90)]``, the program should output the following list of tuples\n", + "``[(10, 20, 200), (40, 50, 2000), (70, 80, 5600)]``." + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[(10, 20, 200), (40, 50, 2000), (70, 80, 5600)]" + ] + }, + "execution_count": 102, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "l = [(10, 20, 40), (40, 50, 60), (70, 80, 90)]\n", + "\n", + "res =[]\n", + "for tup in l:\n", + " res+=[(tup[0],tup[1],tup[0]*tup[1])]\n", + "res" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, suppose that we want to address the same task as above, but the input list is now composed of tuples with a variable number of elements.\n", + "\n", + "For instance, consider the list ``l = [(10, 20, 100, 40), (40, 50, 60), (70, 80, 100, 200, 300, 90)]``, the program should output the following list of tuples ``[(10, 20, 100, 200), (40, 50, 2000), (70, 80, 100, 200, 300, 5600)]``.\n", + "\n", + "We can write a one-line expression using the slice operator, whose syntax is ``[start:stop:step]``." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(10, 20, 100, 200), (40, 50, 2000), (70, 80, 100, 200, 300, 5600)]" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "l = [(10, 20, 100, 40), (40, 50, 60), (70, 80, 100, 200, 300, 90)]\n", + "\n", + "res =[]\n", + "for tup in l:\n", + " tmp = (tup[0:len(tup)-1]) + (tup[0]*tup[1],) \n", + " res+=[tmp]\n", + " \n", + "res" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 3\n", + "\n", + "Write a program to find the smallest and the largest word in a given string.\n", + "\n", + "For instance, consider the string ``string = \"A quick red fox\"``. The program should output\n", + "\n", + "``Smallest word: A\n", + "Largest word: quick``\n", + "\n", + "A possible strategy is:\n", + "\n", + "- creating a list containing all the words of the sentence;\n", + "- loop on the list and compute both the smallest and the longest word at the same time.\n", + "\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Smallest word: A \n", + "Largest word: quick \n" + ] + } + ], + "source": [ + "string = \"A quick red fox\"\n", + "lis =[]\n", + "minw=\"\"\n", + "maxw=\"\"\n", + "tmp = \"\"\n", + "for w in string:\n", + " tmp+=w \n", + " if(w==\" \" or string.index(w)==len(string)-1):\n", + " lis+=[tmp]\n", + " tmp = \"\"\n", + "\n", + "if len(lis)>0:\n", + " minw= lis[0]\n", + "for i in lis:\n", + " if(len(i)< len(minw)):\n", + " minw = i\n", + " if(len(i)> len(maxw)):\n", + " maxw = i\n", + " \n", + "print(\"Smallest word: \" + minw + \"\\nLargest word: \" + maxw)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's refine the above code. Point 1 can be adressed using the Python ``split()`` built-in method of strings.\n", + "\n", + "The ``split()`` method splits a string into a list. You can specify the separator, and default separator is any whitespace." + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Smallest word: A\n", + "Largest word: quick\n" + ] + } + ], + "source": [ + "string = \"A quick red fox\"\n", + "lis = string.split(\" \")\n", + "minw= lis[0]\n", + "maxw=\"\"\n", + "for i in lis:\n", + " if(len(i)< len(minw)):\n", + " minw = i\n", + " if(len(i)> len(maxw)):\n", + " maxw = i\n", + " \n", + "print(\"Smallest word: \" + minw + \"\\nLargest word: \" + maxw)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Also Point 2 can be adressed in a smarter way. We can use the built-in functions ``min()`` and ``max()``, which respectively returns the smallest and largest of the input values.\n", + "\n", + "Such functions provide a parameter named ``key``, which allow to set a function to indicate the sort order. We must specify ``key = len``, as the default ordering for strings is the lexicographic one." + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Smallest word: A\n", + "Largest word: quick\n" + ] + } + ], + "source": [ + "string = \"A quick red fox\"\n", + "lis = string.split(\" \") \n", + "print(\"Smallest word: \" + min(lis,key=len) + \"\\nLargest word: \" + max(lis,key=len))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 4\n", + "\n", + "Write a Python program to remove duplicates from a list of lists.\n", + "\n", + "For instance, given in input the list ``ls = [[10, 20], [40], [30, 56, 25], [10, 20], [33], [40]]``, the program should output the following list without duplicates: ``[[10, 20], [40], [30, 56, 25], [33]]``.\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We initialize a new empty list named ``ls_no_dup``. We can address the exercise using two ``for`` loops: with the first one we pick an element from the original list, and with the second one we check if there is another equal element in the ``ls_no_dup`` list. If the element we are currently considering is yet present in ``ls_no_dup`` we don't add it again, otherwise we add it." + ] + }, + { + "cell_type": "code", + "execution_count": 112, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[[30, 56, 25], [33]]" + ] + }, + "execution_count": 112, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ls = [[10, 20], [40], [30, 56, 25], [10, 20], [33], [40]]\n", + "\n", + "no_dup = ls.copy()\n", + "\n", + "for i in range(len(ls)):\n", + " for j in range(len(ls)):\n", + " #print(\"compare :\" + str(ls[i]) +\" - \"+ str(ls[j]))\n", + " if(i!=j and ls[i]==ls[j]):\n", + " no_dup.remove(ls[i])\n", + "\n", + "no_dup" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can simplify the above code using in a smarter way the conditional statements:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Other common ways people use to tackle duplicates include:\n", + "- dictionaries: the ``fromkeys()`` method of ``dict`` returns a dictionary with the specified keys. If we cast the dictionary, we obtain a list with no duplicate values.\n", + "- sets: the ``set()`` function, return a set whose does not allow duplicates, by its mathematical definition. Again, if we cast the set to a list, we obtain a list with no duplicate values.\n", + "\n", + "\n", + "Here we can't adopt the latter solutions: you can't use a list as the key in a ``dict``, since ``dict`` keys need to be immutable. The same holds for ``set``." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Compare with the following examples:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 5\n", + "\n", + "Consider the following list of student records:\n", + "\n", + "``students = [{'id': 1, 'success': True, 'name': 'Theo'},\n", + " {'id': 2, 'success': False, 'name': 'Alex'},\n", + " {'id': 3, 'success': True, 'name': 'Ralph'},\n", + " {'id': 4, 'success': True, 'name': 'Ralph'}\n", + " {'id': 5, 'success': False, 'name': 'Theo'}]``\n", + " \n", + "We want to write a program to get the different values associated with \"name\" key.\n", + "\n", + "With the above list, the program should output ``['Theo', 'Alex', 'Ralph']``." + ] + }, + { + "cell_type": "code", + "execution_count": 148, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Theo', 'Ralph', 'Ralph']" + ] + }, + "execution_count": 148, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "students = [{'id': 1, 'success': True, 'name': 'Theo'},\n", + " {'id': 2, 'success': False, 'name': 'Alex'},\n", + " {'id': 3, 'success': True, 'name': 'Ralph'},\n", + " {'id': 4, 'success': True, 'name': 'Ralph'},\n", + " {'id': 5, 'success': False, 'name': 'Theo'}]\n", + "\n", + "lis = []\n", + "for dic in students:\n", + " if(dic[\"success\"] == True):\n", + " lis+=[dic[\"name\"]]\n", + "lis\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We recognize again the pattern that list comprehensions implement, then we can use them:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#OR\n", + "[dic[\"name\"] for dic in students if(dic[\"success\"] == True)]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, we can exploit what we learned from Exercise 4, using for instance the ``set()`` function." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/1anno/2trimestre/Coding for DataScience/Python/Datasets/Car Data Set/car.data b/1anno/2trimestre/Coding for DataScience/Python/Datasets/Car Data Set/car.data new file mode 100644 index 000000000..0e113dc55 --- /dev/null +++ b/1anno/2trimestre/Coding for DataScience/Python/Datasets/Car Data Set/car.data @@ -0,0 +1,1729 @@ +buying,maint,door,persons,lug_boot,safety,class +vhigh,vhigh,2,2,small,low,unacc +vhigh,vhigh,2,2,small,med,unacc +vhigh,vhigh,2,2,small,high,unacc +vhigh,vhigh,2,2,med,low,unacc +vhigh,vhigh,2,2,med,med,unacc +vhigh,vhigh,2,2,med,high,unacc +vhigh,vhigh,2,2,big,low,unacc +vhigh,vhigh,2,2,big,med,unacc +vhigh,vhigh,2,2,big,high,unacc +vhigh,vhigh,2,4,small,low,unacc +vhigh,vhigh,2,4,small,med,unacc +vhigh,vhigh,2,4,small,high,unacc +vhigh,vhigh,2,4,med,low,unacc +vhigh,vhigh,2,4,med,med,unacc +vhigh,vhigh,2,4,med,high,unacc +vhigh,vhigh,2,4,big,low,unacc +vhigh,vhigh,2,4,big,med,unacc +vhigh,vhigh,2,4,big,high,unacc +vhigh,vhigh,2,more,small,low,unacc +vhigh,vhigh,2,more,small,med,unacc +vhigh,vhigh,2,more,small,high,unacc +vhigh,vhigh,2,more,med,low,unacc +vhigh,vhigh,2,more,med,med,unacc +vhigh,vhigh,2,more,med,high,unacc +vhigh,vhigh,2,more,big,low,unacc +vhigh,vhigh,2,more,big,med,unacc +vhigh,vhigh,2,more,big,high,unacc +vhigh,vhigh,3,2,small,low,unacc +vhigh,vhigh,3,2,small,med,unacc +vhigh,vhigh,3,2,small,high,unacc +vhigh,vhigh,3,2,med,low,unacc +vhigh,vhigh,3,2,med,med,unacc +vhigh,vhigh,3,2,med,high,unacc +vhigh,vhigh,3,2,big,low,unacc +vhigh,vhigh,3,2,big,med,unacc +vhigh,vhigh,3,2,big,high,unacc +vhigh,vhigh,3,4,small,low,unacc +vhigh,vhigh,3,4,small,med,unacc +vhigh,vhigh,3,4,small,high,unacc +vhigh,vhigh,3,4,med,low,unacc +vhigh,vhigh,3,4,med,med,unacc +vhigh,vhigh,3,4,med,high,unacc +vhigh,vhigh,3,4,big,low,unacc +vhigh,vhigh,3,4,big,med,unacc +vhigh,vhigh,3,4,big,high,unacc +vhigh,vhigh,3,more,small,low,unacc +vhigh,vhigh,3,more,small,med,unacc +vhigh,vhigh,3,more,small,high,unacc +vhigh,vhigh,3,more,med,low,unacc +vhigh,vhigh,3,more,med,med,unacc +vhigh,vhigh,3,more,med,high,unacc +vhigh,vhigh,3,more,big,low,unacc +vhigh,vhigh,3,more,big,med,unacc +vhigh,vhigh,3,more,big,high,unacc +vhigh,vhigh,4,2,small,low,unacc +vhigh,vhigh,4,2,small,med,unacc +vhigh,vhigh,4,2,small,high,unacc +vhigh,vhigh,4,2,med,low,unacc +vhigh,vhigh,4,2,med,med,unacc +vhigh,vhigh,4,2,med,high,unacc +vhigh,vhigh,4,2,big,low,unacc +vhigh,vhigh,4,2,big,med,unacc +vhigh,vhigh,4,2,big,high,unacc +vhigh,vhigh,4,4,small,low,unacc +vhigh,vhigh,4,4,small,med,unacc +vhigh,vhigh,4,4,small,high,unacc +vhigh,vhigh,4,4,med,low,unacc +vhigh,vhigh,4,4,med,med,unacc +vhigh,vhigh,4,4,med,high,unacc +vhigh,vhigh,4,4,big,low,unacc +vhigh,vhigh,4,4,big,med,unacc +vhigh,vhigh,4,4,big,high,unacc +vhigh,vhigh,4,more,small,low,unacc +vhigh,vhigh,4,more,small,med,unacc +vhigh,vhigh,4,more,small,high,unacc +vhigh,vhigh,4,more,med,low,unacc +vhigh,vhigh,4,more,med,med,unacc +vhigh,vhigh,4,more,med,high,unacc +vhigh,vhigh,4,more,big,low,unacc +vhigh,vhigh,4,more,big,med,unacc +vhigh,vhigh,4,more,big,high,unacc +vhigh,vhigh,5more,2,small,low,unacc +vhigh,vhigh,5more,2,small,med,unacc +vhigh,vhigh,5more,2,small,high,unacc +vhigh,vhigh,5more,2,med,low,unacc +vhigh,vhigh,5more,2,med,med,unacc +vhigh,vhigh,5more,2,med,high,unacc +vhigh,vhigh,5more,2,big,low,unacc +vhigh,vhigh,5more,2,big,med,unacc +vhigh,vhigh,5more,2,big,high,unacc +vhigh,vhigh,5more,4,small,low,unacc +vhigh,vhigh,5more,4,small,med,unacc +vhigh,vhigh,5more,4,small,high,unacc +vhigh,vhigh,5more,4,med,low,unacc +vhigh,vhigh,5more,4,med,med,unacc +vhigh,vhigh,5more,4,med,high,unacc +vhigh,vhigh,5more,4,big,low,unacc +vhigh,vhigh,5more,4,big,med,unacc +vhigh,vhigh,5more,4,big,high,unacc +vhigh,vhigh,5more,more,small,low,unacc +vhigh,vhigh,5more,more,small,med,unacc +vhigh,vhigh,5more,more,small,high,unacc +vhigh,vhigh,5more,more,med,low,unacc +vhigh,vhigh,5more,more,med,med,unacc +vhigh,vhigh,5more,more,med,high,unacc +vhigh,vhigh,5more,more,big,low,unacc +vhigh,vhigh,5more,more,big,med,unacc +vhigh,vhigh,5more,more,big,high,unacc +vhigh,high,2,2,small,low,unacc +vhigh,high,2,2,small,med,unacc +vhigh,high,2,2,small,high,unacc +vhigh,high,2,2,med,low,unacc +vhigh,high,2,2,med,med,unacc +vhigh,high,2,2,med,high,unacc +vhigh,high,2,2,big,low,unacc +vhigh,high,2,2,big,med,unacc +vhigh,high,2,2,big,high,unacc +vhigh,high,2,4,small,low,unacc +vhigh,high,2,4,small,med,unacc +vhigh,high,2,4,small,high,unacc +vhigh,high,2,4,med,low,unacc +vhigh,high,2,4,med,med,unacc +vhigh,high,2,4,med,high,unacc +vhigh,high,2,4,big,low,unacc +vhigh,high,2,4,big,med,unacc +vhigh,high,2,4,big,high,unacc +vhigh,high,2,more,small,low,unacc +vhigh,high,2,more,small,med,unacc +vhigh,high,2,more,small,high,unacc +vhigh,high,2,more,med,low,unacc +vhigh,high,2,more,med,med,unacc +vhigh,high,2,more,med,high,unacc +vhigh,high,2,more,big,low,unacc +vhigh,high,2,more,big,med,unacc +vhigh,high,2,more,big,high,unacc +vhigh,high,3,2,small,low,unacc +vhigh,high,3,2,small,med,unacc +vhigh,high,3,2,small,high,unacc +vhigh,high,3,2,med,low,unacc +vhigh,high,3,2,med,med,unacc +vhigh,high,3,2,med,high,unacc +vhigh,high,3,2,big,low,unacc +vhigh,high,3,2,big,med,unacc +vhigh,high,3,2,big,high,unacc +vhigh,high,3,4,small,low,unacc +vhigh,high,3,4,small,med,unacc +vhigh,high,3,4,small,high,unacc +vhigh,high,3,4,med,low,unacc +vhigh,high,3,4,med,med,unacc +vhigh,high,3,4,med,high,unacc +vhigh,high,3,4,big,low,unacc +vhigh,high,3,4,big,med,unacc +vhigh,high,3,4,big,high,unacc +vhigh,high,3,more,small,low,unacc +vhigh,high,3,more,small,med,unacc +vhigh,high,3,more,small,high,unacc +vhigh,high,3,more,med,low,unacc +vhigh,high,3,more,med,med,unacc +vhigh,high,3,more,med,high,unacc +vhigh,high,3,more,big,low,unacc +vhigh,high,3,more,big,med,unacc +vhigh,high,3,more,big,high,unacc +vhigh,high,4,2,small,low,unacc +vhigh,high,4,2,small,med,unacc +vhigh,high,4,2,small,high,unacc +vhigh,high,4,2,med,low,unacc +vhigh,high,4,2,med,med,unacc +vhigh,high,4,2,med,high,unacc +vhigh,high,4,2,big,low,unacc +vhigh,high,4,2,big,med,unacc +vhigh,high,4,2,big,high,unacc +vhigh,high,4,4,small,low,unacc +vhigh,high,4,4,small,med,unacc +vhigh,high,4,4,small,high,unacc +vhigh,high,4,4,med,low,unacc +vhigh,high,4,4,med,med,unacc +vhigh,high,4,4,med,high,unacc +vhigh,high,4,4,big,low,unacc +vhigh,high,4,4,big,med,unacc +vhigh,high,4,4,big,high,unacc +vhigh,high,4,more,small,low,unacc +vhigh,high,4,more,small,med,unacc +vhigh,high,4,more,small,high,unacc +vhigh,high,4,more,med,low,unacc +vhigh,high,4,more,med,med,unacc +vhigh,high,4,more,med,high,unacc +vhigh,high,4,more,big,low,unacc +vhigh,high,4,more,big,med,unacc +vhigh,high,4,more,big,high,unacc +vhigh,high,more,2,small,low,unacc +vhigh,high,more,2,small,med,unacc +vhigh,high,more,2,small,high,unacc +vhigh,high,more,2,med,low,unacc +vhigh,high,more,2,med,med,unacc +vhigh,high,more,2,med,high,unacc +vhigh,high,more,2,big,low,unacc +vhigh,high,more,2,big,med,unacc +vhigh,high,more,2,big,high,unacc +vhigh,high,more,4,small,low,unacc +vhigh,high,more,4,small,med,unacc +vhigh,high,more,4,small,high,unacc +vhigh,high,more,4,med,low,unacc +vhigh,high,more,4,med,med,unacc +vhigh,high,more,4,med,high,unacc +vhigh,high,more,4,big,low,unacc +vhigh,high,more,4,big,med,unacc +vhigh,high,more,4,big,high,unacc +vhigh,high,more,more,small,low,unacc +vhigh,high,more,more,small,med,unacc +vhigh,high,more,more,small,high,unacc +vhigh,high,more,more,med,low,unacc +vhigh,high,more,more,med,med,unacc +vhigh,high,more,more,med,high,unacc +vhigh,high,more,more,big,low,unacc +vhigh,high,more,more,big,med,unacc +vhigh,high,more,more,big,high,unacc +vhigh,med,2,2,small,low,unacc +vhigh,med,2,2,small,med,unacc +vhigh,med,2,2,small,high,unacc +vhigh,med,2,2,med,low,unacc +vhigh,med,2,2,med,med,unacc +vhigh,med,2,2,med,high,unacc +vhigh,med,2,2,big,low,unacc +vhigh,med,2,2,big,med,unacc +vhigh,med,2,2,big,high,unacc +vhigh,med,2,4,small,low,unacc +vhigh,med,2,4,small,med,unacc +vhigh,med,2,4,small,high,acc +vhigh,med,2,4,med,low,unacc +vhigh,med,2,4,med,med,unacc +vhigh,med,2,4,med,high,acc +vhigh,med,2,4,big,low,unacc +vhigh,med,2,4,big,med,acc +vhigh,med,2,4,big,high,acc +vhigh,med,2,more,small,low,unacc +vhigh,med,2,more,small,med,unacc +vhigh,med,2,more,small,high,unacc +vhigh,med,2,more,med,low,unacc +vhigh,med,2,more,med,med,unacc +vhigh,med,2,more,med,high,acc +vhigh,med,2,more,big,low,unacc +vhigh,med,2,more,big,med,acc +vhigh,med,2,more,big,high,acc +vhigh,med,3,2,small,low,unacc +vhigh,med,3,2,small,med,unacc +vhigh,med,3,2,small,high,unacc +vhigh,med,3,2,med,low,unacc +vhigh,med,3,2,med,med,unacc +vhigh,med,3,2,med,high,unacc +vhigh,med,3,2,big,low,unacc +vhigh,med,3,2,big,med,unacc +vhigh,med,3,2,big,high,unacc +vhigh,med,3,4,small,low,unacc +vhigh,med,3,4,small,med,unacc +vhigh,med,3,4,small,high,acc +vhigh,med,3,4,med,low,unacc +vhigh,med,3,4,med,med,unacc +vhigh,med,3,4,med,high,acc +vhigh,med,3,4,big,low,unacc +vhigh,med,3,4,big,med,acc +vhigh,med,3,4,big,high,acc +vhigh,med,3,more,small,low,unacc +vhigh,med,3,more,small,med,unacc +vhigh,med,3,more,small,high,acc +vhigh,med,3,more,med,low,unacc +vhigh,med,3,more,med,med,acc +vhigh,med,3,more,med,high,acc +vhigh,med,3,more,big,low,unacc +vhigh,med,3,more,big,med,acc +vhigh,med,3,more,big,high,acc +vhigh,med,4,2,small,low,unacc +vhigh,med,4,2,small,med,unacc +vhigh,med,4,2,small,high,unacc +vhigh,med,4,2,med,low,unacc +vhigh,med,4,2,med,med,unacc +vhigh,med,4,2,med,high,unacc +vhigh,med,4,2,big,low,unacc +vhigh,med,4,2,big,med,unacc +vhigh,med,4,2,big,high,unacc +vhigh,med,4,4,small,low,unacc +vhigh,med,4,4,small,med,unacc +vhigh,med,4,4,small,high,acc +vhigh,med,4,4,med,low,unacc +vhigh,med,4,4,med,med,acc +vhigh,med,4,4,med,high,acc +vhigh,med,4,4,big,low,unacc +vhigh,med,4,4,big,med,acc +vhigh,med,4,4,big,high,acc +vhigh,med,4,more,small,low,unacc +vhigh,med,4,more,small,med,unacc +vhigh,med,4,more,small,high,acc +vhigh,med,4,more,med,low,unacc +vhigh,med,4,more,med,med,acc +vhigh,med,4,more,med,high,acc +vhigh,med,4,more,big,low,unacc +vhigh,med,4,more,big,med,acc +vhigh,med,4,more,big,high,acc +vhigh,med,5more,2,small,low,unacc +vhigh,med,5more,2,small,med,unacc +vhigh,med,5more,2,small,high,unacc +vhigh,med,5more,2,med,low,unacc +vhigh,med,5more,2,med,med,unacc +vhigh,med,5more,2,med,high,unacc +vhigh,med,5more,2,big,low,unacc +vhigh,med,5more,2,big,med,unacc +vhigh,med,5more,2,big,high,unacc +vhigh,med,5more,4,small,low,unacc +vhigh,med,5more,4,small,med,unacc +vhigh,med,5more,4,small,high,acc +vhigh,med,5more,4,med,low,unacc +vhigh,med,5more,4,med,med,acc +vhigh,med,5more,4,med,high,acc +vhigh,med,5more,4,big,low,unacc +vhigh,med,5more,4,big,med,acc +vhigh,med,5more,4,big,high,acc +vhigh,med,5more,more,small,low,unacc +vhigh,med,5more,more,small,med,unacc +vhigh,med,5more,more,small,high,acc +vhigh,med,5more,more,med,low,unacc +vhigh,med,5more,more,med,med,acc +vhigh,med,5more,more,med,high,acc +vhigh,med,5more,more,big,low,unacc +vhigh,med,5more,more,big,med,acc +vhigh,med,5more,more,big,high,acc +vhigh,low,2,2,small,low,unacc +vhigh,low,2,2,small,med,unacc +vhigh,low,2,2,small,high,unacc +vhigh,low,2,2,med,low,unacc +vhigh,low,2,2,med,med,unacc +vhigh,low,2,2,med,high,unacc +vhigh,low,2,2,big,low,unacc +vhigh,low,2,2,big,med,unacc +vhigh,low,2,2,big,high,unacc +vhigh,low,2,4,small,low,unacc +vhigh,low,2,4,small,med,unacc +vhigh,low,2,4,small,high,acc +vhigh,low,2,4,med,low,unacc +vhigh,low,2,4,med,med,unacc +vhigh,low,2,4,med,high,acc +vhigh,low,2,4,big,low,unacc +vhigh,low,2,4,big,med,acc +vhigh,low,2,4,big,high,acc +vhigh,low,2,more,small,low,unacc +vhigh,low,2,more,small,med,unacc +vhigh,low,2,more,small,high,unacc +vhigh,low,2,more,med,low,unacc +vhigh,low,2,more,med,med,unacc +vhigh,low,2,more,med,high,acc +vhigh,low,2,more,big,low,unacc +vhigh,low,2,more,big,med,acc +vhigh,low,2,more,big,high,acc +vhigh,low,3,2,small,low,unacc +vhigh,low,3,2,small,med,unacc +vhigh,low,3,2,small,high,unacc +vhigh,low,3,2,med,low,unacc +vhigh,low,3,2,med,med,unacc +vhigh,low,3,2,med,high,unacc +vhigh,low,3,2,big,low,unacc +vhigh,low,3,2,big,med,unacc +vhigh,low,3,2,big,high,unacc +vhigh,low,3,4,small,low,unacc +vhigh,low,3,4,small,med,unacc +vhigh,low,3,4,small,high,acc +vhigh,low,3,4,med,low,unacc +vhigh,low,3,4,med,med,unacc +vhigh,low,3,4,med,high,acc +vhigh,low,3,4,big,low,unacc +vhigh,low,3,4,big,med,acc +vhigh,low,3,4,big,high,acc +vhigh,low,3,more,small,low,unacc +vhigh,low,3,more,small,med,unacc +vhigh,low,3,more,small,high,acc +vhigh,low,3,more,med,low,unacc +vhigh,low,3,more,med,med,acc +vhigh,low,3,more,med,high,acc +vhigh,low,3,more,big,low,unacc +vhigh,low,3,more,big,med,acc +vhigh,low,3,more,big,high,acc +vhigh,low,4,2,small,low,unacc +vhigh,low,4,2,small,med,unacc +vhigh,low,4,2,small,high,unacc +vhigh,low,4,2,med,low,unacc +vhigh,low,4,2,med,med,unacc +vhigh,low,4,2,med,high,unacc +vhigh,low,4,2,big,low,unacc +vhigh,low,4,2,big,med,unacc +vhigh,low,4,2,big,high,unacc +vhigh,low,4,4,small,low,unacc +vhigh,low,4,4,small,med,unacc +vhigh,low,4,4,small,high,acc +vhigh,low,4,4,med,low,unacc +vhigh,low,4,4,med,med,acc +vhigh,low,4,4,med,high,acc +vhigh,low,4,4,big,low,unacc +vhigh,low,4,4,big,med,acc +vhigh,low,4,4,big,high,acc +vhigh,low,4,more,small,low,unacc +vhigh,low,4,more,small,med,unacc +vhigh,low,4,more,small,high,acc +vhigh,low,4,more,med,low,unacc +vhigh,low,4,more,med,med,acc +vhigh,low,4,more,med,high,acc +vhigh,low,4,more,big,low,unacc +vhigh,low,4,more,big,med,acc +vhigh,low,4,more,big,high,acc +vhigh,low,5more,2,small,low,unacc +vhigh,low,5more,2,small,med,unacc +vhigh,low,5more,2,small,high,unacc +vhigh,low,5more,2,med,low,unacc +vhigh,low,5more,2,med,med,unacc +vhigh,low,5more,2,med,high,unacc +vhigh,low,5more,2,big,low,unacc +vhigh,low,5more,2,big,med,unacc +vhigh,low,5more,2,big,high,unacc +vhigh,low,5more,4,small,low,unacc +vhigh,low,5more,4,small,med,unacc +vhigh,low,5more,4,small,high,acc +vhigh,low,5more,4,med,low,unacc +vhigh,low,5more,4,med,med,acc +vhigh,low,5more,4,med,high,acc +vhigh,low,5more,4,big,low,unacc +vhigh,low,5more,4,big,med,acc +vhigh,low,5more,4,big,high,acc +vhigh,low,5more,more,small,low,unacc +vhigh,low,5more,more,small,med,unacc +vhigh,low,5more,more,small,high,acc +vhigh,low,5more,more,med,low,unacc +vhigh,low,5more,more,med,med,acc +vhigh,low,5more,more,med,high,acc +vhigh,low,5more,more,big,low,unacc +vhigh,low,5more,more,big,med,acc +vhigh,low,5more,more,big,high,acc +high,vhigh,2,2,small,low,unacc +high,vhigh,2,2,small,med,unacc +high,vhigh,2,2,small,high,unacc +high,vhigh,2,2,med,low,unacc +high,vhigh,2,2,med,med,unacc +high,vhigh,2,2,med,high,unacc +high,vhigh,2,2,big,low,unacc +high,vhigh,2,2,big,med,unacc +high,vhigh,2,2,big,high,unacc +high,vhigh,2,4,small,low,unacc +high,vhigh,2,4,small,med,unacc +high,vhigh,2,4,small,high,unacc +high,vhigh,2,4,med,low,unacc +high,vhigh,2,4,med,med,unacc +high,vhigh,2,4,med,high,unacc +high,vhigh,2,4,big,low,unacc +high,vhigh,2,4,big,med,unacc +high,vhigh,2,4,big,high,unacc +high,vhigh,2,more,small,low,unacc +high,vhigh,2,more,small,med,unacc +high,vhigh,2,more,small,high,unacc +high,vhigh,2,more,med,low,unacc +high,vhigh,2,more,med,med,unacc +high,vhigh,2,more,med,high,unacc +high,vhigh,2,more,big,low,unacc +high,vhigh,2,more,big,med,unacc +high,vhigh,2,more,big,high,unacc +high,vhigh,3,2,small,low,unacc +high,vhigh,3,2,small,med,unacc +high,vhigh,3,2,small,high,unacc +high,vhigh,3,2,med,low,unacc +high,vhigh,3,2,med,med,unacc +high,vhigh,3,2,med,high,unacc +high,vhigh,3,2,big,low,unacc +high,vhigh,3,2,big,med,unacc +high,vhigh,3,2,big,high,unacc +high,vhigh,3,4,small,low,unacc +high,vhigh,3,4,small,med,unacc +high,vhigh,3,4,small,high,unacc +high,vhigh,3,4,med,low,unacc +high,vhigh,3,4,med,med,unacc +high,vhigh,3,4,med,high,unacc +high,vhigh,3,4,big,low,unacc +high,vhigh,3,4,big,med,unacc +high,vhigh,3,4,big,high,unacc +high,vhigh,3,more,small,low,unacc +high,vhigh,3,more,small,med,unacc +high,vhigh,3,more,small,high,unacc +high,vhigh,3,more,med,low,unacc +high,vhigh,3,more,med,med,unacc +high,vhigh,3,more,med,high,unacc +high,vhigh,3,more,big,low,unacc +high,vhigh,3,more,big,med,unacc +high,vhigh,3,more,big,high,unacc +high,vhigh,4,2,small,low,unacc +high,vhigh,4,2,small,med,unacc +high,vhigh,4,2,small,high,unacc +high,vhigh,4,2,med,low,unacc +high,vhigh,4,2,med,med,unacc +high,vhigh,4,2,med,high,unacc +high,vhigh,4,2,big,low,unacc +high,vhigh,4,2,big,med,unacc +high,vhigh,4,2,big,high,unacc +high,vhigh,4,4,small,low,unacc +high,vhigh,4,4,small,med,unacc +high,vhigh,4,4,small,high,unacc +high,vhigh,4,4,med,low,unacc +high,vhigh,4,4,med,med,unacc +high,vhigh,4,4,med,high,unacc +high,vhigh,4,4,big,low,unacc +high,vhigh,4,4,big,med,unacc +high,vhigh,4,4,big,high,unacc +high,vhigh,4,more,small,low,unacc +high,vhigh,4,more,small,med,unacc +high,vhigh,4,more,small,high,unacc +high,vhigh,4,more,med,low,unacc +high,vhigh,4,more,med,med,unacc +high,vhigh,4,more,med,high,unacc +high,vhigh,4,more,big,low,unacc +high,vhigh,4,more,big,med,unacc +high,vhigh,4,more,big,high,unacc +high,vhigh,5more,2,small,low,unacc +high,vhigh,5more,2,small,med,unacc +high,vhigh,5more,2,small,high,unacc +high,vhigh,5more,2,med,low,unacc +high,vhigh,5more,2,med,med,unacc +high,vhigh,5more,2,med,high,unacc +high,vhigh,5more,2,big,low,unacc +high,vhigh,5more,2,big,med,unacc +high,vhigh,5more,2,big,high,unacc +high,vhigh,5more,4,small,low,unacc +high,vhigh,5more,4,small,med,unacc +high,vhigh,5more,4,small,high,unacc +high,vhigh,5more,4,med,low,unacc +high,vhigh,5more,4,med,med,unacc +high,vhigh,5more,4,med,high,unacc +high,vhigh,5more,4,big,low,unacc +high,vhigh,5more,4,big,med,unacc +high,vhigh,5more,4,big,high,unacc +high,vhigh,5more,more,small,low,unacc +high,vhigh,5more,more,small,med,unacc +high,vhigh,5more,more,small,high,unacc +high,vhigh,5more,more,med,low,unacc +high,vhigh,5more,more,med,med,unacc +high,vhigh,5more,more,med,high,unacc +high,vhigh,5more,more,big,low,unacc +high,vhigh,5more,more,big,med,unacc +high,vhigh,5more,more,big,high,unacc +high,high,2,2,small,low,unacc +high,high,2,2,small,med,unacc +high,high,2,2,small,high,unacc +high,high,2,2,med,low,unacc +high,high,2,2,med,med,unacc +high,high,2,2,med,high,unacc +high,high,2,2,big,low,unacc +high,high,2,2,big,med,unacc +high,high,2,2,big,high,unacc +high,high,2,4,small,low,unacc +high,high,2,4,small,med,unacc +high,high,2,4,small,high,acc +high,high,2,4,med,low,unacc +high,high,2,4,med,med,unacc +high,high,2,4,med,high,acc +high,high,2,4,big,low,unacc +high,high,2,4,big,med,acc +high,high,2,4,big,high,acc +high,high,2,more,small,low,unacc +high,high,2,more,small,med,unacc +high,high,2,more,small,high,unacc +high,high,2,more,med,low,unacc +high,high,2,more,med,med,unacc +high,high,2,more,med,high,acc +high,high,2,more,big,low,unacc +high,high,2,more,big,med,acc +high,high,2,more,big,high,acc +high,high,3,2,small,low,unacc +high,high,3,2,small,med,unacc +high,high,3,2,small,high,unacc +high,high,3,2,med,low,unacc +high,high,3,2,med,med,unacc +high,high,3,2,med,high,unacc +high,high,3,2,big,low,unacc +high,high,3,2,big,med,unacc +high,high,3,2,big,high,unacc +high,high,3,4,small,low,unacc +high,high,3,4,small,med,unacc +high,high,3,4,small,high,acc +high,high,3,4,med,low,unacc +high,high,3,4,med,med,unacc +high,high,3,4,med,high,acc +high,high,3,4,big,low,unacc +high,high,3,4,big,med,acc +high,high,3,4,big,high,acc +high,high,3,more,small,low,unacc +high,high,3,more,small,med,unacc +high,high,3,more,small,high,acc +high,high,3,more,med,low,unacc +high,high,3,more,med,med,acc +high,high,3,more,med,high,acc +high,high,3,more,big,low,unacc +high,high,3,more,big,med,acc +high,high,3,more,big,high,acc +high,high,4,2,small,low,unacc +high,high,4,2,small,med,unacc +high,high,4,2,small,high,unacc +high,high,4,2,med,low,unacc +high,high,4,2,med,med,unacc +high,high,4,2,med,high,unacc +high,high,4,2,big,low,unacc +high,high,4,2,big,med,unacc +high,high,4,2,big,high,unacc +high,high,4,4,small,low,unacc +high,high,4,4,small,med,unacc +high,high,4,4,small,high,acc +high,high,4,4,med,low,unacc +high,high,4,4,med,med,acc +high,high,4,4,med,high,acc +high,high,4,4,big,low,unacc +high,high,4,4,big,med,acc +high,high,4,4,big,high,acc +high,high,4,more,small,low,unacc +high,high,4,more,small,med,unacc +high,high,4,more,small,high,acc +high,high,4,more,med,low,unacc +high,high,4,more,med,med,acc +high,high,4,more,med,high,acc +high,high,4,more,big,low,unacc +high,high,4,more,big,med,acc +high,high,4,more,big,high,acc +high,high,5more,2,small,low,unacc +high,high,5more,2,small,med,unacc +high,high,5more,2,small,high,unacc +high,high,5more,2,med,low,unacc +high,high,5more,2,med,med,unacc +high,high,5more,2,med,high,unacc +high,high,5more,2,big,low,unacc +high,high,5more,2,big,med,unacc +high,high,5more,2,big,high,unacc +high,high,5more,4,small,low,unacc +high,high,5more,4,small,med,unacc +high,high,5more,4,small,high,acc +high,high,5more,4,med,low,unacc +high,high,5more,4,med,med,acc +high,high,5more,4,med,high,acc +high,high,5more,4,big,low,unacc +high,high,5more,4,big,med,acc +high,high,5more,4,big,high,acc +high,high,5more,more,small,low,unacc +high,high,5more,more,small,med,unacc +high,high,5more,more,small,high,acc +high,high,5more,more,med,low,unacc +high,high,5more,more,med,med,acc +high,high,5more,more,med,high,acc +high,high,5more,more,big,low,unacc +high,high,5more,more,big,med,acc +high,high,5more,more,big,high,acc +high,med,2,2,small,low,unacc +high,med,2,2,small,med,unacc +high,med,2,2,small,high,unacc +high,med,2,2,med,low,unacc +high,med,2,2,med,med,unacc +high,med,2,2,med,high,unacc +high,med,2,2,big,low,unacc +high,med,2,2,big,med,unacc +high,med,2,2,big,high,unacc +high,med,2,4,small,low,unacc +high,med,2,4,small,med,unacc +high,med,2,4,small,high,acc +high,med,2,4,med,low,unacc +high,med,2,4,med,med,unacc +high,med,2,4,med,high,acc +high,med,2,4,big,low,unacc +high,med,2,4,big,med,acc +high,med,2,4,big,high,acc +high,med,2,more,small,low,unacc +high,med,2,more,small,med,unacc +high,med,2,more,small,high,unacc +high,med,2,more,med,low,unacc +high,med,2,more,med,med,unacc +high,med,2,more,med,high,acc +high,med,2,more,big,low,unacc +high,med,2,more,big,med,acc +high,med,2,more,big,high,acc +high,med,3,2,small,low,unacc +high,med,3,2,small,med,unacc +high,med,3,2,small,high,unacc +high,med,3,2,med,low,unacc +high,med,3,2,med,med,unacc +high,med,3,2,med,high,unacc +high,med,3,2,big,low,unacc +high,med,3,2,big,med,unacc +high,med,3,2,big,high,unacc +high,med,3,4,small,low,unacc +high,med,3,4,small,med,unacc +high,med,3,4,small,high,acc +high,med,3,4,med,low,unacc +high,med,3,4,med,med,unacc +high,med,3,4,med,high,acc +high,med,3,4,big,low,unacc +high,med,3,4,big,med,acc +high,med,3,4,big,high,acc +high,med,3,more,small,low,unacc +high,med,3,more,small,med,unacc +high,med,3,more,small,high,acc +high,med,3,more,med,low,unacc +high,med,3,more,med,med,acc +high,med,3,more,med,high,acc +high,med,3,more,big,low,unacc +high,med,3,more,big,med,acc +high,med,3,more,big,high,acc +high,med,4,2,small,low,unacc +high,med,4,2,small,med,unacc +high,med,4,2,small,high,unacc +high,med,4,2,med,low,unacc +high,med,4,2,med,med,unacc +high,med,4,2,med,high,unacc +high,med,4,2,big,low,unacc +high,med,4,2,big,med,unacc +high,med,4,2,big,high,unacc +high,med,4,4,small,low,unacc +high,med,4,4,small,med,unacc +high,med,4,4,small,high,acc +high,med,4,4,med,low,unacc +high,med,4,4,med,med,acc +high,med,4,4,med,high,acc +high,med,4,4,big,low,unacc +high,med,4,4,big,med,acc +high,med,4,4,big,high,acc +high,med,4,more,small,low,unacc +high,med,4,more,small,med,unacc +high,med,4,more,small,high,acc +high,med,4,more,med,low,unacc +high,med,4,more,med,med,acc +high,med,4,more,med,high,acc +high,med,4,more,big,low,unacc +high,med,4,more,big,med,acc +high,med,4,more,big,high,acc +high,med,5more,2,small,low,unacc +high,med,5more,2,small,med,unacc +high,med,5more,2,small,high,unacc +high,med,5more,2,med,low,unacc +high,med,5more,2,med,med,unacc +high,med,5more,2,med,high,unacc +high,med,5more,2,big,low,unacc +high,med,5more,2,big,med,unacc +high,med,5more,2,big,high,unacc +high,med,5more,4,small,low,unacc +high,med,5more,4,small,med,unacc +high,med,5more,4,small,high,acc +high,med,5more,4,med,low,unacc +high,med,5more,4,med,med,acc +high,med,5more,4,med,high,acc +high,med,5more,4,big,low,unacc +high,med,5more,4,big,med,acc +high,med,5more,4,big,high,acc +high,med,5more,more,small,low,unacc +high,med,5more,more,small,med,unacc +high,med,5more,more,small,high,acc +high,med,5more,more,med,low,unacc +high,med,5more,more,med,med,acc +high,med,5more,more,med,high,acc +high,med,5more,more,big,low,unacc +high,med,5more,more,big,med,acc +high,med,5more,more,big,high,acc +high,low,2,2,small,low,unacc +high,low,2,2,small,med,unacc +high,low,2,2,small,high,unacc +high,low,2,2,med,low,unacc +high,low,2,2,med,med,unacc +high,low,2,2,med,high,unacc +high,low,2,2,big,low,unacc +high,low,2,2,big,med,unacc +high,low,2,2,big,high,unacc +high,low,2,4,small,low,unacc +high,low,2,4,small,med,unacc +high,low,2,4,small,high,acc +high,low,2,4,med,low,unacc +high,low,2,4,med,med,unacc +high,low,2,4,med,high,acc +high,low,2,4,big,low,unacc +high,low,2,4,big,med,acc +high,low,2,4,big,high,acc +high,low,2,more,small,low,unacc +high,low,2,more,small,med,unacc +high,low,2,more,small,high,unacc +high,low,2,more,med,low,unacc +high,low,2,more,med,med,unacc +high,low,2,more,med,high,acc +high,low,2,more,big,low,unacc +high,low,2,more,big,med,acc +high,low,2,more,big,high,acc +high,low,3,2,small,low,unacc +high,low,3,2,small,med,unacc +high,low,3,2,small,high,unacc +high,low,3,2,med,low,unacc +high,low,3,2,med,med,unacc +high,low,3,2,med,high,unacc +high,low,3,2,big,low,unacc +high,low,3,2,big,med,unacc +high,low,3,2,big,high,unacc +high,low,3,4,small,low,unacc +high,low,3,4,small,med,unacc +high,low,3,4,small,high,acc +high,low,3,4,med,low,unacc +high,low,3,4,med,med,unacc +high,low,3,4,med,high,acc +high,low,3,4,big,low,unacc +high,low,3,4,big,med,acc +high,low,3,4,big,high,acc +high,low,3,more,small,low,unacc +high,low,3,more,small,med,unacc +high,low,3,more,small,high,acc +high,low,3,more,med,low,unacc +high,low,3,more,med,med,acc +high,low,3,more,med,high,acc +high,low,3,more,big,low,unacc +high,low,3,more,big,med,acc +high,low,3,more,big,high,acc +high,low,4,2,small,low,unacc +high,low,4,2,small,med,unacc +high,low,4,2,small,high,unacc +high,low,4,2,med,low,unacc +high,low,4,2,med,med,unacc +high,low,4,2,med,high,unacc +high,low,4,2,big,low,unacc +high,low,4,2,big,med,unacc +high,low,4,2,big,high,unacc +high,low,4,4,small,low,unacc +high,low,4,4,small,med,unacc +high,low,4,4,small,high,acc +high,low,4,4,med,low,unacc +high,low,4,4,med,med,acc +high,low,4,4,med,high,acc +high,low,4,4,big,low,unacc +high,low,4,4,big,med,acc +high,low,4,4,big,high,acc +high,low,4,more,small,low,unacc +high,low,4,more,small,med,unacc +high,low,4,more,small,high,acc +high,low,4,more,med,low,unacc +high,low,4,more,med,med,acc +high,low,4,more,med,high,acc +high,low,4,more,big,low,unacc +high,low,4,more,big,med,acc +high,low,4,more,big,high,acc +high,low,5more,2,small,low,unacc +high,low,5more,2,small,med,unacc +high,low,5more,2,small,high,unacc +high,low,5more,2,med,low,unacc +high,low,5more,2,med,med,unacc +high,low,5more,2,med,high,unacc +high,low,5more,2,big,low,unacc +high,low,5more,2,big,med,unacc +high,low,5more,2,big,high,unacc +high,low,5more,4,small,low,unacc +high,low,5more,4,small,med,unacc +high,low,5more,4,small,high,acc +high,low,5more,4,med,low,unacc +high,low,5more,4,med,med,acc +high,low,5more,4,med,high,acc +high,low,5more,4,big,low,unacc +high,low,5more,4,big,med,acc +high,low,5more,4,big,high,acc +high,low,5more,more,small,low,unacc +high,low,5more,more,small,med,unacc +high,low,5more,more,small,high,acc +high,low,5more,more,med,low,unacc +high,low,5more,more,med,med,acc +high,low,5more,more,med,high,acc +high,low,5more,more,big,low,unacc +high,low,5more,more,big,med,acc +high,low,5more,more,big,high,acc +med,vhigh,2,2,small,low,unacc +med,vhigh,2,2,small,med,unacc +med,vhigh,2,2,small,high,unacc +med,vhigh,2,2,med,low,unacc +med,vhigh,2,2,med,med,unacc +med,vhigh,2,2,med,high,unacc +med,vhigh,2,2,big,low,unacc +med,vhigh,2,2,big,med,unacc +med,vhigh,2,2,big,high,unacc +med,vhigh,2,4,small,low,unacc +med,vhigh,2,4,small,med,unacc +med,vhigh,2,4,small,high,acc +med,vhigh,2,4,med,low,unacc +med,vhigh,2,4,med,med,unacc +med,vhigh,2,4,med,high,acc +med,vhigh,2,4,big,low,unacc +med,vhigh,2,4,big,med,acc +med,vhigh,2,4,big,high,acc +med,vhigh,2,more,small,low,unacc +med,vhigh,2,more,small,med,unacc +med,vhigh,2,more,small,high,unacc +med,vhigh,2,more,med,low,unacc +med,vhigh,2,more,med,med,unacc +med,vhigh,2,more,med,high,acc +med,vhigh,2,more,big,low,unacc +med,vhigh,2,more,big,med,acc +med,vhigh,2,more,big,high,acc +med,vhigh,3,2,small,low,unacc +med,vhigh,3,2,small,med,unacc +med,vhigh,3,2,small,high,unacc +med,vhigh,3,2,med,low,unacc +med,vhigh,3,2,med,med,unacc +med,vhigh,3,2,med,high,unacc +med,vhigh,3,2,big,low,unacc +med,vhigh,3,2,big,med,unacc +med,vhigh,3,2,big,high,unacc +med,vhigh,3,4,small,low,unacc +med,vhigh,3,4,small,med,unacc +med,vhigh,3,4,small,high,acc +med,vhigh,3,4,med,low,unacc +med,vhigh,3,4,med,med,unacc +med,vhigh,3,4,med,high,acc +med,vhigh,3,4,big,low,unacc +med,vhigh,3,4,big,med,acc +med,vhigh,3,4,big,high,acc +med,vhigh,3,more,small,low,unacc +med,vhigh,3,more,small,med,unacc +med,vhigh,3,more,small,high,acc +med,vhigh,3,more,med,low,unacc +med,vhigh,3,more,med,med,acc +med,vhigh,3,more,med,high,acc +med,vhigh,3,more,big,low,unacc +med,vhigh,3,more,big,med,acc +med,vhigh,3,more,big,high,acc +med,vhigh,4,2,small,low,unacc +med,vhigh,4,2,small,med,unacc +med,vhigh,4,2,small,high,unacc +med,vhigh,4,2,med,low,unacc +med,vhigh,4,2,med,med,unacc +med,vhigh,4,2,med,high,unacc +med,vhigh,4,2,big,low,unacc +med,vhigh,4,2,big,med,unacc +med,vhigh,4,2,big,high,unacc +med,vhigh,4,4,small,low,unacc +med,vhigh,4,4,small,med,unacc +med,vhigh,4,4,small,high,acc +med,vhigh,4,4,med,low,unacc +med,vhigh,4,4,med,med,acc +med,vhigh,4,4,med,high,acc +med,vhigh,4,4,big,low,unacc +med,vhigh,4,4,big,med,acc +med,vhigh,4,4,big,high,acc +med,vhigh,4,more,small,low,unacc +med,vhigh,4,more,small,med,unacc +med,vhigh,4,more,small,high,acc +med,vhigh,4,more,med,low,unacc +med,vhigh,4,more,med,med,acc +med,vhigh,4,more,med,high,acc +med,vhigh,4,more,big,low,unacc +med,vhigh,4,more,big,med,acc +med,vhigh,4,more,big,high,acc +med,vhigh,5more,2,small,low,unacc +med,vhigh,5more,2,small,med,unacc +med,vhigh,5more,2,small,high,unacc +med,vhigh,5more,2,med,low,unacc +med,vhigh,5more,2,med,med,unacc +med,vhigh,5more,2,med,high,unacc +med,vhigh,5more,2,big,low,unacc +med,vhigh,5more,2,big,med,unacc +med,vhigh,5more,2,big,high,unacc +med,vhigh,5more,4,small,low,unacc +med,vhigh,5more,4,small,med,unacc +med,vhigh,5more,4,small,high,acc +med,vhigh,5more,4,med,low,unacc +med,vhigh,5more,4,med,med,acc +med,vhigh,5more,4,med,high,acc +med,vhigh,5more,4,big,low,unacc +med,vhigh,5more,4,big,med,acc +med,vhigh,5more,4,big,high,acc +med,vhigh,5more,more,small,low,unacc +med,vhigh,5more,more,small,med,unacc +med,vhigh,5more,more,small,high,acc +med,vhigh,5more,more,med,low,unacc +med,vhigh,5more,more,med,med,acc +med,vhigh,5more,more,med,high,acc +med,vhigh,5more,more,big,low,unacc +med,vhigh,5more,more,big,med,acc +med,vhigh,5more,more,big,high,acc +med,high,2,2,small,low,unacc +med,high,2,2,small,med,unacc +med,high,2,2,small,high,unacc +med,high,2,2,med,low,unacc +med,high,2,2,med,med,unacc +med,high,2,2,med,high,unacc +med,high,2,2,big,low,unacc +med,high,2,2,big,med,unacc +med,high,2,2,big,high,unacc +med,high,2,4,small,low,unacc +med,high,2,4,small,med,unacc +med,high,2,4,small,high,acc +med,high,2,4,med,low,unacc +med,high,2,4,med,med,unacc +med,high,2,4,med,high,acc +med,high,2,4,big,low,unacc +med,high,2,4,big,med,acc +med,high,2,4,big,high,acc +med,high,2,more,small,low,unacc +med,high,2,more,small,med,unacc +med,high,2,more,small,high,unacc +med,high,2,more,med,low,unacc +med,high,2,more,med,med,unacc +med,high,2,more,med,high,acc +med,high,2,more,big,low,unacc +med,high,2,more,big,med,acc +med,high,2,more,big,high,acc +med,high,3,2,small,low,unacc +med,high,3,2,small,med,unacc +med,high,3,2,small,high,unacc +med,high,3,2,med,low,unacc +med,high,3,2,med,med,unacc +med,high,3,2,med,high,unacc +med,high,3,2,big,low,unacc +med,high,3,2,big,med,unacc +med,high,3,2,big,high,unacc +med,high,3,4,small,low,unacc +med,high,3,4,small,med,unacc +med,high,3,4,small,high,acc +med,high,3,4,med,low,unacc +med,high,3,4,med,med,unacc +med,high,3,4,med,high,acc +med,high,3,4,big,low,unacc +med,high,3,4,big,med,acc +med,high,3,4,big,high,acc +med,high,3,more,small,low,unacc +med,high,3,more,small,med,unacc +med,high,3,more,small,high,acc +med,high,3,more,med,low,unacc +med,high,3,more,med,med,acc +med,high,3,more,med,high,acc +med,high,3,more,big,low,unacc +med,high,3,more,big,med,acc +med,high,3,more,big,high,acc +med,high,4,2,small,low,unacc +med,high,4,2,small,med,unacc +med,high,4,2,small,high,unacc +med,high,4,2,med,low,unacc +med,high,4,2,med,med,unacc +med,high,4,2,med,high,unacc +med,high,4,2,big,low,unacc +med,high,4,2,big,med,unacc +med,high,4,2,big,high,unacc +med,high,4,4,small,low,unacc +med,high,4,4,small,med,unacc +med,high,4,4,small,high,acc +med,high,4,4,med,low,unacc +med,high,4,4,med,med,acc +med,high,4,4,med,high,acc +med,high,4,4,big,low,unacc +med,high,4,4,big,med,acc +med,high,4,4,big,high,acc +med,high,4,more,small,low,unacc +med,high,4,more,small,med,unacc +med,high,4,more,small,high,acc +med,high,4,more,med,low,unacc +med,high,4,more,med,med,acc +med,high,4,more,med,high,acc +med,high,4,more,big,low,unacc +med,high,4,more,big,med,acc +med,high,4,more,big,high,acc +med,high,5more,2,small,low,unacc +med,high,5more,2,small,med,unacc +med,high,5more,2,small,high,unacc +med,high,5more,2,med,low,unacc +med,high,5more,2,med,med,unacc +med,high,5more,2,med,high,unacc +med,high,5more,2,big,low,unacc +med,high,5more,2,big,med,unacc +med,high,5more,2,big,high,unacc +med,high,5more,4,small,low,unacc +med,high,5more,4,small,med,unacc +med,high,5more,4,small,high,acc +med,high,5more,4,med,low,unacc +med,high,5more,4,med,med,acc +med,high,5more,4,med,high,acc +med,high,5more,4,big,low,unacc +med,high,5more,4,big,med,acc +med,high,5more,4,big,high,acc +med,high,5more,more,small,low,unacc +med,high,5more,more,small,med,unacc +med,high,5more,more,small,high,acc +med,high,5more,more,med,low,unacc +med,high,5more,more,med,med,acc +med,high,5more,more,med,high,acc +med,high,5more,more,big,low,unacc +med,high,5more,more,big,med,acc +med,high,5more,more,big,high,acc +med,med,2,2,small,low,unacc +med,med,2,2,small,med,unacc +med,med,2,2,small,high,unacc +med,med,2,2,med,low,unacc +med,med,2,2,med,med,unacc +med,med,2,2,med,high,unacc +med,med,2,2,big,low,unacc +med,med,2,2,big,med,unacc +med,med,2,2,big,high,unacc +med,med,2,4,small,low,unacc +med,med,2,4,small,med,acc +med,med,2,4,small,high,acc +med,med,2,4,med,low,unacc +med,med,2,4,med,med,acc +med,med,2,4,med,high,acc +med,med,2,4,big,low,unacc +med,med,2,4,big,med,acc +med,med,2,4,big,high,vgood +med,med,2,more,small,low,unacc +med,med,2,more,small,med,unacc +med,med,2,more,small,high,unacc +med,med,2,more,med,low,unacc +med,med,2,more,med,med,acc +med,med,2,more,med,high,acc +med,med,2,more,big,low,unacc +med,med,2,more,big,med,acc +med,med,2,more,big,high,vgood +med,med,3,2,small,low,unacc +med,med,3,2,small,med,unacc +med,med,3,2,small,high,unacc +med,med,3,2,med,low,unacc +med,med,3,2,med,med,unacc +med,med,3,2,med,high,unacc +med,med,3,2,big,low,unacc +med,med,3,2,big,med,unacc +med,med,3,2,big,high,unacc +med,med,3,4,small,low,unacc +med,med,3,4,small,med,acc +med,med,3,4,small,high,acc +med,med,3,4,med,low,unacc +med,med,3,4,med,med,acc +med,med,3,4,med,high,acc +med,med,3,4,big,low,unacc +med,med,3,4,big,med,acc +med,med,3,4,big,high,vgood +med,med,3,more,small,low,unacc +med,med,3,more,small,med,acc +med,med,3,more,small,high,acc +med,med,3,more,med,low,unacc +med,med,3,more,med,med,acc +med,med,3,more,med,high,vgood +med,med,3,more,big,low,unacc +med,med,3,more,big,med,acc +med,med,3,more,big,high,vgood +med,med,4,2,small,low,unacc +med,med,4,2,small,med,unacc +med,med,4,2,small,high,unacc +med,med,4,2,med,low,unacc +med,med,4,2,med,med,unacc +med,med,4,2,med,high,unacc +med,med,4,2,big,low,unacc +med,med,4,2,big,med,unacc +med,med,4,2,big,high,unacc +med,med,4,4,small,low,unacc +med,med,4,4,small,med,acc +med,med,4,4,small,high,acc +med,med,4,4,med,low,unacc +med,med,4,4,med,med,acc +med,med,4,4,med,high,vgood +med,med,4,4,big,low,unacc +med,med,4,4,big,med,acc +med,med,4,4,big,high,vgood +med,med,4,more,small,low,unacc +med,med,4,more,small,med,acc +med,med,4,more,small,high,acc +med,med,4,more,med,low,unacc +med,med,4,more,med,med,acc +med,med,4,more,med,high,vgood +med,med,4,more,big,low,unacc +med,med,4,more,big,med,acc +med,med,4,more,big,high,vgood +med,med,5more,2,small,low,unacc +med,med,5more,2,small,med,unacc +med,med,5more,2,small,high,unacc +med,med,5more,2,med,low,unacc +med,med,5more,2,med,med,unacc +med,med,5more,2,med,high,unacc +med,med,5more,2,big,low,unacc +med,med,5more,2,big,med,unacc +med,med,5more,2,big,high,unacc +med,med,5more,4,small,low,unacc +med,med,5more,4,small,med,acc +med,med,5more,4,small,high,acc +med,med,5more,4,med,low,unacc +med,med,5more,4,med,med,acc +med,med,5more,4,med,high,vgood +med,med,5more,4,big,low,unacc +med,med,5more,4,big,med,acc +med,med,5more,4,big,high,vgood +med,med,5more,more,small,low,unacc +med,med,5more,more,small,med,acc +med,med,5more,more,small,high,acc +med,med,5more,more,med,low,unacc +med,med,5more,more,med,med,acc +med,med,5more,more,med,high,vgood +med,med,5more,more,big,low,unacc +med,med,5more,more,big,med,acc +med,med,5more,more,big,high,vgood +med,low,2,2,small,low,unacc +med,low,2,2,small,med,unacc +med,low,2,2,small,high,unacc +med,low,2,2,med,low,unacc +med,low,2,2,med,med,unacc +med,low,2,2,med,high,unacc +med,low,2,2,big,low,unacc +med,low,2,2,big,med,unacc +med,low,2,2,big,high,unacc +med,low,2,4,small,low,unacc +med,low,2,4,small,med,acc +med,low,2,4,small,high,good +med,low,2,4,med,low,unacc +med,low,2,4,med,med,acc +med,low,2,4,med,high,good +med,low,2,4,big,low,unacc +med,low,2,4,big,med,good +med,low,2,4,big,high,vgood +med,low,2,more,small,low,unacc +med,low,2,more,small,med,unacc +med,low,2,more,small,high,unacc +med,low,2,more,med,low,unacc +med,low,2,more,med,med,acc +med,low,2,more,med,high,good +med,low,2,more,big,low,unacc +med,low,2,more,big,med,good +med,low,2,more,big,high,vgood +med,low,3,2,small,low,unacc +med,low,3,2,small,med,unacc +med,low,3,2,small,high,unacc +med,low,3,2,med,low,unacc +med,low,3,2,med,med,unacc +med,low,3,2,med,high,unacc +med,low,3,2,big,low,unacc +med,low,3,2,big,med,unacc +med,low,3,2,big,high,unacc +med,low,3,4,small,low,unacc +med,low,3,4,small,med,acc +med,low,3,4,small,high,good +med,low,3,4,med,low,unacc +med,low,3,4,med,med,acc +med,low,3,4,med,high,good +med,low,3,4,big,low,unacc +med,low,3,4,big,med,good +med,low,3,4,big,high,vgood +med,low,3,more,small,low,unacc +med,low,3,more,small,med,acc +med,low,3,more,small,high,good +med,low,3,more,med,low,unacc +med,low,3,more,med,med,good +med,low,3,more,med,high,vgood +med,low,3,more,big,low,unacc +med,low,3,more,big,med,good +med,low,3,more,big,high,vgood +med,low,4,2,small,low,unacc +med,low,4,2,small,med,unacc +med,low,4,2,small,high,unacc +med,low,4,2,med,low,unacc +med,low,4,2,med,med,unacc +med,low,4,2,med,high,unacc +med,low,4,2,big,low,unacc +med,low,4,2,big,med,unacc +med,low,4,2,big,high,unacc +med,low,4,4,small,low,unacc +med,low,4,4,small,med,acc +med,low,4,4,small,high,good +med,low,4,4,med,low,unacc +med,low,4,4,med,med,good +med,low,4,4,med,high,vgood +med,low,4,4,big,low,unacc +med,low,4,4,big,med,good +med,low,4,4,big,high,vgood +med,low,4,more,small,low,unacc +med,low,4,more,small,med,acc +med,low,4,more,small,high,good +med,low,4,more,med,low,unacc +med,low,4,more,med,med,good +med,low,4,more,med,high,vgood +med,low,4,more,big,low,unacc +med,low,4,more,big,med,good +med,low,4,more,big,high,vgood +med,low,5more,2,small,low,unacc +med,low,5more,2,small,med,unacc +med,low,5more,2,small,high,unacc +med,low,5more,2,med,low,unacc +med,low,5more,2,med,med,unacc +med,low,5more,2,med,high,unacc +med,low,5more,2,big,low,unacc +med,low,5more,2,big,med,unacc +med,low,5more,2,big,high,unacc +med,low,5more,4,small,low,unacc +med,low,5more,4,small,med,acc +med,low,5more,4,small,high,good +med,low,5more,4,med,low,unacc +med,low,5more,4,med,med,good +med,low,5more,4,med,high,vgood +med,low,5more,4,big,low,unacc +med,low,5more,4,big,med,good +med,low,5more,4,big,high,vgood +med,low,5more,more,small,low,unacc +med,low,5more,more,small,med,acc +med,low,5more,more,small,high,good +med,low,5more,more,med,low,unacc +med,low,5more,more,med,med,good +med,low,5more,more,med,high,vgood +med,low,5more,more,big,low,unacc +med,low,5more,more,big,med,good +med,low,5more,more,big,high,vgood +low,vhigh,2,2,small,low,unacc +low,vhigh,2,2,small,med,unacc +low,vhigh,2,2,small,high,unacc +low,vhigh,2,2,med,low,unacc +low,vhigh,2,2,med,med,unacc +low,vhigh,2,2,med,high,unacc +low,vhigh,2,2,big,low,unacc +low,vhigh,2,2,big,med,unacc +low,vhigh,2,2,big,high,unacc +low,vhigh,2,4,small,low,unacc +low,vhigh,2,4,small,med,unacc +low,vhigh,2,4,small,high,acc +low,vhigh,2,4,med,low,unacc +low,vhigh,2,4,med,med,unacc +low,vhigh,2,4,med,high,acc +low,vhigh,2,4,big,low,unacc +low,vhigh,2,4,big,med,acc +low,vhigh,2,4,big,high,acc +low,vhigh,2,more,small,low,unacc +low,vhigh,2,more,small,med,unacc +low,vhigh,2,more,small,high,unacc +low,vhigh,2,more,med,low,unacc +low,vhigh,2,more,med,med,unacc +low,vhigh,2,more,med,high,acc +low,vhigh,2,more,big,low,unacc +low,vhigh,2,more,big,med,acc +low,vhigh,2,more,big,high,acc +low,vhigh,3,2,small,low,unacc +low,vhigh,3,2,small,med,unacc +low,vhigh,3,2,small,high,unacc +low,vhigh,3,2,med,low,unacc +low,vhigh,3,2,med,med,unacc +low,vhigh,3,2,med,high,unacc +low,vhigh,3,2,big,low,unacc +low,vhigh,3,2,big,med,unacc +low,vhigh,3,2,big,high,unacc +low,vhigh,3,4,small,low,unacc +low,vhigh,3,4,small,med,unacc +low,vhigh,3,4,small,high,acc +low,vhigh,3,4,med,low,unacc +low,vhigh,3,4,med,med,unacc +low,vhigh,3,4,med,high,acc +low,vhigh,3,4,big,low,unacc +low,vhigh,3,4,big,med,acc +low,vhigh,3,4,big,high,acc +low,vhigh,3,more,small,low,unacc +low,vhigh,3,more,small,med,unacc +low,vhigh,3,more,small,high,acc +low,vhigh,3,more,med,low,unacc +low,vhigh,3,more,med,med,acc +low,vhigh,3,more,med,high,acc +low,vhigh,3,more,big,low,unacc +low,vhigh,3,more,big,med,acc +low,vhigh,3,more,big,high,acc +low,vhigh,4,2,small,low,unacc +low,vhigh,4,2,small,med,unacc +low,vhigh,4,2,small,high,unacc +low,vhigh,4,2,med,low,unacc +low,vhigh,4,2,med,med,unacc +low,vhigh,4,2,med,high,unacc +low,vhigh,4,2,big,low,unacc +low,vhigh,4,2,big,med,unacc +low,vhigh,4,2,big,high,unacc +low,vhigh,4,4,small,low,unacc +low,vhigh,4,4,small,med,unacc +low,vhigh,4,4,small,high,acc +low,vhigh,4,4,med,low,unacc +low,vhigh,4,4,med,med,acc +low,vhigh,4,4,med,high,acc +low,vhigh,4,4,big,low,unacc +low,vhigh,4,4,big,med,acc +low,vhigh,4,4,big,high,acc +low,vhigh,4,more,small,low,unacc +low,vhigh,4,more,small,med,unacc +low,vhigh,4,more,small,high,acc +low,vhigh,4,more,med,low,unacc +low,vhigh,4,more,med,med,acc +low,vhigh,4,more,med,high,acc +low,vhigh,4,more,big,low,unacc +low,vhigh,4,more,big,med,acc +low,vhigh,4,more,big,high,acc +low,vhigh,5more,2,small,low,unacc +low,vhigh,5more,2,small,med,unacc +low,vhigh,5more,2,small,high,unacc +low,vhigh,5more,2,med,low,unacc +low,vhigh,5more,2,med,med,unacc +low,vhigh,5more,2,med,high,unacc +low,vhigh,5more,2,big,low,unacc +low,vhigh,5more,2,big,med,unacc +low,vhigh,5more,2,big,high,unacc +low,vhigh,5more,4,small,low,unacc +low,vhigh,5more,4,small,med,unacc +low,vhigh,5more,4,small,high,acc +low,vhigh,5more,4,med,low,unacc +low,vhigh,5more,4,med,med,acc +low,vhigh,5more,4,med,high,acc +low,vhigh,5more,4,big,low,unacc +low,vhigh,5more,4,big,med,acc +low,vhigh,5more,4,big,high,acc +low,vhigh,5more,more,small,low,unacc +low,vhigh,5more,more,small,med,unacc +low,vhigh,5more,more,small,high,acc +low,vhigh,5more,more,med,low,unacc +low,vhigh,5more,more,med,med,acc +low,vhigh,5more,more,med,high,acc +low,vhigh,5more,more,big,low,unacc +low,vhigh,5more,more,big,med,acc +low,vhigh,5more,more,big,high,acc +low,high,2,2,small,low,unacc +low,high,2,2,small,med,unacc +low,high,2,2,small,high,unacc +low,high,2,2,med,low,unacc +low,high,2,2,med,med,unacc +low,high,2,2,med,high,unacc +low,high,2,2,big,low,unacc +low,high,2,2,big,med,unacc +low,high,2,2,big,high,unacc +low,high,2,4,small,low,unacc +low,high,2,4,small,med,acc +low,high,2,4,small,high,acc +low,high,2,4,med,low,unacc +low,high,2,4,med,med,acc +low,high,2,4,med,high,acc +low,high,2,4,big,low,unacc +low,high,2,4,big,med,acc +low,high,2,4,big,high,vgood +low,high,2,more,small,low,unacc +low,high,2,more,small,med,unacc +low,high,2,more,small,high,unacc +low,high,2,more,med,low,unacc +low,high,2,more,med,med,acc +low,high,2,more,med,high,acc +low,high,2,more,big,low,unacc +low,high,2,more,big,med,acc +low,high,2,more,big,high,vgood +low,high,3,2,small,low,unacc +low,high,3,2,small,med,unacc +low,high,3,2,small,high,unacc +low,high,3,2,med,low,unacc +low,high,3,2,med,med,unacc +low,high,3,2,med,high,unacc +low,high,3,2,big,low,unacc +low,high,3,2,big,med,unacc +low,high,3,2,big,high,unacc +low,high,3,4,small,low,unacc +low,high,3,4,small,med,acc +low,high,3,4,small,high,acc +low,high,3,4,med,low,unacc +low,high,3,4,med,med,acc +low,high,3,4,med,high,acc +low,high,3,4,big,low,unacc +low,high,3,4,big,med,acc +low,high,3,4,big,high,vgood +low,high,3,more,small,low,unacc +low,high,3,more,small,med,acc +low,high,3,more,small,high,acc +low,high,3,more,med,low,unacc +low,high,3,more,med,med,acc +low,high,3,more,med,high,vgood +low,high,3,more,big,low,unacc +low,high,3,more,big,med,acc +low,high,3,more,big,high,vgood +low,high,4,2,small,low,unacc +low,high,4,2,small,med,unacc +low,high,4,2,small,high,unacc +low,high,4,2,med,low,unacc +low,high,4,2,med,med,unacc +low,high,4,2,med,high,unacc +low,high,4,2,big,low,unacc +low,high,4,2,big,med,unacc +low,high,4,2,big,high,unacc +low,high,4,4,small,low,unacc +low,high,4,4,small,med,acc +low,high,4,4,small,high,acc +low,high,4,4,med,low,unacc +low,high,4,4,med,med,acc +low,high,4,4,med,high,vgood +low,high,4,4,big,low,unacc +low,high,4,4,big,med,acc +low,high,4,4,big,high,vgood +low,high,4,more,small,low,unacc +low,high,4,more,small,med,acc +low,high,4,more,small,high,acc +low,high,4,more,med,low,unacc +low,high,4,more,med,med,acc +low,high,4,more,med,high,vgood +low,high,4,more,big,low,unacc +low,high,4,more,big,med,acc +low,high,4,more,big,high,vgood +low,high,5more,2,small,low,unacc +low,high,5more,2,small,med,unacc +low,high,5more,2,small,high,unacc +low,high,5more,2,med,low,unacc +low,high,5more,2,med,med,unacc +low,high,5more,2,med,high,unacc +low,high,5more,2,big,low,unacc +low,high,5more,2,big,med,unacc +low,high,5more,2,big,high,unacc +low,high,5more,4,small,low,unacc +low,high,5more,4,small,med,acc +low,high,5more,4,small,high,acc +low,high,5more,4,med,low,unacc +low,high,5more,4,med,med,acc +low,high,5more,4,med,high,vgood +low,high,5more,4,big,low,unacc +low,high,5more,4,big,med,acc +low,high,5more,4,big,high,vgood +low,high,5more,more,small,low,unacc +low,high,5more,more,small,med,acc +low,high,5more,more,small,high,acc +low,high,5more,more,med,low,unacc +low,high,5more,more,med,med,acc +low,high,5more,more,med,high,vgood +low,high,5more,more,big,low,unacc +low,high,5more,more,big,med,acc +low,high,5more,more,big,high,vgood +low,med,2,2,small,low,unacc +low,med,2,2,small,med,unacc +low,med,2,2,small,high,unacc +low,med,2,2,med,low,unacc +low,med,2,2,med,med,unacc +low,med,2,2,med,high,unacc +low,med,2,2,big,low,unacc +low,med,2,2,big,med,unacc +low,med,2,2,big,high,unacc +low,med,2,4,small,low,unacc +low,med,2,4,small,med,acc +low,med,2,4,small,high,good +low,med,2,4,med,low,unacc +low,med,2,4,med,med,acc +low,med,2,4,med,high,good +low,med,2,4,big,low,unacc +low,med,2,4,big,med,good +low,med,2,4,big,high,vgood +low,med,2,more,small,low,unacc +low,med,2,more,small,med,unacc +low,med,2,more,small,high,unacc +low,med,2,more,med,low,unacc +low,med,2,more,med,med,acc +low,med,2,more,med,high,good +low,med,2,more,big,low,unacc +low,med,2,more,big,med,good +low,med,2,more,big,high,vgood +low,med,3,2,small,low,unacc +low,med,3,2,small,med,unacc +low,med,3,2,small,high,unacc +low,med,3,2,med,low,unacc +low,med,3,2,med,med,unacc +low,med,3,2,med,high,unacc +low,med,3,2,big,low,unacc +low,med,3,2,big,med,unacc +low,med,3,2,big,high,unacc +low,med,3,4,small,low,unacc +low,med,3,4,small,med,acc +low,med,3,4,small,high,good +low,med,3,4,med,low,unacc +low,med,3,4,med,med,acc +low,med,3,4,med,high,good +low,med,3,4,big,low,unacc +low,med,3,4,big,med,good +low,med,3,4,big,high,vgood +low,med,3,more,small,low,unacc +low,med,3,more,small,med,acc +low,med,3,more,small,high,good +low,med,3,more,med,low,unacc +low,med,3,more,med,med,good +low,med,3,more,med,high,vgood +low,med,3,more,big,low,unacc +low,med,3,more,big,med,good +low,med,3,more,big,high,vgood +low,med,4,2,small,low,unacc +low,med,4,2,small,med,unacc +low,med,4,2,small,high,unacc +low,med,4,2,med,low,unacc +low,med,4,2,med,med,unacc +low,med,4,2,med,high,unacc +low,med,4,2,big,low,unacc +low,med,4,2,big,med,unacc +low,med,4,2,big,high,unacc +low,med,4,4,small,low,unacc +low,med,4,4,small,med,acc +low,med,4,4,small,high,good +low,med,4,4,med,low,unacc +low,med,4,4,med,med,good +low,med,4,4,med,high,vgood +low,med,4,4,big,low,unacc +low,med,4,4,big,med,good +low,med,4,4,big,high,vgood +low,med,4,more,small,low,unacc +low,med,4,more,small,med,acc +low,med,4,more,small,high,good +low,med,4,more,med,low,unacc +low,med,4,more,med,med,good +low,med,4,more,med,high,vgood +low,med,4,more,big,low,unacc +low,med,4,more,big,med,good +low,med,4,more,big,high,vgood +low,med,5more,2,small,low,unacc +low,med,5more,2,small,med,unacc +low,med,5more,2,small,high,unacc +low,med,5more,2,med,low,unacc +low,med,5more,2,med,med,unacc +low,med,5more,2,med,high,unacc +low,med,5more,2,big,low,unacc +low,med,5more,2,big,med,unacc +low,med,5more,2,big,high,unacc +low,med,5more,4,small,low,unacc +low,med,5more,4,small,med,acc +low,med,5more,4,small,high,good +low,med,5more,4,med,low,unacc +low,med,5more,4,med,med,good +low,med,5more,4,med,high,vgood +low,med,5more,4,big,low,unacc +low,med,5more,4,big,med,good +low,med,5more,4,big,high,vgood +low,med,5more,more,small,low,unacc +low,med,5more,more,small,med,acc +low,med,5more,more,small,high,good +low,med,5more,more,med,low,unacc +low,med,5more,more,med,med,good +low,med,5more,more,med,high,vgood +low,med,5more,more,big,low,unacc +low,med,5more,more,big,med,good +low,med,5more,more,big,high,vgood +low,low,2,2,small,low,unacc +low,low,2,2,small,med,unacc +low,low,2,2,small,high,unacc +low,low,2,2,med,low,unacc +low,low,2,2,med,med,unacc +low,low,2,2,med,high,unacc +low,low,2,2,big,low,unacc +low,low,2,2,big,med,unacc +low,low,2,2,big,high,unacc +low,low,2,4,small,low,unacc +low,low,2,4,small,med,acc +low,low,2,4,small,high,good +low,low,2,4,med,low,unacc +low,low,2,4,med,med,acc +low,low,2,4,med,high,good +low,low,2,4,big,low,unacc +low,low,2,4,big,med,good +low,low,2,4,big,high,vgood +low,low,2,more,small,low,unacc +low,low,2,more,small,med,unacc +low,low,2,more,small,high,unacc +low,low,2,more,med,low,unacc +low,low,2,more,med,med,acc +low,low,2,more,med,high,good +low,low,2,more,big,low,unacc +low,low,2,more,big,med,good +low,low,2,more,big,high,vgood +low,low,3,2,small,low,unacc +low,low,3,2,small,med,unacc +low,low,3,2,small,high,unacc +low,low,3,2,med,low,unacc +low,low,3,2,med,med,unacc +low,low,3,2,med,high,unacc +low,low,3,2,big,low,unacc +low,low,3,2,big,med,unacc +low,low,3,2,big,high,unacc +low,low,3,4,small,low,unacc +low,low,3,4,small,med,acc +low,low,3,4,small,high,good +low,low,3,4,med,low,unacc +low,low,3,4,med,med,acc +low,low,3,4,med,high,good +low,low,3,4,big,low,unacc +low,low,3,4,big,med,good +low,low,3,4,big,high,vgood +low,low,3,more,small,low,unacc +low,low,3,more,small,med,acc +low,low,3,more,small,high,good +low,low,3,more,med,low,unacc +low,low,3,more,med,med,good +low,low,3,more,med,high,vgood +low,low,3,more,big,low,unacc +low,low,3,more,big,med,good +low,low,3,more,big,high,vgood +low,low,4,2,small,low,unacc +low,low,4,2,small,med,unacc +low,low,4,2,small,high,unacc +low,low,4,2,med,low,unacc +low,low,4,2,med,med,unacc +low,low,4,2,med,high,unacc +low,low,4,2,big,low,unacc +low,low,4,2,big,med,unacc +low,low,4,2,big,high,unacc +low,low,4,4,small,low,unacc +low,low,4,4,small,med,acc +low,low,4,4,small,high,good +low,low,4,4,med,low,unacc +low,low,4,4,med,med,good +low,low,4,4,med,high,vgood +low,low,4,4,big,low,unacc +low,low,4,4,big,med,good +low,low,4,4,big,high,vgood +low,low,4,more,small,low,unacc +low,low,4,more,small,med,acc +low,low,4,more,small,high,good +low,low,4,more,med,low,unacc +low,low,4,more,med,med,good +low,low,4,more,med,high,vgood +low,low,4,more,big,low,unacc +low,low,4,more,big,med,good +low,low,4,more,big,high,vgood +low,low,5more,2,small,low,unacc +low,low,5more,2,small,med,unacc +low,low,5more,2,small,high,unacc +low,low,5more,2,med,low,unacc +low,low,5more,2,med,med,unacc +low,low,5more,2,med,high,unacc +low,low,5more,2,big,low,unacc +low,low,5more,2,big,med,unacc +low,low,5more,2,big,high,unacc +low,low,5more,4,small,low,unacc +low,low,5more,4,small,med,acc +low,low,5more,4,small,high,good +low,low,5more,4,med,low,unacc +low,low,5more,4,med,med,good +low,low,5more,4,med,high,vgood +low,low,5more,4,big,low,unacc +low,low,5more,4,big,med,good +low,low,5more,4,big,high,vgood +low,low,5more,more,small,low,unacc +low,low,5more,more,small,med,acc +low,low,5more,more,small,high,good +low,low,5more,more,med,low,unacc +low,low,5more,more,med,med,good +low,low,5more,more,med,high,vgood +low,low,5more,more,big,low,unacc +low,low,5more,more,big,med,good +low,low,5more,more,big,high,vgood diff --git a/1anno/2trimestre/Coding for DataScience/Python/Datasets/Students/student-mat.csv b/1anno/2trimestre/Coding for DataScience/Python/Datasets/Students/student-mat.csv new file mode 100644 index 000000000..58efc299b --- /dev/null +++ b/1anno/2trimestre/Coding for DataScience/Python/Datasets/Students/student-mat.csv @@ -0,0 +1,396 @@ +school;sex;age;address;famsize;Pstatus;Medu;Fedu;Mjob;Fjob;reason;guardian;traveltime;studytime;failures;schoolsup;famsup;paid;activities;nursery;higher;internet;romantic;famrel;freetime;goout;Dalc;Walc;health;absences;G1;G2;G3 +"GP";"F";18;"U";"GT3";"A";4;4;"at_home";"teacher";"course";"mother";2;2;0;"yes";"no";"no";"no";"yes";"yes";"no";"no";4;3;4;1;1;3;6;"5";"6";6 +"GP";"F";17;"U";"GT3";"T";1;1;"at_home";"other";"course";"father";1;2;0;"no";"yes";"no";"no";"no";"yes";"yes";"no";5;3;3;1;1;3;4;"5";"5";6 +"GP";"F";15;"U";"LE3";"T";1;1;"at_home";"other";"other";"mother";1;2;3;"yes";"no";"yes";"no";"yes";"yes";"yes";"no";4;3;2;2;3;3;10;"7";"8";10 +"GP";"F";15;"U";"GT3";"T";4;2;"health";"services";"home";"mother";1;3;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"yes";3;2;2;1;1;5;2;"15";"14";15 +"GP";"F";16;"U";"GT3";"T";3;3;"other";"other";"home";"father";1;2;0;"no";"yes";"yes";"no";"yes";"yes";"no";"no";4;3;2;1;2;5;4;"6";"10";10 +"GP";"M";16;"U";"LE3";"T";4;3;"services";"other";"reputation";"mother";1;2;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"no";5;4;2;1;2;5;10;"15";"15";15 +"GP";"M";16;"U";"LE3";"T";2;2;"other";"other";"home";"mother";1;2;0;"no";"no";"no";"no";"yes";"yes";"yes";"no";4;4;4;1;1;3;0;"12";"12";11 +"GP";"F";17;"U";"GT3";"A";4;4;"other";"teacher";"home";"mother";2;2;0;"yes";"yes";"no";"no";"yes";"yes";"no";"no";4;1;4;1;1;1;6;"6";"5";6 +"GP";"M";15;"U";"LE3";"A";3;2;"services";"other";"home";"mother";1;2;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"no";4;2;2;1;1;1;0;"16";"18";19 +"GP";"M";15;"U";"GT3";"T";3;4;"other";"other";"home";"mother";1;2;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"no";5;5;1;1;1;5;0;"14";"15";15 +"GP";"F";15;"U";"GT3";"T";4;4;"teacher";"health";"reputation";"mother";1;2;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"no";3;3;3;1;2;2;0;"10";"8";9 +"GP";"F";15;"U";"GT3";"T";2;1;"services";"other";"reputation";"father";3;3;0;"no";"yes";"no";"yes";"yes";"yes";"yes";"no";5;2;2;1;1;4;4;"10";"12";12 +"GP";"M";15;"U";"LE3";"T";4;4;"health";"services";"course";"father";1;1;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"no";4;3;3;1;3;5;2;"14";"14";14 +"GP";"M";15;"U";"GT3";"T";4;3;"teacher";"other";"course";"mother";2;2;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"no";5;4;3;1;2;3;2;"10";"10";11 +"GP";"M";15;"U";"GT3";"A";2;2;"other";"other";"home";"other";1;3;0;"no";"yes";"no";"no";"yes";"yes";"yes";"yes";4;5;2;1;1;3;0;"14";"16";16 +"GP";"F";16;"U";"GT3";"T";4;4;"health";"other";"home";"mother";1;1;0;"no";"yes";"no";"no";"yes";"yes";"yes";"no";4;4;4;1;2;2;4;"14";"14";14 +"GP";"F";16;"U";"GT3";"T";4;4;"services";"services";"reputation";"mother";1;3;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"no";3;2;3;1;2;2;6;"13";"14";14 +"GP";"F";16;"U";"GT3";"T";3;3;"other";"other";"reputation";"mother";3;2;0;"yes";"yes";"no";"yes";"yes";"yes";"no";"no";5;3;2;1;1;4;4;"8";"10";10 +"GP";"M";17;"U";"GT3";"T";3;2;"services";"services";"course";"mother";1;1;3;"no";"yes";"no";"yes";"yes";"yes";"yes";"no";5;5;5;2;4;5;16;"6";"5";5 +"GP";"M";16;"U";"LE3";"T";4;3;"health";"other";"home";"father";1;1;0;"no";"no";"yes";"yes";"yes";"yes";"yes";"no";3;1;3;1;3;5;4;"8";"10";10 +"GP";"M";15;"U";"GT3";"T";4;3;"teacher";"other";"reputation";"mother";1;2;0;"no";"no";"no";"no";"yes";"yes";"yes";"no";4;4;1;1;1;1;0;"13";"14";15 +"GP";"M";15;"U";"GT3";"T";4;4;"health";"health";"other";"father";1;1;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"no";5;4;2;1;1;5;0;"12";"15";15 +"GP";"M";16;"U";"LE3";"T";4;2;"teacher";"other";"course";"mother";1;2;0;"no";"no";"no";"yes";"yes";"yes";"yes";"no";4;5;1;1;3;5;2;"15";"15";16 +"GP";"M";16;"U";"LE3";"T";2;2;"other";"other";"reputation";"mother";2;2;0;"no";"yes";"no";"yes";"yes";"yes";"yes";"no";5;4;4;2;4;5;0;"13";"13";12 +"GP";"F";15;"R";"GT3";"T";2;4;"services";"health";"course";"mother";1;3;0;"yes";"yes";"yes";"yes";"yes";"yes";"yes";"no";4;3;2;1;1;5;2;"10";"9";8 +"GP";"F";16;"U";"GT3";"T";2;2;"services";"services";"home";"mother";1;1;2;"no";"yes";"yes";"no";"no";"yes";"yes";"no";1;2;2;1;3;5;14;"6";"9";8 +"GP";"M";15;"U";"GT3";"T";2;2;"other";"other";"home";"mother";1;1;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"no";4;2;2;1;2;5;2;"12";"12";11 +"GP";"M";15;"U";"GT3";"T";4;2;"health";"services";"other";"mother";1;1;0;"no";"no";"yes";"no";"yes";"yes";"yes";"no";2;2;4;2;4;1;4;"15";"16";15 +"GP";"M";16;"U";"LE3";"A";3;4;"services";"other";"home";"mother";1;2;0;"yes";"yes";"no";"yes";"yes";"yes";"yes";"no";5;3;3;1;1;5;4;"11";"11";11 +"GP";"M";16;"U";"GT3";"T";4;4;"teacher";"teacher";"home";"mother";1;2;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"yes";4;4;5;5;5;5;16;"10";"12";11 +"GP";"M";15;"U";"GT3";"T";4;4;"health";"services";"home";"mother";1;2;0;"no";"yes";"yes";"no";"no";"yes";"yes";"no";5;4;2;3;4;5;0;"9";"11";12 +"GP";"M";15;"U";"GT3";"T";4;4;"services";"services";"reputation";"mother";2;2;0;"no";"yes";"no";"yes";"yes";"yes";"yes";"no";4;3;1;1;1;5;0;"17";"16";17 +"GP";"M";15;"R";"GT3";"T";4;3;"teacher";"at_home";"course";"mother";1;2;0;"no";"yes";"no";"yes";"yes";"yes";"yes";"yes";4;5;2;1;1;5;0;"17";"16";16 +"GP";"M";15;"U";"LE3";"T";3;3;"other";"other";"course";"mother";1;2;0;"no";"no";"no";"yes";"no";"yes";"yes";"no";5;3;2;1;1;2;0;"8";"10";12 +"GP";"M";16;"U";"GT3";"T";3;2;"other";"other";"home";"mother";1;1;0;"no";"yes";"yes";"no";"no";"yes";"yes";"no";5;4;3;1;1;5;0;"12";"14";15 +"GP";"F";15;"U";"GT3";"T";2;3;"other";"other";"other";"father";2;1;0;"no";"yes";"no";"yes";"yes";"yes";"no";"no";3;5;1;1;1;5;0;"8";"7";6 +"GP";"M";15;"U";"LE3";"T";4;3;"teacher";"services";"home";"mother";1;3;0;"no";"yes";"no";"yes";"yes";"yes";"yes";"no";5;4;3;1;1;4;2;"15";"16";18 +"GP";"M";16;"R";"GT3";"A";4;4;"other";"teacher";"reputation";"mother";2;3;0;"no";"yes";"no";"yes";"yes";"yes";"yes";"yes";2;4;3;1;1;5;7;"15";"16";15 +"GP";"F";15;"R";"GT3";"T";3;4;"services";"health";"course";"mother";1;3;0;"yes";"yes";"yes";"yes";"yes";"yes";"yes";"no";4;3;2;1;1;5;2;"12";"12";11 +"GP";"F";15;"R";"GT3";"T";2;2;"at_home";"other";"reputation";"mother";1;1;0;"yes";"yes";"yes";"yes";"yes";"yes";"no";"no";4;3;1;1;1;2;8;"14";"13";13 +"GP";"F";16;"U";"LE3";"T";2;2;"other";"other";"home";"mother";2;2;1;"no";"yes";"no";"yes";"no";"yes";"yes";"yes";3;3;3;1;2;3;25;"7";"10";11 +"GP";"M";15;"U";"LE3";"T";4;4;"teacher";"other";"home";"other";1;1;0;"no";"yes";"no";"no";"no";"yes";"yes";"yes";5;4;3;2;4;5;8;"12";"12";12 +"GP";"M";15;"U";"GT3";"T";4;4;"services";"teacher";"course";"father";1;2;0;"no";"yes";"no";"yes";"yes";"yes";"yes";"no";4;3;3;1;1;5;2;"19";"18";18 +"GP";"M";15;"U";"GT3";"T";2;2;"services";"services";"course";"father";1;1;0;"yes";"yes";"no";"no";"yes";"yes";"yes";"no";5;4;1;1;1;1;0;"8";"8";11 +"GP";"F";16;"U";"LE3";"T";2;2;"other";"at_home";"course";"father";2;2;1;"yes";"no";"no";"yes";"yes";"yes";"yes";"no";4;3;3;2;2;5;14;"10";"10";9 +"GP";"F";15;"U";"LE3";"A";4;3;"other";"other";"course";"mother";1;2;0;"yes";"yes";"yes";"yes";"yes";"yes";"yes";"yes";5;2;2;1;1;5;8;"8";"8";6 +"GP";"F";16;"U";"LE3";"A";3;3;"other";"services";"home";"mother";1;2;0;"no";"yes";"no";"no";"yes";"yes";"yes";"no";2;3;5;1;4;3;12;"11";"12";11 +"GP";"M";16;"U";"GT3";"T";4;3;"health";"services";"reputation";"mother";1;4;0;"no";"no";"no";"yes";"yes";"yes";"yes";"no";4;2;2;1;1;2;4;"19";"19";20 +"GP";"M";15;"U";"GT3";"T";4;2;"teacher";"other";"home";"mother";1;2;0;"no";"yes";"yes";"no";"yes";"yes";"no";"no";4;3;3;2;2;5;2;"15";"15";14 +"GP";"F";15;"U";"GT3";"T";4;4;"services";"teacher";"other";"father";1;2;1;"yes";"yes";"no";"yes";"no";"yes";"yes";"no";4;4;4;1;1;3;2;"7";"7";7 +"GP";"F";16;"U";"LE3";"T";2;2;"services";"services";"course";"mother";3;2;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"no";4;3;3;2;3;4;2;"12";"13";13 +"GP";"F";15;"U";"LE3";"T";4;2;"health";"other";"other";"mother";1;2;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"no";4;3;3;1;1;5;2;"11";"13";13 +"GP";"M";15;"U";"LE3";"A";4;2;"health";"health";"other";"father";2;1;1;"no";"no";"no";"no";"yes";"yes";"no";"no";5;5;5;3;4;5;6;"11";"11";10 +"GP";"F";15;"U";"GT3";"T";4;4;"services";"services";"course";"mother";1;1;0;"yes";"yes";"yes";"no";"yes";"yes";"yes";"no";3;3;4;2;3;5;0;"8";"10";11 +"GP";"F";15;"U";"LE3";"A";3;3;"other";"other";"other";"mother";1;1;0;"no";"no";"yes";"no";"yes";"yes";"yes";"no";5;3;4;4;4;1;6;"10";"13";13 +"GP";"F";16;"U";"GT3";"A";2;1;"other";"other";"other";"mother";1;2;0;"no";"no";"yes";"yes";"yes";"yes";"yes";"yes";5;3;4;1;1;2;8;"8";"9";10 +"GP";"F";15;"U";"GT3";"A";4;3;"services";"services";"reputation";"mother";1;2;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"no";4;3;2;1;1;1;0;"14";"15";15 +"GP";"M";15;"U";"GT3";"T";4;4;"teacher";"health";"reputation";"mother";1;2;0;"no";"yes";"no";"yes";"yes";"yes";"no";"no";3;2;2;1;1;5;4;"14";"15";15 +"GP";"M";15;"U";"LE3";"T";1;2;"other";"at_home";"home";"father";1;2;0;"yes";"yes";"no";"yes";"yes";"yes";"yes";"no";4;3;2;1;1;5;2;"9";"10";9 +"GP";"F";16;"U";"GT3";"T";4;2;"services";"other";"course";"mother";1;2;0;"no";"yes";"no";"no";"yes";"yes";"yes";"no";4;2;3;1;1;5;2;"15";"16";16 +"GP";"F";16;"R";"GT3";"T";4;4;"health";"teacher";"other";"mother";1;2;0;"no";"yes";"no";"yes";"yes";"yes";"no";"no";2;4;4;2;3;4;6;"10";"11";11 +"GP";"F";16;"U";"GT3";"T";1;1;"services";"services";"course";"father";4;1;0;"yes";"yes";"no";"yes";"no";"yes";"yes";"yes";5;5;5;5;5;5;6;"10";"8";11 +"GP";"F";16;"U";"LE3";"T";1;2;"other";"services";"reputation";"father";1;2;0;"yes";"no";"no";"yes";"yes";"yes";"yes";"no";4;4;3;1;1;1;4;"8";"10";9 +"GP";"F";16;"U";"GT3";"T";4;3;"teacher";"health";"home";"mother";1;3;0;"yes";"yes";"yes";"yes";"yes";"yes";"yes";"no";3;4;4;2;4;4;2;"10";"9";9 +"GP";"F";15;"U";"LE3";"T";4;3;"services";"services";"reputation";"father";1;2;0;"yes";"no";"no";"yes";"yes";"yes";"yes";"yes";4;4;4;2;4;2;0;"10";"10";10 +"GP";"F";16;"U";"LE3";"T";4;3;"teacher";"services";"course";"mother";3;2;0;"no";"yes";"no";"yes";"yes";"yes";"yes";"no";5;4;3;1;2;1;2;"16";"15";15 +"GP";"M";15;"U";"GT3";"A";4;4;"other";"services";"reputation";"mother";1;4;0;"no";"yes";"no";"yes";"no";"yes";"yes";"yes";1;3;3;5;5;3;4;"13";"13";12 +"GP";"F";16;"U";"GT3";"T";3;1;"services";"other";"course";"mother";1;4;0;"yes";"yes";"yes";"no";"yes";"yes";"yes";"no";4;3;3;1;2;5;4;"7";"7";6 +"GP";"F";15;"R";"LE3";"T";2;2;"health";"services";"reputation";"mother";2;2;0;"yes";"yes";"yes";"no";"yes";"yes";"yes";"no";4;1;3;1;3;4;2;"8";"9";8 +"GP";"F";15;"R";"LE3";"T";3;1;"other";"other";"reputation";"father";2;4;0;"no";"yes";"no";"no";"no";"yes";"yes";"no";4;4;2;2;3;3;12;"16";"16";16 +"GP";"M";16;"U";"GT3";"T";3;1;"other";"other";"reputation";"father";2;4;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"no";4;3;2;1;1;5;0;"13";"15";15 +"GP";"M";15;"U";"GT3";"T";4;2;"other";"other";"course";"mother";1;4;0;"no";"no";"no";"no";"yes";"yes";"yes";"no";3;3;3;1;1;3;0;"10";"10";10 +"GP";"F";15;"R";"GT3";"T";1;1;"other";"other";"reputation";"mother";1;2;2;"yes";"yes";"no";"no";"no";"yes";"yes";"yes";3;3;4;2;4;5;2;"8";"6";5 +"GP";"M";16;"U";"GT3";"T";3;1;"other";"other";"reputation";"mother";1;1;0;"no";"no";"no";"yes";"yes";"yes";"no";"no";5;3;2;2;2;5;2;"12";"12";14 +"GP";"F";16;"U";"GT3";"T";3;3;"other";"services";"home";"mother";1;2;0;"yes";"yes";"yes";"yes";"yes";"yes";"yes";"no";4;3;3;2;4;5;54;"11";"12";11 +"GP";"M";15;"U";"GT3";"T";4;3;"teacher";"other";"home";"mother";1;2;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"no";4;3;3;2;3;5;6;"9";"9";10 +"GP";"M";15;"U";"GT3";"T";4;0;"teacher";"other";"course";"mother";2;4;0;"no";"no";"no";"yes";"yes";"yes";"yes";"no";3;4;3;1;1;1;8;"11";"11";10 +"GP";"F";16;"U";"GT3";"T";2;2;"other";"other";"reputation";"mother";1;4;0;"no";"no";"yes";"no";"yes";"yes";"yes";"yes";5;2;3;1;3;3;0;"11";"11";11 +"GP";"M";17;"U";"GT3";"T";2;1;"other";"other";"home";"mother";2;1;3;"yes";"yes";"no";"yes";"yes";"no";"yes";"no";4;5;1;1;1;3;2;"8";"8";10 +"GP";"F";16;"U";"GT3";"T";3;4;"at_home";"other";"course";"mother";1;2;0;"no";"yes";"no";"no";"yes";"yes";"yes";"no";2;4;3;1;2;3;12;"5";"5";5 +"GP";"M";15;"U";"GT3";"T";2;3;"other";"services";"course";"father";1;1;0;"yes";"yes";"yes";"yes";"no";"yes";"yes";"yes";3;2;2;1;3;3;2;"10";"12";12 +"GP";"M";15;"U";"GT3";"T";2;3;"other";"other";"home";"mother";1;3;0;"yes";"no";"yes";"no";"no";"yes";"yes";"no";5;3;2;1;2;5;4;"11";"10";11 +"GP";"F";15;"U";"LE3";"T";3;2;"services";"other";"reputation";"mother";1;2;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"no";4;4;4;1;1;5;10;"7";"6";6 +"GP";"M";15;"U";"LE3";"T";2;2;"services";"services";"home";"mother";2;2;0;"no";"no";"yes";"yes";"yes";"yes";"yes";"no";5;3;3;1;3;4;4;"15";"15";15 +"GP";"F";15;"U";"GT3";"T";1;1;"other";"other";"home";"father";1;2;0;"no";"yes";"no";"yes";"no";"yes";"yes";"no";4;3;2;2;3;4;2;"9";"10";10 +"GP";"F";15;"U";"GT3";"T";4;4;"services";"services";"reputation";"father";2;2;2;"no";"no";"yes";"no";"yes";"yes";"yes";"yes";4;4;4;2;3;5;6;"7";"9";8 +"GP";"F";16;"U";"LE3";"T";2;2;"at_home";"other";"course";"mother";1;2;0;"no";"yes";"no";"no";"yes";"yes";"no";"no";4;3;4;1;2;2;4;"8";"7";6 +"GP";"F";15;"U";"GT3";"T";4;2;"other";"other";"reputation";"mother";1;3;0;"no";"yes";"no";"yes";"yes";"yes";"yes";"no";5;3;3;1;3;1;4;"13";"14";14 +"GP";"M";16;"U";"GT3";"T";2;2;"services";"other";"reputation";"father";2;2;1;"no";"no";"yes";"yes";"no";"yes";"yes";"no";4;4;2;1;1;3;12;"11";"10";10 +"GP";"M";16;"U";"LE3";"A";4;4;"teacher";"health";"reputation";"mother";1;2;0;"no";"yes";"no";"no";"yes";"yes";"no";"no";4;1;3;3;5;5;18;"8";"6";7 +"GP";"F";16;"U";"GT3";"T";3;3;"other";"other";"home";"mother";1;3;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"yes";4;3;3;1;3;4;0;"7";"7";8 +"GP";"F";15;"U";"GT3";"T";4;3;"services";"other";"reputation";"mother";1;1;0;"no";"no";"yes";"yes";"yes";"yes";"yes";"no";4;5;5;1;3;1;4;"16";"17";18 +"GP";"F";16;"U";"LE3";"T";3;1;"other";"other";"home";"father";1;2;0;"yes";"yes";"no";"no";"yes";"yes";"no";"no";3;3;3;2;3;2;4;"7";"6";6 +"GP";"F";16;"U";"GT3";"T";4;2;"teacher";"services";"home";"mother";2;2;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"no";5;3;3;1;1;1;0;"11";"10";10 +"GP";"M";15;"U";"LE3";"T";2;2;"services";"health";"reputation";"mother";1;4;0;"no";"yes";"no";"yes";"yes";"yes";"yes";"no";4;3;4;1;1;4;6;"11";"13";14 +"GP";"F";15;"R";"GT3";"T";1;1;"at_home";"other";"home";"mother";2;4;1;"yes";"yes";"yes";"yes";"yes";"yes";"yes";"no";3;1;2;1;1;1;2;"7";"10";10 +"GP";"M";16;"R";"GT3";"T";4;3;"services";"other";"reputation";"mother";2;1;0;"yes";"yes";"no";"yes";"no";"yes";"yes";"no";3;3;3;1;1;4;2;"11";"15";15 +"GP";"F";16;"U";"GT3";"T";2;1;"other";"other";"course";"mother";1;2;0;"no";"yes";"yes";"no";"yes";"yes";"no";"yes";4;3;5;1;1;5;2;"8";"9";10 +"GP";"F";16;"U";"GT3";"T";4;4;"other";"other";"reputation";"mother";1;1;0;"no";"no";"no";"yes";"no";"yes";"yes";"no";5;3;4;1;2;1;6;"11";"14";14 +"GP";"F";16;"U";"GT3";"T";4;3;"other";"at_home";"course";"mother";1;3;0;"yes";"yes";"yes";"no";"yes";"yes";"yes";"no";5;3;5;1;1;3;0;"7";"9";8 +"GP";"M";16;"U";"GT3";"T";4;4;"services";"services";"other";"mother";1;1;0;"yes";"yes";"yes";"yes";"yes";"yes";"yes";"no";4;5;5;5;5;4;14;"7";"7";5 +"GP";"M";16;"U";"GT3";"T";4;4;"services";"teacher";"other";"father";1;3;0;"no";"yes";"no";"yes";"yes";"yes";"yes";"yes";4;4;3;1;1;4;0;"16";"17";17 +"GP";"M";15;"U";"GT3";"T";4;4;"services";"other";"course";"mother";1;1;0;"no";"yes";"no";"yes";"no";"yes";"yes";"no";5;3;3;1;1;5;4;"10";"13";14 +"GP";"F";15;"U";"GT3";"T";3;2;"services";"other";"home";"mother";2;2;0;"yes";"yes";"yes";"no";"yes";"yes";"yes";"no";4;3;5;1;1;2;26;"7";"6";6 +"GP";"M";15;"U";"GT3";"A";3;4;"services";"other";"course";"mother";1;2;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"no";5;4;4;1;1;1;0;"16";"18";18 +"GP";"F";15;"U";"GT3";"A";3;3;"other";"health";"reputation";"father";1;4;0;"yes";"no";"no";"no";"yes";"yes";"no";"no";4;3;3;1;1;4;10;"10";"11";11 +"GP";"F";15;"U";"GT3";"T";2;2;"other";"other";"course";"mother";1;4;0;"yes";"yes";"yes";"no";"yes";"yes";"yes";"no";5;1;2;1;1;3;8;"7";"8";8 +"GP";"M";16;"U";"GT3";"T";3;3;"services";"other";"home";"father";1;3;0;"no";"yes";"no";"yes";"yes";"yes";"yes";"no";5;3;3;1;1;5;2;"16";"18";18 +"GP";"M";15;"R";"GT3";"T";4;4;"other";"other";"home";"father";4;4;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"yes";1;3;5;3;5;1;6;"10";"13";13 +"GP";"F";16;"U";"LE3";"T";4;4;"health";"health";"other";"mother";1;3;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"yes";5;4;5;1;1;4;4;"14";"15";16 +"GP";"M";15;"U";"LE3";"A";4;4;"teacher";"teacher";"course";"mother";1;1;0;"no";"no";"no";"yes";"yes";"yes";"yes";"no";5;5;3;1;1;4;6;"18";"19";19 +"GP";"F";16;"R";"GT3";"T";3;3;"services";"other";"reputation";"father";1;3;1;"yes";"yes";"no";"yes";"yes";"yes";"yes";"no";4;1;2;1;1;2;0;"7";"10";10 +"GP";"F";16;"U";"GT3";"T";2;2;"at_home";"other";"home";"mother";1;2;1;"yes";"no";"no";"yes";"yes";"yes";"yes";"no";3;1;2;1;1;5;6;"10";"13";13 +"GP";"M";15;"U";"LE3";"T";4;2;"teacher";"other";"course";"mother";1;1;0;"no";"no";"no";"no";"yes";"yes";"yes";"no";3;5;2;1;1;3;10;"18";"19";19 +"GP";"M";15;"R";"GT3";"T";2;1;"health";"services";"reputation";"mother";1;2;0;"no";"no";"no";"yes";"yes";"yes";"yes";"yes";5;4;2;1;1;5;8;"9";"9";9 +"GP";"M";16;"U";"GT3";"T";4;4;"teacher";"teacher";"course";"father";1;2;0;"no";"yes";"no";"yes";"yes";"yes";"yes";"no";5;4;4;1;2;5;2;"15";"15";16 +"GP";"M";15;"U";"GT3";"T";4;4;"other";"teacher";"reputation";"father";2;2;0;"no";"yes";"no";"yes";"yes";"yes";"no";"no";4;4;3;1;1;2;2;"11";"13";14 +"GP";"M";16;"U";"GT3";"T";3;3;"other";"services";"home";"father";2;1;0;"no";"no";"no";"yes";"yes";"yes";"yes";"no";5;4;2;1;1;5;0;"13";"14";13 +"GP";"M";17;"R";"GT3";"T";1;3;"other";"other";"course";"father";3;2;1;"no";"yes";"no";"yes";"yes";"yes";"yes";"no";5;2;4;1;4;5;20;"9";"7";8 +"GP";"M";15;"U";"GT3";"T";3;4;"other";"other";"reputation";"father";1;1;0;"no";"no";"no";"no";"yes";"yes";"yes";"no";3;4;3;1;2;4;6;"14";"13";13 +"GP";"F";15;"U";"GT3";"T";1;2;"at_home";"services";"course";"mother";1;2;0;"no";"no";"no";"no";"no";"yes";"yes";"no";3;2;3;1;2;1;2;"16";"15";15 +"GP";"M";15;"U";"GT3";"T";2;2;"services";"services";"home";"father";1;4;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"no";5;5;4;1;2;5;6;"16";"14";15 +"GP";"F";16;"U";"LE3";"T";2;4;"other";"health";"course";"father";2;2;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"yes";4;2;2;1;2;5;2;"13";"13";13 +"GP";"M";16;"U";"GT3";"T";4;4;"health";"other";"course";"mother";1;1;0;"no";"yes";"no";"yes";"yes";"yes";"yes";"no";3;4;4;1;4;5;18;"14";"11";13 +"GP";"F";16;"U";"GT3";"T";2;2;"other";"other";"home";"mother";1;2;0;"no";"no";"yes";"no";"yes";"yes";"yes";"yes";5;4;4;1;1;5;0;"8";"7";8 +"GP";"M";15;"U";"GT3";"T";3;4;"services";"services";"home";"father";1;1;0;"yes";"no";"no";"no";"yes";"yes";"yes";"no";5;5;5;3;2;5;0;"13";"13";12 +"GP";"F";15;"U";"LE3";"A";3;4;"other";"other";"home";"mother";1;2;0;"yes";"no";"no";"yes";"yes";"yes";"yes";"yes";5;3;2;1;1;1;0;"7";"10";11 +"GP";"F";19;"U";"GT3";"T";0;1;"at_home";"other";"course";"other";1;2;3;"no";"yes";"no";"no";"no";"no";"no";"no";3;4;2;1;1;5;2;"7";"8";9 +"GP";"M";18;"R";"GT3";"T";2;2;"services";"other";"reputation";"mother";1;1;2;"no";"yes";"no";"yes";"yes";"yes";"yes";"no";3;3;3;1;2;4;0;"7";"4";0 +"GP";"M";16;"R";"GT3";"T";4;4;"teacher";"teacher";"course";"mother";1;1;0;"no";"no";"yes";"yes";"yes";"yes";"yes";"no";3;5;5;2;5;4;8;"18";"18";18 +"GP";"F";15;"R";"GT3";"T";3;4;"services";"teacher";"course";"father";2;3;2;"no";"yes";"no";"no";"yes";"yes";"yes";"yes";4;2;2;2;2;5;0;"12";"0";0 +"GP";"F";15;"U";"GT3";"T";1;1;"at_home";"other";"course";"mother";3;1;0;"no";"yes";"no";"yes";"no";"yes";"yes";"yes";4;3;3;1;2;4;0;"8";"0";0 +"GP";"F";17;"U";"LE3";"T";2;2;"other";"other";"course";"father";1;1;0;"no";"yes";"no";"no";"yes";"yes";"yes";"yes";3;4;4;1;3;5;12;"10";"13";12 +"GP";"F";16;"U";"GT3";"A";3;4;"services";"other";"course";"father";1;1;0;"no";"no";"no";"no";"yes";"yes";"yes";"no";3;2;1;1;4;5;16;"12";"11";11 +"GP";"M";15;"R";"GT3";"T";3;4;"at_home";"teacher";"course";"mother";4;2;0;"no";"yes";"no";"no";"yes";"yes";"no";"yes";5;3;3;1;1;5;0;"9";"0";0 +"GP";"F";15;"U";"GT3";"T";4;4;"services";"at_home";"course";"mother";1;3;0;"no";"yes";"no";"yes";"yes";"yes";"yes";"yes";4;3;3;1;1;5;0;"11";"0";0 +"GP";"M";17;"R";"GT3";"T";3;4;"at_home";"other";"course";"mother";3;2;0;"no";"no";"no";"no";"yes";"yes";"no";"no";5;4;5;2;4;5;0;"10";"0";0 +"GP";"F";16;"U";"GT3";"A";3;3;"other";"other";"course";"other";2;1;2;"no";"yes";"no";"yes";"no";"yes";"yes";"yes";4;3;2;1;1;5;0;"4";"0";0 +"GP";"M";16;"U";"LE3";"T";1;1;"services";"other";"course";"mother";1;2;1;"no";"no";"no";"no";"yes";"yes";"no";"yes";4;4;4;1;3;5;0;"14";"12";12 +"GP";"F";15;"U";"GT3";"T";4;4;"teacher";"teacher";"course";"mother";2;1;0;"no";"no";"no";"yes";"yes";"yes";"yes";"no";4;3;2;1;1;5;0;"16";"16";15 +"GP";"M";15;"U";"GT3";"T";4;3;"teacher";"services";"course";"father";2;4;0;"yes";"yes";"no";"no";"yes";"yes";"yes";"no";2;2;2;1;1;3;0;"7";"9";0 +"GP";"M";16;"U";"LE3";"T";2;2;"services";"services";"reputation";"father";2;1;2;"no";"yes";"no";"yes";"yes";"yes";"yes";"no";2;3;3;2;2;2;8;"9";"9";9 +"GP";"F";15;"U";"GT3";"T";4;4;"teacher";"services";"course";"mother";1;3;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"no";4;2;2;1;1;5;2;"9";"11";11 +"GP";"F";16;"U";"LE3";"T";1;1;"at_home";"at_home";"course";"mother";1;1;0;"no";"no";"no";"no";"yes";"yes";"yes";"no";3;4;4;3;3;1;2;"14";"14";13 +"GP";"M";17;"U";"GT3";"T";2;1;"other";"other";"home";"mother";1;1;3;"no";"yes";"no";"no";"yes";"yes";"yes";"no";5;4;5;1;2;5;0;"5";"0";0 +"GP";"F";15;"U";"GT3";"T";1;1;"other";"services";"course";"father";1;2;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"no";4;4;2;1;2;5;0;"8";"11";11 +"GP";"F";15;"U";"GT3";"T";3;2;"health";"services";"home";"father";1;2;3;"no";"yes";"no";"no";"yes";"yes";"yes";"no";3;3;2;1;1;3;0;"6";"7";0 +"GP";"F";15;"U";"GT3";"T";1;2;"at_home";"other";"course";"mother";1;2;0;"no";"yes";"yes";"no";"no";"yes";"yes";"no";4;3;2;1;1;5;2;"10";"11";11 +"GP";"M";16;"U";"GT3";"T";4;4;"teacher";"teacher";"course";"mother";1;1;0;"no";"yes";"no";"no";"yes";"no";"yes";"yes";3;3;2;2;1;5;0;"7";"6";0 +"GP";"M";15;"U";"LE3";"A";2;1;"services";"other";"course";"mother";4;1;3;"no";"no";"no";"no";"yes";"yes";"yes";"no";4;5;5;2;5;5;0;"8";"9";10 +"GP";"M";18;"U";"LE3";"T";1;1;"other";"other";"course";"mother";1;1;3;"no";"no";"no";"no";"yes";"no";"yes";"yes";2;3;5;2;5;4;0;"6";"5";0 +"GP";"M";16;"U";"LE3";"T";2;1;"at_home";"other";"course";"mother";1;1;1;"no";"no";"no";"yes";"yes";"yes";"no";"yes";4;4;4;3;5;5;6;"12";"13";14 +"GP";"F";15;"R";"GT3";"T";3;3;"services";"services";"reputation";"other";2;3;2;"no";"yes";"yes";"yes";"yes";"yes";"yes";"yes";4;2;1;2;3;3;8;"10";"10";10 +"GP";"M";19;"U";"GT3";"T";3;2;"services";"at_home";"home";"mother";1;1;3;"no";"yes";"no";"no";"yes";"no";"yes";"yes";4;5;4;1;1;4;0;"5";"0";0 +"GP";"F";17;"U";"GT3";"T";4;4;"other";"teacher";"course";"mother";1;1;0;"yes";"yes";"no";"no";"yes";"yes";"no";"yes";4;2;1;1;1;4;0;"11";"11";12 +"GP";"M";15;"R";"GT3";"T";2;3;"at_home";"services";"course";"mother";1;2;0;"yes";"no";"yes";"yes";"yes";"yes";"no";"no";4;4;4;1;1;1;2;"11";"8";8 +"GP";"M";17;"R";"LE3";"T";1;2;"other";"other";"reputation";"mother";1;1;0;"no";"no";"no";"no";"yes";"yes";"no";"no";2;2;2;3;3;5;8;"16";"12";13 +"GP";"F";18;"R";"GT3";"T";1;1;"at_home";"other";"course";"mother";3;1;3;"no";"yes";"no";"yes";"no";"yes";"no";"no";5;2;5;1;5;4;6;"9";"8";10 +"GP";"M";16;"R";"GT3";"T";2;2;"at_home";"other";"course";"mother";3;1;0;"no";"no";"no";"no";"no";"yes";"no";"no";4;2;2;1;2;3;2;"17";"15";15 +"GP";"M";16;"U";"GT3";"T";3;3;"other";"services";"course";"father";1;2;1;"no";"yes";"yes";"no";"yes";"yes";"yes";"yes";4;5;5;4;4;5;4;"10";"12";12 +"GP";"M";17;"R";"LE3";"T";2;1;"at_home";"other";"course";"mother";2;1;2;"no";"no";"no";"yes";"yes";"no";"yes";"yes";3;3;2;2;2;5;0;"7";"6";0 +"GP";"M";15;"R";"GT3";"T";3;2;"other";"other";"course";"mother";2;2;2;"yes";"yes";"no";"no";"yes";"yes";"yes";"yes";4;4;4;1;4;3;6;"5";"9";7 +"GP";"M";16;"U";"LE3";"T";1;2;"other";"other";"course";"mother";2;1;1;"no";"no";"no";"yes";"yes";"yes";"no";"no";4;4;4;2;4;5;0;"7";"0";0 +"GP";"M";17;"U";"GT3";"T";1;3;"at_home";"services";"course";"father";1;1;0;"no";"no";"no";"no";"yes";"no";"yes";"no";5;3;3;1;4;2;2;"10";"10";10 +"GP";"M";17;"R";"LE3";"T";1;1;"other";"services";"course";"mother";4;2;3;"no";"no";"no";"yes";"yes";"no";"no";"yes";5;3;5;1;5;5;0;"5";"8";7 +"GP";"M";16;"U";"GT3";"T";3;2;"services";"services";"course";"mother";2;1;1;"no";"yes";"no";"yes";"no";"no";"no";"no";4;5;2;1;1;2;16;"12";"11";12 +"GP";"M";16;"U";"GT3";"T";2;2;"other";"other";"course";"father";1;2;0;"no";"no";"no";"no";"yes";"no";"yes";"no";4;3;5;2;4;4;4;"10";"10";10 +"GP";"F";16;"U";"GT3";"T";4;2;"health";"services";"home";"father";1;2;0;"no";"no";"yes";"no";"yes";"yes";"yes";"yes";4;2;3;1;1;3;0;"14";"15";16 +"GP";"F";16;"U";"GT3";"T";2;2;"other";"other";"home";"mother";1;2;0;"no";"yes";"yes";"no";"no";"yes";"yes";"no";5;1;5;1;1;4;0;"6";"7";0 +"GP";"F";16;"U";"GT3";"T";4;4;"health";"health";"reputation";"mother";1;2;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"yes";4;4;2;1;1;3;0;"14";"14";14 +"GP";"M";16;"U";"GT3";"T";3;4;"other";"other";"course";"father";3;1;2;"no";"yes";"no";"yes";"no";"yes";"yes";"no";3;4;5;2;4;2;0;"6";"5";0 +"GP";"M";16;"U";"GT3";"T";1;0;"other";"other";"reputation";"mother";2;2;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"yes";4;3;2;1;1;3;2;"13";"15";16 +"GP";"M";17;"U";"LE3";"T";4;4;"teacher";"other";"reputation";"mother";1;2;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"no";4;4;4;1;3;5;0;"13";"11";10 +"GP";"F";16;"U";"GT3";"T";1;3;"at_home";"services";"home";"mother";1;2;3;"no";"no";"no";"yes";"no";"yes";"yes";"yes";4;3;5;1;1;3;0;"8";"7";0 +"GP";"F";16;"U";"LE3";"T";3;3;"other";"other";"reputation";"mother";2;2;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"no";4;4;5;1;1;4;4;"10";"11";9 +"GP";"M";17;"U";"LE3";"T";4;3;"teacher";"other";"course";"mother";2;2;0;"no";"no";"yes";"yes";"yes";"yes";"yes";"no";4;4;4;4;4;4;4;"10";"9";9 +"GP";"F";16;"U";"GT3";"T";2;2;"services";"other";"reputation";"mother";2;2;0;"no";"no";"yes";"yes";"no";"yes";"yes";"no";3;4;4;1;4;5;2;"13";"13";11 +"GP";"M";17;"U";"GT3";"T";3;3;"other";"other";"reputation";"father";1;2;0;"no";"no";"no";"yes";"no";"yes";"yes";"no";4;3;4;1;4;4;4;"6";"5";6 +"GP";"M";16;"R";"GT3";"T";4;2;"teacher";"services";"other";"mother";1;1;0;"no";"yes";"no";"yes";"yes";"yes";"yes";"yes";4;3;3;3;4;3;10;"10";"8";9 +"GP";"M";17;"U";"GT3";"T";4;3;"other";"other";"course";"mother";1;2;0;"no";"yes";"no";"yes";"yes";"yes";"yes";"yes";5;2;3;1;1;2;4;"10";"10";11 +"GP";"M";16;"U";"GT3";"T";4;3;"teacher";"other";"home";"mother";1;2;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"no";3;4;3;2;3;3;10;"9";"8";8 +"GP";"M";16;"U";"GT3";"T";3;3;"services";"other";"home";"mother";1;2;0;"no";"no";"yes";"yes";"yes";"yes";"yes";"yes";4;2;3;1;2;3;2;"12";"13";12 +"GP";"F";17;"U";"GT3";"T";2;4;"services";"services";"reputation";"father";1;2;0;"no";"yes";"no";"yes";"yes";"yes";"no";"no";5;4;2;2;3;5;0;"16";"17";17 +"GP";"F";17;"U";"LE3";"T";3;3;"other";"other";"reputation";"mother";1;2;0;"no";"yes";"no";"yes";"yes";"yes";"yes";"yes";5;3;3;2;3;1;56;"9";"9";8 +"GP";"F";16;"U";"GT3";"T";3;2;"other";"other";"reputation";"mother";1;2;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"no";1;2;2;1;2;1;14;"12";"13";12 +"GP";"M";17;"U";"GT3";"T";3;3;"services";"services";"other";"mother";1;2;0;"no";"yes";"no";"yes";"yes";"yes";"yes";"yes";4;3;4;2;3;4;12;"12";"12";11 +"GP";"M";16;"U";"GT3";"T";1;2;"services";"services";"other";"mother";1;1;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"yes";3;3;3;1;2;3;2;"11";"12";11 +"GP";"M";16;"U";"LE3";"T";2;1;"other";"other";"course";"mother";1;2;0;"no";"no";"yes";"yes";"yes";"yes";"yes";"yes";4;2;3;1;2;5;0;"15";"15";15 +"GP";"F";17;"U";"GT3";"A";3;3;"health";"other";"reputation";"mother";1;2;0;"no";"yes";"no";"no";"no";"yes";"yes";"yes";3;3;3;1;3;3;6;"8";"7";9 +"GP";"M";17;"R";"GT3";"T";1;2;"at_home";"other";"home";"mother";1;2;0;"no";"no";"no";"no";"yes";"yes";"no";"no";3;1;3;1;5;3;4;"8";"9";10 +"GP";"F";16;"U";"GT3";"T";2;3;"services";"services";"course";"mother";1;2;0;"no";"no";"no";"no";"yes";"yes";"yes";"no";4;3;3;1;1;2;10;"11";"12";13 +"GP";"F";17;"U";"GT3";"T";1;1;"at_home";"services";"course";"mother";1;2;0;"no";"no";"no";"yes";"yes";"yes";"yes";"no";5;3;3;1;1;3;0;"8";"8";9 +"GP";"M";17;"U";"GT3";"T";1;2;"at_home";"services";"other";"other";2;2;0;"no";"no";"yes";"yes";"no";"yes";"yes";"no";4;4;4;4;5;5;12;"7";"8";8 +"GP";"M";16;"R";"GT3";"T";3;3;"services";"services";"reputation";"mother";1;1;0;"no";"yes";"no";"yes";"yes";"yes";"yes";"no";4;3;2;3;4;5;8;"8";"9";10 +"GP";"M";16;"U";"GT3";"T";2;3;"other";"other";"home";"father";2;1;0;"no";"no";"no";"no";"yes";"yes";"yes";"no";5;3;3;1;1;3;0;"13";"14";14 +"GP";"F";17;"U";"LE3";"T";2;4;"services";"services";"course";"father";1;2;0;"no";"no";"no";"yes";"yes";"yes";"yes";"yes";4;3;2;1;1;5;0;"14";"15";15 +"GP";"M";17;"U";"GT3";"T";4;4;"services";"teacher";"home";"mother";1;1;0;"no";"no";"no";"no";"yes";"yes";"yes";"no";5;2;3;1;2;5;4;"17";"15";16 +"GP";"M";16;"R";"LE3";"T";3;3;"teacher";"other";"home";"father";3;1;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"no";3;3;4;3;5;3;8;"9";"9";10 +"GP";"F";17;"U";"GT3";"T";4;4;"services";"teacher";"home";"mother";2;1;1;"no";"yes";"no";"no";"yes";"yes";"yes";"no";4;2;4;2;3;2;24;"18";"18";18 +"GP";"F";16;"U";"LE3";"T";4;4;"teacher";"teacher";"reputation";"mother";1;2;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"no";4;5;2;1;2;3;0;"9";"9";10 +"GP";"F";16;"U";"GT3";"T";4;3;"health";"other";"home";"mother";1;2;0;"no";"yes";"no";"yes";"yes";"yes";"yes";"no";4;3;5;1;5;2;2;"16";"16";16 +"GP";"F";16;"U";"GT3";"T";2;3;"other";"other";"reputation";"mother";1;2;0;"yes";"yes";"yes";"yes";"yes";"yes";"no";"no";4;4;3;1;3;4;6;"8";"10";10 +"GP";"F";17;"U";"GT3";"T";1;1;"other";"other";"course";"mother";1;2;0;"no";"yes";"yes";"no";"no";"yes";"no";"no";4;4;4;1;3;1;4;"9";"9";10 +"GP";"F";17;"R";"GT3";"T";2;2;"other";"other";"reputation";"mother";1;1;0;"no";"yes";"no";"no";"yes";"yes";"yes";"no";5;3;2;1;2;3;18;"7";"6";6 +"GP";"F";16;"R";"GT3";"T";2;2;"services";"services";"reputation";"mother";2;4;0;"no";"yes";"yes";"yes";"no";"yes";"yes";"no";5;3;5;1;1;5;6;"10";"10";11 +"GP";"F";17;"U";"GT3";"T";3;4;"at_home";"services";"home";"mother";1;3;1;"no";"yes";"yes";"no";"yes";"yes";"yes";"yes";4;4;3;3;4;5;28;"10";"9";9 +"GP";"F";16;"U";"GT3";"A";3;1;"services";"other";"course";"mother";1;2;3;"no";"yes";"yes";"no";"yes";"yes";"yes";"no";2;3;3;2;2;4;5;"7";"7";7 +"GP";"F";16;"U";"GT3";"T";4;3;"teacher";"other";"other";"mother";1;2;0;"no";"no";"yes";"yes";"yes";"yes";"yes";"yes";1;3;2;1;1;1;10;"11";"12";13 +"GP";"F";16;"U";"GT3";"T";1;1;"at_home";"other";"home";"mother";2;1;0;"no";"yes";"yes";"no";"yes";"yes";"no";"no";4;3;2;1;4;5;6;"9";"9";10 +"GP";"F";17;"R";"GT3";"T";4;3;"teacher";"other";"reputation";"mother";2;3;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"yes";4;4;2;1;1;4;6;"7";"7";7 +"GP";"F";19;"U";"GT3";"T";3;3;"other";"other";"reputation";"other";1;4;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"no";4;3;3;1;2;3;10;"8";"8";8 +"GP";"M";17;"U";"LE3";"T";4;4;"services";"other";"home";"mother";1;2;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"yes";5;3;5;4;5;3;13;"12";"12";13 +"GP";"F";16;"U";"GT3";"A";2;2;"other";"other";"reputation";"mother";1;2;0;"yes";"yes";"yes";"no";"yes";"yes";"yes";"no";3;3;4;1;1;4;0;"12";"13";14 +"GP";"M";18;"U";"GT3";"T";2;2;"services";"other";"home";"mother";1;2;1;"no";"yes";"yes";"yes";"yes";"yes";"yes";"no";4;4;4;2;4;5;15;"6";"7";8 +"GP";"F";17;"R";"LE3";"T";4;4;"services";"other";"other";"mother";1;1;0;"no";"yes";"yes";"no";"yes";"yes";"no";"no";5;2;1;1;2;3;12;"8";"10";10 +"GP";"F";17;"U";"LE3";"T";3;2;"other";"other";"reputation";"mother";2;2;0;"no";"no";"yes";"no";"yes";"yes";"yes";"no";4;4;4;1;3;1;2;"14";"15";15 +"GP";"F";17;"U";"GT3";"T";4;3;"other";"other";"reputation";"mother";1;2;2;"no";"no";"yes";"no";"yes";"yes";"yes";"yes";3;4;5;2;4;1;22;"6";"6";4 +"GP";"M";18;"U";"LE3";"T";3;3;"services";"health";"home";"father";1;2;1;"no";"yes";"yes";"no";"yes";"yes";"yes";"no";3;2;4;2;4;4;13;"6";"6";8 +"GP";"F";17;"U";"GT3";"T";2;3;"at_home";"other";"home";"father";2;1;0;"no";"yes";"yes";"no";"yes";"yes";"no";"no";3;3;3;1;4;3;3;"7";"7";8 +"GP";"F";17;"U";"GT3";"T";2;2;"at_home";"at_home";"course";"mother";1;3;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"no";4;3;3;1;1;4;4;"9";"10";10 +"GP";"F";17;"R";"GT3";"T";2;1;"at_home";"services";"reputation";"mother";2;2;0;"no";"yes";"no";"yes";"yes";"yes";"yes";"no";4;2;5;1;2;5;2;"6";"6";6 +"GP";"F";17;"U";"GT3";"T";1;1;"at_home";"other";"reputation";"mother";1;3;1;"no";"yes";"no";"yes";"yes";"yes";"no";"yes";4;3;4;1;1;5;0;"6";"5";0 +"GP";"F";16;"U";"GT3";"T";2;3;"services";"teacher";"other";"mother";1;2;0;"yes";"no";"no";"no";"yes";"yes";"yes";"no";2;3;1;1;1;3;2;"16";"16";17 +"GP";"M";18;"U";"GT3";"T";2;2;"other";"other";"home";"mother";2;2;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"no";3;3;3;5;5;4;0;"12";"13";13 +"GP";"F";16;"U";"GT3";"T";4;4;"teacher";"services";"home";"mother";1;3;0;"no";"yes";"no";"yes";"no";"yes";"yes";"no";5;3;2;1;1;5;0;"13";"13";14 +"GP";"F";18;"R";"GT3";"T";3;1;"other";"other";"reputation";"mother";1;2;1;"no";"no";"no";"yes";"yes";"yes";"yes";"yes";5;3;3;1;1;4;16;"9";"8";7 +"GP";"F";17;"U";"GT3";"T";3;2;"other";"other";"course";"mother";1;2;0;"no";"no";"no";"yes";"no";"yes";"yes";"no";5;3;4;1;3;3;10;"16";"15";15 +"GP";"M";17;"U";"LE3";"T";2;3;"services";"services";"reputation";"father";1;2;0;"no";"yes";"yes";"no";"no";"yes";"yes";"no";5;3;3;1;3;3;2;"12";"11";12 +"GP";"M";18;"U";"LE3";"T";2;1;"at_home";"other";"course";"mother";4;2;0;"yes";"yes";"yes";"yes";"yes";"yes";"yes";"yes";4;3;2;4;5;3;14;"10";"8";9 +"GP";"F";17;"U";"GT3";"A";2;1;"other";"other";"course";"mother";2;3;0;"no";"no";"no";"yes";"yes";"yes";"yes";"yes";3;2;3;1;2;3;10;"12";"10";12 +"GP";"F";17;"U";"LE3";"T";4;3;"health";"other";"reputation";"father";1;2;0;"no";"no";"no";"yes";"yes";"yes";"yes";"yes";3;2;3;1;2;3;14;"13";"13";14 +"GP";"M";17;"R";"GT3";"T";2;2;"other";"other";"course";"father";2;2;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"no";4;5;2;1;1;1;4;"11";"11";11 +"GP";"M";17;"U";"GT3";"T";4;4;"teacher";"teacher";"reputation";"mother";1;2;0;"yes";"yes";"no";"yes";"yes";"yes";"yes";"yes";4;5;5;1;3;2;14;"11";"9";9 +"GP";"M";16;"U";"GT3";"T";4;4;"health";"other";"reputation";"father";1;2;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"no";4;2;4;2;4;1;2;"14";"13";13 +"GP";"M";16;"U";"LE3";"T";1;1;"other";"other";"home";"mother";2;2;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"no";3;4;2;1;1;5;18;"9";"7";6 +"GP";"M";16;"U";"GT3";"T";3;2;"at_home";"other";"reputation";"mother";2;3;0;"no";"no";"no";"yes";"yes";"yes";"yes";"yes";5;3;3;1;3;2;10;"11";"9";10 +"GP";"M";17;"U";"LE3";"T";2;2;"other";"other";"home";"father";1;2;0;"no";"no";"yes";"yes";"no";"yes";"yes";"yes";4;4;2;5;5;4;4;"14";"13";13 +"GP";"F";16;"U";"GT3";"T";2;1;"other";"other";"home";"mother";1;1;0;"no";"no";"no";"no";"yes";"yes";"yes";"yes";4;5;2;1;1;5;20;"13";"12";12 +"GP";"F";17;"R";"GT3";"T";2;1;"at_home";"services";"course";"mother";3;2;0;"no";"no";"no";"yes";"yes";"yes";"no";"no";2;1;1;1;1;3;2;"13";"11";11 +"GP";"M";18;"U";"GT3";"T";2;2;"other";"services";"reputation";"father";1;2;1;"no";"no";"no";"no";"yes";"no";"yes";"no";5;5;4;3;5;2;0;"7";"7";0 +"GP";"M";17;"U";"LE3";"T";4;3;"health";"other";"course";"mother";2;2;0;"no";"no";"no";"yes";"yes";"yes";"yes";"yes";2;5;5;1;4;5;14;"12";"12";12 +"GP";"M";17;"R";"LE3";"A";4;4;"teacher";"other";"course";"mother";2;2;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"no";3;3;3;2;3;4;2;"10";"11";12 +"GP";"M";16;"U";"LE3";"T";4;3;"teacher";"other";"course";"mother";1;1;0;"no";"no";"no";"yes";"no";"yes";"yes";"no";5;4;5;1;1;3;0;"6";"0";0 +"GP";"M";16;"U";"GT3";"T";4;4;"services";"services";"course";"mother";1;1;0;"no";"no";"no";"yes";"yes";"yes";"yes";"no";5;3;2;1;2;5;0;"13";"12";12 +"GP";"F";18;"U";"GT3";"T";2;1;"other";"other";"course";"other";2;3;0;"no";"yes";"yes";"no";"no";"yes";"yes";"yes";4;4;4;1;1;3;0;"7";"0";0 +"GP";"M";16;"U";"GT3";"T";2;1;"other";"other";"course";"mother";3;1;0;"no";"no";"no";"no";"yes";"yes";"yes";"no";4;3;3;1;1;4;6;"18";"18";18 +"GP";"M";17;"U";"GT3";"T";2;3;"other";"other";"course";"father";2;1;0;"no";"no";"no";"no";"yes";"yes";"yes";"no";5;2;2;1;1;2;4;"12";"12";13 +"GP";"M";22;"U";"GT3";"T";3;1;"services";"services";"other";"mother";1;1;3;"no";"no";"no";"no";"no";"no";"yes";"yes";5;4;5;5;5;1;16;"6";"8";8 +"GP";"M";18;"R";"LE3";"T";3;3;"other";"services";"course";"mother";1;2;1;"no";"yes";"no";"no";"yes";"yes";"yes";"yes";4;3;3;1;3;5;8;"3";"5";5 +"GP";"M";16;"U";"GT3";"T";0;2;"other";"other";"other";"mother";1;1;0;"no";"no";"yes";"no";"no";"yes";"yes";"no";4;3;2;2;4;5;0;"13";"15";15 +"GP";"M";18;"U";"GT3";"T";3;2;"services";"other";"course";"mother";2;1;1;"no";"no";"no";"no";"yes";"no";"yes";"no";4;4;5;2;4;5;0;"6";"8";8 +"GP";"M";16;"U";"GT3";"T";3;3;"at_home";"other";"reputation";"other";3;2;0;"yes";"yes";"no";"no";"no";"yes";"yes";"no";5;3;3;1;3;2;6;"7";"10";10 +"GP";"M";18;"U";"GT3";"T";2;1;"services";"services";"other";"mother";1;1;1;"no";"no";"no";"no";"no";"no";"yes";"no";3;2;5;2;5;5;4;"6";"9";8 +"GP";"M";16;"R";"GT3";"T";2;1;"other";"other";"course";"mother";2;1;0;"no";"no";"no";"yes";"no";"yes";"no";"no";3;3;2;1;3;3;0;"8";"9";8 +"GP";"M";17;"R";"GT3";"T";2;1;"other";"other";"course";"mother";1;1;0;"no";"no";"no";"no";"no";"yes";"yes";"no";4;4;2;2;4;5;0;"8";"12";12 +"GP";"M";17;"U";"LE3";"T";1;1;"health";"other";"course";"mother";2;1;1;"no";"yes";"no";"yes";"yes";"yes";"yes";"no";4;4;4;1;2;5;2;"7";"9";8 +"GP";"F";17;"U";"LE3";"T";4;2;"teacher";"services";"reputation";"mother";1;4;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"no";4;2;3;1;1;4;6;"14";"12";13 +"GP";"M";19;"U";"LE3";"A";4;3;"services";"at_home";"reputation";"mother";1;2;0;"no";"yes";"no";"no";"yes";"yes";"yes";"no";4;3;1;1;1;1;12;"11";"11";11 +"GP";"M";18;"U";"GT3";"T";2;1;"other";"other";"home";"mother";1;2;0;"no";"no";"no";"yes";"yes";"yes";"yes";"no";5;2;4;1;2;4;8;"15";"14";14 +"GP";"F";17;"U";"LE3";"T";2;2;"services";"services";"course";"father";1;4;0;"no";"no";"yes";"yes";"yes";"yes";"yes";"yes";3;4;1;1;1;2;0;"10";"9";0 +"GP";"F";18;"U";"GT3";"T";4;3;"services";"other";"home";"father";1;2;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"yes";3;1;2;1;3;2;21;"17";"18";18 +"GP";"M";18;"U";"GT3";"T";4;3;"teacher";"other";"course";"mother";1;2;0;"no";"yes";"yes";"no";"no";"yes";"yes";"no";4;3;2;1;1;3;2;"8";"8";8 +"GP";"M";18;"R";"GT3";"T";3;2;"other";"other";"course";"mother";1;3;0;"no";"no";"no";"yes";"no";"yes";"no";"no";5;3;2;1;1;3;1;"13";"12";12 +"GP";"F";17;"U";"GT3";"T";3;3;"other";"other";"home";"mother";1;3;0;"no";"no";"no";"yes";"no";"yes";"no";"no";3;2;3;1;1;4;4;"10";"9";9 +"GP";"F";18;"U";"GT3";"T";2;2;"at_home";"services";"home";"mother";1;3;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"yes";4;3;3;1;1;3;0;"9";"10";0 +"GP";"M";18;"R";"LE3";"A";3;4;"other";"other";"reputation";"mother";2;2;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"no";4;2;5;3;4;1;13;"17";"17";17 +"GP";"M";17;"U";"GT3";"T";3;1;"services";"other";"other";"mother";1;2;0;"no";"no";"yes";"yes";"yes";"yes";"yes";"yes";5;4;4;3;4;5;2;"9";"9";10 +"GP";"F";18;"R";"GT3";"T";4;4;"teacher";"other";"reputation";"mother";2;2;0;"no";"no";"yes";"yes";"yes";"yes";"yes";"no";4;3;4;2;2;4;8;"12";"10";11 +"GP";"M";18;"U";"GT3";"T";4;2;"health";"other";"reputation";"father";1;2;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"yes";5;4;5;1;3;5;10;"10";"9";10 +"GP";"F";18;"R";"GT3";"T";2;1;"other";"other";"reputation";"mother";2;2;0;"no";"yes";"no";"no";"yes";"no";"yes";"yes";4;3;5;1;2;3;0;"6";"0";0 +"GP";"F";19;"U";"GT3";"T";3;3;"other";"services";"home";"other";1;2;2;"no";"yes";"yes";"yes";"yes";"yes";"yes";"no";4;3;5;3;3;5;15;"9";"9";9 +"GP";"F";18;"U";"GT3";"T";2;3;"other";"services";"reputation";"father";1;4;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"yes";4;5;5;1;3;2;4;"15";"14";14 +"GP";"F";18;"U";"LE3";"T";1;1;"other";"other";"home";"mother";2;2;0;"no";"yes";"yes";"no";"no";"yes";"no";"no";4;4;3;1;1;3;2;"11";"11";11 +"GP";"M";17;"R";"GT3";"T";1;2;"at_home";"at_home";"home";"mother";1;2;0;"no";"yes";"yes";"yes";"no";"yes";"no";"yes";3;5;2;2;2;1;2;"15";"14";14 +"GP";"F";17;"U";"GT3";"T";2;4;"at_home";"health";"reputation";"mother";2;2;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"yes";4;3;3;1;1;1;2;"10";"10";10 +"GP";"F";17;"U";"LE3";"T";2;2;"services";"other";"course";"mother";2;2;0;"yes";"yes";"yes";"no";"yes";"yes";"yes";"yes";4;4;4;2;3;5;6;"12";"12";12 +"GP";"F";18;"R";"GT3";"A";3;2;"other";"services";"home";"mother";2;2;0;"no";"no";"no";"no";"no";"no";"yes";"yes";4;1;1;1;1;5;75;"10";"9";9 +"GP";"M";18;"U";"GT3";"T";4;4;"teacher";"services";"home";"mother";2;1;0;"no";"no";"yes";"yes";"yes";"yes";"yes";"no";3;2;4;1;4;3;22;"9";"9";9 +"GP";"F";18;"U";"GT3";"T";4;4;"health";"health";"reputation";"father";1;2;1;"yes";"yes";"no";"yes";"yes";"yes";"yes";"yes";2;4;4;1;1;4;15;"9";"8";8 +"GP";"M";18;"U";"LE3";"T";4;3;"teacher";"services";"course";"mother";2;1;0;"no";"no";"yes";"yes";"yes";"yes";"yes";"no";4;2;3;1;2;1;8;"10";"11";10 +"GP";"M";17;"U";"LE3";"A";4;1;"services";"other";"home";"mother";2;1;0;"no";"no";"yes";"yes";"yes";"yes";"yes";"yes";4;5;4;2;4;5;30;"8";"8";8 +"GP";"M";17;"U";"LE3";"A";3;2;"teacher";"services";"home";"mother";1;1;1;"no";"no";"no";"no";"yes";"yes";"yes";"no";4;4;4;3;4;3;19;"11";"9";10 +"GP";"F";18;"R";"LE3";"T";1;1;"at_home";"other";"reputation";"mother";2;4;0;"no";"yes";"yes";"yes";"yes";"yes";"no";"no";5;2;2;1;1;3;1;"12";"12";12 +"GP";"F";18;"U";"GT3";"T";1;1;"other";"other";"home";"mother";2;2;0;"yes";"no";"no";"yes";"yes";"yes";"yes";"no";5;4;4;1;1;4;4;"8";"9";10 +"GP";"F";17;"U";"GT3";"T";2;2;"other";"other";"course";"mother";1;2;0;"no";"yes";"no";"no";"no";"yes";"yes";"no";5;4;5;1;2;5;4;"10";"9";11 +"GP";"M";17;"U";"GT3";"T";1;1;"other";"other";"reputation";"father";1;2;0;"no";"no";"yes";"no";"no";"yes";"yes";"no";4;3;3;1;2;4;2;"12";"10";11 +"GP";"F";18;"U";"GT3";"T";2;2;"at_home";"at_home";"other";"mother";1;3;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"no";4;3;3;1;2;2;5;"18";"18";19 +"GP";"F";17;"U";"GT3";"T";1;1;"services";"teacher";"reputation";"mother";1;3;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"no";4;3;3;1;1;3;6;"13";"12";12 +"GP";"M";18;"U";"GT3";"T";2;1;"services";"services";"reputation";"mother";1;3;0;"no";"no";"yes";"yes";"yes";"yes";"yes";"no";4;2;4;1;3;2;6;"15";"14";14 +"GP";"M";18;"U";"LE3";"A";4;4;"teacher";"teacher";"reputation";"mother";1;2;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"no";5;4;3;1;1;2;9;"15";"13";15 +"GP";"M";18;"U";"GT3";"T";4;2;"teacher";"other";"home";"mother";1;2;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"yes";4;3;2;1;4;5;11;"12";"11";11 +"GP";"F";17;"U";"GT3";"T";4;3;"health";"services";"reputation";"mother";1;3;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"no";4;2;2;1;2;3;0;"15";"15";15 +"GP";"F";18;"U";"LE3";"T";2;1;"services";"at_home";"reputation";"mother";1;2;1;"no";"no";"no";"no";"yes";"yes";"yes";"yes";5;4;3;1;1;5;12;"12";"12";13 +"GP";"F";17;"R";"LE3";"T";3;1;"services";"other";"reputation";"mother";2;4;0;"no";"yes";"yes";"no";"yes";"yes";"no";"no";3;1;2;1;1;3;6;"18";"18";18 +"GP";"M";18;"R";"LE3";"T";3;2;"services";"other";"reputation";"mother";2;3;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"no";5;4;2;1;1;4;8;"14";"13";14 +"GP";"M";17;"U";"GT3";"T";3;3;"health";"other";"home";"mother";1;1;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"no";4;4;3;1;3;5;4;"14";"12";11 +"GP";"F";19;"U";"GT3";"T";4;4;"health";"other";"reputation";"other";2;2;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"no";2;3;4;2;3;2;0;"10";"9";0 +"GP";"F";18;"U";"LE3";"T";4;3;"other";"other";"home";"other";2;2;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"yes";4;4;5;1;2;2;10;"10";"8";8 +"GP";"F";18;"U";"GT3";"T";4;3;"other";"other";"reputation";"father";1;4;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"no";4;3;3;1;1;3;0;"14";"13";14 +"GP";"M";18;"U";"LE3";"T";4;4;"teacher";"teacher";"home";"mother";1;1;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"yes";1;4;2;2;2;1;5;"16";"15";16 +"GP";"F";18;"U";"LE3";"A";4;4;"health";"other";"home";"mother";1;2;0;"no";"yes";"no";"no";"yes";"yes";"yes";"yes";4;2;4;1;1;4;14;"12";"10";11 +"GP";"M";17;"U";"LE3";"T";4;4;"other";"teacher";"home";"father";2;1;0;"no";"no";"yes";"no";"yes";"yes";"yes";"no";4;1;1;2;2;5;0;"11";"11";10 +"GP";"F";17;"U";"GT3";"T";4;2;"other";"other";"reputation";"mother";2;3;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"no";4;3;3;1;1;3;0;"15";"12";14 +"GP";"F";17;"U";"GT3";"T";3;2;"health";"health";"reputation";"father";1;4;0;"no";"yes";"yes";"yes";"no";"yes";"yes";"no";5;2;2;1;2;5;0;"17";"17";18 +"GP";"M";19;"U";"GT3";"T";3;3;"other";"other";"home";"other";1;2;1;"no";"yes";"no";"yes";"yes";"yes";"yes";"yes";4;4;4;1;1;3;20;"15";"14";13 +"GP";"F";18;"U";"GT3";"T";2;4;"services";"at_home";"reputation";"other";1;2;1;"no";"yes";"yes";"yes";"yes";"yes";"yes";"no";4;4;3;1;1;3;8;"14";"12";12 +"GP";"M";20;"U";"GT3";"A";3;2;"services";"other";"course";"other";1;1;0;"no";"no";"no";"yes";"yes";"yes";"no";"no";5;5;3;1;1;5;0;"17";"18";18 +"GP";"M";19;"U";"GT3";"T";4;4;"teacher";"services";"reputation";"other";2;1;1;"no";"yes";"yes";"no";"yes";"yes";"yes";"yes";4;3;4;1;1;4;38;"8";"9";8 +"GP";"M";19;"R";"GT3";"T";3;3;"other";"services";"reputation";"father";1;2;1;"no";"no";"no";"yes";"yes";"yes";"no";"yes";4;5;3;1;2;5;0;"15";"12";12 +"GP";"F";19;"U";"LE3";"T";1;1;"at_home";"other";"reputation";"other";1;2;1;"yes";"yes";"no";"yes";"no";"yes";"yes";"no";4;4;3;1;3;3;18;"12";"10";10 +"GP";"F";19;"U";"LE3";"T";1;2;"services";"services";"home";"other";1;2;1;"no";"no";"no";"yes";"no";"yes";"no";"yes";4;2;4;2;2;3;0;"9";"9";0 +"GP";"F";19;"U";"GT3";"T";2;1;"at_home";"other";"other";"other";3;2;0;"no";"yes";"no";"no";"yes";"no";"yes";"yes";3;4;1;1;1;2;20;"14";"12";13 +"GP";"M";19;"U";"GT3";"T";1;2;"other";"services";"course";"other";1;2;1;"no";"no";"no";"no";"no";"yes";"yes";"no";4;5;2;2;2;4;3;"13";"11";11 +"GP";"F";19;"U";"LE3";"T";3;2;"services";"other";"reputation";"other";2;2;1;"no";"yes";"yes";"no";"no";"yes";"yes";"yes";4;2;2;1;2;1;22;"13";"10";11 +"GP";"F";19;"U";"GT3";"T";1;1;"at_home";"health";"home";"other";1;3;2;"no";"no";"no";"no";"no";"yes";"yes";"yes";4;1;2;1;1;3;14;"15";"13";13 +"GP";"F";19;"R";"GT3";"T";2;3;"other";"other";"reputation";"other";1;3;1;"no";"no";"no";"no";"yes";"yes";"yes";"yes";4;1;2;1;1;3;40;"13";"11";11 +"GP";"F";18;"U";"GT3";"T";2;1;"services";"other";"course";"mother";2;2;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"no";5;3;3;1;2;1;0;"8";"8";0 +"GP";"F";18;"U";"GT3";"T";4;3;"other";"other";"course";"mother";1;3;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"yes";4;3;4;1;1;5;9;"9";"10";9 +"GP";"F";17;"R";"GT3";"T";3;4;"at_home";"services";"course";"father";1;3;0;"no";"yes";"yes";"yes";"no";"yes";"yes";"no";4;3;4;2;5;5;0;"11";"11";10 +"GP";"F";18;"U";"GT3";"T";4;4;"teacher";"other";"course";"mother";1;2;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"no";4;4;4;3;3;5;2;"11";"11";11 +"GP";"F";17;"U";"GT3";"A";4;3;"services";"services";"course";"mother";1;2;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"yes";5;2;2;1;2;5;23;"13";"13";13 +"GP";"F";17;"U";"GT3";"T";2;2;"other";"other";"course";"mother";1;2;0;"no";"yes";"no";"no";"yes";"yes";"no";"yes";4;2;2;1;1;3;12;"11";"9";9 +"GP";"F";17;"R";"LE3";"T";2;2;"services";"services";"course";"mother";1;3;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"no";3;3;2;2;2;3;3;"11";"11";11 +"GP";"F";17;"U";"GT3";"T";3;1;"services";"services";"course";"father";1;3;0;"no";"yes";"no";"no";"no";"yes";"yes";"no";3;4;3;2;3;5;1;"12";"14";15 +"GP";"F";17;"U";"LE3";"T";0;2;"at_home";"at_home";"home";"father";2;3;0;"no";"no";"no";"no";"yes";"yes";"yes";"no";3;3;3;2;3;2;0;"16";"15";15 +"GP";"M";18;"U";"GT3";"T";4;4;"other";"other";"course";"mother";1;3;0;"no";"no";"no";"yes";"yes";"yes";"yes";"no";4;3;3;2;2;3;3;"9";"12";11 +"GP";"M";17;"U";"GT3";"T";3;3;"other";"services";"reputation";"mother";1;1;0;"no";"no";"no";"yes";"no";"yes";"yes";"no";4;3;5;3;5;5;3;"14";"15";16 +"GP";"M";17;"R";"GT3";"T";2;2;"services";"other";"course";"mother";4;1;0;"no";"yes";"no";"no";"yes";"yes";"yes";"no";4;4;5;5;5;4;8;"11";"10";10 +"GP";"F";17;"U";"GT3";"T";4;4;"teacher";"services";"course";"mother";1;3;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"no";5;4;4;1;3;4;7;"10";"9";9 +"GP";"F";17;"U";"GT3";"T";4;4;"teacher";"teacher";"course";"mother";2;3;0;"no";"yes";"yes";"no";"no";"yes";"yes";"yes";4;3;3;1;2;4;4;"14";"14";14 +"GP";"M";18;"U";"LE3";"T";2;2;"other";"other";"course";"mother";1;4;0;"no";"yes";"no";"yes";"yes";"yes";"yes";"no";4;5;5;2;4;5;2;"9";"8";8 +"GP";"F";17;"R";"GT3";"T";2;4;"at_home";"other";"course";"father";1;3;0;"no";"yes";"no";"no";"yes";"yes";"yes";"yes";4;4;3;1;1;5;7;"12";"14";14 +"GP";"F";18;"U";"GT3";"T";3;3;"services";"services";"home";"mother";1;2;0;"no";"no";"no";"yes";"yes";"yes";"yes";"no";5;3;4;1;1;4;0;"7";"0";0 +"GP";"F";18;"U";"LE3";"T";2;2;"other";"other";"home";"other";1;2;0;"no";"no";"no";"yes";"no";"yes";"yes";"yes";4;3;3;1;1;2;0;"8";"8";0 +"GP";"F";18;"R";"GT3";"T";2;2;"at_home";"other";"course";"mother";2;4;0;"no";"no";"no";"yes";"yes";"yes";"no";"no";4;4;4;1;1;4;0;"10";"9";0 +"GP";"F";17;"U";"GT3";"T";3;4;"services";"other";"course";"mother";1;3;0;"no";"no";"no";"no";"yes";"yes";"yes";"no";4;4;5;1;3;5;16;"16";"15";15 +"GP";"F";19;"R";"GT3";"A";3;1;"services";"at_home";"home";"other";1;3;1;"no";"no";"yes";"no";"yes";"yes";"no";"no";5;4;3;1;2;5;12;"14";"13";13 +"GP";"F";17;"U";"GT3";"T";3;2;"other";"other";"home";"mother";1;2;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"yes";4;3;2;2;3;2;0;"7";"8";0 +"GP";"F";18;"U";"LE3";"T";3;3;"services";"services";"home";"mother";1;4;0;"no";"yes";"no";"no";"yes";"yes";"yes";"no";5;3;3;1;1;1;7;"16";"15";17 +"GP";"F";17;"R";"GT3";"A";3;2;"other";"other";"home";"mother";1;2;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"no";4;3;3;2;3;2;4;"9";"10";10 +"GP";"F";19;"U";"GT3";"T";2;1;"services";"services";"home";"other";1;3;1;"no";"no";"yes";"yes";"yes";"yes";"yes";"yes";4;3;4;1;3;3;4;"11";"12";11 +"GP";"M";18;"U";"GT3";"T";4;4;"teacher";"services";"home";"father";1;2;1;"no";"yes";"no";"yes";"yes";"yes";"yes";"no";4;3;3;2;2;2;0;"10";"10";0 +"GP";"M";18;"U";"LE3";"T";3;4;"services";"other";"home";"mother";1;2;0;"no";"no";"no";"yes";"yes";"yes";"yes";"yes";4;3;3;1;3;5;11;"16";"15";15 +"GP";"F";17;"U";"GT3";"A";2;2;"at_home";"at_home";"home";"father";1;2;1;"no";"yes";"no";"no";"yes";"yes";"yes";"yes";3;3;1;1;2;4;0;"9";"8";0 +"GP";"F";18;"U";"GT3";"T";2;3;"at_home";"other";"course";"mother";1;3;0;"no";"yes";"no";"no";"yes";"yes";"yes";"no";4;3;3;1;2;3;4;"11";"10";10 +"GP";"F";18;"U";"GT3";"T";3;2;"other";"services";"other";"mother";1;3;0;"no";"no";"no";"no";"yes";"yes";"yes";"yes";5;4;3;2;3;1;7;"13";"13";14 +"GP";"M";18;"R";"GT3";"T";4;3;"teacher";"services";"course";"mother";1;3;0;"no";"no";"no";"no";"yes";"yes";"yes";"yes";5;3;2;1;2;4;9;"16";"15";16 +"GP";"M";18;"U";"GT3";"T";4;3;"teacher";"other";"course";"mother";1;3;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"yes";5;4;5;2;3;5;0;"10";"10";9 +"GP";"F";17;"U";"GT3";"T";4;3;"health";"other";"reputation";"mother";1;3;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"yes";4;4;3;1;3;4;0;"13";"15";15 +"MS";"M";18;"R";"GT3";"T";3;2;"other";"other";"course";"mother";2;1;1;"no";"yes";"no";"no";"no";"yes";"yes";"no";2;5;5;5;5;5;10;"11";"13";13 +"MS";"M";19;"R";"GT3";"T";1;1;"other";"services";"home";"other";3;2;3;"no";"no";"no";"no";"yes";"yes";"yes";"no";5;4;4;3;3;2;8;"8";"7";8 +"MS";"M";17;"U";"GT3";"T";3;3;"health";"other";"course";"mother";2;2;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"no";4;5;4;2;3;3;2;"13";"13";13 +"MS";"M";18;"U";"LE3";"T";1;3;"at_home";"services";"course";"mother";1;1;1;"no";"no";"no";"no";"yes";"no";"yes";"yes";4;3;3;2;3;3;7;"8";"7";8 +"MS";"M";19;"R";"GT3";"T";1;1;"other";"other";"home";"other";3;1;1;"no";"yes";"no";"no";"yes";"yes";"yes";"no";4;4;4;3;3;5;4;"8";"8";8 +"MS";"M";17;"R";"GT3";"T";4;3;"services";"other";"home";"mother";2;2;0;"no";"yes";"yes";"yes";"no";"yes";"yes";"yes";4;5;5;1;3;2;4;"13";"11";11 +"MS";"F";18;"U";"GT3";"T";3;3;"services";"services";"course";"father";1;2;0;"no";"yes";"no";"no";"yes";"yes";"no";"yes";5;3;4;1;1;5;0;"10";"9";9 +"MS";"F";17;"R";"GT3";"T";4;4;"teacher";"services";"other";"father";2;2;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"no";4;3;3;1;2;5;4;"12";"13";13 +"MS";"F";17;"U";"LE3";"A";3;2;"services";"other";"reputation";"mother";2;2;0;"no";"no";"no";"no";"yes";"yes";"no";"yes";1;2;3;1;2;5;2;"12";"12";11 +"MS";"M";18;"U";"LE3";"T";1;1;"other";"services";"home";"father";2;1;0;"no";"no";"no";"no";"no";"yes";"yes";"yes";3;3;2;1;2;3;4;"10";"10";10 +"MS";"F";18;"U";"LE3";"T";1;1;"at_home";"services";"course";"father";2;3;0;"no";"no";"no";"no";"yes";"yes";"yes";"no";5;3;2;1;1;4;0;"18";"16";16 +"MS";"F";18;"R";"LE3";"A";1;4;"at_home";"other";"course";"mother";3;2;0;"no";"no";"no";"no";"yes";"yes";"no";"yes";4;3;4;1;4;5;0;"13";"13";13 +"MS";"M";18;"R";"LE3";"T";1;1;"at_home";"other";"other";"mother";2;2;1;"no";"no";"no";"yes";"no";"no";"no";"no";4;4;3;2;3;5;2;"13";"12";12 +"MS";"F";18;"U";"GT3";"T";3;3;"services";"services";"other";"mother";2;2;0;"no";"yes";"no";"no";"yes";"yes";"yes";"yes";4;3;2;1;3;3;0;"11";"11";10 +"MS";"F";17;"U";"LE3";"T";4;4;"at_home";"at_home";"course";"mother";1;2;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"yes";2;3;4;1;1;1;0;"16";"15";15 +"MS";"F";17;"R";"GT3";"T";1;2;"other";"services";"course";"father";2;2;0;"no";"no";"no";"no";"no";"yes";"no";"no";3;2;2;1;2;3;0;"12";"11";12 +"MS";"M";18;"R";"GT3";"T";1;3;"at_home";"other";"course";"mother";2;2;0;"no";"yes";"yes";"no";"yes";"yes";"no";"no";3;3;4;2;4;3;4;"10";"10";10 +"MS";"M";18;"U";"LE3";"T";4;4;"teacher";"services";"other";"mother";2;3;0;"no";"no";"yes";"no";"yes";"yes";"yes";"yes";4;2;2;2;2;5;0;"13";"13";13 +"MS";"F";17;"R";"GT3";"T";1;1;"other";"services";"reputation";"mother";3;1;1;"no";"yes";"yes";"no";"yes";"yes";"yes";"yes";5;2;1;1;2;1;0;"7";"6";0 +"MS";"F";18;"U";"GT3";"T";2;3;"at_home";"services";"course";"father";2;1;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"yes";5;2;3;1;2;4;0;"11";"10";10 +"MS";"F";18;"R";"GT3";"T";4;4;"other";"teacher";"other";"father";3;2;0;"no";"yes";"yes";"no";"no";"yes";"yes";"yes";3;2;2;4;2;5;10;"14";"12";11 +"MS";"F";19;"U";"LE3";"T";3;2;"services";"services";"home";"other";2;2;2;"no";"no";"no";"yes";"yes";"yes";"no";"yes";3;2;2;1;1;3;4;"7";"7";9 +"MS";"M";18;"R";"LE3";"T";1;2;"at_home";"services";"other";"father";3;1;0;"no";"yes";"yes";"yes";"yes";"no";"yes";"yes";4;3;3;2;3;3;3;"14";"12";12 +"MS";"F";17;"U";"GT3";"T";2;2;"other";"at_home";"home";"mother";1;3;0;"no";"no";"no";"yes";"yes";"yes";"no";"yes";3;4;3;1;1;3;8;"13";"11";11 +"MS";"F";17;"R";"GT3";"T";1;2;"other";"other";"course";"mother";1;1;0;"no";"no";"no";"yes";"yes";"yes";"yes";"no";3;5;5;1;3;1;14;"6";"5";5 +"MS";"F";18;"R";"LE3";"T";4;4;"other";"other";"reputation";"mother";2;3;0;"no";"no";"no";"no";"yes";"yes";"yes";"no";5;4;4;1;1;1;0;"19";"18";19 +"MS";"F";18;"R";"GT3";"T";1;1;"other";"other";"home";"mother";4;3;0;"no";"no";"no";"no";"yes";"yes";"yes";"no";4;3;2;1;2;4;2;"8";"8";10 +"MS";"F";20;"U";"GT3";"T";4;2;"health";"other";"course";"other";2;3;2;"no";"yes";"yes";"no";"no";"yes";"yes";"yes";5;4;3;1;1;3;4;"15";"14";15 +"MS";"F";18;"R";"LE3";"T";4;4;"teacher";"services";"course";"mother";1;2;0;"no";"no";"yes";"yes";"yes";"yes";"yes";"no";5;4;3;3;4;2;4;"8";"9";10 +"MS";"F";18;"U";"GT3";"T";3;3;"other";"other";"home";"mother";1;2;0;"no";"no";"yes";"no";"yes";"yes";"yes";"yes";4;1;3;1;2;1;0;"15";"15";15 +"MS";"F";17;"R";"GT3";"T";3;1;"at_home";"other";"reputation";"mother";1;2;0;"no";"yes";"yes";"yes";"no";"yes";"yes";"no";4;5;4;2;3;1;17;"10";"10";10 +"MS";"M";18;"U";"GT3";"T";4;4;"teacher";"teacher";"home";"father";1;2;0;"no";"no";"yes";"yes";"no";"yes";"yes";"no";3;2;4;1;4;2;4;"15";"14";14 +"MS";"M";18;"R";"GT3";"T";2;1;"other";"other";"other";"mother";2;1;0;"no";"no";"no";"yes";"no";"yes";"yes";"yes";4;4;3;1;3;5;5;"7";"6";7 +"MS";"M";17;"U";"GT3";"T";2;3;"other";"services";"home";"father";2;2;0;"no";"no";"no";"yes";"yes";"yes";"yes";"no";4;4;3;1;1;3;2;"11";"11";10 +"MS";"M";19;"R";"GT3";"T";1;1;"other";"services";"other";"mother";2;1;1;"no";"no";"no";"no";"yes";"yes";"no";"no";4;3;2;1;3;5;0;"6";"5";0 +"MS";"M";18;"R";"GT3";"T";4;2;"other";"other";"home";"father";2;1;1;"no";"no";"yes";"no";"yes";"yes";"no";"no";5;4;3;4;3;3;14;"6";"5";5 +"MS";"F";18;"R";"GT3";"T";2;2;"at_home";"other";"other";"mother";2;3;0;"no";"no";"yes";"no";"yes";"yes";"no";"no";5;3;3;1;3;4;2;"10";"9";10 +"MS";"F";18;"R";"GT3";"T";4;4;"teacher";"at_home";"reputation";"mother";3;1;0;"no";"yes";"yes";"yes";"yes";"yes";"yes";"yes";4;4;3;2;2;5;7;"6";"5";6 +"MS";"F";19;"R";"GT3";"T";2;3;"services";"other";"course";"mother";1;3;1;"no";"no";"no";"yes";"no";"yes";"yes";"no";5;4;2;1;2;5;0;"7";"5";0 +"MS";"F";18;"U";"LE3";"T";3;1;"teacher";"services";"course";"mother";1;2;0;"no";"yes";"yes";"no";"yes";"yes";"yes";"no";4;3;4;1;1;1;0;"7";"9";8 +"MS";"F";18;"U";"GT3";"T";1;1;"other";"other";"course";"mother";2;2;1;"no";"no";"no";"yes";"yes";"yes";"no";"no";1;1;1;1;1;5;0;"6";"5";0 +"MS";"M";20;"U";"LE3";"A";2;2;"services";"services";"course";"other";1;2;2;"no";"yes";"yes";"no";"yes";"yes";"no";"no";5;5;4;4;5;4;11;"9";"9";9 +"MS";"M";17;"U";"LE3";"T";3;1;"services";"services";"course";"mother";2;1;0;"no";"no";"no";"no";"no";"yes";"yes";"no";2;4;5;3;4;2;3;"14";"16";16 +"MS";"M";21;"R";"GT3";"T";1;1;"other";"other";"course";"other";1;1;3;"no";"no";"no";"no";"no";"yes";"no";"no";5;5;3;3;3;3;3;"10";"8";7 +"MS";"M";18;"R";"LE3";"T";3;2;"services";"other";"course";"mother";3;1;0;"no";"no";"no";"no";"no";"yes";"yes";"no";4;4;1;3;4;5;0;"11";"12";10 +"MS";"M";19;"U";"LE3";"T";1;1;"other";"at_home";"course";"father";1;1;0;"no";"no";"no";"no";"yes";"yes";"yes";"no";3;2;3;3;3;5;5;"8";"9";9 diff --git a/1anno/2trimestre/Coding for DataScience/Python/ML - Linear regression, KNN, SVM.ipynb b/1anno/2trimestre/Coding for DataScience/Python/ML - Linear regression, KNN, SVM.ipynb new file mode 100644 index 000000000..999bc3d2d --- /dev/null +++ b/1anno/2trimestre/Coding for DataScience/Python/ML - Linear regression, KNN, SVM.ipynb @@ -0,0 +1,1230 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ML - Linear regression, KNN, SVM" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Linear regression" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " school sex age address famsize Pstatus Medu Fedu Mjob Fjob ... \\\n", + "0 GP F 18 U GT3 A 4 4 at_home teacher ... \n", + "1 GP F 17 U GT3 T 1 1 at_home other ... \n", + "2 GP F 15 U LE3 T 1 1 at_home other ... \n", + "3 GP F 15 U GT3 T 4 2 health services ... \n", + "4 GP F 16 U GT3 T 3 3 other other ... \n", + "\n", + " famrel freetime goout Dalc Walc health absences G1 G2 G3 \n", + "0 4 3 4 1 1 3 6 5 6 6 \n", + "1 5 3 3 1 1 3 4 5 5 6 \n", + "2 4 3 2 2 3 3 10 7 8 10 \n", + "3 3 2 2 1 1 5 2 15 14 15 \n", + "4 4 3 2 1 2 5 4 6 10 10 \n", + "\n", + "[5 rows x 33 columns]\n" + ] + } + ], + "source": [ + "#Import Library\n", + "import numpy as np\n", + "import pandas as pd\n", + "from sklearn import linear_model\n", + "import sklearn\n", + "from sklearn.utils import shuffle\n", + "import matplotlib.pyplot as plt\n", + "from matplotlib import style\n", + "import pickle\n", + "\n", + "data = pd.read_csv(\"Datasets/Students/student-mat.csv\", sep=\";\")\n", + "# Since our data is seperated by semicolons we need to do sep=\";\"\n", + "print(data.head())" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [], + "source": [ + "data = data[[\"G1\", \"G2\", \"G3\", \"studytime\", \"failures\", \"absences\"]]\n", + "predict = \"G3\"\n", + "\n", + "X = np.array(data.drop([predict], 1)) # Features\n", + "y = np.array(data[predict]) # Labels" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [], + "source": [ + "x_train, x_test, y_train, y_test = sklearn.model_selection.train_test_split(X, y, test_size=0.1)" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.9072825900231904\n", + "Coefficient: \n", + " [ 0.13527031 0.98751848 -0.20498797 -0.33339246 0.0360702 ]\n", + "Intercept: \n", + " -1.3353139222187735\n", + "11.953607354545625 [11 12 2 0 10] 13\n", + "8.648370883609443 [9 9 2 0 8] 9\n", + "6.748413614780693 [ 6 8 1 3 16] 8\n", + "14.253304400739522 [15 14 2 0 4] 14\n", + "8.012543885152066 [10 8 2 0 14] 9\n", + "18.95845802835205 [18 18 1 0 8] 18\n", + "8.6393604136566 [10 9 2 0 4] 11\n", + "13.130515603322937 [14 13 2 0 4] 13\n", + "8.524114358116751 [ 8 8 1 0 30] 8\n", + "9.358341590467683 [ 9 9 1 0 22] 9\n", + "18.440271505465734 [18 18 3 0 5] 19\n", + "9.83186686648655 [10 10 1 0 4] 10\n", + "-0.5278570449856139 [9 0 2 0 0] 0\n", + "5.831032204076057 [5 8 2 3 0] 7\n", + "8.538406750456677 [ 7 10 3 1 0] 10\n", + "15.033412181729727 [14 15 2 0 2] 15\n", + "10.677527304643373 [11 11 2 0 2] 11\n", + "9.13533268256865 [11 9 2 0 14] 9\n", + "10.54225699206339 [10 11 2 0 2] 12\n", + "13.479784353849112 [14 13 1 0 8] 13\n", + "10.677527304643373 [11 11 2 0 2] 11\n", + "16.131563989318995 [15 16 3 0 7] 15\n", + "12.025747745812037 [11 12 2 0 12] 11\n", + "-1.0033856381389292 [7 0 3 0 0] 0\n", + "3.542127489909987 [6 5 1 2 0] 0\n", + "6.4544900042839535 [8 7 1 0 0] 6\n", + "-1.6660055594329843 [4 0 1 2 0] 0\n", + "13.973753305626712 [14 14 2 0 0] 14\n", + "11.020208321069754 [13 11 2 0 4] 11\n", + "8.089796550968265 [ 9 9 2 2 11] 9\n", + "15.351456208328791 [16 15 3 0 9] 16\n", + "13.446136894068955 [15 13 2 0 9] 15\n", + "11.953885441248763 [14 12 2 1 8] 12\n", + "-0.9268021619226335 [7 0 1 1 0] 0\n", + "13.381531513205376 [15 14 3 2 4] 15\n", + "16.354601213039867 [17 16 2 0 0] 17\n", + "10.812797617223357 [12 11 2 0 2] 12\n", + "12.197088254025228 [12 12 2 0 13] 13\n", + "12.866562712262764 [10 13 1 0 6] 13\n", + "7.2370205211272065 [8 8 2 0 0] 0\n" + ] + } + ], + "source": [ + "\n", + "linear = linear_model.LinearRegression()\n", + "\n", + "linear.fit(x_train, y_train)\n", + "acc = linear.score(x_test, y_test)\n", + "print(acc)\n", + "\n", + "print('Coefficient: \\n', linear.coef_)\n", + "print('Intercept: \\n', linear.intercept_)\n", + "\n", + "predictions = linear.predict(x_test)\n", + "\n", + "for x in range(len(predictions)):\n", + " print(predictions[x], x_test[x], y_test[x])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Saving model and importing" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.utils import shuffle\n", + "import matplotlib.pyplot as plt\n", + "from matplotlib import style\n", + "import pickle" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Saving " + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [], + "source": [ + "with open(\"Models/studentgrades.pickle\", \"wb\") as f:\n", + " pickle.dump(linear, f)\n", + "\n", + "# linear is the name of the model we created in the last tutorial\n", + "# it should be defined above this" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Loading model " + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [], + "source": [ + "pickle_in = open(\"Models/studentgrades.pickle\", \"rb\")\n", + "linear = pickle.load(pickle_in)\n", + "\n", + "# Now we can use linear to predict grades like before" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Training multiple model\n" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy: 0.7120505837839677\n", + "Accuracy: 0.8419740188965523\n", + "Accuracy: 0.8020262406782782\n", + "Accuracy: 0.6940409192793664\n", + "Accuracy: 0.8940235536728673\n", + "Accuracy: 0.8145923637342816\n", + "Accuracy: 0.8471013396643304\n", + "Accuracy: 0.7832990829886533\n", + "Accuracy: 0.8054626583260116\n", + "Accuracy: 0.8402321980392969\n", + "Accuracy: 0.8331033509590885\n", + "Accuracy: 0.8458394692949511\n", + "Accuracy: 0.9357285240967607\n", + "Accuracy: 0.9110387297485635\n", + "Accuracy: 0.7468333796226976\n", + "Accuracy: 0.7767352849982638\n", + "Accuracy: 0.8364676561627661\n", + "Accuracy: 0.8527521275793825\n", + "Accuracy: 0.8992992485819427\n", + "Accuracy: 0.7452038544962007\n", + "\n", + "Best accuracy: 0.9357285240967607\n" + ] + } + ], + "source": [ + "# TRAIN MODEL MULTIPLE TIMES FOR BEST SCORE\n", + "best = 0\n", + "for _ in range(20):\n", + " x_train, x_test, y_train, y_test = sklearn.model_selection.train_test_split(X, y, test_size=0.1)\n", + "\n", + " linear = linear_model.LinearRegression()\n", + " \n", + " linear.fit(x_train, y_train)\n", + " acc = linear.score(x_test, y_test)\n", + " print(\"Accuracy: \" + str(acc))\n", + " \n", + " # If the current model has a better score than one we've already trained then save it\n", + " if acc > best:\n", + " best = acc\n", + " with open(\"Models/studentgrades.pickle\", \"wb\") as f:\n", + " pickle.dump(linear, f)\n", + " \n", + "print(\"\\nBest accuracy: \", best)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Plotting data" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "No handles with labels found to put in legend.\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Drawing and plotting model\n", + "style.use(\"ggplot\")\n", + "plot = \"G1\" # Change this to G1, G2, studytime or absences to see other graphs\n", + "plt.scatter(data[plot], data[\"G3\"]) \n", + "plt.legend(loc=4)\n", + "plt.xlabel(plot)\n", + "plt.ylabel(\"Final Grade\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "No handles with labels found to put in legend.\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot = \"G2\" # Change this to G1, G2, studytime or absences to see other graphs\n", + "plt.scatter(data[plot], data[\"G3\"]) \n", + "plt.legend(loc=4)\n", + "plt.xlabel(plot)\n", + "plt.ylabel(\"Final Grade\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# K-Nearest Neighbors (KNN)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " buying maint door persons lug_boot safety class\n", + "0 vhigh vhigh 2 2 small low unacc\n", + "1 vhigh vhigh 2 2 small med unacc\n", + "2 vhigh vhigh 2 2 small high unacc\n", + "3 vhigh vhigh 2 2 med low unacc\n", + "4 vhigh vhigh 2 2 med med unacc\n" + ] + } + ], + "source": [ + "import sklearn\n", + "from sklearn.utils import shuffle\n", + "from sklearn.neighbors import KNeighborsClassifier\n", + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn import linear_model, preprocessing\n", + "\n", + "data = pd.read_csv(\"Datasets/Car Data Set/car.data\")\n", + "print(data.head())\n", + "\n", + "le = preprocessing.LabelEncoder()\n", + "buying = le.fit_transform(list(data[\"buying\"]))\n", + "maint = le.fit_transform(list(data[\"maint\"]))\n", + "door = le.fit_transform(list(data[\"door\"]))\n", + "persons = le.fit_transform(list(data[\"persons\"]))\n", + "lug_boot = le.fit_transform(list(data[\"lug_boot\"]))\n", + "safety = le.fit_transform(list(data[\"safety\"]))\n", + "cls = le.fit_transform(list(data[\"class\"]))\n", + " \n", + "predict = \"class\" #optional\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy model: 0.9479768786127167\n" + ] + } + ], + "source": [ + "X = list(zip(buying, maint, door, persons, lug_boot, safety))\n", + "y = list(cls)\n", + "\n", + "x_train, x_test, y_train, y_test = sklearn.model_selection.train_test_split(X, y, test_size = 0.1)\n", + "\n", + "model = KNeighborsClassifier(n_neighbors=9)\n", + "\n", + "model.fit(x_train, y_train)\n", + "acc = model.score(x_test, y_test)\n", + "print(\"Accuracy model: \",acc)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Predicted: good Data: (3, 3, 3, 2, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1.41421356, 1.41421356, 1.41421356, 1.41421356]]), array([[1237, 705, 154, 339, 1066, 1092, 239, 757, 1143]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (3, 2, 2, 2, 2, 0) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 680, 814, 913, 466, 842, 266, 927, 508, 1218]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (0, 0, 3, 1, 0, 0) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[1115, 94, 1417, 673, 1000, 1512, 796, 11, 510]],\n", + " dtype=int64))\n", + "Predicted: acc Data: (1, 2, 3, 1, 2, 0) Actual: acc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 460, 1480, 1498, 942, 1268, 78, 766, 1521, 970]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 0, 2, 0, 1, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 571, 1239, 222, 76, 31, 1546, 531, 1126, 211]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 0, 3, 1, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[1161, 1285, 1110, 1290, 1347, 1189, 118, 695, 1171]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (0, 1, 2, 2, 1, 2) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 194, 1086, 82, 1238, 1025, 998, 173, 1483, 440]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 2, 3, 1, 1, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[1339, 306, 999, 663, 1524, 865, 1470, 168, 1515]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 2, 1, 0, 2, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 721, 487, 1241, 867, 261, 15, 119, 1529, 1013]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 2, 1, 1, 0, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[181, 887, 809, 238, 529, 433, 866, 736, 34]], dtype=int64))\n", + "Predicted: good Data: (0, 3, 3, 0, 2, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1.41421356, 1.41421356, 1.41421356, 1.41421356]]), array([[ 795, 644, 979, 526, 91, 437, 1425, 1545, 619]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (2, 2, 0, 2, 0, 2) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 883, 598, 48, 52, 1294, 21, 423, 1325, 574]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 1, 2, 2, 1, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[1125, 267, 548, 1029, 1372, 1473, 732, 353, 422]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (0, 0, 3, 2, 0, 2) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1.41421356,\n", + " 1.41421356, 1.41421356, 1.41421356, 1.41421356]]), array([[ 240, 385, 1099, 1483, 445, 1115, 1177, 1301, 370]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 2, 0, 0, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 299, 368, 166, 1131, 277, 92, 164, 403, 1036]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 1, 2, 0, 0, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 337, 1348, 309, 836, 941, 928, 620, 831, 533]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 3, 0, 1, 2, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 910, 380, 593, 282, 1314, 1313, 546, 226, 495]],\n", + " dtype=int64))\n", + "Predicted: vgood Data: (2, 2, 2, 1, 1, 0) Actual: vgood\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 679, 622, 754, 37, 805, 1218, 1084, 83, 431]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 1, 3, 1, 1, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 350, 586, 357, 872, 803, 1552, 142, 222, 1115]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 3, 2, 2, 1, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[1021, 79, 1309, 1326, 1365, 667, 1068, 732, 475]],\n", + " dtype=int64))\n", + "Predicted: acc Data: (1, 1, 1, 2, 0, 2) Actual: acc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 410, 416, 1477, 369, 969, 66, 1360, 1172, 181]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 0, 0, 0, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[1020, 656, 747, 456, 1071, 1010, 605, 120, 853]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 0, 1, 1, 1, 2) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 27, 895, 930, 745, 204, 1201, 115, 1400, 1491]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 1, 3, 2, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[1388, 1034, 1252, 652, 611, 1353, 1125, 548, 255]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 0, 2, 0, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1.41421356, 1.41421356, 1.41421356, 1.41421356]]), array([[1024, 773, 1482, 1171, 901, 1394, 444, 176, 941]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 3, 2, 0, 0, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 2, 84, 1192, 1152, 1374, 159, 1081, 1532, 207]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 3, 1, 1, 2, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[1122, 345, 879, 256, 1457, 1042, 701, 1410, 1170]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 1, 2, 1, 2, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 970, 1076, 1426, 512, 1548, 476, 1455, 1265, 1001]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 2, 0, 1, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[1062, 529, 400, 433, 763, 1419, 647, 633, 1211]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 1, 3, 2, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[ 634, 30, 255, 705, 1478, 1038, 1385, 770, 201]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 1, 2, 2, 1, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 201, 770, 150, 923, 112, 1388, 748, 1353, 1308]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 0, 0, 0, 2, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 185, 456, 987, 1322, 692, 1071, 1074, 55, 774]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 3, 3, 1, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1437, 371, 242, 1451, 93, 794, 1193, 498, 332]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 3, 0, 0, 2, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 920, 380, 463, 546, 119, 693, 15, 1122, 1212]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 0, 2, 2, 1, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 214, 326, 20, 353, 573, 1308, 784, 1493, 1385]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 1, 0, 1, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1045, 1297, 1235, 919, 637, 496, 453, 1463, 412]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 1, 2, 2, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[ 561, 440, 811, 381, 1250, 1133, 82, 259, 411]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 3, 2, 1, 1, 2) Actual: unacc\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 894, 1324, 1021, 761, 992, 643, 830, 823, 1326]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 1, 3, 0, 0, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 645, 90, 1393, 1176, 1424, 731, 1479, 1274, 510]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (0, 0, 1, 2, 1, 0) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 746, 193, 407, 228, 224, 1044, 1243, 1278, 1027]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (1, 0, 0, 2, 1, 0) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1094, 439, 676, 1416, 500, 1375, 746, 193, 819]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (0, 0, 2, 2, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1.41421356, 1.41421356, 1.41421356, 1.41421356]]), array([[ 893, 1483, 1234, 126, 1543, 1475, 673, 531, 194]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 0, 2, 1, 1, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[ 20, 326, 901, 1491, 178, 528, 444, 770, 1385]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 2, 2, 0, 2, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 867, 1407, 927, 915, 1336, 361, 1529, 300, 1035]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 1, 0, 2, 1, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 592, 558, 1525, 923, 1357, 270, 518, 206, 971]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 3, 3, 2, 1, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[1188, 364, 580, 29, 626, 1466, 106, 1186, 680]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 3, 1, 2, 0, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[441, 59, 926, 559, 768, 505, 607, 316, 81]], dtype=int64))\n", + "Predicted: good Data: (0, 2, 2, 2, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1.41421356, 1.41421356, 1.41421356, 1.41421356]]), array([[ 675, 965, 88, 1179, 57, 246, 1250, 381, 525]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 1, 2, 0, 2, 0) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 476, 952, 1442, 1181, 145, 187, 636, 970, 543]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (0, 2, 2, 2, 1, 2) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[1233, 1210, 525, 151, 538, 360, 344, 998, 82]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 0, 0, 0, 0, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 243, 1397, 954, 815, 847, 706, 848, 892, 439]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 3, 3, 2, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[1022, 1231, 239, 1430, 51, 522, 26, 339, 1053]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 1, 3, 0, 2, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1448, 1061, 898, 452, 570, 367, 1069, 606, 1394]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 3, 3, 0, 1, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[1192, 587, 1522, 1081, 493, 1004, 1186, 917, 334]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 3, 3, 0, 1, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 480, 591, 1206, 884, 666, 984, 669, 767, 1120]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 0, 3, 1, 0, 0) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[1078, 903, 564, 951, 1000, 1150, 430, 730, 271]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 3, 1, 0, 2, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1412, 1122, 226, 1088, 1500, 751, 1212, 1457, 1350]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 2, 3, 0, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 897, 743, 984, 236, 467, 480, 1389, 286, 452]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (1, 0, 1, 1, 0, 2) Actual: unacc\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[1477, 1205, 1201, 1106, 66, 900, 1003, 1400, 599]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 2, 3, 0, 1, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[699, 858, 301, 537, 889, 917, 170, 334, 499]], dtype=int64))\n", + "Predicted: good Data: (2, 3, 3, 0, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[ 51, 666, 984, 504, 459, 105, 587, 509, 499]], dtype=int64))\n", + "Predicted: good Data: (2, 2, 1, 2, 1, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 659, 902, 1140, 1304, 398, 678, 712, 373, 319]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 0, 3, 2, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[ 711, 958, 1099, 1234, 1230, 1418, 1000, 1177, 1115]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 2, 1, 2, 1, 2) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1025, 310, 1427, 1519, 1453, 876, 948, 88, 1360]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 3, 3, 0, 1, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1437, 1425, 493, 587, 1370, 619, 276, 242, 399]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 0, 1, 1, 1, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 785, 870, 930, 1155, 137, 1102, 1491, 223, 573]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 1, 0, 0, 0, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 449, 565, 243, 97, 1196, 633, 848, 38, 420]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 3, 2, 1, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1464, 888, 563, 34, 881, 612, 1082, 232, 761]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (3, 1, 3, 1, 0, 0) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[1376, 611, 1252, 1078, 1184, 1012, 1334, 1080, 1245]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 0, 0, 1, 0, 0) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 863, 1405, 815, 780, 845, 1397, 488, 1321, 14]],\n", + " dtype=int64))\n", + "Predicted: acc Data: (1, 2, 3, 2, 0, 2) Actual: acc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 103, 448, 660, 1262, 1490, 972, 534, 184, 1229]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 3, 2, 0, 2, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 867, 50, 1223, 15, 254, 361, 560, 728, 1035]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 2, 0, 0, 1, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[1469, 1169, 1209, 719, 1432, 322, 449, 554, 1196]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 3, 2, 1, 0, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1458, 159, 674, 1316, 1242, 260, 292, 2, 788]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (2, 2, 3, 1, 0, 2) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1262, 318, 596, 534, 1236, 279, 583, 741, 1537]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 0, 1, 0, 1, 0) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[1072, 682, 1097, 847, 342, 819, 220, 1446, 954]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 1, 1, 0, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 635, 747, 1163, 1538, 536, 1050, 1377, 216, 1359]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 1, 0, 1, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 602, 1211, 97, 647, 1476, 742, 1167, 633, 265]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 3, 3, 2, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1414, 1528, 1365, 93, 1451, 327, 1068, 1191, 364]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 1, 3, 0, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[ 499, 1111, 367, 1478, 1482, 898, 444, 537, 1394]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 2, 2, 2, 2, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[ 816, 151, 246, 42, 1250, 198, 908, 1265, 82]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 1, 1, 2, 2, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 744, 671, 547, 1265, 885, 1382, 41, 315, 274]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 1, 3, 0, 0, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1.41421356, 1.41421356, 1.41421356, 1.41421356]]), array([[ 11, 321, 96, 730, 594, 1298, 1000, 1512, 165]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (0, 2, 0, 2, 2, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[1516, 653, 506, 1185, 582, 5, 1006, 1517, 148]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (0, 1, 2, 1, 2, 0) Actual: unacc\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[1214, 113, 1434, 654, 145, 1426, 28, 970, 1113]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 3, 1, 0, 2, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 481, 89, 235, 1046, 976, 702, 347, 492, 966]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (0, 1, 1, 2, 0, 0) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[1248, 351, 697, 1391, 224, 1226, 633, 602, 1006]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (1, 0, 1, 1, 2, 2) Actual: unacc\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 962, 245, 1377, 204, 1400, 434, 990, 1020, 747]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 1, 1, 2, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 602, 1211, 1543, 468, 893, 850, 1172, 265, 1025]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 3, 3, 2, 1, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 13, 1068, 717, 79, 302, 93, 242, 1138, 934]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 2, 1, 2, 2, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 209, 246, 690, 712, 1153, 198, 613, 229, 373]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (0, 1, 1, 2, 2, 0) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[1516, 1044, 547, 1434, 315, 113, 1517, 672, 1006]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 0, 2, 2, 1, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[213, 194, 445, 407, 259, 228, 531, 82, 978]], dtype=int64))\n", + "Predicted: good Data: (1, 2, 3, 1, 2, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[1435, 735, 1470, 512, 236, 1515, 1455, 743, 183]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 1, 2, 0, 1, 0) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 62, 420, 187, 340, 145, 31, 1126, 1113, 1220]],\n", + " dtype=int64))\n", + "Predicted: vgood Data: (1, 1, 0, 2, 0, 0) Actual: vgood\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 676, 1321, 351, 1014, 1378, 1375, 1039, 1248, 274]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 1, 2, 0, 1, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 337, 889, 1394, 537, 748, 941, 230, 461, 176]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 0, 2, 0, 1, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 128, 298, 1031, 176, 230, 632, 149, 773, 1135]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (3, 1, 0, 2, 0, 2) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[1357, 270, 317, 598, 21, 868, 1431, 186, 807]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 3, 0, 0, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 716, 1036, 40, 1551, 328, 109, 617, 33, 982]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 0, 2, 1, 2, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 839, 962, 1157, 695, 245, 39, 912, 127, 825]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 1, 1, 2, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[1039, 1121, 1549, 1415, 181, 1248, 887, 1360, 647]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 3, 0, 0, 1, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[1060, 36, 490, 1169, 244, 1107, 179, 1017, 449]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 3, 1, 2, 2, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[1413, 253, 1516, 74, 1187, 1185, 1270, 1350, 624]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (3, 1, 2, 2, 2, 0) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 838, 150, 700, 47, 201, 1493, 101, 1135, 1308]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (2, 3, 2, 1, 0, 2) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1180, 596, 741, 413, 232, 881, 63, 551, 292]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 2, 1, 2, 2, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 712, 814, 1304, 197, 466, 290, 1317, 487, 1307]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 0, 3, 1, 1, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 125, 370, 445, 531, 1115, 343, 94, 222, 727]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (0, 1, 1, 2, 1, 0) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[1032, 672, 850, 1254, 1006, 274, 547, 265, 351]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 0, 3, 0, 2, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[1015, 100, 199, 1161, 1285, 1002, 773, 824, 1171]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 3, 0, 0, 1, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[1436, 843, 179, 102, 983, 852, 490, 1036, 322]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 3, 0, 2, 1, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 627, 1531, 140, 1427, 429, 233, 876, 355, 1439]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 1, 2, 1, 1, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 575, 754, 461, 1030, 1275, 1076, 748, 1154, 622]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (0, 0, 3, 2, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1.41421356,\n", + " 1.41421356, 1.41421356, 1.41421356, 1.41421356]]), array([[ 796, 445, 1115, 1251, 1099, 958, 126, 1230, 240]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 2, 3, 1, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1191, 1451, 1273, 498, 1553, 1194, 1481, 698, 170]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 2, 0, 0, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 920, 1051, 75, 637, 261, 119, 919, 1178, 687]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (2, 3, 1, 1, 1, 0) Actual: unacc\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[1457, 1539, 879, 394, 1489, 1190, 392, 751, 797]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 0, 2, 1, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1.41421356, 1.41421356, 1.41421356, 1.41421356]]), array([[ 713, 1189, 1385, 444, 412, 773, 20, 72, 634]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 2, 2, 0, 0, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1532, 159, 330, 377, 1080, 260, 1174, 300, 207]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 1, 1, 1, 2, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[1452, 885, 1095, 219, 933, 414, 107, 1382, 691]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 3, 3, 0, 1, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[1411, 405, 1425, 428, 437, 493, 526, 168, 556]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 2, 0, 0, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[ 544, 449, 1456, 1017, 133, 97, 188, 763, 1503]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 1, 0, 2, 2, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1.41421356, 1.41421356, 1.41421356, 1.41421356]]), array([[ 148, 1517, 1278, 1006, 625, 113, 349, 457, 547]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 0, 0, 0, 2, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1.41421356, 1.41421356, 1.41421356, 1.41421356]]), array([[1016, 43, 994, 774, 248, 1071, 863, 639, 954]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 1, 3, 2, 1, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 826, 1251, 1238, 663, 82, 1256, 445, 1139, 1552]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 2, 3, 0, 0, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 911, 1224, 399, 1533, 834, 556, 1151, 1437, 96]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (0, 0, 3, 1, 0, 2) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[1176, 1177, 731, 1475, 1115, 370, 240, 937, 1205]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 2, 0, 2, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 568, 1043, 1211, 468, 116, 710, 776, 1419, 1062]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (2, 0, 1, 2, 1, 0) Actual: unacc\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[1416, 1303, 0, 1132, 294, 746, 436, 455, 1033]],\n", + " dtype=int64))\n", + "Predicted: vgood Data: (1, 1, 3, 1, 0, 0) Actual: vgood\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1417, 1158, 135, 1078, 911, 703, 1000, 160, 958]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 2, 0, 0, 1, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[1444, 164, 102, 567, 249, 1505, 1131, 1209, 723]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 2, 1, 1, 2, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[1108, 608, 659, 712, 686, 613, 487, 721, 1440]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 2, 2, 1, 2, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 965, 352, 654, 1515, 306, 283, 512, 1426, 908]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 1, 1, 0, 1, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 320, 1207, 139, 1155, 1241, 223, 786, 553, 432]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 1, 0, 0, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[ 55, 762, 311, 1168, 1026, 1300, 729, 1101, 1396]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 2, 3, 0, 1, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 587, 276, 117, 1061, 570, 1481, 509, 1004, 698]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (0, 0, 3, 2, 1, 0) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 94, 445, 796, 228, 1256, 1164, 1124, 958, 1486]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 0, 1, 2, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 434, 1381, 714, 1540, 204, 1134, 177, 115, 916]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 1, 0, 0, 1, 2) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 146, 1362, 1485, 871, 1266, 541, 1168, 46, 311]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 3, 0, 1, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 359, 827, 1291, 738, 919, 920, 546, 495, 1042]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 1, 2, 0, 0, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 111, 62, 1533, 45, 1306, 187, 1255, 160, 549]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 3, 3, 0, 1, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[ 29, 864, 917, 1450, 334, 1495, 254, 1336, 17]],\n", + " dtype=int64))\n", + "Predicted: vgood Data: (1, 2, 0, 1, 0, 0) Actual: vgood\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[1321, 221, 809, 1209, 400, 529, 1378, 322, 387]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 2, 3, 0, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[ 509, 1009, 570, 1199, 499, 367, 459, 858, 666]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 0, 4, 1, 1, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1.41421356, 1.41421356, 1.41421356, 1.41421356]]), array([[ 384, 557, 313, 1264, 1356, 890, 1454, 832, 1334]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 1, 1, 0, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1130, 25, 521, 133, 565, 97, 1019, 602, 988]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 2, 3, 1, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 301, 961, 1184, 611, 609, 583, 170, 652, 330]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 0, 1, 0, 2, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1322, 479, 223, 773, 1074, 1241, 1024, 870, 813]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 0, 0, 1, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[1049, 1010, 997, 1020, 524, 986, 990, 284, 799]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 3, 0, 1, 1, 2) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 907, 1305, 288, 1472, 429, 196, 233, 402, 579]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 1, 1, 2, 1, 1) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[1360, 382, 373, 1029, 1502, 850, 274, 1127, 267]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 0, 3, 1, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1158, 1298, 451, 430, 1115, 343, 1177, 1000, 510]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 3, 2, 1, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[1217, 390, 1179, 486, 891, 908, 272, 965, 1429]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (3, 1, 2, 2, 0, 2) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 152, 1279, 317, 1358, 1388, 770, 831, 784, 533]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 1, 2, 0, 2, 2) Actual: good\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[1171, 1163, 367, 216, 72, 1482, 1199, 1069, 158]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 3, 0, 0, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[ 702, 976, 1100, 1145, 200, 1240, 1461, 1281, 1244]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (3, 1, 3, 2, 0, 2) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1.41421356,\n", + " 1.41421356, 1.41421356, 1.41421356, 1.41421356]]), array([[1494, 262, 8, 255, 152, 831, 770, 1227, 1279]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 2, 0, 0, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 403, 736, 529, 1036, 1432, 817, 322, 647, 1173]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 3, 2, 2, 2, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[1187, 806, 955, 1179, 253, 908, 1200, 485, 7]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 2, 1, 0, 1, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 446, 297, 629, 889, 210, 555, 1013, 1178, 261]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (1, 3, 2, 1, 0, 0) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 336, 1260, 794, 949, 2, 477, 1374, 707, 612]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 0, 1, 0, 2, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 479, 1074, 1097, 1028, 664, 1446, 54, 774, 1016]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 1, 2, 0, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 111, 31, 62, 1479, 6, 1346, 1393, 549, 539]],\n", + " dtype=int64))\n", + "Predicted: good Data: (1, 1, 0, 0, 1, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 875, 1072, 954, 249, 1196, 1396, 848, 554, 45]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 0, 2, 0, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1.41421356, 1.41421356, 1.41421356, 1.41421356]]), array([[1130, 549, 426, 510, 878, 1255, 1126, 1239, 1475]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (2, 1, 0, 2, 1, 0) Actual: acc\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 676, 640, 1033, 835, 206, 1525, 1014, 1416, 406]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 0, 2, 1, 0, 1) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 451, 1475, 1346, 1115, 16, 531, 673, 549, 126]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (3, 1, 0, 1, 0, 0) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1. , 1.41421356]]), array([[ 157, 425, 186, 180, 85, 780, 1405, 957, 1182]],\n", + " dtype=int64))\n", + "Predicted: good Data: (0, 0, 1, 2, 2, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 990, 986, 434, 811, 1133, 366, 801, 1504, 407]],\n", + " dtype=int64))\n", + "Predicted: good Data: (3, 3, 3, 0, 0, 2) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[ 17, 251, 56, 1537, 540, 1395, 858, 170, 851]],\n", + " dtype=int64))\n", + "Predicted: unacc Data: (3, 1, 2, 1, 1, 2) Actual: unacc\n", + "N: (array([[1., 1., 1., 1., 1., 1., 1., 1., 1.]]), array([[ 444, 1333, 831, 141, 748, 941, 1520, 770, 575]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 2, 0, 0, 2, 0) Actual: good\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1. , 1.41421356, 1.41421356]]), array([[ 719, 1500, 1212, 1355, 994, 264, 581, 983, 1128]],\n", + " dtype=int64))\n", + "Predicted: good Data: (2, 0, 0, 2, 0, 0) Actual: unacc\n", + "N: (array([[1. , 1. , 1. , 1. , 1. ,\n", + " 1. , 1.41421356, 1.41421356, 1.41421356]]), array([[ 455, 70, 1225, 1375, 1014, 1416, 494, 1249, 780]],\n", + " dtype=int64))\n" + ] + } + ], + "source": [ + "predicted = model.predict(x_test)\n", + "names = [\"unacc\", \"acc\", \"good\", \"vgood\"]\n", + "\n", + "for x in range(len(predicted)):\n", + " print(\"Predicted: \", names[predicted[x]], \"Data: \", x_test[x], \"Actual: \", names[y_test[x]])\n", + " n = model.kneighbors([x_test[x]], 9, True)\n", + " print(\"N: \", n)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Support Vector Machines (SVM)" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['mean radius' 'mean texture' 'mean perimeter' 'mean area'\n", + " 'mean smoothness' 'mean compactness' 'mean concavity'\n", + " 'mean concave points' 'mean symmetry' 'mean fractal dimension'\n", + " 'radius error' 'texture error' 'perimeter error' 'area error'\n", + " 'smoothness error' 'compactness error' 'concavity error'\n", + " 'concave points error' 'symmetry error' 'fractal dimension error'\n", + " 'worst radius' 'worst texture' 'worst perimeter' 'worst area'\n", + " 'worst smoothness' 'worst compactness' 'worst concavity'\n", + " 'worst concave points' 'worst symmetry' 'worst fractal dimension']\n", + "['malignant' 'benign']\n" + ] + } + ], + "source": [ + "import sklearn\n", + "from sklearn import datasets\n", + "from sklearn import svm\n", + "from sklearn import metrics\n", + "from sklearn.neighbors import KNeighborsClassifier\n", + "\n", + "cancer = datasets.load_breast_cancer()\n", + "\n", + "print(cancer.feature_names)\n", + "print(cancer.target_names)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[1.095e+01 2.135e+01 7.190e+01 ... 1.424e-01 2.964e-01 9.606e-02]\n", + " [1.300e+01 2.182e+01 8.750e+01 ... 2.060e-01 4.378e-01 1.072e-01]\n", + " [1.184e+01 1.894e+01 7.551e+01 ... 6.913e-02 2.535e-01 7.993e-02]\n", + " ...\n", + " [1.187e+01 2.154e+01 7.683e+01 ... 8.750e-02 2.305e-01 9.952e-02]\n", + " [1.094e+01 1.859e+01 7.039e+01 ... 7.887e-02 2.251e-01 7.732e-02]\n", + " [1.049e+01 1.861e+01 6.686e+01 ... 6.528e-02 2.213e-01 7.842e-02]] [0 0 1 1 1 1 0 0 0 1 1 0 1 1 1 1 0 1 0 1 0 1 0 0 0 0 1 1 0 1 0 1 1 1 0 1 1\n", + " 1 0 1 1 0 1 0 0 1 1 1 0 1 1 0 0 1 1 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 1 1\n", + " 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 1 1 0 1 0 1 1 0 1 0 1 0 0 1 1 1\n", + " 1 0 0 0 1 1 0 0 1 1 1 1 1 0 0 1 1 1 0 1 1 0 0 1 0 1 0 1 0 0 0 0 1 1 1 1 1\n", + " 0 0 0 1 0 1 0 0 1 1 1 1 1 1 1 1 0 1 1 0 0 1 0 1 1 0 1 1 0 1 0 0 0 0 1 0 1\n", + " 0 1 0 1 1 0 1 1 1 1 1 1 1 1 0 1 1 0 0 0 1 1 0 0 1 1 1 0 1 1 1 1 1 1 1 1 0\n", + " 1 0 1 0 1 1 1 1 1 1 1 0 1 1 0 0 0 0 1 1 1 1 0 0 1 0 1 1 1 0 1 0 1 1 1 1 0\n", + " 1 1 0 1 1 0 1 1 1 0 0 1 1 1 0 1 0 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1\n", + " 1 1 0 0 1 1 1 1 1 1 1 1 0 0 1 0 1 1 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 1 0\n", + " 0 0 0 0 1 0 0 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0 0 0 1 1 1\n", + " 0 1 1 0 0 0 0 0 1 1 0 0 0 1 0 1 1 0 1 0 1 1 0 0 0 0 1 1 1 1 1 1 1 0 1 0 0\n", + " 1 1 1 1 1 1 1 1 0 0 1 0 1 0 1 1 0 1 1 1 1 0 1 1 1 1 0 0 1 0 0 0 1 1 1 0 1\n", + " 0 1 1 1 0 0 1 0 1 1 1]\n" + ] + } + ], + "source": [ + "x = cancer.data\n", + "y = cancer.target\n", + "\n", + "x_train, x_test, y_train, y_test = sklearn.model_selection.train_test_split(x, y, test_size=0.2)\n", + "\n", + "print(x_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy: 0.9385964912280702\n" + ] + } + ], + "source": [ + "clf = svm.SVC(kernel=\"linear\")\n", + "clf.fit(x_train, y_train)\n", + "\n", + "y_pred = clf.predict(x_test)\n", + "\n", + "acc = metrics.accuracy_score(y_test, y_pred)\n", + "\n", + "print(\"Accuracy: \",acc)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/1anno/2trimestre/Coding for DataScience/Python/Models/studentgrades.pickle b/1anno/2trimestre/Coding for DataScience/Python/Models/studentgrades.pickle new file mode 100644 index 0000000000000000000000000000000000000000..c0eb319969dafb4b51f45386e7e00dacbf7d470f GIT binary patch literal 578 zcmZo*PA<;QNlh%u)62=s1Jd!i`6;P6dP#}Jsa!r_k)YJ{qSWHz%=|pALI%yoLdM!c zCXEPQ1_p+-%#!%bypq(SPG(hVAxmcj8&DuQzo0TcqL8%% z%*%_<%1f!j$j0e+7t@=`T2SM2LdqR%}`P(lGN#}A?TEK#YXdp{p2*) z3%0HA?O$(_tlHpmV*ixulXomWc545G3ErXchZoxyik1|LC4oH-bZv2FN@;3wp*Rlz z6elOQE@zRwxxzC=CveqQt!H_(BNafcUFhB>gPU!R;j#nQpR{U^%= zC4Gm-u`{RK^Vf7JR4OS{PKw|H`Wzl_@r5cGUPG(hVAxmcj8&DuQzo0TcqL8%% z%*%_<%1f!j$j0e+7t@=`T2SM2LdqR%}`P(lGN#}!S`dDrFG_Edu@G3 zR-26X_6yi&XdG2My1%;M&WXvhuI%5K^mNq=j^*}+q9ui5NnnoyU0a-)Qkq&^D2~HF z#mR{|iA7w65*b3y9O`U^*JEO*I21~@6-osaN`u3rC^0WPzEH-S6>MU0W?p(JP)B^B zYz9XL*t>EWK)=cd6)Hges+b`JbZv1ZkMdu)L