├── shapley ├── __init__.py ├── utils.py ├── game.py └── gtsv.py ├── README.md ├── .gitignore ├── Makefile ├── LICENSE └── exps ├── data_files ├── iris_test.csv ├── b_test.csv ├── b_100.csv ├── iris_train.csv ├── iris.data ├── b_200.csv ├── b_300.csv ├── b_400.csv ├── b_500.csv ├── b_train.csv ├── breast-cancer-wisconsin.data └── student-mat.csv ├── gt_compare.py └── gt_sample.py /shapley/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Shapley Value Approximation 2 | 3 | Code for implementation of ["Efficient Sampling Approaches to Shapley Value Approximation"](). 4 | 5 | ### Prerequisites 6 | 7 | - Python, NumPy, Scikit-learn, Tqdm 8 | 9 | #### Example 10 | 11 | They can be found in folder `exps`. 12 | 13 | ``` 14 | $ python gt_sample.py 15 | $ python gt_compare.py 16 | ``` 17 | 18 | ### License 19 | 20 | This project is licensed under the MIT License - see the [LICENSE](./LICENSE) file for details. 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .coverage 2 | MANIFEST 3 | coverage.xml 4 | nosetests.xml 5 | junit-report.xml 6 | pylint.txt 7 | toy.py 8 | .cache/ 9 | cover/ 10 | build/ 11 | docs/_build 12 | requests.egg-info/ 13 | *.pyc 14 | *.swp 15 | *.egg 16 | env/ 17 | .venv/ 18 | .eggs/ 19 | .tox/ 20 | .pytest_cache/ 21 | .vscode/ 22 | .idea/ 23 | 24 | .data_files/ 25 | .res/ 26 | 27 | .workon 28 | 29 | /.mypy_cache/ 30 | 31 | .DS_Store 32 | .ipynb_checkpoints 33 | 34 | exps/res/ 35 | exps/*.png 36 | exps/*.csv 37 | shapley/__pycache__ 38 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: docs clean 2 | 3 | all: init docs test ci clean test-readme 4 | 5 | init: 6 | # pip install -e .[socks] 7 | pip install -r requirements-dev.txt 8 | 9 | docs: 10 | cd docs && make html 11 | @echo "\033[95m\n\nBuild successful! View the docs homepage at docs/_build/html/index.html.\n\033[0m" 12 | 13 | test: 14 | # -find coverage/ -mindepth 1 -delete 15 | pytest $${TESTS} 16 | 17 | ci: 18 | pytest tests --junitxml=report.xml 19 | 20 | clean: 21 | find . -name '*.py[co]' -delete 22 | 23 | dist: test 24 | python setup.py sdist 25 | 26 | test-readme: 27 | python setup.py check --restructuredtext --strict && ([ $$? -eq 0 ] && echo "README.rst ok") || echo "Invalid markup in README.rst!" -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) The DIVER Group Authors. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /exps/data_files/iris_test.csv: -------------------------------------------------------------------------------- 1 | F1,F2,F3,F4,Y 2 | 6.2,2.9,4.3,1.3,Iris-versicolor 3 | 7.2,3.6,6.1,2.5,Iris-virginica 4 | 5.4,3.9,1.3,0.4,Iris-setosa 5 | 5.1,3.8,1.9,0.4,Iris-setosa 6 | 6.9,3.2,5.7,2.3,Iris-virginica 7 | 7.7,2.6,6.9,2.3,Iris-virginica 8 | 5.6,2.5,3.9,1.1,Iris-versicolor 9 | 6.7,3.1,4.7,1.5,Iris-versicolor 10 | 5.0,3.6,1.4,0.2,Iris-setosa 11 | 4.4,3.0,1.3,0.2,Iris-setosa 12 | 6.7,3.3,5.7,2.5,Iris-virginica 13 | 6.9,3.1,5.4,2.1,Iris-virginica 14 | 6.4,2.8,5.6,2.2,Iris-virginica 15 | 6.7,3.0,5.0,1.7,Iris-versicolor 16 | 6.3,3.3,6.0,2.5,Iris-virginica 17 | 6.1,2.6,5.6,1.4,Iris-virginica 18 | 6.4,2.9,4.3,1.3,Iris-versicolor 19 | 4.8,3.4,1.6,0.2,Iris-setosa 20 | 6.4,2.8,5.6,2.1,Iris-virginica 21 | 6.0,2.7,5.1,1.6,Iris-versicolor 22 | 6.8,3.2,5.9,2.3,Iris-virginica 23 | 4.9,3.1,1.5,0.1,Iris-setosa 24 | 5.1,3.4,1.5,0.2,Iris-setosa 25 | 6.2,3.4,5.4,2.3,Iris-virginica 26 | 6.1,2.8,4.0,1.3,Iris-versicolor 27 | 4.6,3.6,1.0,0.2,Iris-setosa 28 | 4.7,3.2,1.3,0.2,Iris-setosa 29 | 5.8,2.7,4.1,1.0,Iris-versicolor 30 | 7.2,3.0,5.8,1.6,Iris-virginica 31 | 7.1,3.0,5.9,2.1,Iris-virginica 32 | 6.7,3.1,4.4,1.4,Iris-versicolor 33 | 5.0,3.0,1.6,0.2,Iris-setosa 34 | 5.8,4.0,1.2,0.2,Iris-setosa 35 | 5.2,2.7,3.9,1.4,Iris-versicolor 36 | 5.5,2.4,3.7,1.0,Iris-versicolor 37 | 5.9,3.2,4.8,1.8,Iris-versicolor 38 | 5.0,3.5,1.6,0.6,Iris-setosa 39 | 5.8,2.7,5.1,1.9,Iris-virginica 40 | 5.7,3.0,4.2,1.2,Iris-versicolor 41 | 6.3,3.4,5.6,2.4,Iris-virginica 42 | 5.0,2.3,3.3,1.0,Iris-versicolor 43 | 6.0,3.0,4.8,1.8,Iris-virginica 44 | 6.3,2.7,4.9,1.8,Iris-virginica 45 | 5.5,4.2,1.4,0.2,Iris-setosa 46 | 6.5,3.2,5.1,2.0,Iris-virginica 47 | 6.8,2.8,4.8,1.4,Iris-versicolor 48 | 6.7,3.1,5.6,2.4,Iris-virginica 49 | 4.8,3.0,1.4,0.1,Iris-setosa 50 | 6.1,2.8,4.7,1.2,Iris-versicolor 51 | 6.2,2.2,4.5,1.5,Iris-versicolor 52 | -------------------------------------------------------------------------------- /exps/data_files/b_test.csv: -------------------------------------------------------------------------------- 1 | f1,f2,f3,f4,f5,f6,f7,f8,f9,Y 2 | 4,1,1,1,2,3,2,1,1,2 3 | 10,5,5,3,6,7,7,10,1,4 4 | 5,7,7,1,5,8,3,4,1,2 5 | 10,3,6,2,3,5,4,10,2,4 6 | 5,1,3,1,2,1,2,1,1,2 7 | 3,1,1,3,1,1,3,1,1,2 8 | 1,1,1,1,2,1,3,1,1,2 9 | 1,1,1,1,1,1,2,1,1,2 10 | 4,1,1,2,2,1,2,1,1,2 11 | 5,4,3,1,2,1,2,3,1,2 12 | 10,2,2,1,2,6,1,1,2,4 13 | 5,10,10,3,8,1,5,10,3,4 14 | 4,1,1,1,2,1,2,1,1,2 15 | 2,1,1,1,2,1,3,1,1,2 16 | 5,1,1,1,2,1,1,1,1,2 17 | 3,2,2,2,2,1,4,2,1,2 18 | 1,1,1,1,2,1,3,1,1,2 19 | 10,8,10,1,3,10,5,1,1,4 20 | 10,4,6,1,2,10,5,3,1,4 21 | 4,1,1,1,2,1,3,6,1,2 22 | 5,10,10,9,6,10,7,10,5,4 23 | 1,1,1,1,2,1,1,1,1,2 24 | 2,1,2,1,2,1,3,1,1,2 25 | 5,10,6,1,10,4,4,10,10,4 26 | 4,1,1,1,2,1,1,1,1,2 27 | 5,1,2,10,4,5,2,1,1,2 28 | 10,6,3,6,4,10,7,8,4,4 29 | 3,1,1,1,2,1,1,1,1,2 30 | 1,1,1,1,2,1,1,1,1,2 31 | 1,1,3,1,2,1,1,1,1,2 32 | 4,8,6,4,3,4,10,6,1,4 33 | 10,6,4,3,10,10,9,10,1,4 34 | 6,3,3,3,3,2,6,1,1,2 35 | 6,2,3,1,2,1,1,1,1,2 36 | 10,8,7,4,3,10,7,9,1,4 37 | 5,1,1,1,2,1,2,1,1,2 38 | 2,1,1,1,2,1,1,1,5,2 39 | 4,6,6,5,7,6,7,7,3,4 40 | 1,2,2,1,2,1,1,1,1,2 41 | 5,1,2,1,2,1,3,1,1,2 42 | 5,1,1,1,2,1,3,2,1,2 43 | 3,4,4,10,5,1,3,3,1,4 44 | 1,2,3,1,2,1,1,1,1,2 45 | 3,1,1,1,1,1,1,1,1,2 46 | 5,1,3,1,2,1,3,1,1,2 47 | 5,3,1,1,2,1,1,1,1,2 48 | 3,3,2,2,3,1,1,2,3,2 49 | 10,10,9,3,7,5,3,5,1,4 50 | 8,4,4,1,2,9,3,3,1,4 51 | 7,8,3,7,4,5,7,8,2,4 52 | 5,3,1,2,2,1,2,1,1,2 53 | 5,1,1,1,2,1,1,1,1,2 54 | 2,1,1,1,2,1,3,1,1,2 55 | 2,1,1,2,3,1,2,1,1,2 56 | 5,1,1,1,2,1,3,1,1,2 57 | 4,1,1,1,3,1,1,1,1,2 58 | 3,1,3,1,2,1,2,1,1,2 59 | 6,5,5,8,4,10,3,4,1,4 60 | 7,8,8,7,3,10,7,2,3,4 61 | 1,1,1,1,2,1,3,1,1,2 62 | 6,2,1,1,1,1,7,1,1,2 63 | 2,1,1,2,2,1,1,1,1,2 64 | 4,1,1,1,2,1,3,1,1,2 65 | 4,1,1,1,2,1,1,1,1,2 66 | 5,1,1,3,4,1,3,2,1,2 67 | 3,1,1,1,2,5,5,1,1,2 68 | 8,3,8,3,4,9,8,9,8,4 69 | 3,7,7,4,4,9,4,8,1,4 70 | 5,3,3,3,6,10,3,1,1,4 71 | 1,1,1,1,2,1,1,1,1,2 72 | 7,8,7,6,4,3,8,8,4,4 73 | 3,1,1,1,2,1,3,1,1,2 74 | 7,6,6,3,2,10,7,1,1,4 75 | 4,10,4,7,3,10,9,10,1,4 76 | 2,3,4,4,2,5,2,5,1,4 77 | 10,4,3,10,3,10,7,1,2,4 78 | 10,6,4,1,3,4,3,2,3,4 79 | 5,3,3,3,2,3,4,4,1,4 80 | 1,1,1,1,2,1,3,1,1,2 81 | 1,1,1,1,2,1,2,1,1,2 82 | 4,1,1,3,2,1,3,1,1,2 83 | 3,6,4,10,3,3,3,4,1,4 84 | 2,1,1,1,2,1,3,1,1,2 85 | 3,1,1,1,2,1,2,1,1,2 86 | 1,1,1,1,1,1,3,1,1,2 87 | 2,1,1,1,2,1,2,1,1,2 88 | 1,3,1,2,2,2,5,3,2,2 89 | 3,1,1,2,2,1,1,1,1,2 90 | 1,1,1,1,2,1,3,1,1,2 91 | 1,1,1,2,2,1,3,1,1,2 92 | 5,1,1,1,2,1,2,1,1,2 93 | 10,5,7,3,3,7,3,3,8,4 94 | 3,1,1,1,1,1,2,1,1,2 95 | 5,1,1,1,2,1,2,1,1,2 96 | 8,10,5,3,8,4,4,10,3,4 97 | 7,2,4,1,3,4,3,3,1,4 98 | 10,8,8,4,10,10,8,1,1,4 99 | 1,1,1,1,2,1,1,1,1,2 100 | 5,4,6,6,4,10,4,3,1,4 101 | -------------------------------------------------------------------------------- /exps/data_files/b_100.csv: -------------------------------------------------------------------------------- 1 | f1,f2,f3,f4,f5,f6,f7,f8,f9,Y 2 | 5,1,1,1,2,1,1,1,1,2 3 | 5,4,6,10,2,10,4,1,1,4 4 | 1,1,1,1,2,1,1,1,1,2 5 | 8,8,8,1,2,1,6,10,1,4 6 | 6,2,1,1,1,1,7,1,1,2 7 | 4,3,2,1,3,1,2,1,1,2 8 | 1,1,1,1,2,1,3,1,1,2 9 | 2,1,1,1,2,1,1,1,5,2 10 | 4,1,1,1,2,1,2,1,1,2 11 | 5,7,7,1,5,8,3,4,1,2 12 | 2,1,1,1,2,1,2,1,1,2 13 | 1,4,3,10,4,10,5,6,1,4 14 | 6,1,1,1,2,1,2,1,1,2 15 | 3,1,1,1,2,1,3,1,1,2 16 | 3,1,1,1,2,2,7,1,1,2 17 | 10,10,10,8,6,8,7,10,1,4 18 | 4,8,7,10,4,10,7,5,1,4 19 | 9,10,10,10,10,10,10,10,1,4 20 | 5,10,10,10,5,2,8,5,1,4 21 | 7,5,10,10,10,10,4,10,3,4 22 | 3,1,1,1,1,1,2,1,1,2 23 | 8,4,6,3,3,1,4,3,1,2 24 | 3,1,1,1,1,1,2,1,1,2 25 | 4,1,1,1,2,1,3,1,1,2 26 | 1,1,1,1,2,1,1,1,1,2 27 | 3,1,1,1,2,1,2,1,1,2 28 | 1,1,1,1,2,1,2,1,1,2 29 | 5,1,2,1,2,1,1,1,1,2 30 | 3,1,1,1,3,2,1,1,1,2 31 | 4,1,1,2,2,1,1,1,1,2 32 | 1,1,1,1,2,1,2,1,1,2 33 | 10,4,3,10,3,10,7,1,2,4 34 | 10,10,10,8,2,10,4,1,1,4 35 | 1,1,1,1,2,1,2,1,1,2 36 | 1,1,1,1,2,1,3,1,1,2 37 | 1,1,1,1,2,5,1,1,1,2 38 | 5,10,10,3,7,3,8,10,2,4 39 | 6,10,10,10,8,10,10,10,7,4 40 | 8,4,4,1,2,9,3,3,1,4 41 | 5,1,1,1,2,1,2,1,1,2 42 | 5,1,1,1,2,1,1,1,1,2 43 | 7,5,6,10,5,10,7,9,4,4 44 | 8,4,10,5,4,4,7,10,1,4 45 | 1,1,3,1,1,1,2,1,1,2 46 | 5,1,1,6,3,1,1,1,1,2 47 | 2,1,1,1,2,1,2,1,1,2 48 | 3,1,1,1,2,1,2,1,1,2 49 | 1,1,1,1,1,1,2,1,1,2 50 | 6,1,1,1,2,1,3,1,1,2 51 | 3,1,1,1,2,1,1,1,1,2 52 | 1,1,1,1,2,1,3,1,1,2 53 | 3,1,1,1,2,2,3,1,1,2 54 | 3,1,1,1,2,1,2,2,1,2 55 | 2,1,1,1,2,1,2,1,1,2 56 | 9,5,8,1,2,3,2,1,5,4 57 | 2,1,1,1,2,1,2,1,1,2 58 | 2,1,1,1,2,1,1,1,1,2 59 | 10,5,5,6,3,10,7,9,2,4 60 | 5,10,10,6,10,10,10,6,5,4 61 | 5,1,1,3,2,1,1,1,1,2 62 | 2,1,1,1,1,1,1,1,1,2 63 | 1,1,1,1,5,1,3,1,1,2 64 | 8,10,8,8,4,8,7,7,1,4 65 | 3,1,1,1,2,3,3,1,1,2 66 | 7,5,6,3,3,8,7,4,1,4 67 | 8,2,3,1,6,3,7,1,1,4 68 | 6,1,1,3,2,1,1,1,1,2 69 | 2,1,1,1,2,1,3,1,1,2 70 | 4,1,1,3,2,1,3,1,1,2 71 | 5,3,3,3,2,3,4,4,1,4 72 | 10,5,5,3,6,7,7,10,1,4 73 | 5,1,1,4,2,1,3,1,1,2 74 | 6,1,3,1,2,1,3,1,1,2 75 | 6,5,4,4,3,9,7,8,3,4 76 | 5,1,3,1,2,1,2,1,1,2 77 | 1,1,1,1,2,2,1,1,1,2 78 | 1,1,1,1,2,1,2,1,1,2 79 | 3,1,1,1,2,1,1,1,1,2 80 | 7,8,7,6,4,3,8,8,4,4 81 | 3,1,1,1,2,1,3,1,1,2 82 | 3,1,1,1,2,1,3,1,1,2 83 | 1,1,2,1,2,1,2,1,1,2 84 | 8,7,8,5,5,10,9,10,1,4 85 | 3,1,1,1,2,1,1,1,1,2 86 | 1,1,1,1,3,1,1,1,1,2 87 | 4,4,4,2,2,3,2,1,1,2 88 | 5,5,5,8,10,8,7,3,7,4 89 | 5,2,2,4,2,4,1,1,1,2 90 | 1,1,1,1,2,1,3,1,1,2 91 | 5,1,1,1,2,1,3,1,2,2 92 | 1,2,3,1,2,1,1,1,1,2 93 | 5,1,1,2,2,1,2,1,1,2 94 | 5,1,3,1,2,1,2,1,1,2 95 | 6,3,4,1,5,2,3,9,1,4 96 | 3,1,1,1,2,5,5,1,1,2 97 | 3,2,2,1,2,1,2,3,1,2 98 | 8,10,10,8,5,10,7,8,1,4 99 | 5,1,1,1,2,2,2,1,1,2 100 | 4,1,1,1,2,3,1,1,1,2 101 | 4,1,2,1,2,1,2,1,1,2 102 | -------------------------------------------------------------------------------- /exps/data_files/iris_train.csv: -------------------------------------------------------------------------------- 1 | F1,F2,F3,F4,Y 2 | 6.1,2.9,4.7,1.4,Iris-versicolor 3 | 5.8,2.7,3.9,1.2,Iris-versicolor 4 | 6.7,3.0,5.2,2.3,Iris-virginica 5 | 6.5,2.8,4.6,1.5,Iris-versicolor 6 | 5.1,2.5,3.0,1.1,Iris-versicolor 7 | 6.3,2.8,5.1,1.5,Iris-virginica 8 | 6.1,3.0,4.9,1.8,Iris-virginica 9 | 6.7,3.3,5.7,2.1,Iris-virginica 10 | 6.6,3.0,4.4,1.4,Iris-versicolor 11 | 5.4,3.4,1.7,0.2,Iris-setosa 12 | 7.0,3.2,4.7,1.4,Iris-versicolor 13 | 5.6,2.9,3.6,1.3,Iris-versicolor 14 | 4.8,3.0,1.4,0.3,Iris-setosa 15 | 6.0,2.2,5.0,1.5,Iris-virginica 16 | 6.0,2.9,4.5,1.5,Iris-versicolor 17 | 6.3,3.3,4.7,1.6,Iris-versicolor 18 | 6.2,2.8,4.8,1.8,Iris-virginica 19 | 5.5,3.5,1.3,0.2,Iris-setosa 20 | 5.1,3.3,1.7,0.5,Iris-setosa 21 | 5.1,3.5,1.4,0.3,Iris-setosa 22 | 5.2,3.5,1.5,0.2,Iris-setosa 23 | 4.9,3.0,1.4,0.2,Iris-setosa 24 | 7.6,3.0,6.6,2.1,Iris-virginica 25 | 6.9,3.1,4.9,1.5,Iris-versicolor 26 | 7.2,3.2,6.0,1.8,Iris-virginica 27 | 5.0,2.0,3.5,1.0,Iris-versicolor 28 | 5.0,3.4,1.6,0.4,Iris-setosa 29 | 4.6,3.1,1.5,0.2,Iris-setosa 30 | 5.7,2.6,3.5,1.0,Iris-versicolor 31 | 5.2,3.4,1.4,0.2,Iris-setosa 32 | 7.9,3.8,6.4,2.0,Iris-virginica 33 | 5.5,2.3,4.0,1.3,Iris-versicolor 34 | 5.5,2.4,3.8,1.1,Iris-versicolor 35 | 4.6,3.2,1.4,0.2,Iris-setosa 36 | 5.3,3.7,1.5,0.2,Iris-setosa 37 | 5.0,3.2,1.2,0.2,Iris-setosa 38 | 4.8,3.1,1.6,0.2,Iris-setosa 39 | 4.8,3.4,1.9,0.2,Iris-setosa 40 | 6.6,2.9,4.6,1.3,Iris-versicolor 41 | 5.1,3.8,1.6,0.2,Iris-setosa 42 | 4.9,3.1,1.5,0.1,Iris-setosa 43 | 7.7,3.0,6.1,2.3,Iris-virginica 44 | 5.6,2.7,4.2,1.3,Iris-versicolor 45 | 5.6,2.8,4.9,2.0,Iris-virginica 46 | 5.4,3.7,1.5,0.2,Iris-setosa 47 | 5.7,4.4,1.5,0.4,Iris-setosa 48 | 5.6,3.0,4.5,1.5,Iris-versicolor 49 | 6.8,3.0,5.5,2.1,Iris-virginica 50 | 6.3,2.9,5.6,1.8,Iris-virginica 51 | 6.4,3.2,4.5,1.5,Iris-versicolor 52 | 7.7,3.8,6.7,2.2,Iris-virginica 53 | 6.7,2.5,5.8,1.8,Iris-virginica 54 | 5.6,3.0,4.1,1.3,Iris-versicolor 55 | 6.3,2.5,5.0,1.9,Iris-virginica 56 | 5.7,3.8,1.7,0.3,Iris-setosa 57 | 5.8,2.7,5.1,1.9,Iris-virginica 58 | 6.4,2.7,5.3,1.9,Iris-virginica 59 | 4.4,3.2,1.3,0.2,Iris-setosa 60 | 5.5,2.6,4.4,1.2,Iris-versicolor 61 | 7.4,2.8,6.1,1.9,Iris-virginica 62 | 6.0,2.2,4.0,1.0,Iris-versicolor 63 | 4.4,2.9,1.4,0.2,Iris-setosa 64 | 4.6,3.4,1.4,0.3,Iris-setosa 65 | 7.7,2.8,6.7,2.0,Iris-virginica 66 | 5.1,3.8,1.5,0.3,Iris-setosa 67 | 6.4,3.2,5.3,2.3,Iris-virginica 68 | 4.9,2.5,4.5,1.7,Iris-virginica 69 | 5.8,2.6,4.0,1.2,Iris-versicolor 70 | 5.5,2.5,4.0,1.3,Iris-versicolor 71 | 5.4,3.0,4.5,1.5,Iris-versicolor 72 | 5.7,2.8,4.5,1.3,Iris-versicolor 73 | 5.2,4.1,1.5,0.1,Iris-setosa 74 | 6.5,3.0,5.8,2.2,Iris-virginica 75 | 5.1,3.7,1.5,0.4,Iris-setosa 76 | 5.4,3.9,1.7,0.4,Iris-setosa 77 | 6.4,3.1,5.5,1.8,Iris-virginica 78 | 6.3,2.5,4.9,1.5,Iris-versicolor 79 | 7.3,2.9,6.3,1.8,Iris-virginica 80 | 5.7,2.8,4.1,1.3,Iris-versicolor 81 | 6.9,3.1,5.1,2.3,Iris-virginica 82 | 4.3,3.0,1.1,0.1,Iris-setosa 83 | 6.3,2.3,4.4,1.3,Iris-versicolor 84 | 5.8,2.8,5.1,2.4,Iris-virginica 85 | 5.0,3.3,1.4,0.2,Iris-setosa 86 | 4.9,3.1,1.5,0.1,Iris-setosa 87 | 5.0,3.5,1.3,0.3,Iris-setosa 88 | 5.9,3.0,5.1,1.8,Iris-virginica 89 | 5.7,2.9,4.2,1.3,Iris-versicolor 90 | 4.5,2.3,1.3,0.3,Iris-setosa 91 | 5.9,3.0,4.2,1.5,Iris-versicolor 92 | 5.1,3.5,1.4,0.2,Iris-setosa 93 | 6.1,3.0,4.6,1.4,Iris-versicolor 94 | 4.9,2.4,3.3,1.0,Iris-versicolor 95 | 5.0,3.4,1.5,0.2,Iris-setosa 96 | 5.7,2.5,5.0,2.0,Iris-virginica 97 | 4.7,3.2,1.6,0.2,Iris-setosa 98 | 5.4,3.4,1.5,0.4,Iris-setosa 99 | 6.0,3.4,4.5,1.6,Iris-versicolor 100 | 6.5,3.0,5.2,2.0,Iris-virginica 101 | 6.5,3.0,5.5,1.8,Iris-virginica 102 | -------------------------------------------------------------------------------- /exps/gt_compare.py: -------------------------------------------------------------------------------- 1 | import sys # NOQA: E402 2 | sys.path.append("..") # NOQA: E402 3 | import pandas as pd 4 | import numpy as np 5 | from shapley.utils import * 6 | 7 | 8 | def compute_std(gt, n, samples, algs, times, bbdir='', bdir='', norm=False): 9 | 10 | for _gt in gt: 11 | res = [] 12 | for _algs in algs: 13 | max_res = [] 14 | avg_res = [] 15 | for _n in n: 16 | dir = bbdir + _gt + '_' + str(_n) + 'n' + '/' + _gt + '_' 17 | dir = bdir + dir 18 | 19 | sv = [] 20 | for j in range(times): 21 | ndir = dir + _algs + '_n_' + \ 22 | str(_n) + '_m_' + str(samples) + '_' + str(j) + '.npy' 23 | a = load_npy(ndir) 24 | if norm: 25 | a /= np.sum(a) 26 | sv.append(a) 27 | 28 | mean = np.mean(sv, axis=0) 29 | r = np.std(sv, axis=0) 30 | 31 | c = 0 32 | cv = [] 33 | for j in range(len(mean)): 34 | temp = True 35 | for _sv in sv: 36 | if _sv[j] <= 0: 37 | temp = False 38 | if temp: 39 | c += 1 40 | cv.append(abs(r[j] / mean[j])) 41 | 42 | mr = np.mean(cv) 43 | ar = np.max(cv) 44 | 45 | print(_gt, _n, _algs, (ar, mr)) 46 | max_res.append(ar) 47 | avg_res.append(mr) 48 | res.append(tuple(avg_res)) 49 | a = pd.DataFrame(res) 50 | a.to_csv(_gt + '.csv') 51 | 52 | 53 | def compute_error(gt, n, samples, algs, times, exact, bbdir='', bdir='', norm=False): 54 | num = len(exact) 55 | 56 | for _gt in gt: 57 | res_avg_err = [] 58 | res_max_err = [] 59 | for _algs in algs: 60 | avg_err = [] 61 | max_err = [] 62 | for _n in n: 63 | temp_err = np.zeros(num) 64 | 65 | dir = bbdir + _gt + '_' + str(_n) + 'n' + '/' + _gt + '_' 66 | dir = bdir + dir 67 | 68 | for j in range(times): 69 | ndir = dir + _algs + '_n_' + \ 70 | str(_n) + '_m_' + str(samples) + '_' + str(j) + '.npy' 71 | sv = load_npy(ndir) 72 | if norm: 73 | sv /= np.sum(sv) 74 | 75 | for i in range(len(sv)): 76 | if exact[i] == 0: 77 | continue 78 | temp_err[i] += abs((sv[i] - exact[i]) / exact[i]) 79 | 80 | temp_err /= times 81 | ar = np.mean(temp_err) 82 | mr = np.max(temp_err) 83 | print(_gt, _n, _algs, (ar, mr)) 84 | max_err.append(mr) 85 | avg_err.append(ar) 86 | res_max_err.append(tuple(max_err)) 87 | res_avg_err.append(tuple(avg_err)) 88 | 89 | a = pd.DataFrame(res_avg_err) 90 | a.to_csv(_gt + '_avg.csv') 91 | a = pd.DataFrame(res_avg_err) 92 | a.to_csv(_gt + '_max.csv') 93 | 94 | 95 | if __name__ == '__main__': 96 | voting_exact = [0.08831, 0.07973, 0.05096, 0.04898, 0.04898, 0.04700, 0.03917, 0.03147, 0.03147, 0.02577, 0.02388, 97 | 0.02388, 0.02200, 0.02200, 0.02200, 0.02013, 0.01827, 0.01827, 0.01827, 0.01827, 0.01641, 0.01641, 98 | 0.01641, 0.01641, 0.01456, 0.01456, 0.01272, 0.01272, 0.01272, 0.01272, 0.01088, 0.01088, 0.01088, 0.01088, 99 | 0.009053, 0.007230, 0.007230, 0.007230, 0.007230, 0.007230, 0.007230, 0.007230, 0.007230, 0.007230, 100 | 0.005412, 0.005412, 0.005412, 0.005412, 0.005412, 0.005412, 0.005412] 101 | 102 | compute_error(['voting'], [51], 1000, ['mc', 'mcn', 'mch', 'cc', 'ccn', 'ccb'], 1, 103 | voting_exact, bbdir='error_', norm=False) 104 | -------------------------------------------------------------------------------- /exps/gt_sample.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import os # NOQA: E402 3 | sys.path.append("..") # NOQA: E402 4 | from shapley.utils import * 5 | from shapley.game import * 6 | from shapley.gtsv import * 7 | import os 8 | from sklearn import svm 9 | 10 | 11 | def run(gt, n, alg, times, samples, w=True, bdir='', proc_num=40): 12 | if gt != 'model': 13 | if w: 14 | game = Game(gt, n, w='w_' + str(n) + '.npy') 15 | else: 16 | game = Game(gt, n) 17 | else: 18 | x_train, y_train, x_test, y_test, columns_name = preprocess_data_sub( 19 | 'b_train.csv', 'b_test.csv') 20 | # model = svm.LinearSVC(dual=False) 21 | model = svm.SVC(decision_function_shape='ovo') 22 | game = Game(gt, n, None, x_train, y_train, x_test, y_test, model) 23 | print("total acc:", game.eval_utility([i for i in range(n)])) 24 | 25 | dir = os.path.join( 26 | 'res', bdir + game.gt + '_' + str(game.n) + 'n') 27 | if not os.path.exists(dir): 28 | os.mkdir(dir) 29 | dir += '/' 30 | 31 | if 'mc' in alg: 32 | for _ in range(times): 33 | for sample in samples: 34 | filename = dir + gt + '_mc_n_' + \ 35 | str(n) + '_m_' + str(sample) + '_' + str(_) + '.npy' 36 | m = sample 37 | mc_sv = mc_shap(game, m, proc_num) 38 | np.save(filename, mc_sv) 39 | print('finish mc', gt, n) 40 | 41 | print() 42 | if 'mch' in alg: 43 | for _ in range(times): 44 | for sample in samples: 45 | filename = dir + gt + '_mch_n_' + \ 46 | str(n) + '_m_' + str(sample) + '_' + str(_) + '.npy' 47 | m = sample 48 | mc_sv = mch(game, m, proc_num) 49 | np.save(filename, mc_sv) 50 | print('finish mch', gt, n) 51 | 52 | print() 53 | if 'mcn' in alg: 54 | for _ in range(times): 55 | for sample in samples: 56 | filename = dir + gt + '_mcn_n_' + \ 57 | str(n) + '_m_' + str(sample) + '_' + str(_) + '.npy' 58 | m = sample * n 59 | mc_sv = mcn(game, m, proc_num) 60 | np.save(filename, mc_sv) 61 | print('finish mcn', gt, n) 62 | 63 | print() 64 | if 'cc' in alg: 65 | for _ in range(times): 66 | for sample in samples: 67 | filename = dir + gt + '_cc_n_' + \ 68 | str(n) + '_m_' + str(sample) + '_' + str(_) + '.npy' 69 | m = sample * n 70 | mc_sv = cc_shap(game, m, proc_num) 71 | np.save(filename, mc_sv) 72 | print('finish cc', gt, n) 73 | 74 | print() 75 | if 'ccn' in alg: 76 | for _ in range(times): 77 | for sample in samples: 78 | filename = dir + gt + '_ccn_n_' + \ 79 | str(n) + '_m_' + str(sample) + '_' + str(_) + '.npy' 80 | m = sample * n 81 | initial_m = max(2, int(m / (n * n * 2))) 82 | print("initial_m:", initial_m) 83 | mc_sv = ccshap_neyman(game, initial_m, m, proc_num) 84 | np.save(filename, mc_sv) 85 | print('finish ccn', gt, n) 86 | 87 | print() 88 | if 'ccb' in alg: 89 | initial_m_ocb = 1 90 | r = 10 91 | thelta = 5 92 | flag = False 93 | for _ in range(times): 94 | for sample in samples: 95 | filename = dir + gt + '_ccb_n_' + \ 96 | str(n) + '_m_' + str(sample) + '_' + str(_) + '.npy' 97 | m = sample * n 98 | mc_sv = ccshap_bernstein( 99 | game, m, initial_m_ocb, r, thelta, flag) 100 | np.save(filename, mc_sv) 101 | print('finish ccb') 102 | 103 | 104 | if __name__ == '__main__': 105 | times = 1 106 | proc_num = 40 107 | ns = [51] 108 | gts = ['voting'] 109 | alg = ['mc', 'mcn', 'mch', 'cc', 'ccn', 'ccb'] 110 | samples = [1000] 111 | 112 | for i in range(len(ns)): 113 | run(gts[i], ns[i], alg, times, samples, w=False, 114 | bdir='error_', proc_num=proc_num) 115 | -------------------------------------------------------------------------------- /exps/data_files/iris.data: -------------------------------------------------------------------------------- 1 | F1,F2,F3,F4,Y 2 | 5.1,3.5,1.4,0.2,Iris-setosa 3 | 4.9,3.0,1.4,0.2,Iris-setosa 4 | 4.7,3.2,1.3,0.2,Iris-setosa 5 | 4.6,3.1,1.5,0.2,Iris-setosa 6 | 5.0,3.6,1.4,0.2,Iris-setosa 7 | 5.4,3.9,1.7,0.4,Iris-setosa 8 | 4.6,3.4,1.4,0.3,Iris-setosa 9 | 5.0,3.4,1.5,0.2,Iris-setosa 10 | 4.4,2.9,1.4,0.2,Iris-setosa 11 | 4.9,3.1,1.5,0.1,Iris-setosa 12 | 5.4,3.7,1.5,0.2,Iris-setosa 13 | 4.8,3.4,1.6,0.2,Iris-setosa 14 | 4.8,3.0,1.4,0.1,Iris-setosa 15 | 4.3,3.0,1.1,0.1,Iris-setosa 16 | 5.8,4.0,1.2,0.2,Iris-setosa 17 | 5.7,4.4,1.5,0.4,Iris-setosa 18 | 5.4,3.9,1.3,0.4,Iris-setosa 19 | 5.1,3.5,1.4,0.3,Iris-setosa 20 | 5.7,3.8,1.7,0.3,Iris-setosa 21 | 5.1,3.8,1.5,0.3,Iris-setosa 22 | 5.4,3.4,1.7,0.2,Iris-setosa 23 | 5.1,3.7,1.5,0.4,Iris-setosa 24 | 4.6,3.6,1.0,0.2,Iris-setosa 25 | 5.1,3.3,1.7,0.5,Iris-setosa 26 | 4.8,3.4,1.9,0.2,Iris-setosa 27 | 5.0,3.0,1.6,0.2,Iris-setosa 28 | 5.0,3.4,1.6,0.4,Iris-setosa 29 | 5.2,3.5,1.5,0.2,Iris-setosa 30 | 5.2,3.4,1.4,0.2,Iris-setosa 31 | 4.7,3.2,1.6,0.2,Iris-setosa 32 | 4.8,3.1,1.6,0.2,Iris-setosa 33 | 5.4,3.4,1.5,0.4,Iris-setosa 34 | 5.2,4.1,1.5,0.1,Iris-setosa 35 | 5.5,4.2,1.4,0.2,Iris-setosa 36 | 4.9,3.1,1.5,0.1,Iris-setosa 37 | 5.0,3.2,1.2,0.2,Iris-setosa 38 | 5.5,3.5,1.3,0.2,Iris-setosa 39 | 4.9,3.1,1.5,0.1,Iris-setosa 40 | 4.4,3.0,1.3,0.2,Iris-setosa 41 | 5.1,3.4,1.5,0.2,Iris-setosa 42 | 5.0,3.5,1.3,0.3,Iris-setosa 43 | 4.5,2.3,1.3,0.3,Iris-setosa 44 | 4.4,3.2,1.3,0.2,Iris-setosa 45 | 5.0,3.5,1.6,0.6,Iris-setosa 46 | 5.1,3.8,1.9,0.4,Iris-setosa 47 | 4.8,3.0,1.4,0.3,Iris-setosa 48 | 5.1,3.8,1.6,0.2,Iris-setosa 49 | 4.6,3.2,1.4,0.2,Iris-setosa 50 | 5.3,3.7,1.5,0.2,Iris-setosa 51 | 5.0,3.3,1.4,0.2,Iris-setosa 52 | 7.0,3.2,4.7,1.4,Iris-versicolor 53 | 6.4,3.2,4.5,1.5,Iris-versicolor 54 | 6.9,3.1,4.9,1.5,Iris-versicolor 55 | 5.5,2.3,4.0,1.3,Iris-versicolor 56 | 6.5,2.8,4.6,1.5,Iris-versicolor 57 | 5.7,2.8,4.5,1.3,Iris-versicolor 58 | 6.3,3.3,4.7,1.6,Iris-versicolor 59 | 4.9,2.4,3.3,1.0,Iris-versicolor 60 | 6.6,2.9,4.6,1.3,Iris-versicolor 61 | 5.2,2.7,3.9,1.4,Iris-versicolor 62 | 5.0,2.0,3.5,1.0,Iris-versicolor 63 | 5.9,3.0,4.2,1.5,Iris-versicolor 64 | 6.0,2.2,4.0,1.0,Iris-versicolor 65 | 6.1,2.9,4.7,1.4,Iris-versicolor 66 | 5.6,2.9,3.6,1.3,Iris-versicolor 67 | 6.7,3.1,4.4,1.4,Iris-versicolor 68 | 5.6,3.0,4.5,1.5,Iris-versicolor 69 | 5.8,2.7,4.1,1.0,Iris-versicolor 70 | 6.2,2.2,4.5,1.5,Iris-versicolor 71 | 5.6,2.5,3.9,1.1,Iris-versicolor 72 | 5.9,3.2,4.8,1.8,Iris-versicolor 73 | 6.1,2.8,4.0,1.3,Iris-versicolor 74 | 6.3,2.5,4.9,1.5,Iris-versicolor 75 | 6.1,2.8,4.7,1.2,Iris-versicolor 76 | 6.4,2.9,4.3,1.3,Iris-versicolor 77 | 6.6,3.0,4.4,1.4,Iris-versicolor 78 | 6.8,2.8,4.8,1.4,Iris-versicolor 79 | 6.7,3.0,5.0,1.7,Iris-versicolor 80 | 6.0,2.9,4.5,1.5,Iris-versicolor 81 | 5.7,2.6,3.5,1.0,Iris-versicolor 82 | 5.5,2.4,3.8,1.1,Iris-versicolor 83 | 5.5,2.4,3.7,1.0,Iris-versicolor 84 | 5.8,2.7,3.9,1.2,Iris-versicolor 85 | 6.0,2.7,5.1,1.6,Iris-versicolor 86 | 5.4,3.0,4.5,1.5,Iris-versicolor 87 | 6.0,3.4,4.5,1.6,Iris-versicolor 88 | 6.7,3.1,4.7,1.5,Iris-versicolor 89 | 6.3,2.3,4.4,1.3,Iris-versicolor 90 | 5.6,3.0,4.1,1.3,Iris-versicolor 91 | 5.5,2.5,4.0,1.3,Iris-versicolor 92 | 5.5,2.6,4.4,1.2,Iris-versicolor 93 | 6.1,3.0,4.6,1.4,Iris-versicolor 94 | 5.8,2.6,4.0,1.2,Iris-versicolor 95 | 5.0,2.3,3.3,1.0,Iris-versicolor 96 | 5.6,2.7,4.2,1.3,Iris-versicolor 97 | 5.7,3.0,4.2,1.2,Iris-versicolor 98 | 5.7,2.9,4.2,1.3,Iris-versicolor 99 | 6.2,2.9,4.3,1.3,Iris-versicolor 100 | 5.1,2.5,3.0,1.1,Iris-versicolor 101 | 5.7,2.8,4.1,1.3,Iris-versicolor 102 | 6.3,3.3,6.0,2.5,Iris-virginica 103 | 5.8,2.7,5.1,1.9,Iris-virginica 104 | 7.1,3.0,5.9,2.1,Iris-virginica 105 | 6.3,2.9,5.6,1.8,Iris-virginica 106 | 6.5,3.0,5.8,2.2,Iris-virginica 107 | 7.6,3.0,6.6,2.1,Iris-virginica 108 | 4.9,2.5,4.5,1.7,Iris-virginica 109 | 7.3,2.9,6.3,1.8,Iris-virginica 110 | 6.7,2.5,5.8,1.8,Iris-virginica 111 | 7.2,3.6,6.1,2.5,Iris-virginica 112 | 6.5,3.2,5.1,2.0,Iris-virginica 113 | 6.4,2.7,5.3,1.9,Iris-virginica 114 | 6.8,3.0,5.5,2.1,Iris-virginica 115 | 5.7,2.5,5.0,2.0,Iris-virginica 116 | 5.8,2.8,5.1,2.4,Iris-virginica 117 | 6.4,3.2,5.3,2.3,Iris-virginica 118 | 6.5,3.0,5.5,1.8,Iris-virginica 119 | 7.7,3.8,6.7,2.2,Iris-virginica 120 | 7.7,2.6,6.9,2.3,Iris-virginica 121 | 6.0,2.2,5.0,1.5,Iris-virginica 122 | 6.9,3.2,5.7,2.3,Iris-virginica 123 | 5.6,2.8,4.9,2.0,Iris-virginica 124 | 7.7,2.8,6.7,2.0,Iris-virginica 125 | 6.3,2.7,4.9,1.8,Iris-virginica 126 | 6.7,3.3,5.7,2.1,Iris-virginica 127 | 7.2,3.2,6.0,1.8,Iris-virginica 128 | 6.2,2.8,4.8,1.8,Iris-virginica 129 | 6.1,3.0,4.9,1.8,Iris-virginica 130 | 6.4,2.8,5.6,2.1,Iris-virginica 131 | 7.2,3.0,5.8,1.6,Iris-virginica 132 | 7.4,2.8,6.1,1.9,Iris-virginica 133 | 7.9,3.8,6.4,2.0,Iris-virginica 134 | 6.4,2.8,5.6,2.2,Iris-virginica 135 | 6.3,2.8,5.1,1.5,Iris-virginica 136 | 6.1,2.6,5.6,1.4,Iris-virginica 137 | 7.7,3.0,6.1,2.3,Iris-virginica 138 | 6.3,3.4,5.6,2.4,Iris-virginica 139 | 6.4,3.1,5.5,1.8,Iris-virginica 140 | 6.0,3.0,4.8,1.8,Iris-virginica 141 | 6.9,3.1,5.4,2.1,Iris-virginica 142 | 6.7,3.1,5.6,2.4,Iris-virginica 143 | 6.9,3.1,5.1,2.3,Iris-virginica 144 | 5.8,2.7,5.1,1.9,Iris-virginica 145 | 6.8,3.2,5.9,2.3,Iris-virginica 146 | 6.7,3.3,5.7,2.5,Iris-virginica 147 | 6.7,3.0,5.2,2.3,Iris-virginica 148 | 6.3,2.5,5.0,1.9,Iris-virginica 149 | 6.5,3.0,5.2,2.0,Iris-virginica 150 | 6.2,3.4,5.4,2.3,Iris-virginica 151 | 5.9,3.0,5.1,1.8,Iris-virginica 152 | 153 | -------------------------------------------------------------------------------- /exps/data_files/b_200.csv: -------------------------------------------------------------------------------- 1 | f1,f2,f3,f4,f5,f6,f7,f8,f9,Y 2 | 5,1,1,1,1,1,3,1,1,2 3 | 3,2,2,1,2,1,2,3,1,2 4 | 2,1,1,1,2,1,1,1,1,2 5 | 5,8,9,4,3,10,7,1,1,4 6 | 5,3,5,1,8,10,5,3,1,4 7 | 5,3,3,2,3,1,3,1,1,2 8 | 1,1,1,1,2,1,3,1,1,2 9 | 1,1,1,1,2,1,2,1,1,2 10 | 2,7,10,10,7,10,4,9,4,4 11 | 5,1,1,1,2,1,3,1,1,2 12 | 4,1,1,1,2,1,3,1,1,2 13 | 5,3,4,1,8,10,4,9,1,4 14 | 1,1,1,1,2,1,3,1,1,2 15 | 4,1,1,1,2,1,1,1,1,2 16 | 6,3,4,1,5,2,3,9,1,4 17 | 4,1,3,1,2,1,2,1,1,2 18 | 4,1,1,1,2,1,3,1,1,2 19 | 5,1,1,1,3,2,2,2,1,2 20 | 1,1,1,1,2,1,3,1,1,2 21 | 4,1,3,3,2,1,1,1,1,2 22 | 4,1,1,1,2,1,1,1,1,2 23 | 3,1,1,1,2,1,1,1,1,2 24 | 1,1,1,1,1,1,1,1,1,2 25 | 3,3,2,1,2,3,3,1,1,2 26 | 5,1,1,1,2,1,3,1,2,2 27 | 3,1,1,1,2,1,2,2,1,2 28 | 3,3,2,6,3,3,3,5,1,2 29 | 1,1,4,1,2,1,2,1,1,2 30 | 5,1,2,1,2,1,1,1,1,2 31 | 10,6,6,2,4,10,9,7,1,4 32 | 5,1,3,3,2,2,2,3,1,2 33 | 4,1,1,1,1,1,2,1,1,2 34 | 2,1,1,1,2,5,1,1,1,2 35 | 8,10,10,8,7,10,9,7,1,4 36 | 1,1,1,1,2,1,2,1,1,2 37 | 5,1,1,1,2,1,2,1,1,2 38 | 3,1,1,1,2,1,2,1,1,2 39 | 1,1,1,1,2,1,3,1,1,2 40 | 4,1,1,1,2,1,3,1,1,2 41 | 7,6,6,3,2,10,7,1,1,4 42 | 10,3,3,10,2,10,7,3,3,4 43 | 2,1,1,1,3,1,2,1,1,2 44 | 2,1,1,1,2,1,1,1,1,2 45 | 1,1,1,1,2,1,1,1,1,2 46 | 3,1,1,1,2,1,3,1,1,2 47 | 3,1,1,1,2,1,2,3,1,2 48 | 4,1,1,3,1,1,2,1,1,2 49 | 5,6,7,8,8,10,3,10,3,4 50 | 5,1,1,1,1,1,1,1,1,2 51 | 5,1,4,1,2,1,3,2,1,2 52 | 5,1,3,1,2,1,2,1,1,2 53 | 7,4,6,4,6,1,4,3,1,4 54 | 1,1,1,1,2,1,1,1,1,2 55 | 10,4,3,10,4,10,10,1,1,4 56 | 1,1,2,1,2,1,2,1,1,2 57 | 10,10,10,10,10,1,8,8,8,4 58 | 2,1,1,1,2,1,3,1,1,2 59 | 5,1,1,1,2,1,2,2,1,2 60 | 6,1,1,1,1,1,1,1,1,2 61 | 5,1,1,1,2,1,2,1,1,2 62 | 5,10,10,9,6,10,7,10,5,4 63 | 3,1,1,2,2,1,1,1,1,2 64 | 1,2,1,3,2,1,1,2,1,2 65 | 3,10,8,7,6,9,9,3,8,4 66 | 5,1,1,1,2,1,1,1,1,2 67 | 4,10,4,7,3,10,9,10,1,4 68 | 4,1,1,2,2,1,2,1,1,2 69 | 1,1,1,1,2,1,3,1,1,2 70 | 9,5,8,1,2,3,2,1,5,4 71 | 1,3,1,1,2,1,2,2,1,2 72 | 1,1,1,1,2,1,2,1,1,2 73 | 4,1,1,3,1,5,2,1,1,4 74 | 7,5,6,10,5,10,7,9,4,4 75 | 4,4,2,1,2,5,2,1,2,2 76 | 5,2,1,1,2,1,3,1,1,2 77 | 3,2,1,1,2,2,3,1,1,2 78 | 10,10,10,8,6,1,8,9,1,4 79 | 3,1,1,1,2,1,1,1,1,2 80 | 1,1,1,1,2,1,1,1,1,2 81 | 2,1,1,1,2,1,3,1,1,2 82 | 10,4,3,1,3,3,6,5,2,4 83 | 5,2,2,2,2,1,1,1,2,2 84 | 5,1,1,1,2,1,3,1,1,2 85 | 1,1,1,1,1,1,2,1,1,2 86 | 3,3,6,4,5,8,4,4,1,4 87 | 1,1,1,1,2,1,1,1,1,2 88 | 10,3,6,2,3,5,4,10,2,4 89 | 5,1,1,1,2,1,1,1,1,2 90 | 8,4,5,1,2,1,7,3,1,4 91 | 5,1,1,2,2,1,2,1,1,2 92 | 5,10,10,3,7,3,8,10,2,4 93 | 8,10,3,2,6,4,3,10,1,4 94 | 5,2,2,2,1,1,2,1,1,2 95 | 5,3,4,1,4,1,3,1,1,2 96 | 1,1,1,1,1,1,2,1,1,2 97 | 8,10,10,10,8,10,10,7,3,4 98 | 1,2,2,1,2,1,2,1,1,2 99 | 3,1,4,1,2,1,1,1,1,2 100 | 4,1,1,1,2,1,1,1,1,2 101 | 8,10,8,8,4,8,7,7,1,4 102 | 2,1,1,1,2,1,2,1,1,2 103 | 10,10,10,7,9,10,7,10,10,4 104 | 1,1,1,1,2,4,1,1,1,2 105 | 6,6,7,10,3,10,8,10,2,4 106 | 1,1,1,1,2,1,1,1,1,2 107 | 3,1,1,1,2,1,2,1,1,2 108 | 4,3,3,1,2,1,3,3,1,2 109 | 2,3,4,4,2,5,2,5,1,4 110 | 3,1,1,1,2,1,2,1,1,2 111 | 2,1,1,2,2,1,3,1,1,2 112 | 3,1,1,1,2,1,2,1,1,2 113 | 7,3,4,4,3,3,3,2,7,4 114 | 1,2,2,1,2,1,1,1,1,2 115 | 5,1,1,1,2,1,2,1,1,2 116 | 3,1,1,1,2,1,1,1,1,2 117 | 3,1,1,1,3,1,2,1,1,2 118 | 5,2,2,2,2,2,3,2,2,2 119 | 7,2,4,1,6,10,5,4,3,4 120 | 5,1,1,3,2,1,1,1,1,2 121 | 7,6,3,2,5,10,7,4,6,4 122 | 1,1,1,1,2,1,1,1,1,2 123 | 2,1,1,1,2,1,2,1,1,2 124 | 5,8,8,10,5,10,8,10,3,4 125 | 6,1,1,1,2,1,3,1,1,2 126 | 8,3,4,9,3,10,3,3,1,4 127 | 3,1,2,1,2,1,3,1,1,2 128 | 1,1,1,1,2,1,2,1,1,2 129 | 10,10,8,6,4,5,8,10,1,4 130 | 4,1,1,1,2,1,2,1,1,2 131 | 5,2,3,1,6,10,5,1,1,4 132 | 10,10,10,6,8,4,8,5,1,4 133 | 10,4,6,1,2,10,5,3,1,4 134 | 1,1,1,1,2,1,2,1,2,2 135 | 3,1,2,1,2,1,2,1,1,2 136 | 8,10,10,8,6,9,3,10,10,4 137 | 3,1,1,1,2,1,2,1,1,2 138 | 7,8,7,2,4,8,3,8,2,4 139 | 10,10,10,8,2,10,4,1,1,4 140 | 5,1,1,1,2,1,3,1,1,2 141 | 2,1,1,1,3,1,2,1,1,2 142 | 4,1,1,1,2,1,3,6,1,2 143 | 2,1,1,1,2,1,1,1,1,2 144 | 3,1,1,1,2,1,2,1,1,2 145 | 2,3,1,1,5,1,1,1,1,2 146 | 1,1,1,1,2,1,1,1,1,2 147 | 2,1,1,2,2,1,3,1,1,2 148 | 1,4,3,10,4,10,5,6,1,4 149 | 3,1,2,1,2,1,2,1,1,2 150 | 2,1,1,1,2,1,1,1,5,2 151 | 8,4,7,1,3,10,3,9,2,4 152 | 3,1,1,1,2,1,3,1,1,2 153 | 1,5,8,6,5,8,7,10,1,4 154 | 10,6,3,6,4,10,7,8,4,4 155 | 5,1,2,10,4,5,2,1,1,2 156 | 1,1,1,1,2,1,2,1,1,2 157 | 1,1,1,1,2,1,2,1,1,2 158 | 4,1,1,1,2,2,3,2,1,2 159 | 1,1,1,1,2,1,2,1,1,2 160 | 10,3,3,1,2,10,7,6,1,4 161 | 1,1,1,1,2,1,3,1,1,2 162 | 5,1,2,1,2,1,2,1,1,2 163 | 5,1,1,1,2,1,2,2,1,2 164 | 1,1,3,1,2,1,2,1,1,2 165 | 3,1,1,1,2,1,3,2,1,2 166 | 5,1,1,2,1,1,2,1,1,2 167 | 1,1,1,1,2,1,1,1,1,2 168 | 1,1,1,1,2,2,1,1,1,2 169 | 4,3,1,1,2,1,4,8,1,2 170 | 1,1,1,1,1,1,1,1,1,2 171 | 5,2,1,1,2,1,1,1,1,2 172 | 1,1,1,1,1,1,2,1,1,2 173 | 4,1,1,1,2,1,1,1,1,2 174 | 5,10,10,6,10,10,10,6,5,4 175 | 5,7,10,6,5,10,7,5,1,4 176 | 3,1,1,3,8,1,5,8,1,2 177 | 4,1,1,1,2,1,3,1,1,2 178 | 1,2,2,1,2,1,1,1,1,2 179 | 9,8,8,9,6,3,4,1,1,4 180 | 5,10,6,1,10,4,4,10,10,4 181 | 8,6,7,3,3,10,3,4,2,4 182 | 2,1,1,1,2,1,2,2,1,2 183 | 5,1,2,1,2,1,1,1,1,2 184 | 6,3,3,5,3,10,3,5,3,2 185 | 8,4,6,3,3,1,4,3,1,2 186 | 5,3,3,3,2,3,4,4,1,4 187 | 10,2,2,1,2,6,1,1,2,4 188 | 1,1,1,1,1,1,1,1,1,2 189 | 7,8,3,7,4,5,7,8,2,4 190 | 5,10,10,3,8,1,5,10,3,4 191 | 3,1,1,1,2,1,3,1,1,2 192 | 10,3,5,4,3,7,3,5,3,4 193 | 1,1,1,2,1,3,1,1,7,2 194 | 10,5,5,6,8,8,7,1,1,4 195 | 8,6,4,10,10,1,3,5,1,4 196 | 4,1,2,1,2,1,1,1,1,2 197 | 10,8,7,4,3,10,7,9,1,4 198 | 4,1,1,1,2,1,3,2,1,2 199 | 5,10,8,10,8,10,3,6,3,4 200 | 1,2,3,1,2,1,1,1,1,2 201 | 1,1,1,1,1,1,1,1,1,2 202 | -------------------------------------------------------------------------------- /shapley/utils.py: -------------------------------------------------------------------------------- 1 | import math 2 | import os 3 | import time 4 | from pathlib import Path 5 | from itertools import chain, combinations 6 | import numpy as np 7 | import pandas as pd 8 | from typing import Iterator 9 | from matplotlib import pyplot as plt 10 | 11 | 12 | def power_set(iterable) -> Iterator: 13 | """Generate the power set of the all elements of an iterable obj. 14 | """ 15 | s = list(iterable) 16 | return chain.from_iterable( 17 | combinations(s, r) for r in range(1, 18 | len(s) + 1)) 19 | 20 | 21 | def time_function(f, *args) -> float: 22 | """Call a function f with args and return the time (in seconds) 23 | that it took to execute. 24 | """ 25 | 26 | tic = time.time() 27 | f(*args) 28 | toc = time.time() 29 | return toc - tic 30 | 31 | 32 | def get_ele_idxs(ele, ele_list) -> list: 33 | """Return all index of a specific element in the element list 34 | """ 35 | idx = -1 36 | if not isinstance(ele_list, list): 37 | ele_list = list(ele_list) 38 | n = ele_list.count(ele) 39 | idxs = [0] * n 40 | for i in range(n): 41 | idx = ele_list.index(ele, idx + 1, len(ele_list)) 42 | idxs[i] = idx 43 | return idxs 44 | 45 | 46 | def split_num(m_list, num) -> np.ndarray: 47 | """Split num 48 | """ 49 | perm_arr_list = None 50 | local_state = np.random.RandomState(None) 51 | for m in m_list: 52 | assert m >= 0 53 | if m != 0: 54 | m = int(m) 55 | quotient = int(m / num) 56 | remainder = m % num 57 | if remainder > 0: 58 | perm_arr = [[quotient]] * (num - remainder) + [[quotient + 1] 59 | ] * remainder 60 | local_state.shuffle(perm_arr) 61 | else: 62 | perm_arr = [[quotient]] * num 63 | else: 64 | perm_arr = [[0]] * num 65 | 66 | if perm_arr_list is None: 67 | perm_arr_list = perm_arr 68 | else: 69 | perm_arr_list = np.concatenate((perm_arr_list, perm_arr), axis=-1) 70 | 71 | return np.asarray(perm_arr_list) 72 | 73 | 74 | def split_permutation(m, num) -> np.ndarray: 75 | """Split permutation 76 | """ 77 | assert m > 0 78 | quotient = int(m / num) 79 | remainder = m % num 80 | 81 | perm_arr = [] 82 | r = [] 83 | for i in range(m): 84 | r.append(i) 85 | if (remainder > 0 86 | and len(r) == quotient + 1) or (remainder <= 0 87 | and len(r) == quotient): 88 | remainder -= 1 89 | perm_arr.append(r) 90 | r = [] 91 | return perm_arr 92 | 93 | 94 | def split_permutation_num(m, num) -> np.ndarray: 95 | """Split permutation num 96 | """ 97 | assert m > 0 98 | quotient = int(m / num) 99 | remainder = m % num 100 | if remainder > 0: 101 | perm_arr = [quotient] * (num - remainder) + [quotient + 1] * remainder 102 | else: 103 | perm_arr = [quotient] * num 104 | return np.asarray(perm_arr) 105 | 106 | 107 | def split_permutations_t_list(permutations, t_list, num) -> list: 108 | """Split permutation num 109 | """ 110 | m = len(permutations) 111 | m_list = split_permutation_num(m, num) 112 | res = list() 113 | for local_m in m_list: 114 | res.append([permutations[:local_m], t_list[:local_m]]) 115 | permutations = permutations[local_m:] 116 | t_list = t_list[local_m:] 117 | return res 118 | 119 | 120 | def save_npy(file_name, arr): 121 | check_folder('res') 122 | if (isinstance(arr, np.ndarray)): 123 | np.save(Path.cwd().joinpath('res').joinpath(file_name), arr) 124 | 125 | 126 | def load_npy(file_name): 127 | check_folder('res') 128 | arr = np.load(Path.cwd().joinpath('res').joinpath(file_name)) 129 | if (isinstance(arr, np.ndarray)): 130 | return arr 131 | 132 | 133 | def check_folder(floder_name): 134 | """Check whether the folder exists 135 | """ 136 | if Path(floder_name).exists() == False: 137 | prefix = Path.cwd() 138 | Path.mkdir(prefix.joinpath(floder_name)) 139 | 140 | 141 | def normalize(list1, list2): 142 | """Normalize list1 to list2 143 | """ 144 | coef = np.sum(list1) / np.sum(list2) 145 | return coef * list2 146 | 147 | 148 | def power_set(iterable): 149 | s = list(iterable) 150 | return chain.from_iterable( 151 | combinations(s, r) for r in range(1, 152 | len(s) + 1)) 153 | 154 | 155 | def preprocess_data_sub(train_file_name, valid_file_name): 156 | """Process the training dataset and the valid dataset 157 | """ 158 | train_df = pd.read_csv( 159 | os.path.abspath('.') + '/data_files/' + train_file_name) 160 | valid_df = pd.read_csv( 161 | os.path.abspath('.') + '/data_files/' + valid_file_name) 162 | 163 | # train_df = pd.read_csv(r'../data_files/' + train_file_name) 164 | # valid_df = pd.read_csv(r'../data_files/' + valid_file_name) 165 | 166 | columns_name = train_df.columns 167 | 168 | x_train = train_df.drop(columns=['Y']).values 169 | x_valid = valid_df.drop(columns=['Y']).values 170 | y_train = train_df.Y.values 171 | y_valid = valid_df.Y.values 172 | 173 | return x_train, y_train, x_valid, y_valid, columns_name 174 | 175 | 176 | def show(baseline: list, others: list, labels: list, title: str): 177 | xData = [i for i in range(baseline.__len__())] 178 | lines = [list(baseline)] 179 | for l in others: 180 | lines.append(list(l)) 181 | for i in range(len(lines)): 182 | plt.scatter(xData, lines[i], label=labels[i]) 183 | 184 | plt.title(title) 185 | plt.legend() 186 | plt.show() 187 | -------------------------------------------------------------------------------- /shapley/game.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | from sklearn import metrics 3 | from shapley.utils import load_npy 4 | 5 | 6 | class Game: 7 | def __init__(self, 8 | gt, 9 | n, 10 | w=None, 11 | x_train=None, 12 | y_train=None, 13 | x_test=None, 14 | y_test=None, 15 | model=None): 16 | self.gt = gt 17 | self.n = n 18 | self.x_train = x_train 19 | self.y_train = y_train 20 | self.x_test = x_test 21 | self.y_test = y_test 22 | self.model = model 23 | 24 | if w is None: 25 | if gt == 'voting': 26 | self.w = [ 27 | 45, 41, 27, 26, 26, 25, 21, 17, 17, 14, 13, 13, 12, 12, 12, 28 | 11, 10, 10, 10, 10, 9, 9, 9, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 29 | 6, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3 30 | ] 31 | self.hw = np.sum(self.w) / 2 32 | elif gt == 'airport': 33 | self.w = [ 34 | 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 35 | 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 36 | 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 37 | 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 38 | 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 39 | ] 40 | else: 41 | self.w = load_npy(w) 42 | if gt == 'voting': 43 | self.hw = np.sum(self.w) / 2 44 | 45 | if gt != 'tree' and gt != 'model' and gt != 'feature': 46 | self.w = np.array(self.w) 47 | 48 | if gt != 'feature': 49 | self.null = 0 50 | else: 51 | S = np.zeros((1, self.n), dtype=bool) 52 | self.null = self.model(S)[0][0] 53 | 54 | def eval_utility(self, x, m=None, hsw=None): 55 | """Evaluate the coalition utility. 56 | """ 57 | if len(x) == 0: 58 | if self.gt == 'voting' and m is not None: 59 | return self.null, self.null 60 | else: 61 | return self.null 62 | if self.gt == 'voting': 63 | if m == 'mcx': 64 | if hsw is None: 65 | r = np.sum(self.w[x]) 66 | else: 67 | r = hsw + self.w[x[-1]] 68 | return 1 if r > self.hw else 0, r 69 | else: 70 | r = np.sum(self.w[x]) 71 | return 1 if r > self.hw else 0 72 | elif self.gt == 'airport': 73 | if m == 'mcx': 74 | if hsw is None: 75 | r = np.max(self.w[x]) 76 | else: 77 | r = max(hsw, self.w[x[-1]]) 78 | else: 79 | r = np.max(self.w[x]) 80 | return r 81 | elif self.gt == 'tree': 82 | if m is None: 83 | r = self.n 84 | x = np.sort(x) 85 | m = r - (x[-1] - x[0]) 86 | for i in range(1, len(x)): 87 | t = x[i] - x[i - 1] 88 | if t > m: 89 | m = t 90 | return r - m 91 | elif m == 'mcx': 92 | r = self.n 93 | add_x = x[-1] 94 | x = np.sort(x) 95 | m = r - (x[-1] - x[0]) 96 | for i in range(1, len(x)): 97 | t = x[i] - x[i - 1] 98 | if t > m: 99 | m = t 100 | u_2 = r - m 101 | 102 | x = np.delete(x, np.where(x == add_x)) 103 | if len(x) == 0: 104 | u_1 = self.null 105 | else: 106 | m = r - (x[-1] - x[0]) 107 | for i in range(1, len(x)): 108 | t = x[i] - x[i - 1] 109 | if t > m: 110 | m = t 111 | u_1 = r - m 112 | return u_1, u_2 113 | elif m == 'ccx': 114 | r = self.n 115 | x = np.sort(x) 116 | m = r - (x[-1] - x[0]) 117 | 118 | left_m = 0 119 | i = 0 120 | while i < len(x) and x[i] == i: 121 | left_m += 1 122 | i += 1 123 | 124 | if i != len(x): 125 | i = len(x) - 1 126 | temp_i = 0 127 | while i > -1 and x[i] == r - 1 - temp_i: 128 | left_m += 1 129 | i -= 1 130 | temp_i += 1 131 | 132 | temp_t = 1 133 | for i in range(1, len(x)): 134 | t = x[i] - x[i - 1] 135 | if t > m: 136 | m = t 137 | 138 | if x[i] == x[i - 1] + 1: 139 | temp_t += 1 140 | else: 141 | if temp_t > left_m: 142 | left_m = temp_t 143 | temp_t = 1 144 | left_m = max(left_m, temp_t) 145 | 146 | u_1 = r - m 147 | u_2 = r - left_m - 1 148 | if u_2 < 0: 149 | u_2 = 0 150 | return u_1, u_2 151 | elif self.gt == 'model': 152 | temp_x, temp_y = self.x_train[x], self.y_train[x] 153 | single_pred_label = (True 154 | if len(np.unique(temp_y)) == 1 else False) 155 | 156 | if single_pred_label: 157 | y_pred = [temp_y[0]] * len(self.y_test) 158 | else: 159 | try: 160 | self.model.fit(temp_x, temp_y) 161 | y_pred = self.model.predict(self.x_test) 162 | except: 163 | return None 164 | 165 | return metrics.accuracy_score(self.y_test, y_pred, normalize=True) 166 | elif self.gt == 'feature': 167 | S = np.zeros((1, self.n), dtype=bool) 168 | S[0][x] = 1 169 | u = self.model(S)[0][0] 170 | return u 171 | -------------------------------------------------------------------------------- /exps/data_files/b_300.csv: -------------------------------------------------------------------------------- 1 | f1,f2,f3,f4,f5,f6,f7,f8,f9,Y 2 | 4,1,1,1,2,1,2,1,1,2 3 | 1,1,1,1,2,1,3,1,1,2 4 | 5,2,2,2,1,1,2,1,1,2 5 | 2,1,1,1,2,1,2,1,1,2 6 | 5,1,1,1,2,1,2,1,1,2 7 | 5,1,1,3,2,1,1,1,1,2 8 | 2,1,1,1,3,1,2,1,1,2 9 | 3,1,1,1,2,1,3,1,1,2 10 | 10,5,8,10,3,10,5,1,3,4 11 | 1,1,1,1,2,1,3,1,1,2 12 | 8,10,10,1,3,6,3,9,1,4 13 | 10,4,3,2,3,10,5,3,2,4 14 | 10,8,7,4,3,10,7,9,1,4 15 | 7,3,2,10,5,10,5,4,4,4 16 | 7,4,5,10,2,10,3,8,2,4 17 | 5,1,1,1,2,1,3,1,1,2 18 | 10,10,10,3,10,10,9,10,1,4 19 | 5,5,7,8,6,10,7,4,1,4 20 | 1,1,3,1,2,1,2,1,1,2 21 | 1,1,1,1,2,10,3,1,1,2 22 | 7,8,8,7,3,10,7,2,3,4 23 | 4,1,2,1,2,1,1,1,1,2 24 | 5,1,1,1,2,1,2,1,1,2 25 | 1,1,1,1,2,1,2,1,1,2 26 | 5,1,1,1,2,1,2,2,1,2 27 | 5,1,1,1,2,2,3,3,1,2 28 | 5,1,1,1,2,1,3,2,1,2 29 | 5,10,10,9,6,10,7,10,5,4 30 | 7,4,7,4,3,7,7,6,1,4 31 | 1,1,1,1,1,1,1,1,1,2 32 | 1,1,1,1,1,1,1,1,1,2 33 | 3,2,2,2,2,1,3,2,1,2 34 | 6,10,7,7,6,4,8,10,2,4 35 | 4,2,1,1,2,2,3,1,1,2 36 | 10,10,10,8,6,8,7,10,1,4 37 | 1,1,1,1,2,1,1,1,1,2 38 | 2,1,1,1,2,1,3,1,1,2 39 | 5,1,1,6,3,1,2,1,1,2 40 | 3,1,1,1,2,1,3,1,1,2 41 | 5,7,4,1,6,1,7,10,3,4 42 | 10,10,10,7,10,10,8,2,1,4 43 | 1,1,1,1,2,1,2,1,1,2 44 | 1,1,1,1,2,1,2,1,1,2 45 | 4,1,1,1,2,1,2,1,1,2 46 | 4,1,1,1,2,1,2,1,1,2 47 | 5,3,1,1,2,1,1,1,1,2 48 | 1,1,1,1,2,1,2,1,1,2 49 | 4,1,1,1,2,3,2,1,1,2 50 | 3,1,1,3,2,1,1,1,1,2 51 | 2,5,7,6,4,10,7,6,1,4 52 | 5,1,1,1,2,1,1,1,1,2 53 | 1,1,1,1,2,4,1,1,1,2 54 | 2,1,1,1,2,1,2,1,1,2 55 | 3,1,1,1,2,1,2,1,1,2 56 | 1,1,1,1,1,1,2,1,1,2 57 | 1,1,1,1,2,1,1,1,1,2 58 | 3,1,1,1,2,1,2,1,1,2 59 | 4,2,3,5,3,8,7,6,1,4 60 | 7,5,6,10,5,10,7,9,4,4 61 | 10,10,10,2,10,10,5,3,3,4 62 | 5,1,1,1,2,1,3,1,1,2 63 | 8,2,3,1,6,3,7,1,1,4 64 | 5,1,1,1,2,1,2,1,1,2 65 | 4,1,1,1,2,1,3,1,1,2 66 | 9,7,7,5,5,10,7,8,3,4 67 | 5,1,1,1,2,1,2,1,1,2 68 | 1,1,1,1,2,1,1,1,1,2 69 | 1,1,1,1,2,1,2,1,1,2 70 | 1,1,1,1,2,1,1,1,1,2 71 | 1,2,2,1,2,1,2,1,1,2 72 | 10,9,8,7,6,4,7,10,3,4 73 | 5,3,3,4,2,4,3,4,1,4 74 | 3,1,1,1,2,1,1,1,1,2 75 | 5,3,6,1,2,1,1,1,1,2 76 | 3,1,1,1,2,1,2,1,1,2 77 | 1,1,1,1,2,1,2,1,2,2 78 | 5,1,3,1,2,1,2,1,1,2 79 | 3,1,1,1,2,1,1,1,1,2 80 | 5,1,3,1,2,1,2,1,1,2 81 | 5,4,3,1,2,1,2,3,1,2 82 | 1,1,1,1,1,1,3,1,1,2 83 | 4,1,1,1,2,1,3,1,1,2 84 | 1,1,1,1,2,1,1,1,1,2 85 | 2,3,1,1,3,1,1,1,1,2 86 | 10,10,7,8,7,1,10,10,3,4 87 | 3,1,1,1,2,1,2,1,1,2 88 | 10,8,8,2,8,10,4,8,10,4 89 | 3,1,1,1,2,1,2,1,1,2 90 | 4,1,1,1,2,1,1,1,1,2 91 | 5,1,1,1,2,1,1,1,1,2 92 | 2,1,1,1,2,1,3,1,1,2 93 | 1,5,8,6,5,8,7,10,1,4 94 | 1,1,1,1,1,1,1,1,1,2 95 | 2,3,2,2,2,2,3,1,1,2 96 | 1,1,3,1,2,1,1,1,1,2 97 | 2,1,1,1,2,1,3,1,1,2 98 | 8,7,4,4,5,3,5,10,1,4 99 | 6,1,1,1,2,1,3,1,1,2 100 | 5,2,4,1,1,1,1,1,1,2 101 | 10,3,4,5,3,10,4,1,1,4 102 | 6,1,3,1,2,1,3,1,1,2 103 | 5,10,6,1,10,4,4,10,10,4 104 | 9,9,10,3,6,10,7,10,6,4 105 | 8,10,10,8,6,9,3,10,10,4 106 | 5,2,2,2,2,1,2,2,1,2 107 | 1,2,2,1,2,1,1,1,1,2 108 | 3,1,1,1,2,1,1,1,1,2 109 | 2,1,1,2,2,1,1,1,1,2 110 | 1,1,1,1,2,1,2,1,1,2 111 | 3,1,1,1,2,1,2,1,2,2 112 | 1,2,3,1,2,1,1,1,1,2 113 | 1,3,1,1,2,1,2,2,1,2 114 | 5,3,5,5,3,3,4,10,1,4 115 | 9,10,10,10,10,5,10,10,10,4 116 | 5,1,1,3,2,1,1,1,1,2 117 | 4,1,1,1,3,1,1,1,1,2 118 | 5,4,6,6,4,10,4,3,1,4 119 | 3,1,4,1,2,1,1,1,1,2 120 | 1,1,1,1,2,1,3,1,1,2 121 | 5,1,1,1,2,1,2,1,1,2 122 | 4,1,1,3,2,1,3,1,1,2 123 | 3,1,1,1,2,1,3,1,1,2 124 | 1,1,1,1,2,1,3,1,1,2 125 | 2,1,1,1,2,1,2,1,1,2 126 | 5,6,7,8,8,10,3,10,3,4 127 | 6,3,3,3,3,2,6,1,1,2 128 | 7,5,10,10,10,10,4,10,3,4 129 | 3,1,1,1,1,1,1,1,1,2 130 | 7,8,7,6,4,3,8,8,4,4 131 | 6,3,3,5,3,10,3,5,3,2 132 | 8,10,10,10,7,5,4,8,7,4 133 | 10,4,4,10,6,10,5,5,1,4 134 | 8,10,4,4,8,10,8,2,1,4 135 | 10,5,5,6,8,8,7,1,1,4 136 | 5,1,1,1,2,1,3,1,1,2 137 | 5,1,1,1,2,1,1,1,1,2 138 | 1,1,1,1,2,1,3,1,1,2 139 | 3,3,2,6,3,3,3,5,1,2 140 | 5,1,2,1,2,1,1,1,1,2 141 | 5,8,7,7,10,10,5,7,1,4 142 | 1,1,1,1,2,1,3,1,1,2 143 | 8,7,5,10,7,9,5,5,4,4 144 | 5,1,4,1,2,1,3,2,1,2 145 | 1,1,3,1,2,1,2,1,1,2 146 | 10,8,10,1,3,10,5,1,1,4 147 | 8,5,5,5,2,10,4,3,1,4 148 | 2,1,1,1,2,5,1,1,1,2 149 | 5,10,10,3,8,1,5,10,3,4 150 | 1,1,1,1,2,5,1,1,1,2 151 | 4,4,2,1,2,5,2,1,2,2 152 | 10,8,4,4,4,10,3,10,4,4 153 | 2,3,4,4,2,5,2,5,1,4 154 | 3,1,1,2,2,1,1,1,1,2 155 | 4,7,8,3,4,10,9,1,1,4 156 | 6,10,10,10,8,10,10,10,7,4 157 | 1,1,1,1,1,1,3,1,1,2 158 | 1,1,1,1,2,3,3,1,1,2 159 | 1,1,1,1,1,1,2,1,1,2 160 | 8,6,5,4,3,10,6,1,1,4 161 | 7,3,4,4,3,3,3,2,7,4 162 | 2,1,1,1,3,1,2,1,1,2 163 | 7,2,4,1,6,10,5,4,3,4 164 | 3,1,1,1,2,1,1,1,1,2 165 | 3,1,1,1,2,1,2,1,1,2 166 | 3,1,1,1,2,1,1,1,1,2 167 | 6,6,7,10,3,10,8,10,2,4 168 | 1,1,1,1,3,2,2,1,1,2 169 | 5,10,10,8,5,5,7,10,1,4 170 | 6,8,7,8,6,8,8,9,1,4 171 | 3,1,1,1,2,1,1,1,1,2 172 | 1,2,3,1,2,1,2,1,1,2 173 | 3,2,1,1,1,1,2,1,1,2 174 | 5,2,1,1,2,1,3,1,1,2 175 | 6,1,3,2,2,1,1,1,1,2 176 | 2,3,1,1,5,1,1,1,1,2 177 | 5,1,1,2,2,2,3,1,1,2 178 | 10,4,3,1,3,3,6,5,2,4 179 | 2,1,1,1,2,1,1,1,1,2 180 | 10,3,5,4,3,7,3,5,3,4 181 | 5,3,3,1,3,3,3,3,3,4 182 | 3,1,1,1,2,2,7,1,1,2 183 | 1,1,1,1,2,1,3,1,1,2 184 | 2,1,1,1,2,1,1,1,1,2 185 | 6,1,1,3,2,1,1,1,1,2 186 | 8,4,5,1,2,1,7,3,1,4 187 | 1,1,1,1,2,1,1,1,1,2 188 | 2,1,1,1,2,1,2,1,1,2 189 | 10,10,10,1,6,1,2,8,1,4 190 | 3,5,7,8,8,9,7,10,7,4 191 | 1,1,1,3,2,1,1,1,1,2 192 | 10,5,7,4,4,10,8,9,1,4 193 | 1,1,1,1,2,1,1,1,1,2 194 | 4,1,1,1,2,1,3,1,1,2 195 | 5,10,8,10,8,10,3,6,3,4 196 | 4,1,1,1,2,1,1,2,1,2 197 | 7,4,4,3,4,10,6,9,1,4 198 | 10,4,4,10,2,10,5,3,3,4 199 | 8,7,8,5,10,10,7,2,1,4 200 | 4,1,1,1,2,1,2,1,1,2 201 | 10,9,7,3,4,2,7,7,1,4 202 | 5,1,1,1,2,1,3,1,1,2 203 | 1,1,1,1,1,1,1,3,1,2 204 | 1,1,1,1,2,1,2,1,1,2 205 | 4,1,1,1,2,1,2,1,1,2 206 | 1,1,1,1,2,1,1,1,1,2 207 | 4,1,1,1,3,1,2,2,1,2 208 | 1,1,1,1,2,1,2,1,1,2 209 | 1,1,1,1,2,1,3,1,1,2 210 | 7,5,6,3,3,8,7,4,1,4 211 | 1,1,1,1,1,1,3,1,1,2 212 | 7,5,6,10,4,10,5,3,1,4 213 | 9,5,5,2,2,2,5,1,1,4 214 | 10,8,8,4,10,10,8,1,1,4 215 | 1,1,1,1,2,5,5,1,1,2 216 | 5,2,2,2,3,1,1,3,1,2 217 | 3,1,1,2,3,4,1,1,1,2 218 | 5,1,1,3,2,1,1,1,1,2 219 | 5,8,8,10,5,10,8,10,3,4 220 | 10,4,3,10,4,10,10,1,1,4 221 | 4,2,1,1,2,1,2,1,1,2 222 | 5,3,3,2,3,1,3,1,1,2 223 | 10,7,7,3,8,5,7,4,3,4 224 | 3,1,1,1,2,1,1,1,1,2 225 | 3,1,1,1,2,5,5,1,1,2 226 | 5,1,1,6,3,1,1,1,1,2 227 | 5,1,3,1,2,1,3,1,1,2 228 | 4,1,3,3,2,1,1,1,1,2 229 | 6,10,5,5,4,10,6,10,1,4 230 | 3,4,5,2,6,8,4,1,1,4 231 | 10,10,9,3,7,5,3,5,1,4 232 | 4,1,1,1,2,2,3,2,1,2 233 | 8,10,10,10,8,10,10,7,3,4 234 | 6,10,10,2,8,10,7,3,3,4 235 | 5,1,1,2,2,1,2,1,1,2 236 | 10,10,10,6,8,4,8,5,1,4 237 | 3,1,1,1,2,1,2,1,1,2 238 | 3,1,1,1,2,1,2,1,1,2 239 | 1,1,2,1,2,1,2,1,1,2 240 | 4,1,1,1,2,1,1,1,1,2 241 | 5,1,1,1,2,1,3,1,1,2 242 | 5,1,1,1,2,1,1,1,1,2 243 | 5,3,2,1,3,1,1,1,1,2 244 | 10,10,10,10,10,1,8,8,8,4 245 | 3,6,4,10,3,3,3,4,1,4 246 | 4,1,1,1,2,1,2,1,1,2 247 | 2,1,1,1,2,1,2,1,1,2 248 | 3,1,2,1,2,1,2,1,1,2 249 | 5,1,2,1,2,1,3,1,1,2 250 | 1,1,1,1,2,1,1,1,1,2 251 | 10,5,7,3,3,7,3,3,8,4 252 | 2,1,1,1,2,1,1,1,1,2 253 | 5,1,1,1,2,2,2,1,1,2 254 | 4,4,4,4,6,5,7,3,1,2 255 | 8,6,4,10,10,1,3,5,1,4 256 | 3,3,5,2,3,10,7,1,1,4 257 | 1,1,1,1,2,1,1,1,8,2 258 | 3,1,1,1,3,2,1,1,1,2 259 | 1,1,1,1,2,1,1,1,1,2 260 | 1,1,1,1,2,1,2,1,1,2 261 | 5,2,2,2,2,1,1,1,2,2 262 | 5,4,6,7,9,7,8,10,1,4 263 | 10,3,3,10,2,10,7,3,3,4 264 | 5,1,1,1,2,1,2,1,1,2 265 | 1,1,1,3,1,3,1,1,1,2 266 | 5,6,6,2,4,10,3,6,1,4 267 | 9,10,10,1,10,8,3,3,1,4 268 | 8,10,10,10,6,10,10,10,1,4 269 | 1,1,1,1,2,1,1,1,1,2 270 | 1,1,1,1,2,1,1,1,1,2 271 | 1,1,1,1,2,1,1,1,1,2 272 | 10,4,7,2,2,8,6,1,1,4 273 | 2,1,1,1,2,1,2,2,1,2 274 | 1,1,1,1,2,1,2,1,1,2 275 | 1,1,1,1,1,1,3,1,1,2 276 | 3,2,2,1,4,3,2,1,1,2 277 | 5,10,10,5,4,5,4,4,1,4 278 | 1,1,1,1,10,1,1,1,1,2 279 | 1,1,1,2,2,1,3,1,1,2 280 | 3,1,1,1,2,1,3,1,1,2 281 | 1,1,1,1,2,1,2,1,1,2 282 | 6,1,1,3,2,1,1,1,1,2 283 | 4,1,1,3,2,1,1,1,1,2 284 | 3,1,1,1,2,1,3,1,1,2 285 | 5,3,1,2,2,1,2,1,1,2 286 | 5,7,10,6,5,10,7,5,1,4 287 | 6,8,7,5,6,8,8,9,2,4 288 | 6,10,10,10,8,10,7,10,7,4 289 | 8,10,8,8,4,8,7,7,1,4 290 | 3,1,1,1,1,1,2,1,1,2 291 | 1,1,1,1,2,1,1,1,1,2 292 | 10,4,5,4,3,5,7,3,1,4 293 | 3,1,1,1,2,1,2,3,1,2 294 | 10,6,6,2,4,10,9,7,1,4 295 | 5,7,9,8,6,10,8,10,1,4 296 | 3,10,3,10,6,10,5,1,4,4 297 | 5,1,1,4,2,1,3,1,1,2 298 | 4,8,8,5,4,5,10,4,1,4 299 | 5,3,2,4,2,1,1,1,1,2 300 | 5,2,1,1,2,1,1,1,1,2 301 | 4,1,1,1,2,1,1,1,1,2 302 | -------------------------------------------------------------------------------- /exps/data_files/b_400.csv: -------------------------------------------------------------------------------- 1 | f1,f2,f3,f4,f5,f6,f7,f8,f9,Y 2 | 5,6,6,2,4,10,3,6,1,4 3 | 6,3,4,1,5,2,3,9,1,4 4 | 8,10,10,10,6,10,10,10,10,4 5 | 3,1,1,1,2,1,3,1,1,2 6 | 1,1,1,1,2,1,2,1,1,2 7 | 3,1,1,2,3,4,1,1,1,2 8 | 1,1,1,2,2,1,2,1,1,2 9 | 10,10,8,10,6,5,10,3,1,4 10 | 2,7,10,10,7,10,4,9,4,4 11 | 1,1,1,1,2,1,1,1,1,2 12 | 5,1,2,10,4,5,2,1,1,2 13 | 5,3,6,1,2,1,1,1,1,2 14 | 1,1,1,1,1,1,3,1,1,2 15 | 3,3,2,2,3,1,1,2,3,2 16 | 2,1,1,2,2,1,3,1,1,2 17 | 8,4,10,5,4,4,7,10,1,4 18 | 8,6,4,10,10,1,3,5,1,4 19 | 1,4,3,10,4,10,5,6,1,4 20 | 1,1,1,1,2,1,2,1,1,2 21 | 3,1,1,1,2,1,2,1,1,2 22 | 1,3,1,2,2,2,5,3,2,2 23 | 5,3,2,1,3,1,1,1,1,2 24 | 5,8,9,4,3,10,7,1,1,4 25 | 1,2,1,3,2,1,2,1,1,2 26 | 4,1,1,1,2,1,2,1,1,2 27 | 10,4,5,5,5,10,4,1,1,4 28 | 10,7,7,6,4,10,4,1,2,4 29 | 2,1,1,1,2,1,3,1,1,2 30 | 1,1,1,1,2,5,5,1,1,2 31 | 5,2,2,2,3,1,1,3,1,2 32 | 5,3,5,1,8,10,5,3,1,4 33 | 8,10,3,2,6,4,3,10,1,4 34 | 10,10,10,10,7,10,7,10,4,4 35 | 1,1,1,1,2,5,1,1,1,2 36 | 3,1,1,1,2,2,3,1,1,2 37 | 8,6,4,3,5,9,3,1,1,4 38 | 8,10,10,10,7,5,4,8,7,4 39 | 6,1,1,1,2,1,3,1,1,2 40 | 4,1,1,1,3,1,1,1,1,2 41 | 1,1,1,1,1,1,1,1,1,2 42 | 3,1,1,3,8,1,5,8,1,2 43 | 5,1,1,1,2,2,2,1,1,2 44 | 4,1,1,1,2,1,1,1,1,2 45 | 5,3,3,4,2,4,3,4,1,4 46 | 5,7,9,8,6,10,8,10,1,4 47 | 6,3,2,1,3,4,4,1,1,4 48 | 3,1,1,1,2,1,1,1,1,2 49 | 3,1,1,1,2,1,3,1,1,2 50 | 3,1,1,1,2,1,2,1,1,2 51 | 5,2,2,4,2,4,1,1,1,2 52 | 6,6,6,5,4,10,7,6,2,4 53 | 3,1,1,1,2,5,1,1,1,2 54 | 5,1,1,1,2,1,3,1,1,2 55 | 4,2,1,1,2,2,3,1,1,2 56 | 10,6,5,8,5,10,8,6,1,4 57 | 4,1,1,1,2,1,3,1,1,2 58 | 10,10,7,8,7,1,10,10,3,4 59 | 10,3,3,1,2,10,7,6,1,4 60 | 10,10,10,10,10,1,8,8,8,4 61 | 1,1,1,1,2,1,3,2,1,2 62 | 7,4,5,10,2,10,3,8,2,4 63 | 5,2,3,1,6,10,5,1,1,4 64 | 6,5,4,4,3,9,7,8,3,4 65 | 1,1,1,1,1,1,3,1,1,2 66 | 1,1,1,2,1,3,1,1,7,2 67 | 3,1,2,1,2,1,2,1,1,2 68 | 5,1,2,1,2,1,3,1,1,2 69 | 6,10,10,10,4,10,7,10,1,4 70 | 1,1,1,1,1,1,2,1,1,2 71 | 8,10,10,10,8,10,10,7,3,4 72 | 10,10,10,1,6,1,2,8,1,4 73 | 4,1,1,1,2,1,2,1,1,2 74 | 1,1,1,1,2,1,2,1,1,2 75 | 4,1,1,1,2,1,2,1,1,2 76 | 7,5,3,7,4,10,7,5,5,4 77 | 5,1,1,1,2,1,2,1,1,2 78 | 2,1,1,1,2,1,2,1,1,2 79 | 5,1,1,1,2,1,1,1,1,2 80 | 5,7,4,1,6,1,7,10,3,4 81 | 2,1,1,1,2,1,1,1,1,2 82 | 3,1,1,1,2,1,2,3,1,2 83 | 6,10,10,2,8,10,7,3,3,4 84 | 5,3,3,1,3,3,3,3,3,4 85 | 5,10,10,10,10,2,10,10,10,4 86 | 10,9,8,7,6,4,7,10,3,4 87 | 3,1,1,1,2,1,2,1,1,2 88 | 10,3,5,4,3,7,3,5,3,4 89 | 7,6,10,5,3,10,9,10,2,4 90 | 8,6,5,4,3,10,6,1,1,4 91 | 1,1,1,1,2,1,3,1,1,2 92 | 10,10,10,10,10,10,4,10,10,4 93 | 3,1,1,1,2,1,3,1,1,2 94 | 8,3,8,3,4,9,8,9,8,4 95 | 3,1,1,2,2,1,1,1,1,2 96 | 1,1,1,1,2,1,3,1,1,2 97 | 4,3,2,1,3,1,2,1,1,2 98 | 2,3,1,1,2,1,2,1,1,2 99 | 5,6,7,8,8,10,3,10,3,4 100 | 4,1,1,1,2,1,2,1,1,2 101 | 5,10,10,8,5,5,7,10,1,4 102 | 5,4,4,5,7,10,3,2,1,2 103 | 10,10,10,8,6,8,7,10,1,4 104 | 5,1,1,1,2,1,1,1,1,2 105 | 3,1,3,1,3,4,1,1,1,2 106 | 1,1,1,1,2,1,1,1,1,2 107 | 9,5,5,4,4,5,4,3,3,4 108 | 1,1,1,1,2,1,1,1,1,2 109 | 3,4,4,10,5,1,3,3,1,4 110 | 1,1,1,1,2,1,1,1,1,2 111 | 3,1,1,1,2,1,1,1,1,2 112 | 6,1,3,1,2,1,3,1,1,2 113 | 7,6,3,2,5,10,7,4,6,4 114 | 7,3,2,10,5,10,5,4,4,4 115 | 5,1,1,3,2,1,1,1,1,2 116 | 2,1,1,1,2,1,2,1,1,2 117 | 5,1,3,1,2,1,2,1,1,2 118 | 4,1,1,1,2,1,3,1,1,2 119 | 4,5,5,8,6,10,10,7,1,4 120 | 3,1,1,1,2,1,2,1,1,2 121 | 6,2,1,1,1,1,7,1,1,2 122 | 10,4,4,10,6,10,5,5,1,4 123 | 5,5,5,6,3,10,3,1,1,4 124 | 4,1,1,2,2,1,2,1,1,2 125 | 10,4,6,1,2,10,5,3,1,4 126 | 3,10,8,7,6,9,9,3,8,4 127 | 2,1,1,1,2,5,1,1,1,2 128 | 1,1,1,1,1,1,3,1,1,2 129 | 3,1,1,1,2,1,2,1,1,2 130 | 5,1,1,1,2,1,2,1,1,2 131 | 4,1,2,1,2,1,2,1,1,2 132 | 10,1,1,1,2,10,5,4,1,4 133 | 7,2,4,1,3,4,3,3,1,4 134 | 3,1,1,1,2,1,2,1,1,2 135 | 5,1,1,1,2,1,3,1,1,2 136 | 6,2,3,1,2,1,1,1,1,2 137 | 10,10,6,3,3,10,4,3,2,4 138 | 5,10,10,6,10,10,10,6,5,4 139 | 1,1,1,1,1,1,2,1,1,2 140 | 8,4,6,3,3,1,4,3,1,2 141 | 3,1,1,1,2,1,3,1,1,2 142 | 1,2,3,1,2,1,1,1,1,2 143 | 4,1,1,1,2,1,1,1,1,2 144 | 2,1,1,1,2,1,2,1,1,2 145 | 4,4,4,2,2,3,2,1,1,2 146 | 1,1,1,1,2,1,2,1,1,2 147 | 1,1,1,1,2,1,3,1,1,2 148 | 5,1,1,1,2,1,3,1,1,2 149 | 5,6,5,6,10,1,3,1,1,4 150 | 10,6,3,6,4,10,7,8,4,4 151 | 6,10,10,2,8,10,7,3,3,4 152 | 4,1,2,1,2,1,2,1,1,2 153 | 9,10,10,1,10,8,3,3,1,4 154 | 5,1,2,1,2,1,2,1,1,2 155 | 10,7,7,3,8,5,7,4,3,4 156 | 5,1,1,3,2,1,1,1,1,2 157 | 3,1,1,1,2,1,3,1,1,2 158 | 2,1,1,2,2,1,3,1,1,2 159 | 3,1,2,1,2,1,3,1,1,2 160 | 1,1,3,1,1,1,2,1,1,2 161 | 4,10,4,7,3,10,9,10,1,4 162 | 5,8,4,10,5,8,9,10,1,4 163 | 1,1,1,1,2,1,2,1,1,2 164 | 3,3,2,1,3,1,3,6,1,2 165 | 1,1,1,1,2,5,1,1,1,2 166 | 4,1,1,1,1,1,2,1,1,2 167 | 1,1,1,1,2,1,2,1,1,2 168 | 1,2,3,1,2,1,2,1,1,2 169 | 3,1,1,1,2,1,1,1,1,2 170 | 5,1,1,1,2,1,3,1,1,2 171 | 4,1,1,1,2,1,3,1,1,2 172 | 2,1,1,1,2,1,2,1,1,2 173 | 4,1,4,1,2,1,1,1,1,2 174 | 10,6,6,3,4,5,3,6,1,4 175 | 4,1,1,1,2,2,3,2,1,2 176 | 1,1,1,1,1,1,2,1,1,2 177 | 7,4,6,4,6,1,4,3,1,4 178 | 3,2,2,2,2,1,4,2,1,2 179 | 3,2,2,3,2,1,1,1,1,2 180 | 7,8,8,7,3,10,7,2,3,4 181 | 5,3,3,3,2,3,4,4,1,4 182 | 4,3,1,1,2,1,4,8,1,2 183 | 9,8,8,9,6,3,4,1,1,4 184 | 4,10,8,5,4,1,10,1,1,4 185 | 5,1,1,1,2,1,1,1,1,2 186 | 6,3,3,5,3,10,3,5,3,2 187 | 8,8,8,1,2,1,6,10,1,4 188 | 5,2,4,1,1,1,1,1,1,2 189 | 3,1,1,1,2,1,3,1,1,2 190 | 5,1,2,1,2,1,3,1,1,2 191 | 3,3,5,2,3,10,7,1,1,4 192 | 1,1,1,1,2,1,1,1,1,2 193 | 3,1,1,1,2,1,2,1,1,2 194 | 4,1,1,1,2,1,1,1,1,2 195 | 3,1,1,1,2,1,3,1,1,2 196 | 1,1,1,2,2,1,3,1,1,2 197 | 5,10,8,10,8,10,3,6,3,4 198 | 3,1,1,1,2,1,3,1,1,2 199 | 5,1,1,1,2,1,3,1,2,2 200 | 8,5,6,2,3,10,6,6,1,4 201 | 8,10,8,8,4,8,7,7,1,4 202 | 6,1,1,3,2,1,1,1,1,2 203 | 3,1,1,3,1,1,3,1,1,2 204 | 6,1,1,1,1,1,1,1,1,2 205 | 5,1,1,1,2,1,2,1,1,2 206 | 10,10,10,8,2,10,4,1,1,4 207 | 3,1,1,1,2,1,2,2,1,2 208 | 5,1,3,1,2,1,2,1,1,2 209 | 6,1,1,3,2,1,1,1,1,2 210 | 1,1,1,1,1,1,3,1,1,2 211 | 5,3,1,1,2,1,1,1,1,2 212 | 2,1,1,1,2,1,1,1,1,2 213 | 8,7,4,4,5,3,5,10,1,4 214 | 4,1,1,3,2,1,3,1,1,2 215 | 2,3,1,1,5,1,1,1,1,2 216 | 8,7,8,5,5,10,9,10,1,4 217 | 10,10,10,6,8,4,8,5,1,4 218 | 2,1,1,1,2,1,3,1,1,2 219 | 10,4,3,10,4,10,10,1,1,4 220 | 4,8,8,5,4,5,10,4,1,4 221 | 1,1,1,1,1,1,1,3,1,2 222 | 7,8,3,7,4,5,7,8,2,4 223 | 10,6,4,1,3,4,3,2,3,4 224 | 7,8,7,2,4,8,3,8,2,4 225 | 1,1,1,1,2,1,3,1,1,2 226 | 5,1,1,1,2,1,2,1,1,2 227 | 3,1,1,1,2,1,1,1,1,2 228 | 1,1,1,1,2,1,2,1,1,2 229 | 3,1,2,1,2,1,2,1,1,2 230 | 5,1,1,1,2,1,3,2,1,2 231 | 3,1,1,1,2,1,2,1,1,2 232 | 3,3,1,1,2,1,1,1,1,2 233 | 5,2,2,2,2,1,2,2,1,2 234 | 4,2,2,1,2,1,2,1,1,2 235 | 4,1,2,1,2,1,2,1,1,2 236 | 8,3,3,1,2,2,3,2,1,2 237 | 1,1,1,1,2,1,2,1,1,2 238 | 4,1,1,1,2,3,2,1,1,2 239 | 5,3,3,1,2,1,2,1,1,2 240 | 1,1,1,1,2,3,3,1,1,2 241 | 2,1,1,1,2,1,3,1,1,2 242 | 3,1,1,1,1,1,2,1,1,2 243 | 5,1,1,1,2,1,1,1,1,2 244 | 5,1,1,1,2,1,2,2,1,2 245 | 3,1,1,1,2,1,1,1,1,2 246 | 4,1,1,3,2,1,1,1,1,2 247 | 9,7,7,5,5,10,7,8,3,4 248 | 3,1,1,1,2,1,2,1,1,2 249 | 1,1,1,1,2,1,1,1,1,2 250 | 7,8,7,6,4,3,8,8,4,4 251 | 4,2,2,1,2,1,2,1,1,2 252 | 6,10,10,10,10,10,8,10,10,4 253 | 1,1,1,1,1,1,2,1,1,2 254 | 3,1,1,1,2,4,1,1,1,2 255 | 1,1,1,1,2,1,3,1,1,2 256 | 1,1,1,1,2,1,1,1,1,2 257 | 8,2,4,1,5,1,5,4,4,4 258 | 1,1,1,1,2,1,1,1,1,2 259 | 3,7,7,4,4,9,4,8,1,4 260 | 1,1,3,1,2,1,1,1,1,2 261 | 3,1,1,1,2,1,3,1,1,2 262 | 5,1,1,3,2,1,1,1,1,2 263 | 1,1,2,1,2,1,2,1,1,2 264 | 10,10,10,8,6,1,8,9,1,4 265 | 6,10,10,10,8,10,10,10,7,4 266 | 1,1,1,1,1,1,1,1,1,2 267 | 2,1,1,1,2,1,1,1,1,2 268 | 10,10,10,10,5,10,10,10,7,4 269 | 10,4,3,1,3,3,6,5,2,4 270 | 1,1,1,1,2,1,2,1,1,2 271 | 4,1,1,1,2,1,1,1,1,2 272 | 1,1,3,1,2,1,2,1,1,2 273 | 1,1,1,1,2,1,1,1,1,2 274 | 1,1,1,1,2,1,3,1,1,2 275 | 3,1,1,1,2,1,1,1,1,2 276 | 1,1,1,1,2,1,1,1,1,2 277 | 5,4,3,1,2,1,2,3,1,2 278 | 10,4,4,10,2,10,5,3,3,4 279 | 4,4,4,4,6,5,7,3,1,2 280 | 8,10,10,8,6,9,3,10,10,4 281 | 10,5,5,6,3,10,7,9,2,4 282 | 6,9,7,5,5,8,4,2,1,2 283 | 5,2,2,2,1,1,2,1,1,2 284 | 3,3,2,1,2,3,3,1,1,2 285 | 10,3,5,1,10,5,3,10,2,4 286 | 10,7,7,4,5,10,5,7,2,4 287 | 9,5,8,1,2,3,2,1,5,4 288 | 1,1,3,1,2,1,2,1,1,2 289 | 1,1,1,1,2,1,2,1,1,2 290 | 2,1,1,1,2,1,3,1,1,2 291 | 7,9,4,10,10,3,5,3,3,4 292 | 1,1,3,1,2,1,1,1,1,2 293 | 5,1,2,1,2,1,1,1,1,2 294 | 3,3,2,6,3,3,3,5,1,2 295 | 3,1,1,1,2,1,2,1,1,2 296 | 5,3,4,1,8,10,4,9,1,4 297 | 4,1,1,1,2,1,1,1,1,2 298 | 9,4,5,10,6,10,4,8,1,4 299 | 3,2,1,1,1,1,2,1,1,2 300 | 10,8,8,2,3,4,8,7,8,4 301 | 2,3,1,1,3,1,1,1,1,2 302 | 2,1,1,1,2,1,1,1,1,2 303 | 8,10,4,4,8,10,8,2,1,4 304 | 1,1,1,1,3,2,2,1,1,2 305 | 5,3,4,3,4,5,4,7,1,2 306 | 1,6,8,10,8,10,5,7,1,4 307 | 5,1,3,1,2,1,2,1,1,2 308 | 4,1,1,1,2,1,2,1,1,2 309 | 1,1,1,1,2,1,1,1,1,2 310 | 1,1,3,1,2,1,1,1,1,2 311 | 1,1,1,1,2,2,1,1,1,2 312 | 5,1,3,1,2,1,1,1,1,2 313 | 1,1,1,1,2,1,2,3,1,2 314 | 5,7,7,1,5,8,3,4,1,2 315 | 10,10,10,3,10,10,9,10,1,4 316 | 4,1,1,1,2,1,1,1,1,2 317 | 3,1,2,2,2,1,1,1,1,2 318 | 1,1,1,1,2,4,1,1,1,2 319 | 4,1,1,1,2,3,1,1,1,2 320 | 10,3,6,2,3,5,4,10,2,4 321 | 1,1,1,1,2,1,2,1,1,2 322 | 3,1,1,1,3,1,2,1,1,2 323 | 5,2,3,4,2,7,3,6,1,4 324 | 3,2,2,2,2,1,3,2,1,2 325 | 9,10,10,10,10,5,10,10,10,4 326 | 1,3,3,2,2,1,7,2,1,2 327 | 3,1,1,1,2,1,1,1,1,2 328 | 5,1,1,3,2,1,1,1,1,2 329 | 5,1,1,2,2,2,3,1,1,2 330 | 3,1,1,1,1,1,2,1,1,2 331 | 8,10,10,8,5,10,7,8,1,4 332 | 1,1,1,1,2,1,1,1,8,2 333 | 1,1,1,1,1,1,1,1,1,2 334 | 3,1,1,1,2,1,2,1,1,2 335 | 1,1,1,1,2,1,1,1,1,2 336 | 3,4,5,3,7,3,4,6,1,2 337 | 5,3,1,2,2,1,2,1,1,2 338 | 4,1,1,1,2,1,3,1,1,2 339 | 1,1,1,1,2,1,1,1,1,2 340 | 1,1,1,1,2,1,2,1,2,2 341 | 8,2,1,1,5,1,1,1,1,2 342 | 4,1,1,1,2,1,1,1,1,2 343 | 4,6,5,6,7,1,4,9,1,2 344 | 4,6,6,5,7,6,7,7,3,4 345 | 5,3,3,2,3,1,3,1,1,2 346 | 7,5,6,10,4,10,5,3,1,4 347 | 10,5,6,10,6,10,7,7,10,4 348 | 10,5,10,3,5,8,7,8,3,4 349 | 10,8,7,4,3,10,7,9,1,4 350 | 2,1,1,1,2,1,2,1,1,2 351 | 3,1,1,1,2,1,2,1,1,2 352 | 10,5,7,4,4,10,8,9,1,4 353 | 9,1,2,6,4,10,7,7,2,4 354 | 10,4,7,2,2,8,6,1,1,4 355 | 2,1,1,1,2,1,1,1,1,2 356 | 1,1,1,1,1,1,2,1,1,2 357 | 7,5,6,10,5,10,7,9,4,4 358 | 1,2,2,1,2,1,1,1,1,2 359 | 5,10,10,9,6,10,7,10,5,4 360 | 5,7,10,10,5,10,10,10,1,4 361 | 8,5,5,5,2,10,4,3,1,4 362 | 5,1,2,1,2,1,3,1,1,2 363 | 10,4,3,10,3,10,7,1,2,4 364 | 8,4,4,1,6,10,2,5,2,4 365 | 3,2,1,1,2,2,3,1,1,2 366 | 1,1,1,1,2,1,3,1,1,2 367 | 6,1,1,1,2,1,3,1,1,2 368 | 1,1,1,1,2,1,2,1,1,2 369 | 1,1,1,1,2,10,3,1,1,2 370 | 5,1,1,1,2,1,2,1,1,2 371 | 1,1,1,1,2,1,1,1,1,2 372 | 10,10,10,2,10,10,5,3,3,4 373 | 8,10,10,10,5,10,8,10,6,4 374 | 5,1,1,6,3,1,2,1,1,2 375 | 5,1,1,1,2,1,2,2,1,2 376 | 3,6,4,10,3,3,3,4,1,4 377 | 4,1,1,3,1,5,2,1,1,4 378 | 1,1,1,1,1,1,2,1,1,2 379 | 6,1,3,1,4,5,5,10,1,4 380 | 3,1,1,1,2,1,2,1,1,2 381 | 8,8,9,6,6,3,10,10,1,4 382 | 1,1,1,1,2,1,3,1,1,2 383 | 7,1,2,3,2,1,2,1,1,2 384 | 1,1,1,1,2,1,1,1,1,2 385 | 5,1,1,1,2,1,2,1,1,2 386 | 10,10,9,3,7,5,3,5,1,4 387 | 1,1,1,1,2,1,3,1,1,2 388 | 1,1,1,1,2,1,3,1,1,2 389 | 8,4,5,1,2,1,7,3,1,4 390 | 3,1,4,1,2,1,3,1,1,2 391 | 4,3,3,1,2,1,3,3,1,2 392 | 3,1,1,1,1,1,1,1,1,2 393 | 8,2,3,1,6,3,7,1,1,4 394 | 3,1,1,1,2,3,3,1,1,2 395 | 8,10,10,1,3,6,3,9,1,4 396 | 1,1,1,1,2,1,2,1,1,2 397 | 10,4,3,2,3,10,5,3,2,4 398 | 5,10,6,1,10,4,4,10,10,4 399 | 3,1,1,1,2,5,5,1,1,2 400 | 3,1,1,1,2,1,2,1,1,2 401 | 10,8,10,10,6,1,3,1,10,4 402 | -------------------------------------------------------------------------------- /exps/data_files/b_500.csv: -------------------------------------------------------------------------------- 1 | f1,f2,f3,f4,f5,f6,f7,f8,f9,Y 2 | 7,6,6,3,2,10,7,1,1,4 3 | 10,4,2,1,3,2,4,3,10,4 4 | 2,1,1,1,2,1,1,1,5,2 5 | 8,10,10,10,5,10,8,10,6,4 6 | 3,1,1,1,2,1,2,1,2,2 7 | 10,10,10,7,10,10,8,2,1,4 8 | 9,5,5,4,4,5,4,3,3,4 9 | 4,1,2,1,2,1,1,1,1,2 10 | 10,5,10,3,5,8,7,8,3,4 11 | 8,10,4,4,8,10,8,2,1,4 12 | 3,2,1,1,2,2,3,1,1,2 13 | 1,1,1,1,2,1,1,1,1,2 14 | 5,3,3,3,6,10,3,1,1,4 15 | 3,3,2,1,3,1,3,6,1,2 16 | 10,10,7,8,7,1,10,10,3,4 17 | 1,1,1,1,1,1,3,1,1,2 18 | 2,1,1,2,2,1,1,1,1,2 19 | 5,1,1,1,2,1,2,2,1,2 20 | 1,3,1,1,2,1,2,2,1,2 21 | 3,1,1,1,2,1,2,1,1,2 22 | 5,1,1,6,3,1,1,1,1,2 23 | 10,10,6,3,3,10,4,3,2,4 24 | 1,1,1,1,2,1,1,1,1,2 25 | 5,10,10,5,4,5,4,4,1,4 26 | 5,1,3,1,2,1,2,1,1,2 27 | 5,1,1,1,2,1,3,1,1,2 28 | 3,1,1,3,2,1,2,1,1,2 29 | 5,10,10,10,6,10,6,5,2,4 30 | 10,1,1,1,2,10,5,4,1,4 31 | 2,1,1,1,2,1,1,1,1,2 32 | 6,6,7,10,3,10,8,10,2,4 33 | 10,8,8,2,3,4,8,7,8,4 34 | 9,7,7,5,5,10,7,8,3,4 35 | 10,5,7,3,3,7,3,3,8,4 36 | 1,1,1,1,1,1,3,1,1,2 37 | 4,1,1,3,2,1,3,1,1,2 38 | 4,1,1,1,2,1,2,1,1,2 39 | 1,1,3,1,2,1,2,1,1,2 40 | 5,1,1,1,2,2,3,3,1,2 41 | 8,8,7,4,10,10,7,8,7,4 42 | 1,1,1,1,1,1,2,1,1,2 43 | 2,1,1,1,2,1,1,1,1,2 44 | 5,1,2,1,2,1,3,1,1,2 45 | 3,1,1,1,2,1,3,1,1,2 46 | 5,3,3,1,3,3,3,3,3,4 47 | 3,1,2,1,2,1,2,1,1,2 48 | 5,1,1,1,2,1,2,1,1,2 49 | 5,1,1,1,2,1,3,1,1,2 50 | 9,6,9,2,10,6,2,9,10,4 51 | 3,1,1,1,2,1,1,1,1,2 52 | 5,7,10,10,5,10,10,10,1,4 53 | 7,4,4,3,4,10,6,9,1,4 54 | 3,1,1,1,2,1,1,1,1,2 55 | 5,4,6,7,9,7,8,10,1,4 56 | 1,1,1,1,1,1,2,1,1,2 57 | 3,1,1,1,2,1,3,1,1,2 58 | 2,1,1,1,2,1,2,1,1,2 59 | 10,10,10,8,2,10,4,1,1,4 60 | 4,8,7,10,4,10,7,5,1,4 61 | 1,1,1,1,2,1,1,1,1,2 62 | 5,1,1,1,2,1,2,1,1,2 63 | 10,9,7,3,4,2,7,7,1,4 64 | 4,1,1,3,1,5,2,1,1,4 65 | 2,1,1,1,2,1,2,1,1,2 66 | 4,1,1,1,2,1,3,1,1,2 67 | 4,1,1,1,3,1,1,1,1,2 68 | 5,2,2,2,1,1,2,1,1,2 69 | 4,1,1,2,2,1,1,1,1,2 70 | 10,4,5,4,3,5,7,3,1,4 71 | 10,8,4,4,4,10,3,10,4,4 72 | 6,10,10,10,10,10,8,10,10,4 73 | 4,1,4,1,2,1,1,1,1,2 74 | 3,1,1,3,2,1,1,1,1,2 75 | 3,1,1,1,2,1,1,1,1,2 76 | 1,1,1,1,2,1,3,1,1,2 77 | 10,7,7,3,8,5,7,4,3,4 78 | 7,5,3,7,4,10,7,5,5,4 79 | 3,1,1,1,2,1,1,1,1,2 80 | 1,1,1,1,2,1,1,1,1,2 81 | 4,1,1,1,2,1,2,1,1,2 82 | 1,1,3,1,2,1,2,1,1,2 83 | 8,6,5,4,3,10,6,1,1,4 84 | 5,5,5,8,10,8,7,3,7,4 85 | 5,1,2,1,2,1,3,1,1,2 86 | 7,2,4,1,3,4,3,3,1,4 87 | 5,6,6,8,6,10,4,10,4,4 88 | 1,1,1,1,2,1,3,1,1,2 89 | 3,1,2,1,2,1,3,1,1,2 90 | 5,2,3,4,2,7,3,6,1,4 91 | 5,7,7,1,5,8,3,4,1,2 92 | 3,1,1,1,2,1,2,1,1,2 93 | 10,3,4,5,3,10,4,1,1,4 94 | 5,1,1,1,2,1,2,1,1,2 95 | 2,1,1,1,2,1,1,1,1,2 96 | 3,1,1,1,2,5,5,1,1,2 97 | 4,1,1,1,2,1,2,1,1,2 98 | 1,1,1,1,2,1,3,1,1,2 99 | 2,1,1,1,2,1,3,1,1,2 100 | 1,1,1,1,2,10,3,1,1,2 101 | 1,1,1,1,2,5,1,1,1,2 102 | 2,1,1,1,2,1,1,1,1,2 103 | 6,1,1,1,2,1,3,1,1,2 104 | 4,2,1,1,2,2,3,1,1,2 105 | 4,1,1,1,2,2,3,2,1,2 106 | 10,3,3,10,2,10,7,3,3,4 107 | 5,1,1,1,2,1,2,2,1,2 108 | 5,2,4,1,1,1,1,1,1,2 109 | 6,3,2,1,3,4,4,1,1,4 110 | 3,3,2,2,3,1,1,2,3,2 111 | 5,3,6,1,2,1,1,1,1,2 112 | 5,2,2,2,2,1,1,1,2,2 113 | 1,1,1,3,2,3,1,1,1,2 114 | 5,4,3,1,2,1,2,3,1,2 115 | 5,1,1,1,2,1,3,1,1,2 116 | 10,10,10,2,10,10,5,3,3,4 117 | 1,1,1,1,2,1,3,1,1,2 118 | 3,1,3,1,2,1,2,1,1,2 119 | 3,1,1,1,2,1,2,1,1,2 120 | 3,1,1,1,3,1,2,1,1,2 121 | 2,1,3,2,2,1,2,1,1,2 122 | 8,4,7,1,3,10,3,9,2,4 123 | 2,3,1,1,5,1,1,1,1,2 124 | 5,2,2,2,2,1,2,2,1,2 125 | 1,1,1,2,1,3,1,1,7,2 126 | 6,1,1,1,2,1,2,1,1,2 127 | 4,1,1,1,2,1,1,1,1,2 128 | 4,1,1,1,2,1,1,2,1,2 129 | 1,1,1,2,2,1,3,1,1,2 130 | 9,9,10,3,6,10,7,10,6,4 131 | 5,1,1,1,2,1,3,1,1,2 132 | 5,1,1,6,3,1,2,1,1,2 133 | 2,1,1,1,2,1,2,2,1,2 134 | 3,1,1,1,2,1,1,1,1,2 135 | 7,2,4,1,6,10,5,4,3,4 136 | 4,10,8,5,4,1,10,1,1,4 137 | 5,3,2,1,3,1,1,1,1,2 138 | 10,10,10,10,5,10,10,10,7,4 139 | 1,1,1,1,1,1,3,1,1,2 140 | 3,1,1,1,2,1,3,1,1,2 141 | 1,1,1,1,2,1,1,1,1,2 142 | 3,10,7,8,5,8,7,4,1,4 143 | 7,3,4,4,3,3,3,2,7,4 144 | 4,1,1,1,1,1,2,1,1,2 145 | 1,1,1,1,2,1,1,1,1,2 146 | 2,1,1,1,1,1,3,1,1,2 147 | 7,6,3,2,5,10,7,4,6,4 148 | 7,5,10,10,10,10,4,10,3,4 149 | 5,1,1,2,2,2,3,1,1,2 150 | 5,1,1,1,2,1,2,1,1,2 151 | 10,8,10,10,6,1,3,1,10,4 152 | 5,1,1,1,2,1,2,2,1,2 153 | 5,1,1,1,2,1,1,1,1,2 154 | 5,3,2,8,5,10,8,1,2,4 155 | 2,1,1,1,1,1,1,1,1,2 156 | 1,1,1,1,2,1,1,1,1,2 157 | 3,1,1,1,2,1,3,1,1,2 158 | 8,10,10,8,7,10,9,7,1,4 159 | 10,5,7,4,4,10,8,9,1,4 160 | 10,6,4,3,10,10,9,10,1,4 161 | 4,4,2,1,2,5,2,1,2,2 162 | 10,3,3,1,2,10,7,6,1,4 163 | 5,1,1,1,2,1,3,1,1,2 164 | 5,1,1,2,2,1,2,1,1,2 165 | 5,1,1,1,2,1,1,1,1,2 166 | 1,1,1,2,2,1,2,1,1,2 167 | 1,2,3,1,2,1,2,1,1,2 168 | 6,10,7,7,6,4,8,10,2,4 169 | 1,1,1,1,1,1,3,1,1,2 170 | 8,3,4,9,3,10,3,3,1,4 171 | 2,7,10,10,7,10,4,9,4,4 172 | 1,1,1,1,2,1,3,1,1,2 173 | 4,1,1,1,2,1,2,1,1,2 174 | 7,8,3,7,4,5,7,8,2,4 175 | 3,1,1,1,2,1,3,1,1,2 176 | 5,3,3,1,2,1,2,1,1,2 177 | 4,1,1,3,2,1,3,1,1,2 178 | 2,1,1,1,2,1,1,1,1,2 179 | 8,10,10,1,3,6,3,9,1,4 180 | 1,3,1,2,2,2,5,3,2,2 181 | 5,3,3,2,3,1,3,1,1,2 182 | 3,3,5,2,3,10,7,1,1,4 183 | 1,1,1,1,2,1,3,2,1,2 184 | 3,1,1,1,1,1,2,1,1,2 185 | 3,10,8,7,6,9,9,3,8,4 186 | 3,10,3,10,6,10,5,1,4,4 187 | 5,1,1,3,2,1,1,1,1,2 188 | 1,1,1,1,2,1,1,1,1,2 189 | 5,1,1,1,1,1,3,1,1,2 190 | 5,5,5,2,5,10,4,3,1,4 191 | 1,1,2,1,2,2,4,2,1,2 192 | 5,4,6,10,2,10,4,1,1,4 193 | 8,10,10,10,8,10,10,7,3,4 194 | 1,1,1,1,2,1,1,1,1,2 195 | 1,2,2,1,2,1,1,1,1,2 196 | 3,1,1,1,2,1,3,2,1,2 197 | 3,1,1,1,1,1,2,1,1,2 198 | 4,3,1,1,2,1,4,8,1,2 199 | 2,1,1,1,3,1,2,1,1,2 200 | 4,1,2,1,2,1,3,1,1,2 201 | 3,1,1,1,2,1,2,1,1,2 202 | 8,4,4,5,4,7,7,8,2,2 203 | 5,1,3,1,2,1,2,1,1,2 204 | 1,1,1,1,2,1,2,1,1,2 205 | 2,1,1,1,2,1,1,1,1,2 206 | 3,1,1,1,2,5,1,1,1,2 207 | 1,1,1,1,2,1,2,1,1,2 208 | 8,6,4,3,5,9,3,1,1,4 209 | 1,1,1,1,2,1,2,1,1,2 210 | 6,10,10,2,8,10,7,3,3,4 211 | 5,5,5,6,3,10,3,1,1,4 212 | 5,1,1,1,2,1,1,1,1,2 213 | 5,3,3,3,2,3,4,4,1,4 214 | 4,1,1,1,2,1,3,1,1,2 215 | 7,4,7,4,3,7,7,6,1,4 216 | 9,5,8,1,2,3,2,1,5,4 217 | 7,5,6,10,4,10,5,3,1,4 218 | 5,2,2,2,3,1,1,3,1,2 219 | 5,4,4,5,7,10,3,2,1,2 220 | 1,1,1,1,2,1,3,1,1,2 221 | 1,1,1,1,1,1,1,1,1,2 222 | 8,7,5,10,7,9,5,5,4,4 223 | 7,1,2,3,2,1,2,1,1,2 224 | 3,2,2,2,2,1,4,2,1,2 225 | 2,1,1,1,2,1,2,1,1,2 226 | 3,1,1,1,3,1,2,1,1,2 227 | 1,1,1,1,2,1,3,1,1,2 228 | 1,1,1,1,2,5,1,1,1,2 229 | 9,10,10,1,10,8,3,3,1,4 230 | 3,1,1,1,2,1,1,1,1,2 231 | 1,1,1,1,2,1,1,1,1,2 232 | 3,1,1,1,2,1,2,1,1,2 233 | 3,1,1,1,2,1,2,1,1,2 234 | 1,1,1,1,2,1,3,1,1,2 235 | 2,1,1,2,3,1,2,1,1,2 236 | 4,1,1,1,2,1,1,1,1,2 237 | 5,1,1,1,2,1,1,1,1,2 238 | 1,1,1,1,2,1,3,1,1,2 239 | 5,3,5,1,8,10,5,3,1,4 240 | 5,7,10,6,5,10,7,5,1,4 241 | 10,4,5,5,5,10,4,1,1,4 242 | 3,1,3,1,3,4,1,1,1,2 243 | 1,1,1,1,2,1,1,1,1,2 244 | 5,1,1,3,4,1,3,2,1,2 245 | 6,9,7,5,5,8,4,2,1,2 246 | 4,1,1,1,2,1,1,1,1,2 247 | 8,2,3,1,6,3,7,1,1,4 248 | 5,2,1,1,2,1,1,1,1,2 249 | 5,1,1,1,2,1,2,1,1,2 250 | 10,10,10,10,6,10,8,1,5,4 251 | 1,1,1,1,2,1,3,1,1,2 252 | 5,6,5,6,10,1,3,1,1,4 253 | 1,1,1,1,2,1,2,1,1,2 254 | 1,1,1,1,2,1,2,1,1,2 255 | 1,1,1,1,1,1,2,1,1,2 256 | 2,1,1,1,2,1,3,1,1,2 257 | 1,1,1,1,2,1,2,1,1,2 258 | 4,1,1,1,2,1,1,1,1,2 259 | 5,2,3,1,6,10,5,1,1,4 260 | 1,1,1,1,1,1,3,1,1,2 261 | 4,1,1,1,2,1,3,1,1,2 262 | 1,1,1,1,2,1,2,1,1,2 263 | 5,3,4,3,4,5,4,7,1,2 264 | 3,4,5,3,7,3,4,6,1,2 265 | 5,8,9,4,3,10,7,1,1,4 266 | 2,1,1,1,2,1,3,1,1,2 267 | 5,8,8,10,5,10,8,10,3,4 268 | 8,10,5,3,8,4,4,10,3,4 269 | 6,5,4,4,3,9,7,8,3,4 270 | 1,1,1,1,2,1,2,1,1,2 271 | 3,6,6,6,5,10,6,8,3,4 272 | 3,5,7,8,8,9,7,10,7,4 273 | 1,6,8,10,8,10,5,7,1,4 274 | 1,3,3,2,2,1,7,2,1,2 275 | 3,1,1,1,3,2,1,1,1,2 276 | 1,1,1,1,2,1,1,1,1,2 277 | 1,2,3,1,2,1,1,1,1,2 278 | 1,1,1,1,2,1,1,1,1,2 279 | 10,9,8,7,6,4,7,10,3,4 280 | 4,1,1,1,2,1,1,1,1,2 281 | 8,4,6,3,3,1,4,3,1,2 282 | 8,3,8,3,4,9,8,9,8,4 283 | 6,10,10,10,8,10,7,10,7,4 284 | 5,1,1,1,2,1,3,1,1,2 285 | 1,1,1,1,2,1,1,1,1,2 286 | 1,1,1,1,2,1,2,3,1,2 287 | 10,10,10,8,6,1,8,9,1,4 288 | 1,1,1,2,1,1,1,1,1,2 289 | 10,10,10,10,10,10,4,10,10,4 290 | 3,1,1,1,2,1,3,1,1,2 291 | 7,3,2,10,5,10,5,4,4,4 292 | 10,10,10,3,10,10,9,10,1,4 293 | 1,1,1,1,4,3,1,1,1,2 294 | 8,8,9,4,5,10,7,8,1,4 295 | 3,1,1,1,2,1,1,1,1,2 296 | 5,1,1,1,2,1,1,1,1,2 297 | 1,1,1,1,3,2,2,1,1,2 298 | 5,1,1,1,2,1,1,1,1,2 299 | 7,6,4,8,10,10,9,5,3,4 300 | 4,1,1,1,2,1,3,1,1,2 301 | 4,8,8,5,4,5,10,4,1,4 302 | 3,7,7,4,4,9,4,8,1,4 303 | 5,2,2,4,2,4,1,1,1,2 304 | 3,3,5,2,3,10,7,1,1,4 305 | 6,2,1,1,1,1,7,1,1,2 306 | 9,1,2,6,4,10,7,7,2,4 307 | 3,1,2,1,2,1,2,1,1,2 308 | 1,1,1,1,2,1,1,1,1,2 309 | 3,1,1,3,8,1,5,8,1,2 310 | 10,4,6,1,2,10,5,3,1,4 311 | 1,1,1,1,2,1,1,1,1,2 312 | 1,1,1,1,2,1,1,1,1,2 313 | 4,1,1,2,2,1,2,1,1,2 314 | 1,1,1,1,2,1,2,1,1,2 315 | 4,1,1,1,2,1,1,1,1,2 316 | 3,3,2,6,3,3,3,5,1,2 317 | 6,1,3,2,2,1,1,1,1,2 318 | 5,1,2,1,2,1,3,1,1,2 319 | 5,1,1,1,2,1,1,1,1,2 320 | 3,1,2,2,2,1,1,1,1,2 321 | 3,1,1,1,2,1,2,1,1,2 322 | 3,1,1,1,1,1,1,1,1,2 323 | 2,1,1,1,2,1,1,1,1,2 324 | 1,1,1,1,1,1,2,1,1,2 325 | 1,1,2,1,3,1,1,1,1,2 326 | 3,2,2,3,2,3,3,1,1,2 327 | 6,8,7,8,6,8,8,9,1,4 328 | 2,1,1,1,2,1,2,1,1,2 329 | 8,10,3,2,6,4,3,10,1,4 330 | 4,2,1,1,2,1,2,1,1,2 331 | 6,1,1,3,2,1,1,1,1,2 332 | 3,1,1,1,1,1,2,1,1,2 333 | 2,3,2,2,2,2,3,1,1,2 334 | 4,8,6,3,4,10,7,1,1,4 335 | 1,1,1,1,2,1,1,1,8,2 336 | 2,1,1,1,2,1,2,1,1,2 337 | 1,1,3,1,2,1,1,1,1,2 338 | 9,8,8,9,6,3,4,1,1,4 339 | 5,10,10,3,7,3,8,10,2,4 340 | 3,1,1,1,2,1,2,1,1,2 341 | 3,2,1,2,2,1,3,1,1,2 342 | 1,1,1,1,2,1,2,1,1,2 343 | 10,10,8,6,4,5,8,10,1,4 344 | 8,2,4,1,5,1,5,4,4,4 345 | 1,1,3,1,2,1,1,1,1,2 346 | 1,1,1,1,2,1,3,1,1,2 347 | 5,1,1,1,2,1,2,1,1,2 348 | 1,2,3,1,2,1,3,1,1,2 349 | 10,4,3,10,3,10,7,1,2,4 350 | 10,10,10,10,7,10,7,10,4,4 351 | 5,1,2,1,2,1,1,1,1,2 352 | 1,2,1,3,2,1,1,2,1,2 353 | 4,10,4,7,3,10,9,10,1,4 354 | 1,1,1,1,2,1,1,1,1,2 355 | 4,2,1,1,2,1,1,1,1,2 356 | 10,2,2,1,2,6,1,1,2,4 357 | 4,2,2,1,2,1,2,1,1,2 358 | 5,1,3,1,2,1,1,1,1,2 359 | 5,8,7,7,10,10,5,7,1,4 360 | 1,1,1,1,2,1,3,1,1,2 361 | 1,1,1,1,3,1,1,1,1,2 362 | 5,10,10,3,8,1,5,10,3,4 363 | 6,1,3,1,2,1,3,1,1,2 364 | 5,3,4,1,4,1,3,1,1,2 365 | 1,1,1,1,2,1,2,1,1,2 366 | 5,7,4,1,6,1,7,10,3,4 367 | 4,3,2,1,3,1,2,1,1,2 368 | 3,1,1,1,2,1,2,1,1,2 369 | 4,1,1,1,2,1,1,1,1,2 370 | 9,10,10,10,10,5,10,10,10,4 371 | 5,10,10,10,4,10,5,6,3,4 372 | 2,1,1,1,2,1,3,1,1,2 373 | 1,1,1,1,2,1,2,1,1,2 374 | 10,5,5,6,3,10,7,9,2,4 375 | 5,10,10,10,5,2,8,5,1,4 376 | 7,8,7,6,4,3,8,8,4,4 377 | 3,1,1,1,2,1,1,1,1,2 378 | 3,1,1,1,2,1,2,1,1,2 379 | 2,1,1,1,2,1,3,1,1,2 380 | 1,1,1,1,2,5,5,1,1,2 381 | 4,1,1,1,2,1,3,1,1,2 382 | 8,7,6,4,4,10,5,1,1,4 383 | 3,3,6,4,5,8,4,4,1,4 384 | 1,1,1,1,2,1,2,1,1,2 385 | 1,1,3,2,2,1,3,1,1,2 386 | 10,4,3,10,4,10,10,1,1,4 387 | 1,1,1,1,2,1,2,1,1,2 388 | 5,1,1,1,2,1,3,1,1,2 389 | 10,3,5,4,3,7,3,5,3,4 390 | 3,1,1,1,2,4,1,1,1,2 391 | 6,1,1,3,2,1,1,1,1,2 392 | 1,1,1,1,1,1,2,1,1,2 393 | 1,1,1,1,1,1,3,1,1,2 394 | 6,1,1,1,2,1,3,1,1,2 395 | 6,6,6,9,6,1,7,8,1,2 396 | 5,3,1,2,2,1,2,1,1,2 397 | 3,6,4,10,3,3,3,4,1,4 398 | 10,3,5,1,10,5,3,10,2,4 399 | 1,4,3,10,4,10,5,6,1,4 400 | 1,1,2,1,2,1,2,1,1,2 401 | 5,1,1,1,2,1,2,1,1,2 402 | 8,7,4,4,5,3,5,10,1,4 403 | 3,1,4,1,2,1,3,1,1,2 404 | 6,5,5,8,4,10,3,4,1,4 405 | 3,1,1,1,1,1,2,1,1,2 406 | 6,8,8,1,3,4,3,7,1,2 407 | 4,3,3,1,2,1,3,3,1,2 408 | 4,7,8,3,4,10,9,1,1,4 409 | 8,7,8,2,4,2,5,10,1,4 410 | 2,3,4,4,2,5,2,5,1,4 411 | 2,1,1,1,3,1,2,1,1,2 412 | 3,1,1,1,2,1,3,1,1,2 413 | 10,8,7,4,3,10,7,9,1,4 414 | 5,1,2,10,4,5,2,1,1,2 415 | 1,1,1,1,2,1,3,1,1,2 416 | 3,1,1,1,2,1,2,1,1,2 417 | 3,1,1,1,2,1,2,1,1,2 418 | 10,4,7,2,2,8,6,1,1,4 419 | 5,1,4,1,2,1,3,2,1,2 420 | 5,10,6,1,10,4,4,10,10,4 421 | 4,1,1,1,2,3,1,1,1,2 422 | 5,1,3,1,2,1,2,1,1,2 423 | 4,5,5,8,6,10,10,7,1,4 424 | 5,8,8,8,5,10,7,8,1,4 425 | 4,1,1,3,1,1,2,1,1,2 426 | 7,9,4,10,10,3,5,3,3,4 427 | 2,1,1,1,2,1,1,1,1,2 428 | 4,5,5,10,4,10,7,5,8,4 429 | 3,1,4,1,2,1,1,1,1,2 430 | 2,1,1,1,2,1,2,1,1,2 431 | 4,1,1,1,2,1,1,1,1,2 432 | 6,10,10,2,8,10,7,3,3,4 433 | 10,5,8,10,3,10,5,1,3,4 434 | 3,2,2,1,4,3,2,1,1,2 435 | 3,1,1,2,3,4,1,1,1,2 436 | 5,3,4,1,8,10,4,9,1,4 437 | 1,1,1,1,1,1,1,3,1,2 438 | 1,1,1,1,2,1,1,1,1,2 439 | 6,6,6,5,4,10,7,6,2,4 440 | 5,1,1,1,2,1,1,1,1,2 441 | 3,3,1,1,2,1,1,1,1,2 442 | 5,4,6,8,4,1,8,10,1,4 443 | 3,1,1,1,2,1,1,1,1,2 444 | 6,10,10,10,8,10,10,10,7,4 445 | 3,1,1,3,1,1,3,1,1,2 446 | 10,8,8,2,8,10,4,8,10,4 447 | 10,4,3,2,3,10,5,3,2,4 448 | 1,1,1,1,2,1,3,1,1,2 449 | 8,4,4,1,2,9,3,3,1,4 450 | 1,1,2,2,2,1,3,1,1,2 451 | 5,8,4,10,5,8,9,10,1,4 452 | 4,1,1,1,2,1,2,1,1,2 453 | 1,1,1,1,2,1,1,1,1,2 454 | 1,1,1,1,2,1,2,1,1,2 455 | 5,1,1,1,2,1,2,1,1,2 456 | 2,5,7,6,4,10,7,6,1,4 457 | 8,10,10,10,6,10,10,10,10,4 458 | 5,1,2,1,2,1,1,1,1,2 459 | 1,1,1,3,1,3,1,1,1,2 460 | 10,5,5,3,6,7,7,10,1,4 461 | 3,1,1,1,2,1,3,1,1,2 462 | 3,1,1,1,2,3,3,1,1,2 463 | 1,1,1,1,2,1,3,1,1,2 464 | 5,2,1,1,2,1,3,1,1,2 465 | 5,10,10,6,10,10,10,6,5,4 466 | 10,10,8,10,6,5,10,3,1,4 467 | 5,1,1,1,3,2,2,2,1,2 468 | 10,4,3,1,3,3,6,5,2,4 469 | 4,1,2,1,2,1,2,1,1,2 470 | 1,1,1,1,2,1,2,1,1,2 471 | 1,1,1,1,2,1,3,1,1,2 472 | 5,1,1,3,2,1,1,1,1,2 473 | 5,1,1,1,2,1,1,1,1,2 474 | 7,5,6,3,3,8,7,4,1,4 475 | 2,1,2,1,2,1,3,1,1,2 476 | 3,1,1,1,2,2,3,1,1,2 477 | 5,2,2,2,2,2,3,2,2,2 478 | 2,1,1,1,2,1,3,1,1,2 479 | 5,1,1,1,2,1,3,2,1,2 480 | 1,1,1,3,2,1,1,1,1,2 481 | 4,4,4,2,2,3,2,1,1,2 482 | 10,4,4,6,2,10,2,3,1,4 483 | 3,1,1,1,2,1,2,1,1,2 484 | 4,1,1,1,2,1,3,1,1,2 485 | 3,1,1,1,2,1,2,3,1,2 486 | 3,1,1,1,2,1,2,1,1,2 487 | 2,5,3,3,6,7,7,5,1,4 488 | 4,1,1,1,2,1,2,1,1,2 489 | 10,6,3,6,4,10,7,8,4,4 490 | 4,6,5,6,7,1,4,9,1,2 491 | 1,1,1,1,2,1,1,1,1,2 492 | 5,4,6,6,4,10,4,3,1,4 493 | 3,2,2,1,2,1,2,3,1,2 494 | 2,3,1,1,2,1,2,1,1,2 495 | 5,10,10,10,10,10,10,1,1,4 496 | 1,1,3,1,2,1,2,1,1,2 497 | 8,6,7,3,3,10,3,4,2,4 498 | 10,6,4,1,3,4,3,2,3,4 499 | 4,1,2,1,2,1,2,1,1,2 500 | 5,1,3,3,2,2,2,3,1,2 501 | 1,1,3,1,2,1,1,1,1,2 502 | -------------------------------------------------------------------------------- /exps/data_files/b_train.csv: -------------------------------------------------------------------------------- 1 | f1,f2,f3,f4,f5,f6,f7,f8,f9,Y 2 | 6,10,10,10,8,10,10,10,7,4 3 | 4,1,1,1,2,1,2,1,1,2 4 | 3,1,4,1,2,1,3,1,1,2 5 | 5,3,2,8,5,10,8,1,2,4 6 | 1,1,1,1,10,1,1,1,1,2 7 | 1,1,1,3,2,3,1,1,1,2 8 | 5,5,5,6,3,10,3,1,1,4 9 | 5,1,1,4,2,1,3,1,1,2 10 | 2,1,1,1,3,1,2,1,1,2 11 | 8,9,9,5,3,5,7,7,1,4 12 | 10,10,10,8,6,1,8,9,1,4 13 | 5,10,8,10,8,10,3,6,3,4 14 | 1,1,1,1,2,1,1,1,1,2 15 | 10,6,6,2,4,10,9,7,1,4 16 | 4,1,1,1,2,3,1,1,1,2 17 | 10,4,4,10,6,10,5,5,1,4 18 | 3,1,1,1,2,1,1,1,1,2 19 | 7,5,6,3,3,8,7,4,1,4 20 | 4,2,1,1,2,1,1,1,1,2 21 | 10,5,8,10,3,10,5,1,3,4 22 | 2,5,7,6,4,10,7,6,1,4 23 | 1,1,3,1,2,1,2,1,1,2 24 | 6,1,3,1,2,1,3,1,1,2 25 | 2,1,1,1,2,1,2,1,1,2 26 | 3,1,1,1,2,1,1,1,1,2 27 | 1,2,3,1,2,1,3,1,1,2 28 | 1,1,3,1,2,1,1,1,1,2 29 | 10,10,8,6,4,5,8,10,1,4 30 | 2,1,1,1,1,1,1,1,1,2 31 | 1,1,1,1,1,1,3,1,1,2 32 | 3,1,3,1,3,4,1,1,1,2 33 | 5,2,2,2,2,1,2,2,1,2 34 | 6,1,3,1,4,5,5,10,1,4 35 | 5,5,7,8,6,10,7,4,1,4 36 | 1,1,1,1,2,1,2,1,1,2 37 | 4,3,2,1,3,1,2,1,1,2 38 | 1,1,1,1,2,1,2,1,1,2 39 | 4,1,2,1,2,1,1,1,1,2 40 | 1,1,1,1,2,1,1,1,1,2 41 | 6,1,3,2,2,1,1,1,1,2 42 | 8,10,10,10,5,10,8,10,6,4 43 | 5,1,3,1,2,1,2,1,1,2 44 | 1,1,1,1,2,1,2,1,1,2 45 | 4,1,1,3,1,5,2,1,1,4 46 | 1,1,1,1,2,1,1,1,1,2 47 | 7,6,3,2,5,10,7,4,6,4 48 | 9,4,5,10,6,10,4,8,1,4 49 | 3,1,1,1,2,1,3,1,1,2 50 | 8,10,3,2,6,4,3,10,1,4 51 | 1,1,1,1,2,1,1,1,1,2 52 | 3,2,2,3,2,1,1,1,1,2 53 | 4,1,1,1,2,1,2,1,1,2 54 | 3,1,1,1,2,1,3,1,1,2 55 | 3,1,1,1,2,1,3,2,1,2 56 | 5,8,9,4,3,10,7,1,1,4 57 | 4,1,1,1,2,1,3,1,1,2 58 | 2,1,1,2,2,1,3,1,1,2 59 | 3,1,1,1,1,1,2,1,1,2 60 | 3,1,2,1,2,1,2,1,1,2 61 | 7,5,10,10,10,10,4,10,3,4 62 | 5,3,4,3,4,5,4,7,1,2 63 | 1,1,1,1,1,1,2,1,1,2 64 | 1,1,1,1,2,1,3,1,1,2 65 | 1,1,1,1,2,1,3,1,1,2 66 | 4,1,1,2,2,1,1,1,1,2 67 | 5,1,2,1,2,1,1,1,1,2 68 | 10,10,10,7,10,10,8,2,1,4 69 | 8,6,7,3,3,10,3,4,2,4 70 | 1,1,2,1,2,1,2,1,1,2 71 | 8,7,8,5,10,10,7,2,1,4 72 | 1,1,1,1,2,4,1,1,1,2 73 | 9,5,5,4,4,5,4,3,3,4 74 | 3,10,3,10,6,10,5,1,4,4 75 | 1,1,1,1,2,1,3,1,1,2 76 | 4,1,1,3,2,1,3,1,1,2 77 | 1,1,1,1,2,1,2,1,1,2 78 | 4,1,1,1,2,1,1,1,1,2 79 | 1,1,1,1,2,1,1,1,1,2 80 | 3,1,1,1,2,1,3,1,1,2 81 | 7,4,5,10,2,10,3,8,2,4 82 | 3,1,1,1,2,1,2,1,1,2 83 | 3,1,1,1,2,1,1,1,1,2 84 | 10,5,5,6,3,10,7,9,2,4 85 | 10,4,3,1,3,3,6,5,2,4 86 | 2,1,1,1,2,1,3,1,1,2 87 | 10,8,10,10,6,1,3,1,10,4 88 | 5,7,9,8,6,10,8,10,1,4 89 | 1,2,1,3,2,1,1,2,1,2 90 | 2,3,1,1,3,1,1,1,1,2 91 | 8,7,8,5,5,10,9,10,1,4 92 | 5,1,1,1,2,1,3,1,1,2 93 | 4,1,2,1,2,1,2,1,1,2 94 | 3,1,1,4,3,1,2,2,1,2 95 | 1,1,1,3,2,1,1,1,1,2 96 | 4,1,1,1,2,1,3,1,1,2 97 | 3,1,1,1,2,2,7,1,1,2 98 | 1,1,1,1,2,5,1,1,1,2 99 | 5,3,3,1,3,3,3,3,3,4 100 | 5,2,2,2,2,1,1,1,2,2 101 | 7,5,6,10,5,10,7,9,4,4 102 | 3,1,1,1,2,1,3,1,1,2 103 | 8,10,10,10,8,10,10,7,3,4 104 | 10,10,10,3,10,10,9,10,1,4 105 | 6,10,10,2,8,10,7,3,3,4 106 | 5,1,1,1,2,1,2,1,1,2 107 | 1,1,1,1,2,10,3,1,1,2 108 | 5,3,5,1,8,10,5,3,1,4 109 | 4,3,3,1,2,1,3,3,1,2 110 | 1,1,1,2,1,3,1,1,7,2 111 | 3,1,1,1,2,1,2,1,2,2 112 | 3,1,1,1,3,1,2,1,1,2 113 | 1,1,1,1,2,1,2,1,1,2 114 | 4,1,1,1,2,1,1,1,1,2 115 | 10,10,10,10,3,10,10,6,1,4 116 | 3,1,1,1,2,1,2,2,1,2 117 | 1,1,1,1,5,1,3,1,1,2 118 | 3,1,1,1,2,1,1,1,1,2 119 | 1,3,1,1,2,1,2,2,1,2 120 | 3,1,1,1,2,1,2,1,1,2 121 | 3,1,1,1,2,2,3,1,1,2 122 | 3,1,1,3,2,1,2,1,1,2 123 | 5,6,6,8,6,10,4,10,4,4 124 | 1,1,1,1,2,1,2,1,1,2 125 | 1,1,1,2,2,1,2,1,1,2 126 | 2,1,1,1,2,1,3,1,1,2 127 | 3,1,1,1,2,1,2,3,1,2 128 | 5,1,1,1,2,1,2,1,1,2 129 | 1,1,1,1,1,1,2,1,1,2 130 | 3,10,7,8,5,8,7,4,1,4 131 | 5,10,10,6,10,10,10,6,5,4 132 | 1,1,1,1,2,1,3,1,1,2 133 | 8,4,6,3,3,1,4,3,1,2 134 | 5,3,4,1,4,1,3,1,1,2 135 | 6,1,1,1,2,1,2,1,1,2 136 | 6,1,1,1,2,1,3,1,1,2 137 | 3,1,1,1,1,1,2,1,1,2 138 | 1,1,1,1,2,2,2,1,1,2 139 | 8,4,7,1,3,10,3,9,2,4 140 | 8,10,10,7,10,10,7,3,8,4 141 | 9,7,7,5,5,10,7,8,3,4 142 | 3,1,1,1,2,1,2,1,1,2 143 | 3,2,1,1,2,1,2,2,1,2 144 | 6,10,10,10,4,10,7,10,1,4 145 | 5,1,3,3,2,2,2,3,1,2 146 | 7,1,2,3,2,1,2,1,1,2 147 | 10,8,4,4,4,10,3,10,4,4 148 | 5,3,3,1,2,1,2,1,1,2 149 | 1,1,1,1,1,1,1,1,1,2 150 | 3,1,1,1,2,1,3,1,1,2 151 | 2,1,1,1,2,5,1,1,1,2 152 | 2,1,1,1,2,1,1,1,1,2 153 | 4,1,3,3,2,1,1,1,1,2 154 | 8,10,10,8,6,9,3,10,10,4 155 | 2,1,1,1,1,1,3,1,1,2 156 | 1,1,1,1,2,1,2,1,1,2 157 | 1,1,1,1,1,1,3,1,1,2 158 | 4,4,4,2,2,3,2,1,1,2 159 | 10,10,10,10,6,10,8,1,5,4 160 | 5,4,4,5,7,10,3,2,1,2 161 | 3,4,5,2,6,8,4,1,1,4 162 | 1,1,1,1,2,1,1,1,1,2 163 | 10,10,10,2,10,10,5,3,3,4 164 | 10,10,10,10,5,10,10,10,7,4 165 | 1,1,1,1,1,1,3,1,1,2 166 | 5,3,2,4,2,1,1,1,1,2 167 | 3,1,2,1,2,1,3,1,1,2 168 | 9,9,10,3,6,10,7,10,6,4 169 | 10,8,8,2,3,4,8,7,8,4 170 | 3,10,8,7,6,9,9,3,8,4 171 | 2,1,1,1,2,1,1,1,1,2 172 | 5,2,1,1,2,1,3,1,1,2 173 | 7,4,7,4,3,7,7,6,1,4 174 | 5,2,2,2,1,1,2,1,1,2 175 | 5,10,10,5,4,5,4,4,1,4 176 | 3,1,1,1,2,4,1,1,1,2 177 | 4,2,2,1,2,1,2,1,1,2 178 | 1,1,1,1,2,1,2,1,1,2 179 | 6,3,3,5,3,10,3,5,3,2 180 | 5,10,10,10,10,10,10,1,1,4 181 | 10,3,5,1,10,5,3,10,2,4 182 | 10,10,10,1,6,1,2,8,1,4 183 | 5,10,10,10,6,10,6,5,2,4 184 | 5,1,1,1,2,1,3,1,1,2 185 | 8,8,9,6,6,3,10,10,1,4 186 | 1,3,3,2,2,1,7,2,1,2 187 | 9,8,8,5,6,2,4,10,4,4 188 | 10,10,10,10,10,10,4,10,10,4 189 | 3,3,2,1,2,3,3,1,1,2 190 | 3,1,1,1,2,1,3,1,1,2 191 | 4,6,5,6,7,1,4,9,1,2 192 | 5,1,1,3,2,1,1,1,1,2 193 | 8,6,4,3,5,9,3,1,1,4 194 | 1,1,1,1,1,1,3,1,1,2 195 | 2,5,3,3,6,7,7,5,1,4 196 | 4,1,2,1,2,1,2,1,1,2 197 | 1,1,1,1,2,1,3,1,1,2 198 | 5,1,1,2,2,1,2,1,1,2 199 | 9,6,9,2,10,6,2,9,10,4 200 | 5,1,1,1,2,1,2,2,1,2 201 | 4,1,1,1,2,1,3,1,1,2 202 | 4,1,1,1,2,1,3,1,1,2 203 | 6,6,6,9,6,1,7,8,1,2 204 | 4,4,2,1,2,5,2,1,2,2 205 | 10,5,10,3,5,8,7,8,3,4 206 | 10,6,6,3,4,5,3,6,1,4 207 | 5,1,1,1,2,1,3,1,1,2 208 | 5,1,1,1,2,1,2,1,1,2 209 | 4,1,1,1,2,1,1,1,1,2 210 | 1,1,1,1,2,1,1,1,1,2 211 | 1,1,1,1,1,1,1,1,1,2 212 | 1,1,1,1,1,1,2,1,1,2 213 | 1,1,1,1,2,1,1,1,1,2 214 | 8,5,6,2,3,10,6,6,1,4 215 | 10,5,6,10,6,10,7,7,10,4 216 | 5,3,3,4,2,4,3,4,1,4 217 | 5,4,4,9,2,10,5,6,1,4 218 | 4,8,8,5,4,5,10,4,1,4 219 | 8,7,8,2,4,2,5,10,1,4 220 | 3,1,1,1,2,1,3,1,1,2 221 | 6,10,10,10,8,10,7,10,7,4 222 | 3,3,1,1,2,1,1,1,1,2 223 | 3,1,2,2,2,1,1,1,1,2 224 | 4,3,1,1,2,1,4,8,1,2 225 | 1,1,1,1,2,1,2,1,1,2 226 | 4,2,3,5,3,8,7,6,1,4 227 | 8,10,10,10,7,5,4,8,7,4 228 | 4,5,5,10,4,10,7,5,8,4 229 | 8,6,4,10,10,1,3,5,1,4 230 | 1,1,1,1,2,1,1,1,1,2 231 | 3,1,1,2,2,1,1,1,1,2 232 | 10,4,3,2,3,10,5,3,2,4 233 | 5,8,4,10,5,8,9,10,1,4 234 | 5,2,3,1,6,10,5,1,1,4 235 | 10,3,3,1,2,10,7,6,1,4 236 | 1,4,3,10,4,10,5,6,1,4 237 | 1,1,1,1,2,1,1,1,1,2 238 | 4,1,1,1,2,1,1,2,1,2 239 | 5,1,1,3,2,1,1,1,1,2 240 | 8,6,5,4,3,10,6,1,1,4 241 | 1,1,1,1,2,1,1,1,1,2 242 | 5,8,8,10,5,10,8,10,3,4 243 | 5,1,1,1,2,1,2,2,1,2 244 | 5,3,5,5,3,3,4,10,1,4 245 | 3,1,1,1,2,1,2,1,1,2 246 | 1,1,3,1,1,1,2,1,1,2 247 | 1,1,1,1,2,1,2,1,2,2 248 | 1,1,3,2,2,1,3,1,1,2 249 | 3,1,1,1,3,2,1,1,1,2 250 | 4,1,1,1,2,1,2,1,1,2 251 | 7,6,10,5,3,10,9,10,2,4 252 | 1,1,1,1,2,1,2,1,1,2 253 | 1,1,1,1,2,1,3,1,1,2 254 | 4,2,1,1,2,2,3,1,1,2 255 | 4,1,1,1,2,1,2,1,1,2 256 | 5,1,3,1,2,1,2,1,1,2 257 | 9,5,8,1,2,3,2,1,5,4 258 | 5,5,5,8,10,8,7,3,7,4 259 | 3,3,5,2,3,10,7,1,1,4 260 | 2,1,1,1,2,1,3,1,1,2 261 | 2,1,1,1,2,1,2,1,1,2 262 | 1,1,1,1,2,1,3,1,1,2 263 | 4,1,1,1,2,1,3,1,1,2 264 | 8,7,5,10,7,9,5,5,4,4 265 | 4,1,1,1,2,1,1,1,1,2 266 | 1,1,1,1,2,1,2,1,1,2 267 | 5,1,4,1,2,1,3,2,1,2 268 | 2,3,1,1,5,1,1,1,1,2 269 | 1,1,3,1,2,1,2,1,1,2 270 | 7,5,3,7,4,10,7,5,5,4 271 | 10,4,4,10,2,10,5,3,3,4 272 | 8,7,8,7,5,5,5,10,2,4 273 | 10,4,5,5,5,10,4,1,1,4 274 | 3,2,1,1,1,1,2,1,1,2 275 | 3,2,1,2,2,1,3,1,1,2 276 | 6,10,10,2,8,10,7,3,3,4 277 | 1,1,1,1,2,1,2,1,1,2 278 | 2,1,1,1,2,1,1,1,1,2 279 | 1,1,1,1,2,1,2,1,1,2 280 | 1,1,1,1,2,2,1,1,1,2 281 | 5,10,10,8,5,5,7,10,1,4 282 | 3,6,6,6,5,10,6,8,3,4 283 | 1,1,1,1,2,1,1,1,1,2 284 | 5,1,1,6,3,1,2,1,1,2 285 | 1,1,1,1,4,3,1,1,1,2 286 | 2,1,1,1,2,1,2,2,1,2 287 | 6,10,2,8,10,2,7,8,10,4 288 | 1,1,1,1,2,1,3,1,1,2 289 | 2,1,1,1,2,1,3,1,1,2 290 | 4,2,1,1,2,1,2,1,1,2 291 | 4,1,1,1,2,1,3,1,1,2 292 | 6,3,4,1,5,2,3,9,1,4 293 | 1,1,3,1,2,1,1,1,1,2 294 | 1,1,1,1,2,1,2,1,1,2 295 | 1,6,8,10,8,10,5,7,1,4 296 | 3,1,1,1,1,1,2,1,1,2 297 | 5,4,6,7,9,7,8,10,1,4 298 | 5,1,1,1,2,2,3,3,1,2 299 | 4,1,1,2,2,1,2,1,1,2 300 | 9,5,5,2,2,2,5,1,1,4 301 | 2,1,1,1,2,1,2,1,1,2 302 | 1,1,1,1,2,5,5,1,1,2 303 | 7,6,4,8,10,10,9,5,3,4 304 | 4,1,2,1,2,1,3,1,1,2 305 | 5,10,10,10,5,2,8,5,1,4 306 | 5,1,1,6,3,1,1,1,1,2 307 | 10,7,7,6,4,10,4,1,2,4 308 | 1,1,1,3,2,1,1,1,1,2 309 | 4,1,1,1,2,1,2,1,1,2 310 | 10,9,7,3,4,2,7,7,1,4 311 | 4,1,1,1,2,1,3,2,1,2 312 | 3,1,1,1,2,1,1,1,1,2 313 | 1,1,1,1,2,3,3,1,1,2 314 | 3,1,1,1,2,1,2,1,1,2 315 | 8,10,10,8,5,10,7,8,1,4 316 | 3,5,7,8,8,9,7,10,7,4 317 | 1,1,1,1,2,1,1,1,1,2 318 | 2,1,1,1,2,1,1,1,1,2 319 | 8,3,5,4,5,10,1,6,2,4 320 | 5,1,1,1,2,1,1,1,1,2 321 | 6,5,4,4,3,9,7,8,3,4 322 | 9,1,2,6,4,10,7,7,2,4 323 | 4,10,8,5,4,1,10,1,1,4 324 | 7,9,4,10,10,3,5,3,3,4 325 | 1,1,1,1,2,1,2,1,1,2 326 | 3,1,1,1,2,1,3,1,1,2 327 | 1,1,1,1,2,1,3,1,1,2 328 | 4,1,2,1,2,1,2,1,1,2 329 | 5,4,5,1,8,1,3,6,1,2 330 | 1,2,1,3,2,1,2,1,1,2 331 | 4,8,7,10,4,10,7,5,1,4 332 | 5,1,1,1,2,1,1,1,1,2 333 | 6,1,1,1,1,1,1,1,1,2 334 | 5,2,2,4,2,4,1,1,1,2 335 | 5,1,1,1,2,1,3,1,1,2 336 | 1,1,1,1,1,1,2,1,1,2 337 | 5,3,2,1,3,1,1,1,1,2 338 | 10,5,7,4,4,10,8,9,1,4 339 | 1,1,1,1,2,1,2,1,1,2 340 | 3,1,1,1,2,1,1,1,1,2 341 | 5,1,1,1,2,1,1,1,1,2 342 | 1,1,1,1,2,1,1,1,1,2 343 | 5,2,2,2,3,1,1,3,1,2 344 | 1,1,1,1,2,1,1,1,1,2 345 | 10,10,10,4,8,1,8,10,1,4 346 | 3,3,6,4,5,8,4,4,1,4 347 | 4,7,8,3,4,10,9,1,1,4 348 | 6,8,7,5,6,8,8,9,2,4 349 | 6,10,10,10,10,10,8,10,10,4 350 | 4,2,2,1,2,1,2,1,1,2 351 | 4,1,1,1,2,1,2,1,1,2 352 | 1,1,1,1,2,1,1,1,1,2 353 | 3,1,1,1,2,1,2,1,1,2 354 | 1,1,1,1,2,1,3,1,1,2 355 | 1,1,1,1,2,1,2,1,1,2 356 | 5,8,8,8,5,10,7,8,1,4 357 | 5,1,2,1,2,1,3,1,1,2 358 | 7,5,6,10,4,10,5,3,1,4 359 | 7,4,4,3,4,10,6,9,1,4 360 | 3,1,1,1,2,1,3,1,1,2 361 | 1,1,1,1,2,1,1,1,8,2 362 | 2,1,1,1,2,1,3,1,1,2 363 | 8,4,4,1,6,10,2,5,2,4 364 | 5,3,4,1,8,10,4,9,1,4 365 | 5,1,1,1,2,1,2,1,1,2 366 | 10,6,5,8,5,10,8,6,1,4 367 | 4,5,5,8,6,10,10,7,1,4 368 | 7,2,4,1,6,10,5,4,3,4 369 | 5,3,6,1,2,1,1,1,1,2 370 | 2,1,1,1,2,1,1,1,1,2 371 | 1,1,1,1,3,2,2,1,1,2 372 | 2,1,1,1,2,1,1,1,1,2 373 | 8,2,3,1,6,3,7,1,1,4 374 | 3,1,1,1,2,1,2,1,1,2 375 | 5,7,10,6,5,10,7,5,1,4 376 | 3,1,2,1,2,1,2,1,1,2 377 | 5,2,1,1,2,1,1,1,1,2 378 | 5,1,3,1,2,1,1,1,1,2 379 | 3,1,1,2,3,4,1,1,1,2 380 | 10,3,5,4,3,7,3,5,3,4 381 | 5,1,1,1,2,1,2,1,1,2 382 | 9,10,10,10,10,10,10,10,1,4 383 | 5,1,1,1,2,1,1,1,1,2 384 | 7,4,6,4,6,1,4,3,1,4 385 | 1,1,1,1,2,1,3,1,1,2 386 | 2,2,2,1,1,1,7,1,1,2 387 | 5,7,4,1,6,1,7,10,3,4 388 | 8,2,1,1,5,1,1,1,1,2 389 | 8,10,4,4,8,10,8,2,1,4 390 | 3,1,1,3,2,1,1,1,1,2 391 | 10,10,6,3,3,10,4,3,2,4 392 | 3,1,1,1,2,1,2,1,1,2 393 | 10,1,1,1,2,10,5,4,1,4 394 | 3,1,1,1,2,1,2,1,1,2 395 | 1,1,1,1,2,1,3,2,1,2 396 | 3,1,1,1,2,1,2,1,1,2 397 | 5,1,2,1,2,1,2,1,1,2 398 | 3,4,5,3,7,3,4,6,1,2 399 | 5,1,2,1,2,1,1,1,1,2 400 | 1,1,1,1,2,1,2,1,1,2 401 | 2,1,3,2,2,1,2,1,1,2 402 | 4,8,6,3,4,10,7,1,1,4 403 | 6,1,1,3,2,1,1,1,1,2 404 | 1,1,1,1,2,1,3,1,1,2 405 | 6,8,7,8,6,8,8,9,1,4 406 | 2,1,1,1,2,1,1,1,1,2 407 | 3,1,1,1,2,1,2,1,1,2 408 | 4,1,1,1,1,1,2,1,1,2 409 | 5,1,1,1,2,1,1,1,1,2 410 | 2,1,1,1,2,1,1,1,1,2 411 | 1,1,1,1,2,1,3,1,1,2 412 | 5,1,1,1,2,1,2,1,1,2 413 | 4,1,1,1,3,1,2,2,1,2 414 | 10,10,10,3,10,8,8,1,1,4 415 | 10,10,10,7,9,10,7,10,10,4 416 | 3,1,1,1,2,1,2,1,1,2 417 | 1,1,1,1,1,1,3,1,1,2 418 | 3,1,4,1,2,1,1,1,1,2 419 | 6,10,5,5,4,10,6,10,1,4 420 | 10,3,3,10,2,10,7,3,3,4 421 | 8,10,8,8,4,8,7,7,1,4 422 | 6,1,1,1,2,1,3,1,1,2 423 | 4,1,1,1,1,1,2,1,1,2 424 | 1,1,1,1,2,1,1,1,1,2 425 | 1,1,1,1,2,1,1,1,1,2 426 | 5,4,6,10,2,10,4,1,1,4 427 | 1,1,1,1,2,1,3,1,1,2 428 | 1,1,1,1,2,5,1,1,1,2 429 | 2,3,1,1,2,1,2,1,1,2 430 | 7,3,4,4,3,3,3,2,7,4 431 | 3,1,1,1,2,1,1,1,1,2 432 | 4,1,1,1,2,1,1,1,1,2 433 | 1,1,1,1,1,1,1,1,1,2 434 | 10,4,7,2,2,8,6,1,1,4 435 | 3,1,1,1,2,1,1,1,1,2 436 | 4,1,1,1,2,1,3,1,1,2 437 | 5,8,7,7,10,10,5,7,1,4 438 | 3,2,1,1,2,2,3,1,1,2 439 | 8,4,10,5,4,4,7,10,1,4 440 | 8,7,4,4,5,3,5,10,1,4 441 | 3,1,1,1,2,1,1,1,1,2 442 | 2,1,1,1,1,1,2,1,1,2 443 | 1,1,1,1,1,1,1,1,1,2 444 | 1,1,1,1,3,1,1,1,1,2 445 | 4,2,4,3,2,2,2,1,1,2 446 | 4,1,1,1,2,1,1,1,1,2 447 | 3,1,1,1,2,1,2,1,1,2 448 | 3,1,2,1,2,1,2,1,1,2 449 | 3,1,1,1,2,1,2,1,1,2 450 | 5,1,1,1,3,2,2,2,1,2 451 | 1,1,1,1,2,1,3,1,1,2 452 | 10,4,3,10,4,10,10,1,1,4 453 | 6,9,7,5,5,8,4,2,1,2 454 | 10,10,7,8,7,1,10,10,3,4 455 | 8,5,5,5,2,10,4,3,1,4 456 | 1,1,1,1,1,1,1,3,1,2 457 | 3,1,1,1,2,1,2,1,1,2 458 | 2,1,1,2,2,1,3,1,1,2 459 | 3,2,2,1,4,3,2,1,1,2 460 | 5,1,1,1,2,1,1,1,1,2 461 | 1,2,2,1,2,1,1,1,1,2 462 | 5,2,3,4,2,7,3,6,1,4 463 | 5,1,1,2,1,1,2,1,1,2 464 | 2,1,1,1,2,1,3,1,1,2 465 | 5,1,1,1,2,2,2,1,1,2 466 | 3,2,2,1,2,1,2,3,1,2 467 | 8,3,4,9,3,10,3,3,1,4 468 | 5,1,1,1,1,1,1,1,1,2 469 | 5,1,1,1,2,1,1,1,1,2 470 | 5,1,1,3,2,1,1,1,1,2 471 | 3,1,1,1,2,1,3,1,1,2 472 | 5,4,6,8,4,1,8,10,1,4 473 | 3,3,2,6,3,3,3,5,1,2 474 | 3,1,1,1,2,1,2,1,1,2 475 | 10,9,8,7,6,4,7,10,3,4 476 | 9,10,10,1,10,8,3,3,1,4 477 | 4,4,4,4,6,5,7,3,1,2 478 | 10,10,10,10,7,10,7,10,4,4 479 | 5,1,1,2,2,2,3,1,1,2 480 | 3,1,1,1,2,1,1,1,1,2 481 | 8,10,10,10,6,10,10,10,10,4 482 | 3,3,5,2,3,10,7,1,1,4 483 | 3,3,2,1,3,1,3,6,1,2 484 | 8,2,4,1,5,1,5,4,4,4 485 | 1,5,8,6,5,8,7,10,1,4 486 | 1,1,1,1,1,1,2,1,1,2 487 | 8,10,10,1,3,6,3,9,1,4 488 | 10,5,5,6,8,8,7,1,1,4 489 | 6,3,2,1,3,4,4,1,1,4 490 | 5,1,1,1,2,1,3,1,1,2 491 | 1,1,1,1,2,1,1,1,1,2 492 | 1,2,2,1,2,1,2,1,1,2 493 | 4,1,1,3,2,1,1,1,1,2 494 | 6,1,1,1,2,1,3,1,1,2 495 | 5,10,10,3,7,3,8,10,2,4 496 | 3,1,1,1,1,1,2,1,1,2 497 | 4,1,4,1,2,1,1,1,1,2 498 | 10,7,7,4,5,10,5,7,2,4 499 | 1,1,1,3,1,3,1,1,1,2 500 | 3,1,1,1,2,5,1,1,1,2 501 | 10,3,4,5,3,10,4,1,1,4 502 | 4,1,1,1,2,1,1,1,1,2 503 | 5,1,2,1,2,1,3,1,1,2 504 | 5,5,5,2,5,10,4,3,1,4 505 | 8,8,9,4,5,10,7,8,1,4 506 | 5,10,10,10,10,2,10,10,10,4 507 | 5,6,5,6,10,1,3,1,1,4 508 | 8,3,3,1,2,2,3,2,1,2 509 | 10,4,6,4,5,10,7,1,1,4 510 | 10,7,7,3,8,5,7,4,3,4 511 | 6,1,1,3,2,1,1,1,1,2 512 | 4,1,1,1,2,1,2,1,1,2 513 | 1,1,1,1,1,1,3,1,1,2 514 | 4,1,1,1,2,1,2,1,1,2 515 | 10,4,4,6,2,10,2,3,1,4 516 | 4,1,1,1,2,1,2,1,1,2 517 | 3,1,1,1,2,1,2,1,1,2 518 | 8,7,6,4,4,10,5,1,1,4 519 | 5,1,1,1,2,1,3,1,1,2 520 | 10,4,2,1,3,2,4,3,10,4 521 | 5,7,10,10,5,10,10,10,1,4 522 | 5,1,2,1,2,1,1,1,1,2 523 | 4,1,1,1,2,1,3,1,1,2 524 | 4,1,1,1,2,1,3,2,1,2 525 | 2,1,1,1,2,1,2,1,1,2 526 | 5,1,1,1,1,1,3,1,1,2 527 | 8,10,10,8,7,10,9,7,1,4 528 | 4,1,1,3,1,1,2,1,1,2 529 | 1,1,2,1,2,2,4,2,1,2 530 | 4,1,1,1,2,2,3,2,1,2 531 | 5,2,2,2,2,2,3,2,2,2 532 | 1,1,1,1,2,1,1,1,1,2 533 | 1,1,1,1,2,1,1,1,1,2 534 | 5,1,1,1,2,1,2,1,1,2 535 | 2,1,1,1,3,1,2,1,1,2 536 | 8,8,8,1,2,1,6,10,1,4 537 | 3,1,1,1,2,1,3,1,1,2 538 | 3,1,1,1,3,1,2,1,1,2 539 | 2,3,2,2,2,2,3,1,1,2 540 | 5,6,7,8,8,10,3,10,3,4 541 | 10,10,8,10,6,5,10,3,1,4 542 | 3,2,2,2,2,1,3,2,1,2 543 | 5,1,1,3,2,1,1,1,1,2 544 | 10,8,8,2,8,10,4,8,10,4 545 | 5,10,10,10,4,10,5,6,3,4 546 | 1,1,1,1,2,1,3,1,1,2 547 | 1,1,2,1,2,1,2,1,1,2 548 | 2,1,1,1,2,1,2,1,1,2 549 | 4,1,1,1,2,1,1,1,1,2 550 | 10,10,10,6,8,4,8,5,1,4 551 | 4,1,3,1,2,1,2,1,1,2 552 | 1,1,1,1,2,1,1,1,1,2 553 | 7,3,2,10,5,10,5,4,4,4 554 | 9,8,8,9,6,3,4,1,1,4 555 | 5,3,3,2,3,1,3,1,1,2 556 | 10,10,10,10,10,1,8,8,8,4 557 | 8,10,10,10,6,10,10,10,1,4 558 | 10,10,10,8,2,10,4,1,1,4 559 | 1,1,1,1,2,1,2,1,1,2 560 | 2,7,10,10,7,10,4,9,4,4 561 | 1,1,2,1,3,1,1,1,1,2 562 | 9,10,10,10,10,5,10,10,10,4 563 | 3,1,1,1,2,1,2,1,1,2 564 | 6,10,7,7,6,4,8,10,2,4 565 | 6,6,6,5,4,10,7,6,2,4 566 | 1,1,1,1,2,1,3,1,1,2 567 | 2,1,1,1,2,1,1,1,1,2 568 | 2,1,1,1,2,1,2,1,1,2 569 | 1,1,1,1,1,1,1,1,1,2 570 | 8,4,4,5,4,7,7,8,2,2 571 | 5,1,1,1,2,1,3,1,2,2 572 | 8,8,7,4,10,10,7,8,7,4 573 | 2,1,1,1,2,1,1,1,1,2 574 | 1,2,3,1,2,1,2,1,1,2 575 | 1,1,1,1,2,1,2,1,1,2 576 | 1,1,1,1,2,1,1,1,1,2 577 | 1,1,4,1,2,1,2,1,1,2 578 | 5,1,1,1,2,1,3,1,1,2 579 | 7,8,7,2,4,8,3,8,2,4 580 | 1,1,3,1,2,1,2,1,1,2 581 | 3,1,1,1,2,1,1,1,1,2 582 | 1,1,1,1,1,1,2,1,1,2 583 | 5,6,6,2,4,10,3,6,1,4 584 | 6,6,7,10,3,10,8,10,2,4 585 | 3,1,1,3,8,1,5,8,1,2 586 | 10,4,5,4,3,5,7,3,1,4 587 | 8,4,5,1,2,1,7,3,1,4 588 | 3,1,1,1,2,1,2,1,1,2 589 | 1,1,1,1,2,1,2,1,1,2 590 | 10,10,10,8,6,8,7,10,1,4 591 | 6,8,8,1,3,4,3,7,1,2 592 | 5,2,4,1,1,1,1,1,1,2 593 | 2,1,1,1,2,1,2,1,1,2 594 | 3,1,1,1,2,3,3,1,1,2 595 | 1,1,1,1,2,1,3,1,1,2 596 | 1,1,1,1,2,1,2,3,1,2 597 | 9,10,10,1,10,8,3,3,1,4 598 | 1,1,1,2,1,1,1,1,1,2 599 | 3,2,2,3,2,3,3,1,1,2 600 | 1,1,2,2,2,1,3,1,1,2 601 | 5,1,1,1,2,1,2,2,1,2 602 | -------------------------------------------------------------------------------- /exps/data_files/breast-cancer-wisconsin.data: -------------------------------------------------------------------------------- 1 | i,f1,f2,f3,f4,f5,f6,f7,f8,f9,Y 2 | 1000025,5,1,1,1,2,1,3,1,1,2 3 | 1002945,5,4,4,5,7,10,3,2,1,2 4 | 1015425,3,1,1,1,2,2,3,1,1,2 5 | 1016277,6,8,8,1,3,4,3,7,1,2 6 | 1017023,4,1,1,3,2,1,3,1,1,2 7 | 1017122,8,10,10,8,7,10,9,7,1,4 8 | 1018099,1,1,1,1,2,10,3,1,1,2 9 | 1018561,2,1,2,1,2,1,3,1,1,2 10 | 1033078,2,1,1,1,2,1,1,1,5,2 11 | 1033078,4,2,1,1,2,1,2,1,1,2 12 | 1035283,1,1,1,1,1,1,3,1,1,2 13 | 1036172,2,1,1,1,2,1,2,1,1,2 14 | 1041801,5,3,3,3,2,3,4,4,1,4 15 | 1043999,1,1,1,1,2,3,3,1,1,2 16 | 1044572,8,7,5,10,7,9,5,5,4,4 17 | 1047630,7,4,6,4,6,1,4,3,1,4 18 | 1048672,4,1,1,1,2,1,2,1,1,2 19 | 1049815,4,1,1,1,2,1,3,1,1,2 20 | 1050670,10,7,7,6,4,10,4,1,2,4 21 | 1050718,6,1,1,1,2,1,3,1,1,2 22 | 1054590,7,3,2,10,5,10,5,4,4,4 23 | 1054593,10,5,5,3,6,7,7,10,1,4 24 | 1056784,3,1,1,1,2,1,2,1,1,2 25 | 1057013,8,4,5,1,2,1,7,3,1,4 26 | 1059552,1,1,1,1,2,1,3,1,1,2 27 | 1065726,5,2,3,4,2,7,3,6,1,4 28 | 1066373,3,2,1,1,1,1,2,1,1,2 29 | 1066979,5,1,1,1,2,1,2,1,1,2 30 | 1067444,2,1,1,1,2,1,2,1,1,2 31 | 1070935,1,1,3,1,2,1,1,1,1,2 32 | 1070935,3,1,1,1,1,1,2,1,1,2 33 | 1071760,2,1,1,1,2,1,3,1,1,2 34 | 1072179,10,7,7,3,8,5,7,4,3,4 35 | 1074610,2,1,1,2,2,1,3,1,1,2 36 | 1075123,3,1,2,1,2,1,2,1,1,2 37 | 1079304,2,1,1,1,2,1,2,1,1,2 38 | 1080185,10,10,10,8,6,1,8,9,1,4 39 | 1081791,6,2,1,1,1,1,7,1,1,2 40 | 1084584,5,4,4,9,2,10,5,6,1,4 41 | 1091262,2,5,3,3,6,7,7,5,1,4 42 | 1096800,6,6,6,9,6,1,7,8,1,2 43 | 1099510,10,4,3,1,3,3,6,5,2,4 44 | 1100524,6,10,10,2,8,10,7,3,3,4 45 | 1102573,5,6,5,6,10,1,3,1,1,4 46 | 1103608,10,10,10,4,8,1,8,10,1,4 47 | 1103722,1,1,1,1,2,1,2,1,2,2 48 | 1105257,3,7,7,4,4,9,4,8,1,4 49 | 1105524,1,1,1,1,2,1,2,1,1,2 50 | 1106095,4,1,1,3,2,1,3,1,1,2 51 | 1106829,7,8,7,2,4,8,3,8,2,4 52 | 1108370,9,5,8,1,2,3,2,1,5,4 53 | 1108449,5,3,3,4,2,4,3,4,1,4 54 | 1110102,10,3,6,2,3,5,4,10,2,4 55 | 1110503,5,5,5,8,10,8,7,3,7,4 56 | 1110524,10,5,5,6,8,8,7,1,1,4 57 | 1111249,10,6,6,3,4,5,3,6,1,4 58 | 1112209,8,10,10,1,3,6,3,9,1,4 59 | 1113038,8,2,4,1,5,1,5,4,4,4 60 | 1113483,5,2,3,1,6,10,5,1,1,4 61 | 1113906,9,5,5,2,2,2,5,1,1,4 62 | 1115282,5,3,5,5,3,3,4,10,1,4 63 | 1115293,1,1,1,1,2,2,2,1,1,2 64 | 1116116,9,10,10,1,10,8,3,3,1,4 65 | 1116132,6,3,4,1,5,2,3,9,1,4 66 | 1116192,1,1,1,1,2,1,2,1,1,2 67 | 1116998,10,4,2,1,3,2,4,3,10,4 68 | 1117152,4,1,1,1,2,1,3,1,1,2 69 | 1118039,5,3,4,1,8,10,4,9,1,4 70 | 1120559,8,3,8,3,4,9,8,9,8,4 71 | 1121732,1,1,1,1,2,1,3,2,1,2 72 | 1121919,5,1,3,1,2,1,2,1,1,2 73 | 1123061,6,10,2,8,10,2,7,8,10,4 74 | 1124651,1,3,3,2,2,1,7,2,1,2 75 | 1125035,9,4,5,10,6,10,4,8,1,4 76 | 1126417,10,6,4,1,3,4,3,2,3,4 77 | 1131294,1,1,2,1,2,2,4,2,1,2 78 | 1132347,1,1,4,1,2,1,2,1,1,2 79 | 1133041,5,3,1,2,2,1,2,1,1,2 80 | 1133136,3,1,1,1,2,3,3,1,1,2 81 | 1136142,2,1,1,1,3,1,2,1,1,2 82 | 1137156,2,2,2,1,1,1,7,1,1,2 83 | 1143978,4,1,1,2,2,1,2,1,1,2 84 | 1143978,5,2,1,1,2,1,3,1,1,2 85 | 1147044,3,1,1,1,2,2,7,1,1,2 86 | 1147699,3,5,7,8,8,9,7,10,7,4 87 | 1147748,5,10,6,1,10,4,4,10,10,4 88 | 1148278,3,3,6,4,5,8,4,4,1,4 89 | 1148873,3,6,6,6,5,10,6,8,3,4 90 | 1152331,4,1,1,1,2,1,3,1,1,2 91 | 1155546,2,1,1,2,3,1,2,1,1,2 92 | 1156272,1,1,1,1,2,1,3,1,1,2 93 | 1156948,3,1,1,2,2,1,1,1,1,2 94 | 1157734,4,1,1,1,2,1,3,1,1,2 95 | 1158247,1,1,1,1,2,1,2,1,1,2 96 | 1160476,2,1,1,1,2,1,3,1,1,2 97 | 1164066,1,1,1,1,2,1,3,1,1,2 98 | 1165297,2,1,1,2,2,1,1,1,1,2 99 | 1165790,5,1,1,1,2,1,3,1,1,2 100 | 1165926,9,6,9,2,10,6,2,9,10,4 101 | 1166630,7,5,6,10,5,10,7,9,4,4 102 | 1166654,10,3,5,1,10,5,3,10,2,4 103 | 1167439,2,3,4,4,2,5,2,5,1,4 104 | 1167471,4,1,2,1,2,1,3,1,1,2 105 | 1168359,8,2,3,1,6,3,7,1,1,4 106 | 1168736,10,10,10,10,10,1,8,8,8,4 107 | 1169049,7,3,4,4,3,3,3,2,7,4 108 | 1170419,10,10,10,8,2,10,4,1,1,4 109 | 1170420,1,6,8,10,8,10,5,7,1,4 110 | 1171710,1,1,1,1,2,1,2,3,1,2 111 | 1171710,6,5,4,4,3,9,7,8,3,4 112 | 1171795,1,3,1,2,2,2,5,3,2,2 113 | 1171845,8,6,4,3,5,9,3,1,1,4 114 | 1172152,10,3,3,10,2,10,7,3,3,4 115 | 1173216,10,10,10,3,10,8,8,1,1,4 116 | 1173235,3,3,2,1,2,3,3,1,1,2 117 | 1173347,1,1,1,1,2,5,1,1,1,2 118 | 1173347,8,3,3,1,2,2,3,2,1,2 119 | 1173509,4,5,5,10,4,10,7,5,8,4 120 | 1173514,1,1,1,1,4,3,1,1,1,2 121 | 1173681,3,2,1,1,2,2,3,1,1,2 122 | 1174057,1,1,2,2,2,1,3,1,1,2 123 | 1174057,4,2,1,1,2,2,3,1,1,2 124 | 1174131,10,10,10,2,10,10,5,3,3,4 125 | 1174428,5,3,5,1,8,10,5,3,1,4 126 | 1175937,5,4,6,7,9,7,8,10,1,4 127 | 1176406,1,1,1,1,2,1,2,1,1,2 128 | 1176881,7,5,3,7,4,10,7,5,5,4 129 | 1177027,3,1,1,1,2,1,3,1,1,2 130 | 1177399,8,3,5,4,5,10,1,6,2,4 131 | 1177512,1,1,1,1,10,1,1,1,1,2 132 | 1178580,5,1,3,1,2,1,2,1,1,2 133 | 1179818,2,1,1,1,2,1,3,1,1,2 134 | 1180194,5,10,8,10,8,10,3,6,3,4 135 | 1180523,3,1,1,1,2,1,2,2,1,2 136 | 1180831,3,1,1,1,3,1,2,1,1,2 137 | 1181356,5,1,1,1,2,2,3,3,1,2 138 | 1182404,4,1,1,1,2,1,2,1,1,2 139 | 1182410,3,1,1,1,2,1,1,1,1,2 140 | 1183240,4,1,2,1,2,1,2,1,1,2 141 | 1183246,1,1,1,1,1,1,2,1,1,2 142 | 1183516,3,1,1,1,2,1,1,1,1,2 143 | 1183911,2,1,1,1,2,1,1,1,1,2 144 | 1183983,9,5,5,4,4,5,4,3,3,4 145 | 1184184,1,1,1,1,2,5,1,1,1,2 146 | 1184241,2,1,1,1,2,1,2,1,1,2 147 | 1184840,1,1,3,1,2,1,2,1,1,2 148 | 1185609,3,4,5,2,6,8,4,1,1,4 149 | 1185610,1,1,1,1,3,2,2,1,1,2 150 | 1187457,3,1,1,3,8,1,5,8,1,2 151 | 1187805,8,8,7,4,10,10,7,8,7,4 152 | 1188472,1,1,1,1,1,1,3,1,1,2 153 | 1189266,7,2,4,1,6,10,5,4,3,4 154 | 1189286,10,10,8,6,4,5,8,10,1,4 155 | 1190394,4,1,1,1,2,3,1,1,1,2 156 | 1190485,1,1,1,1,2,1,1,1,1,2 157 | 1192325,5,5,5,6,3,10,3,1,1,4 158 | 1193091,1,2,2,1,2,1,2,1,1,2 159 | 1193210,2,1,1,1,2,1,3,1,1,2 160 | 1193683,1,1,2,1,3,1,1,1,1,2 161 | 1196295,9,9,10,3,6,10,7,10,6,4 162 | 1196915,10,7,7,4,5,10,5,7,2,4 163 | 1197080,4,1,1,1,2,1,3,2,1,2 164 | 1197270,3,1,1,1,2,1,3,1,1,2 165 | 1197440,1,1,1,2,1,3,1,1,7,2 166 | 1197510,5,1,1,1,2,1,3,1,1,2 167 | 1197979,4,1,1,1,2,2,3,2,1,2 168 | 1197993,5,6,7,8,8,10,3,10,3,4 169 | 1198128,10,8,10,10,6,1,3,1,10,4 170 | 1198641,3,1,1,1,2,1,3,1,1,2 171 | 1199219,1,1,1,2,1,1,1,1,1,2 172 | 1199731,3,1,1,1,2,1,1,1,1,2 173 | 1199983,1,1,1,1,2,1,3,1,1,2 174 | 1200772,1,1,1,1,2,1,2,1,1,2 175 | 1200847,6,10,10,10,8,10,10,10,7,4 176 | 1200892,8,6,5,4,3,10,6,1,1,4 177 | 1200952,5,8,7,7,10,10,5,7,1,4 178 | 1201834,2,1,1,1,2,1,3,1,1,2 179 | 1201936,5,10,10,3,8,1,5,10,3,4 180 | 1202125,4,1,1,1,2,1,3,1,1,2 181 | 1202812,5,3,3,3,6,10,3,1,1,4 182 | 1203096,1,1,1,1,1,1,3,1,1,2 183 | 1204242,1,1,1,1,2,1,1,1,1,2 184 | 1204898,6,1,1,1,2,1,3,1,1,2 185 | 1205138,5,8,8,8,5,10,7,8,1,4 186 | 1205579,8,7,6,4,4,10,5,1,1,4 187 | 1206089,2,1,1,1,1,1,3,1,1,2 188 | 1206695,1,5,8,6,5,8,7,10,1,4 189 | 1206841,10,5,6,10,6,10,7,7,10,4 190 | 1207986,5,8,4,10,5,8,9,10,1,4 191 | 1208301,1,2,3,1,2,1,3,1,1,2 192 | 1210963,10,10,10,8,6,8,7,10,1,4 193 | 1211202,7,5,10,10,10,10,4,10,3,4 194 | 1212232,5,1,1,1,2,1,2,1,1,2 195 | 1212251,1,1,1,1,2,1,3,1,1,2 196 | 1212422,3,1,1,1,2,1,3,1,1,2 197 | 1212422,4,1,1,1,2,1,3,1,1,2 198 | 1213375,8,4,4,5,4,7,7,8,2,2 199 | 1213383,5,1,1,4,2,1,3,1,1,2 200 | 1214092,1,1,1,1,2,1,1,1,1,2 201 | 1214556,3,1,1,1,2,1,2,1,1,2 202 | 1214966,9,7,7,5,5,10,7,8,3,4 203 | 1216694,10,8,8,4,10,10,8,1,1,4 204 | 1216947,1,1,1,1,2,1,3,1,1,2 205 | 1217051,5,1,1,1,2,1,3,1,1,2 206 | 1217264,1,1,1,1,2,1,3,1,1,2 207 | 1218105,5,10,10,9,6,10,7,10,5,4 208 | 1218741,10,10,9,3,7,5,3,5,1,4 209 | 1218860,1,1,1,1,1,1,3,1,1,2 210 | 1218860,1,1,1,1,1,1,3,1,1,2 211 | 1219406,5,1,1,1,1,1,3,1,1,2 212 | 1219525,8,10,10,10,5,10,8,10,6,4 213 | 1219859,8,10,8,8,4,8,7,7,1,4 214 | 1220330,1,1,1,1,2,1,3,1,1,2 215 | 1221863,10,10,10,10,7,10,7,10,4,4 216 | 1222047,10,10,10,10,3,10,10,6,1,4 217 | 1222936,8,7,8,7,5,5,5,10,2,4 218 | 1223282,1,1,1,1,2,1,2,1,1,2 219 | 1223426,1,1,1,1,2,1,3,1,1,2 220 | 1223793,6,10,7,7,6,4,8,10,2,4 221 | 1223967,6,1,3,1,2,1,3,1,1,2 222 | 1224329,1,1,1,2,2,1,3,1,1,2 223 | 1225799,10,6,4,3,10,10,9,10,1,4 224 | 1226012,4,1,1,3,1,5,2,1,1,4 225 | 1226612,7,5,6,3,3,8,7,4,1,4 226 | 1227210,10,5,5,6,3,10,7,9,2,4 227 | 1227244,1,1,1,1,2,1,2,1,1,2 228 | 1227481,10,5,7,4,4,10,8,9,1,4 229 | 1228152,8,9,9,5,3,5,7,7,1,4 230 | 1228311,1,1,1,1,1,1,3,1,1,2 231 | 1230175,10,10,10,3,10,10,9,10,1,4 232 | 1230688,7,4,7,4,3,7,7,6,1,4 233 | 1231387,6,8,7,5,6,8,8,9,2,4 234 | 1231706,8,4,6,3,3,1,4,3,1,2 235 | 1232225,10,4,5,5,5,10,4,1,1,4 236 | 1236043,3,3,2,1,3,1,3,6,1,2 237 | 1241232,3,1,4,1,2,1,3,1,1,2 238 | 1241559,10,8,8,2,8,10,4,8,10,4 239 | 1241679,9,8,8,5,6,2,4,10,4,4 240 | 1242364,8,10,10,8,6,9,3,10,10,4 241 | 1243256,10,4,3,2,3,10,5,3,2,4 242 | 1270479,5,1,3,3,2,2,2,3,1,2 243 | 1276091,3,1,1,3,1,1,3,1,1,2 244 | 1277018,2,1,1,1,2,1,3,1,1,2 245 | 128059,1,1,1,1,2,5,5,1,1,2 246 | 1285531,1,1,1,1,2,1,3,1,1,2 247 | 1287775,5,1,1,2,2,2,3,1,1,2 248 | 144888,8,10,10,8,5,10,7,8,1,4 249 | 145447,8,4,4,1,2,9,3,3,1,4 250 | 167528,4,1,1,1,2,1,3,6,1,2 251 | 169356,3,1,1,1,2,1,3,1,1,2 252 | 183913,1,2,2,1,2,1,1,1,1,2 253 | 191250,10,4,4,10,2,10,5,3,3,4 254 | 1017023,6,3,3,5,3,10,3,5,3,2 255 | 1100524,6,10,10,2,8,10,7,3,3,4 256 | 1116116,9,10,10,1,10,8,3,3,1,4 257 | 1168736,5,6,6,2,4,10,3,6,1,4 258 | 1182404,3,1,1,1,2,1,1,1,1,2 259 | 1182404,3,1,1,1,2,1,2,1,1,2 260 | 1198641,3,1,1,1,2,1,3,1,1,2 261 | 242970,5,7,7,1,5,8,3,4,1,2 262 | 255644,10,5,8,10,3,10,5,1,3,4 263 | 263538,5,10,10,6,10,10,10,6,5,4 264 | 274137,8,8,9,4,5,10,7,8,1,4 265 | 303213,10,4,4,10,6,10,5,5,1,4 266 | 314428,7,9,4,10,10,3,5,3,3,4 267 | 1182404,5,1,4,1,2,1,3,2,1,2 268 | 1198641,10,10,6,3,3,10,4,3,2,4 269 | 320675,3,3,5,2,3,10,7,1,1,4 270 | 324427,10,8,8,2,3,4,8,7,8,4 271 | 385103,1,1,1,1,2,1,3,1,1,2 272 | 390840,8,4,7,1,3,10,3,9,2,4 273 | 411453,5,1,1,1,2,1,3,1,1,2 274 | 320675,3,3,5,2,3,10,7,1,1,4 275 | 428903,7,2,4,1,3,4,3,3,1,4 276 | 431495,3,1,1,1,2,1,3,2,1,2 277 | 432809,3,1,3,1,2,1,2,1,1,2 278 | 434518,3,1,1,1,2,1,2,1,1,2 279 | 452264,1,1,1,1,2,1,2,1,1,2 280 | 456282,1,1,1,1,2,1,3,1,1,2 281 | 476903,10,5,7,3,3,7,3,3,8,4 282 | 486283,3,1,1,1,2,1,3,1,1,2 283 | 486662,2,1,1,2,2,1,3,1,1,2 284 | 488173,1,4,3,10,4,10,5,6,1,4 285 | 492268,10,4,6,1,2,10,5,3,1,4 286 | 508234,7,4,5,10,2,10,3,8,2,4 287 | 527363,8,10,10,10,8,10,10,7,3,4 288 | 529329,10,10,10,10,10,10,4,10,10,4 289 | 535331,3,1,1,1,3,1,2,1,1,2 290 | 543558,6,1,3,1,4,5,5,10,1,4 291 | 555977,5,6,6,8,6,10,4,10,4,4 292 | 560680,1,1,1,1,2,1,1,1,1,2 293 | 561477,1,1,1,1,2,1,3,1,1,2 294 | 563649,8,8,8,1,2,1,6,10,1,4 295 | 601265,10,4,4,6,2,10,2,3,1,4 296 | 606140,1,1,1,1,2,1,2,1,1,2 297 | 606722,5,5,7,8,6,10,7,4,1,4 298 | 616240,5,3,4,3,4,5,4,7,1,2 299 | 61634,5,4,3,1,2,1,2,3,1,2 300 | 625201,8,2,1,1,5,1,1,1,1,2 301 | 63375,9,1,2,6,4,10,7,7,2,4 302 | 635844,8,4,10,5,4,4,7,10,1,4 303 | 636130,1,1,1,1,2,1,3,1,1,2 304 | 640744,10,10,10,7,9,10,7,10,10,4 305 | 646904,1,1,1,1,2,1,3,1,1,2 306 | 653777,8,3,4,9,3,10,3,3,1,4 307 | 659642,10,8,4,4,4,10,3,10,4,4 308 | 666090,1,1,1,1,2,1,3,1,1,2 309 | 666942,1,1,1,1,2,1,3,1,1,2 310 | 667204,7,8,7,6,4,3,8,8,4,4 311 | 673637,3,1,1,1,2,5,5,1,1,2 312 | 684955,2,1,1,1,3,1,2,1,1,2 313 | 688033,1,1,1,1,2,1,1,1,1,2 314 | 691628,8,6,4,10,10,1,3,5,1,4 315 | 693702,1,1,1,1,2,1,1,1,1,2 316 | 704097,1,1,1,1,1,1,2,1,1,2 317 | 704168,4,6,5,6,7,1,4,9,1,2 318 | 706426,5,5,5,2,5,10,4,3,1,4 319 | 709287,6,8,7,8,6,8,8,9,1,4 320 | 718641,1,1,1,1,5,1,3,1,1,2 321 | 721482,4,4,4,4,6,5,7,3,1,2 322 | 730881,7,6,3,2,5,10,7,4,6,4 323 | 733639,3,1,1,1,2,1,3,1,1,2 324 | 733639,3,1,1,1,2,1,3,1,1,2 325 | 733823,5,4,6,10,2,10,4,1,1,4 326 | 740492,1,1,1,1,2,1,3,1,1,2 327 | 743348,3,2,2,1,2,1,2,3,1,2 328 | 752904,10,1,1,1,2,10,5,4,1,4 329 | 756136,1,1,1,1,2,1,2,1,1,2 330 | 760001,8,10,3,2,6,4,3,10,1,4 331 | 760239,10,4,6,4,5,10,7,1,1,4 332 | 76389,10,4,7,2,2,8,6,1,1,4 333 | 764974,5,1,1,1,2,1,3,1,2,2 334 | 770066,5,2,2,2,2,1,2,2,1,2 335 | 785208,5,4,6,6,4,10,4,3,1,4 336 | 785615,8,6,7,3,3,10,3,4,2,4 337 | 792744,1,1,1,1,2,1,1,1,1,2 338 | 797327,6,5,5,8,4,10,3,4,1,4 339 | 798429,1,1,1,1,2,1,3,1,1,2 340 | 704097,1,1,1,1,1,1,2,1,1,2 341 | 806423,8,5,5,5,2,10,4,3,1,4 342 | 809912,10,3,3,1,2,10,7,6,1,4 343 | 810104,1,1,1,1,2,1,3,1,1,2 344 | 814265,2,1,1,1,2,1,1,1,1,2 345 | 814911,1,1,1,1,2,1,1,1,1,2 346 | 822829,7,6,4,8,10,10,9,5,3,4 347 | 826923,1,1,1,1,2,1,1,1,1,2 348 | 830690,5,2,2,2,3,1,1,3,1,2 349 | 831268,1,1,1,1,1,1,1,3,1,2 350 | 832226,3,4,4,10,5,1,3,3,1,4 351 | 832567,4,2,3,5,3,8,7,6,1,4 352 | 836433,5,1,1,3,2,1,1,1,1,2 353 | 837082,2,1,1,1,2,1,3,1,1,2 354 | 846832,3,4,5,3,7,3,4,6,1,2 355 | 850831,2,7,10,10,7,10,4,9,4,4 356 | 855524,1,1,1,1,2,1,2,1,1,2 357 | 857774,4,1,1,1,3,1,2,2,1,2 358 | 859164,5,3,3,1,3,3,3,3,3,4 359 | 859350,8,10,10,7,10,10,7,3,8,4 360 | 866325,8,10,5,3,8,4,4,10,3,4 361 | 873549,10,3,5,4,3,7,3,5,3,4 362 | 877291,6,10,10,10,10,10,8,10,10,4 363 | 877943,3,10,3,10,6,10,5,1,4,4 364 | 888169,3,2,2,1,4,3,2,1,1,2 365 | 888523,4,4,4,2,2,3,2,1,1,2 366 | 896404,2,1,1,1,2,1,3,1,1,2 367 | 897172,2,1,1,1,2,1,2,1,1,2 368 | 95719,6,10,10,10,8,10,7,10,7,4 369 | 160296,5,8,8,10,5,10,8,10,3,4 370 | 342245,1,1,3,1,2,1,1,1,1,2 371 | 428598,1,1,3,1,1,1,2,1,1,2 372 | 492561,4,3,2,1,3,1,2,1,1,2 373 | 493452,1,1,3,1,2,1,1,1,1,2 374 | 493452,4,1,2,1,2,1,2,1,1,2 375 | 521441,5,1,1,2,2,1,2,1,1,2 376 | 560680,3,1,2,1,2,1,2,1,1,2 377 | 636437,1,1,1,1,2,1,1,1,1,2 378 | 640712,1,1,1,1,2,1,2,1,1,2 379 | 654244,1,1,1,1,1,1,2,1,1,2 380 | 657753,3,1,1,4,3,1,2,2,1,2 381 | 685977,5,3,4,1,4,1,3,1,1,2 382 | 805448,1,1,1,1,2,1,1,1,1,2 383 | 846423,10,6,3,6,4,10,7,8,4,4 384 | 1002504,3,2,2,2,2,1,3,2,1,2 385 | 1022257,2,1,1,1,2,1,1,1,1,2 386 | 1026122,2,1,1,1,2,1,1,1,1,2 387 | 1071084,3,3,2,2,3,1,1,2,3,2 388 | 1080233,7,6,6,3,2,10,7,1,1,4 389 | 1114570,5,3,3,2,3,1,3,1,1,2 390 | 1114570,2,1,1,1,2,1,2,2,1,2 391 | 1116715,5,1,1,1,3,2,2,2,1,2 392 | 1131411,1,1,1,2,2,1,2,1,1,2 393 | 1151734,10,8,7,4,3,10,7,9,1,4 394 | 1156017,3,1,1,1,2,1,2,1,1,2 395 | 1158247,1,1,1,1,1,1,1,1,1,2 396 | 1158405,1,2,3,1,2,1,2,1,1,2 397 | 1168278,3,1,1,1,2,1,2,1,1,2 398 | 1176187,3,1,1,1,2,1,3,1,1,2 399 | 1196263,4,1,1,1,2,1,1,1,1,2 400 | 1196475,3,2,1,1,2,1,2,2,1,2 401 | 1206314,1,2,3,1,2,1,1,1,1,2 402 | 1211265,3,10,8,7,6,9,9,3,8,4 403 | 1213784,3,1,1,1,2,1,1,1,1,2 404 | 1223003,5,3,3,1,2,1,2,1,1,2 405 | 1223306,3,1,1,1,2,4,1,1,1,2 406 | 1223543,1,2,1,3,2,1,1,2,1,2 407 | 1229929,1,1,1,1,2,1,2,1,1,2 408 | 1231853,4,2,2,1,2,1,2,1,1,2 409 | 1234554,1,1,1,1,2,1,2,1,1,2 410 | 1236837,2,3,2,2,2,2,3,1,1,2 411 | 1237674,3,1,2,1,2,1,2,1,1,2 412 | 1238021,1,1,1,1,2,1,2,1,1,2 413 | 1238464,1,1,1,1,1,1,2,1,1,2 414 | 1238633,10,10,10,6,8,4,8,5,1,4 415 | 1238915,5,1,2,1,2,1,3,1,1,2 416 | 1238948,8,5,6,2,3,10,6,6,1,4 417 | 1239232,3,3,2,6,3,3,3,5,1,2 418 | 1239347,8,7,8,5,10,10,7,2,1,4 419 | 1239967,1,1,1,1,2,1,2,1,1,2 420 | 1240337,5,2,2,2,2,2,3,2,2,2 421 | 1253505,2,3,1,1,5,1,1,1,1,2 422 | 1255384,3,2,2,3,2,3,3,1,1,2 423 | 1257200,10,10,10,7,10,10,8,2,1,4 424 | 1257648,4,3,3,1,2,1,3,3,1,2 425 | 1257815,5,1,3,1,2,1,2,1,1,2 426 | 1257938,3,1,1,1,2,1,1,1,1,2 427 | 1258549,9,10,10,10,10,10,10,10,1,4 428 | 1258556,5,3,6,1,2,1,1,1,1,2 429 | 1266154,8,7,8,2,4,2,5,10,1,4 430 | 1272039,1,1,1,1,2,1,2,1,1,2 431 | 1276091,2,1,1,1,2,1,2,1,1,2 432 | 1276091,1,3,1,1,2,1,2,2,1,2 433 | 1276091,5,1,1,3,4,1,3,2,1,2 434 | 1277629,5,1,1,1,2,1,2,2,1,2 435 | 1293439,3,2,2,3,2,1,1,1,1,2 436 | 1293439,6,9,7,5,5,8,4,2,1,2 437 | 1294562,10,8,10,1,3,10,5,1,1,4 438 | 1295186,10,10,10,1,6,1,2,8,1,4 439 | 527337,4,1,1,1,2,1,1,1,1,2 440 | 558538,4,1,3,3,2,1,1,1,1,2 441 | 566509,5,1,1,1,2,1,1,1,1,2 442 | 608157,10,4,3,10,4,10,10,1,1,4 443 | 677910,5,2,2,4,2,4,1,1,1,2 444 | 734111,1,1,1,3,2,3,1,1,1,2 445 | 734111,1,1,1,1,2,2,1,1,1,2 446 | 780555,5,1,1,6,3,1,2,1,1,2 447 | 827627,2,1,1,1,2,1,1,1,1,2 448 | 1049837,1,1,1,1,2,1,1,1,1,2 449 | 1058849,5,1,1,1,2,1,1,1,1,2 450 | 1182404,1,1,1,1,1,1,1,1,1,2 451 | 1193544,5,7,9,8,6,10,8,10,1,4 452 | 1201870,4,1,1,3,1,1,2,1,1,2 453 | 1202253,5,1,1,1,2,1,1,1,1,2 454 | 1227081,3,1,1,3,2,1,1,1,1,2 455 | 1230994,4,5,5,8,6,10,10,7,1,4 456 | 1238410,2,3,1,1,3,1,1,1,1,2 457 | 1246562,10,2,2,1,2,6,1,1,2,4 458 | 1257470,10,6,5,8,5,10,8,6,1,4 459 | 1259008,8,8,9,6,6,3,10,10,1,4 460 | 1266124,5,1,2,1,2,1,1,1,1,2 461 | 1267898,5,1,3,1,2,1,1,1,1,2 462 | 1268313,5,1,1,3,2,1,1,1,1,2 463 | 1268804,3,1,1,1,2,5,1,1,1,2 464 | 1276091,6,1,1,3,2,1,1,1,1,2 465 | 1280258,4,1,1,1,2,1,1,2,1,2 466 | 1293966,4,1,1,1,2,1,1,1,1,2 467 | 1296572,10,9,8,7,6,4,7,10,3,4 468 | 1298416,10,6,6,2,4,10,9,7,1,4 469 | 1299596,6,6,6,5,4,10,7,6,2,4 470 | 1105524,4,1,1,1,2,1,1,1,1,2 471 | 1181685,1,1,2,1,2,1,2,1,1,2 472 | 1211594,3,1,1,1,1,1,2,1,1,2 473 | 1238777,6,1,1,3,2,1,1,1,1,2 474 | 1257608,6,1,1,1,1,1,1,1,1,2 475 | 1269574,4,1,1,1,2,1,1,1,1,2 476 | 1277145,5,1,1,1,2,1,1,1,1,2 477 | 1287282,3,1,1,1,2,1,1,1,1,2 478 | 1296025,4,1,2,1,2,1,1,1,1,2 479 | 1296263,4,1,1,1,2,1,1,1,1,2 480 | 1296593,5,2,1,1,2,1,1,1,1,2 481 | 1299161,4,8,7,10,4,10,7,5,1,4 482 | 1301945,5,1,1,1,1,1,1,1,1,2 483 | 1302428,5,3,2,4,2,1,1,1,1,2 484 | 1318169,9,10,10,10,10,5,10,10,10,4 485 | 474162,8,7,8,5,5,10,9,10,1,4 486 | 787451,5,1,2,1,2,1,1,1,1,2 487 | 1002025,1,1,1,3,1,3,1,1,1,2 488 | 1070522,3,1,1,1,1,1,2,1,1,2 489 | 1073960,10,10,10,10,6,10,8,1,5,4 490 | 1076352,3,6,4,10,3,3,3,4,1,4 491 | 1084139,6,3,2,1,3,4,4,1,1,4 492 | 1115293,1,1,1,1,2,1,1,1,1,2 493 | 1119189,5,8,9,4,3,10,7,1,1,4 494 | 1133991,4,1,1,1,1,1,2,1,1,2 495 | 1142706,5,10,10,10,6,10,6,5,2,4 496 | 1155967,5,1,2,10,4,5,2,1,1,2 497 | 1170945,3,1,1,1,1,1,2,1,1,2 498 | 1181567,1,1,1,1,1,1,1,1,1,2 499 | 1182404,4,2,1,1,2,1,1,1,1,2 500 | 1204558,4,1,1,1,2,1,2,1,1,2 501 | 1217952,4,1,1,1,2,1,2,1,1,2 502 | 1224565,6,1,1,1,2,1,3,1,1,2 503 | 1238186,4,1,1,1,2,1,2,1,1,2 504 | 1253917,4,1,1,2,2,1,2,1,1,2 505 | 1265899,4,1,1,1,2,1,3,1,1,2 506 | 1268766,1,1,1,1,2,1,1,1,1,2 507 | 1277268,3,3,1,1,2,1,1,1,1,2 508 | 1286943,8,10,10,10,7,5,4,8,7,4 509 | 1295508,1,1,1,1,2,4,1,1,1,2 510 | 1297327,5,1,1,1,2,1,1,1,1,2 511 | 1297522,2,1,1,1,2,1,1,1,1,2 512 | 1298360,1,1,1,1,2,1,1,1,1,2 513 | 1299924,5,1,1,1,2,1,2,1,1,2 514 | 1299994,5,1,1,1,2,1,1,1,1,2 515 | 1304595,3,1,1,1,1,1,2,1,1,2 516 | 1306282,6,6,7,10,3,10,8,10,2,4 517 | 1313325,4,10,4,7,3,10,9,10,1,4 518 | 1320077,1,1,1,1,1,1,1,1,1,2 519 | 1320077,1,1,1,1,1,1,2,1,1,2 520 | 1320304,3,1,2,2,2,1,1,1,1,2 521 | 1330439,4,7,8,3,4,10,9,1,1,4 522 | 333093,1,1,1,1,3,1,1,1,1,2 523 | 369565,4,1,1,1,3,1,1,1,1,2 524 | 412300,10,4,5,4,3,5,7,3,1,4 525 | 672113,7,5,6,10,4,10,5,3,1,4 526 | 749653,3,1,1,1,2,1,2,1,1,2 527 | 769612,3,1,1,2,2,1,1,1,1,2 528 | 769612,4,1,1,1,2,1,1,1,1,2 529 | 798429,4,1,1,1,2,1,3,1,1,2 530 | 807657,6,1,3,2,2,1,1,1,1,2 531 | 8233704,4,1,1,1,1,1,2,1,1,2 532 | 837480,7,4,4,3,4,10,6,9,1,4 533 | 867392,4,2,2,1,2,1,2,1,1,2 534 | 869828,1,1,1,1,1,1,3,1,1,2 535 | 1043068,3,1,1,1,2,1,2,1,1,2 536 | 1056171,2,1,1,1,2,1,2,1,1,2 537 | 1061990,1,1,3,2,2,1,3,1,1,2 538 | 1113061,5,1,1,1,2,1,3,1,1,2 539 | 1116192,5,1,2,1,2,1,3,1,1,2 540 | 1135090,4,1,1,1,2,1,2,1,1,2 541 | 1145420,6,1,1,1,2,1,2,1,1,2 542 | 1158157,5,1,1,1,2,2,2,1,1,2 543 | 1171578,3,1,1,1,2,1,1,1,1,2 544 | 1174841,5,3,1,1,2,1,1,1,1,2 545 | 1184586,4,1,1,1,2,1,2,1,1,2 546 | 1186936,2,1,3,2,2,1,2,1,1,2 547 | 1197527,5,1,1,1,2,1,2,1,1,2 548 | 1222464,6,10,10,10,4,10,7,10,1,4 549 | 1240603,2,1,1,1,1,1,1,1,1,2 550 | 1240603,3,1,1,1,1,1,1,1,1,2 551 | 1241035,7,8,3,7,4,5,7,8,2,4 552 | 1287971,3,1,1,1,2,1,2,1,1,2 553 | 1289391,1,1,1,1,2,1,3,1,1,2 554 | 1299924,3,2,2,2,2,1,4,2,1,2 555 | 1306339,4,4,2,1,2,5,2,1,2,2 556 | 1313658,3,1,1,1,2,1,1,1,1,2 557 | 1313982,4,3,1,1,2,1,4,8,1,2 558 | 1321264,5,2,2,2,1,1,2,1,1,2 559 | 1321321,5,1,1,3,2,1,1,1,1,2 560 | 1321348,2,1,1,1,2,1,2,1,1,2 561 | 1321931,5,1,1,1,2,1,2,1,1,2 562 | 1321942,5,1,1,1,2,1,3,1,1,2 563 | 1321942,5,1,1,1,2,1,3,1,1,2 564 | 1328331,1,1,1,1,2,1,3,1,1,2 565 | 1328755,3,1,1,1,2,1,2,1,1,2 566 | 1331405,4,1,1,1,2,1,3,2,1,2 567 | 1331412,5,7,10,10,5,10,10,10,1,4 568 | 1333104,3,1,2,1,2,1,3,1,1,2 569 | 1334071,4,1,1,1,2,3,2,1,1,2 570 | 1343068,8,4,4,1,6,10,2,5,2,4 571 | 1343374,10,10,8,10,6,5,10,3,1,4 572 | 1344121,8,10,4,4,8,10,8,2,1,4 573 | 142932,7,6,10,5,3,10,9,10,2,4 574 | 183936,3,1,1,1,2,1,2,1,1,2 575 | 324382,1,1,1,1,2,1,2,1,1,2 576 | 378275,10,9,7,3,4,2,7,7,1,4 577 | 385103,5,1,2,1,2,1,3,1,1,2 578 | 690557,5,1,1,1,2,1,2,1,1,2 579 | 695091,1,1,1,1,2,1,2,1,1,2 580 | 695219,1,1,1,1,2,1,2,1,1,2 581 | 824249,1,1,1,1,2,1,3,1,1,2 582 | 871549,5,1,2,1,2,1,2,1,1,2 583 | 878358,5,7,10,6,5,10,7,5,1,4 584 | 1107684,6,10,5,5,4,10,6,10,1,4 585 | 1115762,3,1,1,1,2,1,1,1,1,2 586 | 1217717,5,1,1,6,3,1,1,1,1,2 587 | 1239420,1,1,1,1,2,1,1,1,1,2 588 | 1254538,8,10,10,10,6,10,10,10,1,4 589 | 1261751,5,1,1,1,2,1,2,2,1,2 590 | 1268275,9,8,8,9,6,3,4,1,1,4 591 | 1272166,5,1,1,1,2,1,1,1,1,2 592 | 1294261,4,10,8,5,4,1,10,1,1,4 593 | 1295529,2,5,7,6,4,10,7,6,1,4 594 | 1298484,10,3,4,5,3,10,4,1,1,4 595 | 1311875,5,1,2,1,2,1,1,1,1,2 596 | 1315506,4,8,6,3,4,10,7,1,1,4 597 | 1320141,5,1,1,1,2,1,2,1,1,2 598 | 1325309,4,1,2,1,2,1,2,1,1,2 599 | 1333063,5,1,3,1,2,1,3,1,1,2 600 | 1333495,3,1,1,1,2,1,2,1,1,2 601 | 1334659,5,2,4,1,1,1,1,1,1,2 602 | 1336798,3,1,1,1,2,1,2,1,1,2 603 | 1344449,1,1,1,1,1,1,2,1,1,2 604 | 1350568,4,1,1,1,2,1,2,1,1,2 605 | 1352663,5,4,6,8,4,1,8,10,1,4 606 | 188336,5,3,2,8,5,10,8,1,2,4 607 | 352431,10,5,10,3,5,8,7,8,3,4 608 | 353098,4,1,1,2,2,1,1,1,1,2 609 | 411453,1,1,1,1,2,1,1,1,1,2 610 | 557583,5,10,10,10,10,10,10,1,1,4 611 | 636375,5,1,1,1,2,1,1,1,1,2 612 | 736150,10,4,3,10,3,10,7,1,2,4 613 | 803531,5,10,10,10,5,2,8,5,1,4 614 | 822829,8,10,10,10,6,10,10,10,10,4 615 | 1016634,2,3,1,1,2,1,2,1,1,2 616 | 1031608,2,1,1,1,1,1,2,1,1,2 617 | 1041043,4,1,3,1,2,1,2,1,1,2 618 | 1042252,3,1,1,1,2,1,2,1,1,2 619 | 1057067,1,1,1,1,1,1,1,1,1,2 620 | 1061990,4,1,1,1,2,1,2,1,1,2 621 | 1073836,5,1,1,1,2,1,2,1,1,2 622 | 1083817,3,1,1,1,2,1,2,1,1,2 623 | 1096352,6,3,3,3,3,2,6,1,1,2 624 | 1140597,7,1,2,3,2,1,2,1,1,2 625 | 1149548,1,1,1,1,2,1,1,1,1,2 626 | 1174009,5,1,1,2,1,1,2,1,1,2 627 | 1183596,3,1,3,1,3,4,1,1,1,2 628 | 1190386,4,6,6,5,7,6,7,7,3,4 629 | 1190546,2,1,1,1,2,5,1,1,1,2 630 | 1213273,2,1,1,1,2,1,1,1,1,2 631 | 1218982,4,1,1,1,2,1,1,1,1,2 632 | 1225382,6,2,3,1,2,1,1,1,1,2 633 | 1235807,5,1,1,1,2,1,2,1,1,2 634 | 1238777,1,1,1,1,2,1,1,1,1,2 635 | 1253955,8,7,4,4,5,3,5,10,1,4 636 | 1257366,3,1,1,1,2,1,1,1,1,2 637 | 1260659,3,1,4,1,2,1,1,1,1,2 638 | 1268952,10,10,7,8,7,1,10,10,3,4 639 | 1275807,4,2,4,3,2,2,2,1,1,2 640 | 1277792,4,1,1,1,2,1,1,1,1,2 641 | 1277792,5,1,1,3,2,1,1,1,1,2 642 | 1285722,4,1,1,3,2,1,1,1,1,2 643 | 1288608,3,1,1,1,2,1,2,1,1,2 644 | 1290203,3,1,1,1,2,1,2,1,1,2 645 | 1294413,1,1,1,1,2,1,1,1,1,2 646 | 1299596,2,1,1,1,2,1,1,1,1,2 647 | 1303489,3,1,1,1,2,1,2,1,1,2 648 | 1311033,1,2,2,1,2,1,1,1,1,2 649 | 1311108,1,1,1,3,2,1,1,1,1,2 650 | 1315807,5,10,10,10,10,2,10,10,10,4 651 | 1318671,3,1,1,1,2,1,2,1,1,2 652 | 1319609,3,1,1,2,3,4,1,1,1,2 653 | 1323477,1,2,1,3,2,1,2,1,1,2 654 | 1324572,5,1,1,1,2,1,2,2,1,2 655 | 1324681,4,1,1,1,2,1,2,1,1,2 656 | 1325159,3,1,1,1,2,1,3,1,1,2 657 | 1326892,3,1,1,1,2,1,2,1,1,2 658 | 1330361,5,1,1,1,2,1,2,1,1,2 659 | 1333877,5,4,5,1,8,1,3,6,1,2 660 | 1334015,7,8,8,7,3,10,7,2,3,4 661 | 1334667,1,1,1,1,2,1,1,1,1,2 662 | 1339781,1,1,1,1,2,1,2,1,1,2 663 | 1339781,4,1,1,1,2,1,3,1,1,2 664 | 13454352,1,1,3,1,2,1,2,1,1,2 665 | 1345452,1,1,3,1,2,1,2,1,1,2 666 | 1345593,3,1,1,3,2,1,2,1,1,2 667 | 1347749,1,1,1,1,2,1,1,1,1,2 668 | 1347943,5,2,2,2,2,1,1,1,2,2 669 | 1348851,3,1,1,1,2,1,3,1,1,2 670 | 1350319,5,7,4,1,6,1,7,10,3,4 671 | 1350423,5,10,10,8,5,5,7,10,1,4 672 | 1352848,3,10,7,8,5,8,7,4,1,4 673 | 1353092,3,2,1,2,2,1,3,1,1,2 674 | 1354840,2,1,1,1,2,1,3,1,1,2 675 | 1354840,5,3,2,1,3,1,1,1,1,2 676 | 1355260,1,1,1,1,2,1,2,1,1,2 677 | 1365075,4,1,4,1,2,1,1,1,1,2 678 | 1365328,1,1,2,1,2,1,2,1,1,2 679 | 1368267,5,1,1,1,2,1,1,1,1,2 680 | 1368273,1,1,1,1,2,1,1,1,1,2 681 | 1368882,2,1,1,1,2,1,1,1,1,2 682 | 1369821,10,10,10,10,5,10,10,10,7,4 683 | 1371026,5,10,10,10,4,10,5,6,3,4 684 | 1371920,5,1,1,1,2,1,3,2,1,2 685 | 466906,1,1,1,1,2,1,1,1,1,2 686 | 466906,1,1,1,1,2,1,1,1,1,2 687 | 534555,1,1,1,1,2,1,1,1,1,2 688 | 536708,1,1,1,1,2,1,1,1,1,2 689 | 566346,3,1,1,1,2,1,2,3,1,2 690 | 603148,4,1,1,1,2,1,1,1,1,2 691 | 654546,1,1,1,1,2,1,1,1,8,2 692 | 654546,1,1,1,3,2,1,1,1,1,2 693 | 695091,5,10,10,5,4,5,4,4,1,4 694 | 714039,3,1,1,1,2,1,1,1,1,2 695 | 763235,3,1,1,1,2,1,2,1,2,2 696 | 776715,3,1,1,1,3,2,1,1,1,2 697 | 841769,2,1,1,1,2,1,1,1,1,2 698 | 888820,5,10,10,3,7,3,8,10,2,4 699 | 897471,4,8,6,4,3,4,10,6,1,4 700 | 897471,4,8,8,5,4,5,10,4,1,4 701 | -------------------------------------------------------------------------------- /shapley/gtsv.py: -------------------------------------------------------------------------------- 1 | import datetime 2 | import math 3 | import random 4 | from functools import partial 5 | from multiprocessing import Pool 6 | import numpy as np 7 | from scipy.special import comb 8 | from tqdm import trange 9 | import os 10 | import shutil 11 | import collections 12 | import gc 13 | from .utils import (split_permutation_num, split_permutation, split_num, 14 | power_set) 15 | 16 | max_time = 100000 17 | 18 | 19 | def exact_shap_n(game, log_step): 20 | """Compute the exact Shapley value 21 | """ 22 | n = game.n 23 | 24 | def add(l): 25 | for i in range(n - 1, -1, -1): 26 | if l[i] == 0: 27 | l[i] = 1 28 | break 29 | else: 30 | l[i] = 0 31 | return l 32 | 33 | ext_sv = np.zeros(n) 34 | coef = np.zeros(n) 35 | fact = np.math.factorial 36 | coalition = np.arange(n) 37 | for s in range(n): 38 | coef[s] = fact(s) * fact(n - s - 1) / fact(n) 39 | l = np.zeros(n) 40 | 41 | j = 0 42 | add(l) 43 | while np.sum(l) != 0: 44 | if j % log_step == 0: 45 | print(j) 46 | j += 1 47 | idx = [] 48 | for i in range(n): 49 | if l[i] == 1: 50 | idx.append(i) 51 | u = game.eval_utility(idx) 52 | for i in idx: 53 | ext_sv[i] += coef[len(idx) - 1] * u 54 | for i in set(coalition) - set(idx): 55 | ext_sv[i] -= coef[len(idx)] * u 56 | add(l) 57 | 58 | return ext_sv 59 | 60 | 61 | def exact_shap(game): 62 | """Compute the exact Shapley value 63 | """ 64 | n = game.n 65 | # np.ones(n) * (-1 * game.null()[0] / n) # np.zeros(n) 66 | ext_sv = np.zeros(n) 67 | coef = np.zeros(n) 68 | fact = np.math.factorial 69 | coalition = np.arange(n) 70 | for s in trange(n): 71 | coef[s] = fact(s) * fact(n - s - 1) / fact(n) 72 | sets = list(power_set(coalition)) 73 | for idx in trange(len(sets)): 74 | # S = np.zeros((1, n), dtype=bool) 75 | # S[0][list(sets[idx])] = 1 76 | u = game.eval_utility(list(sets[idx])) 77 | for i in sets[idx]: 78 | ext_sv[i] += coef[len(sets[idx]) - 1] * u 79 | for i in set(coalition) - set(sets[idx]): 80 | ext_sv[i] -= coef[len(sets[idx])] * u 81 | 82 | return ext_sv 83 | 84 | 85 | def mc_shap(game, m, proc_num=1) -> np.ndarray: 86 | """Compute the Monte Carlo Shapley value by sampling m permutations 87 | """ 88 | if proc_num < 0: 89 | raise ValueError('Invalid proc num.') 90 | args = split_permutation_num(m, proc_num) 91 | pool = Pool() 92 | func = partial(_mc_shap_task, game) 93 | ret = pool.map(func, args) 94 | pool.close() 95 | pool.join() 96 | ret_arr = np.asarray(ret) 97 | return np.sum(ret_arr, axis=0) / m 98 | 99 | 100 | def _mc_shap_task(game, local_m) -> np.ndarray: 101 | """Compute Shapley value by sampling local_m permutations 102 | """ 103 | n = game.n 104 | local_state = np.random.RandomState(None) 105 | sv = np.zeros(n) 106 | idxs = np.arange(n) 107 | 108 | for _ in trange(local_m): 109 | local_state.shuffle(idxs) 110 | old_u = game.null 111 | for j in range(1, n + 1): 112 | temp_u = game.eval_utility(idxs[:j]) 113 | contribution = temp_u - old_u 114 | sv[idxs[j - 1]] += contribution 115 | old_u = temp_u 116 | 117 | return sv 118 | 119 | 120 | def mch(game, m, proc_num=1) -> np.ndarray: 121 | """Compute Shapley value by sampling m*n marginal contributions based on hoeffding 122 | """ 123 | n = game.n 124 | sv = np.zeros(n) 125 | 126 | dir = os.path.join('res', 'temp_' + game.gt + '_' + str(game.n) + 127 | 'n_' + datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S/')) 128 | os.mkdir(dir) 129 | deldir = str(os.getcwd()) + '/' + dir 130 | 131 | mk = np.zeros(n) 132 | mk_list = [] 133 | for i in range(n): 134 | mk_list.append(np.power(i + 1, 2 / 3)) 135 | s = sum(mk_list) 136 | for i in range(n): 137 | mk[i] = math.ceil(m * mk_list[i] / s) 138 | 139 | args = split_num(mk, proc_num) 140 | pool = Pool() 141 | func = partial(_mch_task, game, dir) 142 | ret = pool.map(func, args) 143 | pool.close() 144 | pool.join() 145 | 146 | utility = np.zeros((n, n)) 147 | print("load utility") 148 | for i in trange(len(ret)): 149 | r = ret[i] 150 | utility += np.load(dir + 'utility_' + str(r) + '.npy') 151 | shutil.rmtree(deldir) 152 | 153 | for i in range(n): 154 | for j in range(n): 155 | sv[i] += utility[i][j] / mk[i] 156 | sv[i] /= n 157 | 158 | return sv 159 | 160 | 161 | def _mch_task(game, dir, mk): 162 | """Compute Shapley value by sampling mk(list) marginal contributions 163 | """ 164 | n = game.n 165 | utility = np.zeros((n, n)) 166 | 167 | local_state = np.random.RandomState(None) 168 | for i in trange(n): 169 | idxs = [] 170 | for _ in range(n): 171 | if _ is not i: 172 | idxs.append(_) 173 | for j in range(n): 174 | for _ in range(int(mk[j])): 175 | local_state.shuffle(idxs) 176 | if game.gt == 'voting': 177 | u_1, hsw = game.eval_utility(idxs[:j], 'mcx') 178 | u_2, hsw = game.eval_utility(idxs[:j] + [i], 'mcx', hsw) 179 | elif game.gt == 'airport': 180 | u_1 = game.eval_utility(idxs[:j], 'mcx') 181 | u_2 = game.eval_utility(idxs[:j] + [i], 'mcx', u_1) 182 | elif game.gt == 'tree': 183 | u_1, u_2 = game.eval_utility(idxs[:j] + [i], 'mcx') 184 | else: 185 | u_1 = game.eval_utility(idxs[:j]) 186 | u_2 = game.eval_utility(idxs[:j] + [i]) 187 | utility[i][j] += (u_2 - u_1) 188 | 189 | random.seed() 190 | state = random.getstate() 191 | random.setstate(state) 192 | pid = random.getrandbits(15) 193 | while os.path.exists(dir + 'utility_' + str(pid) + '.npy'): 194 | pid = random.getrandbits(15) 195 | 196 | np.save(dir + 'utility_' + str(pid) + '.npy', utility) 197 | return pid 198 | 199 | 200 | def mcn(game, m, proc_num=1) -> np.ndarray: 201 | """Compute Shapley value by sampling m marginal contributions by optimum allocation 202 | """ 203 | n = game.n 204 | var = np.zeros((n, n)) 205 | utility = np.zeros((n, n)) 206 | 207 | dir = os.path.join('res', 'temp_' + game.gt + '_' + str(game.n) + 208 | 'n_' + datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S/')) 209 | os.mkdir(dir) 210 | deldir = str(os.getcwd()) + '/' + dir 211 | 212 | initial_m = max(2, int(m / (2 * n * n))) 213 | print("initial_m", initial_m) 214 | 215 | args = split_permutation(n, proc_num) 216 | pool = Pool() 217 | func = partial(_mcn_initial, game, initial_m, dir) 218 | ret = pool.map(func, args) 219 | pool.close() 220 | pool.join() 221 | 222 | var = np.zeros((n, n)) 223 | print("load1") 224 | for i in trange(len(ret)): 225 | r = ret[i] 226 | utility += np.load(dir + 'utility_sum_' + str(r) + '.npy') 227 | var += np.load(dir + 'var_' + str(r) + '.npy') 228 | shutil.rmtree(deldir) 229 | os.mkdir(dir) 230 | 231 | # allocate remaining samples 232 | # m -= n*n*initial_m 233 | # mst = np.zeros((n, n)) 234 | # np.maximum(0, var / np.sum(var) * m - initial_m, out=mst) 235 | 236 | # or allocate samples by complementing 237 | mst = var / np.sum(var) * m - initial_m 238 | for i in trange(n): 239 | for j in range(n): 240 | if mst[i][j] < 0: 241 | mst[i][j] = 0 242 | mst = mst.astype(int) 243 | 244 | args = [[] for i in range(proc_num)] 245 | for _ in trange(len(mst)): 246 | temp_args = split_num(mst[_], proc_num).tolist() 247 | for i in range(len(temp_args)): 248 | args[i].append(temp_args[i]) 249 | 250 | # compute allocation with para 251 | ''' 252 | args = split_permutation(n, 10) 253 | pool = Pool() 254 | func = partial(_split_num_par, mst, proc_num, dir) 255 | ret = pool.map(func, args) 256 | pool.close() 257 | pool.join() 258 | 259 | args = np.zeros((proc_num, n, n)) 260 | print("load split") 261 | for i in trange(len(ret)): 262 | r = ret[i] 263 | args += np.load(dir + 'args_' + str(r) + '.npy', allow_pickle=True) 264 | shutil.rmtree(deldir) 265 | os.mkdir(dir) 266 | args = args.astype(int) 267 | ''' 268 | 269 | # later 270 | pool = Pool() 271 | func = partial(_mcn_task, game, dir) 272 | ret = pool.map(func, args) 273 | pool.close() 274 | pool.join() 275 | 276 | print("load2") 277 | for i in trange(len(ret)): 278 | r = ret[i] 279 | utility += np.load(dir + 'utility_' + str(r) + '.npy') 280 | shutil.rmtree(deldir) 281 | 282 | sv = np.zeros(n) 283 | for i in range(n): 284 | for j in range(n): 285 | sv[i] += utility[i][j] / (mst[i][j] + initial_m) 286 | sv[i] /= n 287 | return sv 288 | 289 | 290 | def _split_num_par(m_list, proc_num, dir, i_list): 291 | n = len(m_list) 292 | args = np.zeros((proc_num, n, n)) 293 | 294 | for i in trange(len(i_list)): 295 | _ = i_list[i] 296 | temp_args = split_num(m_list[_], proc_num).tolist() 297 | temp_args = np.array(temp_args, ndmin=2) 298 | for i in range(proc_num): 299 | args[i][_] += temp_args[i] 300 | 301 | random.seed() 302 | state = random.getstate() 303 | random.setstate(state) 304 | pid = random.getrandbits(15) 305 | while os.path.exists(dir + 'args_' + str(pid) + '.npy'): 306 | pid = random.getrandbits(15) 307 | np.save(dir + 'args_' + str(pid) + '.npy', args) 308 | return pid 309 | 310 | 311 | def _mcn_initial(game, initial_m, dir, i_list): 312 | """Initial for mcn 313 | """ 314 | n = game.n 315 | local_state = np.random.RandomState(None) 316 | utility_sum = np.zeros((n, n)) 317 | var = np.zeros((n, n)) 318 | 319 | for h in trange(len(i_list)): 320 | i = i_list[h] 321 | idxs = [] 322 | for _ in range(n): 323 | if _ is not i: 324 | idxs.append(_) 325 | for j in range(n): 326 | temp = [] 327 | for _ in range(initial_m): 328 | local_state.shuffle(idxs) 329 | if game.gt == 'voting': 330 | u_1, hsw = game.eval_utility(idxs[:j], 'mcx') 331 | u_2, hsw = game.eval_utility(idxs[:j] + [i], 'mcx', hsw) 332 | elif game.gt == 'airport': 333 | u_1 = game.eval_utility(idxs[:j], 'mcx') 334 | u_2 = game.eval_utility(idxs[:j] + [i], 'mcx', u_1) 335 | elif game.gt == 'tree': 336 | u_1, u_2 = game.eval_utility(idxs[:j] + [i], 'mcx') 337 | else: 338 | u_1 = game.eval_utility(idxs[:j]) 339 | u_2 = game.eval_utility(idxs[:j] + [i]) 340 | 341 | temp.append(u_2 - u_1) 342 | utility_sum[i][j] += u_2 - u_1 343 | var[i][j] = np.var(temp, ddof=1) 344 | 345 | random.seed() 346 | state = random.getstate() 347 | random.setstate(state) 348 | pid = random.getrandbits(15) 349 | while os.path.exists(dir + 'utility_sum_' + str(pid) + '.npy'): 350 | pid = random.getrandbits(15) 351 | np.save(dir + 'utility_sum_' + str(pid) + '.npy', utility_sum) 352 | np.save(dir + 'var_' + str(pid) + '.npy', var) 353 | return pid 354 | 355 | 356 | def _mcn_task(game, dir, mst): 357 | """Compute Shapley value by sampling mst(list) marginal contributions 358 | """ 359 | n = game.n 360 | local_state = np.random.RandomState(None) 361 | utility = np.zeros((n, n)) 362 | for i in trange(n): 363 | idxs = [] 364 | for _ in range(n): 365 | if _ is not i: 366 | idxs.append(_) 367 | for j in range(n): 368 | for _ in range(mst[i][j]): 369 | local_state.shuffle(idxs) 370 | if game.gt == 'voting': 371 | u_1, hsw = game.eval_utility(idxs[:j], 'mcx') 372 | u_2, hsw = game.eval_utility(idxs[:j] + [i], 'mcx', hsw) 373 | elif game.gt == 'airport': 374 | u_1 = game.eval_utility(idxs[:j], 'mcx') 375 | u_2 = game.eval_utility(idxs[:j] + [i], 'mcx', u_1) 376 | elif game.gt == 'tree': 377 | u_1, u_2 = game.eval_utility(idxs[:j] + [i], 'mcx') 378 | else: 379 | u_1 = game.eval_utility(idxs[:j]) 380 | u_2 = game.eval_utility(idxs[:j] + [i]) 381 | utility[i][j] += (u_2 - u_1) 382 | 383 | random.seed() 384 | state = random.getstate() 385 | random.setstate(state) 386 | pid = random.getrandbits(15) 387 | while os.path.exists(dir + 'utility_' + str(pid) + '.npy'): 388 | pid = random.getrandbits(15) 389 | 390 | np.save(dir + 'utility_' + str(pid) + '.npy', utility) 391 | return pid 392 | 393 | 394 | def cc_shap(game, m, proc_num=1) -> np.ndarray: 395 | """Compute Shapley value by sampling m complementary contributions 396 | """ 397 | if proc_num < 0: 398 | raise ValueError('Invalid proc num.') 399 | 400 | n = game.n 401 | 402 | dir = os.path.join('res', 'temp_' + game.gt + '_' + str(game.n) + 403 | 'n_' + datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S/')) 404 | deldir = str(os.getcwd()) + '/' + dir 405 | os.mkdir(dir) 406 | 407 | args = split_permutation_num(m, proc_num) 408 | pool = Pool() 409 | func = partial(_cc_shap_task, game, dir) 410 | ret = pool.map(func, args) 411 | pool.close() 412 | pool.join() 413 | 414 | sv = np.zeros(n) 415 | utility = np.zeros((n + 1, n)) 416 | count = np.zeros((n + 1, n)) 417 | for r in ret: 418 | utility += np.load(dir + 'utility_' + str(r) + '.npy') 419 | count += np.load(dir + 'count_' + str(r) + '.npy') 420 | 421 | shutil.rmtree(deldir) 422 | 423 | for i in range(n + 1): 424 | for j in range(n): 425 | sv[j] += 0 if count[i][j] == 0 else (utility[i][j] / count[i][j]) 426 | sv /= n 427 | return sv 428 | 429 | 430 | def _cc_shap_task(game, dir, local_m): 431 | """Compute Shapley value by sampling local_m complementary contributions 432 | """ 433 | n = game.n 434 | local_state = np.random.RandomState(None) 435 | utility = np.zeros((n + 1, n)) 436 | count = np.zeros((n + 1, n)) 437 | idxs = np.arange(n) 438 | 439 | for _ in trange(local_m): 440 | local_state.shuffle(idxs) 441 | j = random.randint(1, n) 442 | if game.gt == 'voting': 443 | u_1 = game.eval_utility(idxs[:j]) 444 | u_2 = 1 - u_1 445 | elif game.gt == 'tree': 446 | u_1, u_2 = game.eval_utility(idxs[:j], 'ccx') 447 | else: 448 | u_1 = game.eval_utility(idxs[:j]) 449 | u_2 = game.eval_utility(idxs[j:]) 450 | 451 | temp = np.zeros(n) 452 | temp[idxs[:j]] = 1 453 | utility[j, :] += temp * (u_1 - u_2) 454 | count[j, :] += temp 455 | 456 | temp = np.zeros(n) 457 | temp[idxs[j:]] = 1 458 | utility[n - j, :] += temp * (u_2 - u_1) 459 | count[n - j, :] += temp 460 | 461 | random.seed() 462 | state = random.getstate() 463 | random.setstate(state) 464 | pid = random.getrandbits(15) 465 | while os.path.exists(dir + 'utility_' + str(pid) + '.npy'): 466 | pid = random.getrandbits(15) 467 | np.save(dir + 'utility_' + str(pid) + '.npy', utility) 468 | np.save(dir + 'count_' + str(pid) + '.npy', count) 469 | return pid 470 | 471 | 472 | def ccshap_neyman(game, initial_m, m, proc_num=1, initial_proc=True, type=1) -> np.ndarray: 473 | """Compute Shapley value by sampling m complementary contributions based on Neyman 474 | """ 475 | n = game.n 476 | sv = np.zeros(n) 477 | var = np.zeros((n, n)) 478 | local_state = np.random.RandomState(None) 479 | utility_sum = np.zeros((n, n)) 480 | count_sum = np.zeros((n, n)) 481 | 482 | count = 0 483 | 484 | dir = os.path.join('res', 'temp_' + game.gt + '_' + str(game.n) + 485 | 'n_' + datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S/')) 486 | os.mkdir(dir) 487 | deldir = str(os.getcwd()) + '/' + dir 488 | 489 | if not initial_proc: 490 | utility = [[[] for _ in range(n)] for _ in range(n)] 491 | coef = [comb(n - 1, s) for s in range(n)] 492 | while True: 493 | temp_count = count 494 | for i in trange(n): 495 | idxs = [_ for _ in range(i)] + [_ for _ in range(i + 1, n)] 496 | for j in range(n): 497 | if len(utility[i][j]) >= initial_m or len( 498 | utility[i][j]) >= coef[j]: 499 | continue 500 | local_state.shuffle(idxs) 501 | count += 1 502 | if game.gt == 'voting': 503 | u_1 = game.eval_utility(idxs[:j] + [i]) 504 | u_2 = 1 - u_1 505 | elif game.gt == 'tree': 506 | u_1, u_2 = game.eval_utility(idxs[:j] + [i], 'ccx') 507 | else: 508 | u_1 = game.eval_utility(idxs[:j] + [i]) 509 | u_2 = game.eval_utility(idxs[j:]) 510 | utility[i][j].append(u_1 - u_2) 511 | for l in range(n - 1): 512 | if l < j: 513 | utility[idxs[l]][j].append(u_1 - u_2) 514 | else: 515 | utility[idxs[l]][n - j - 2].append(u_2 - u_1) 516 | 517 | if count == temp_count: 518 | break 519 | 520 | for i in range(n): 521 | for j in range(n): 522 | if j != 0 and j != n - 1: 523 | var[i][j] = np.var(utility[i][j], ddof=1) 524 | utility_sum[i][j] = np.sum(utility[i][j]) 525 | count_sum[i][j] = len(utility[i][j]) 526 | 527 | del utility 528 | gc.collect() 529 | 530 | else: 531 | args = split_permutation(math.ceil((n + 1) / 2), proc_num) 532 | for i in range(len(args)): 533 | for j in range(len(args[i])): 534 | args[i][j] += math.ceil(n / 2) - 1 535 | 536 | pool = Pool() 537 | if type == 1: 538 | func = partial(_ccshap_neyman_initial, game, initial_m, dir) 539 | else: 540 | func = partial(_ccshap_neyman_initial_a, game, initial_m, dir) 541 | ret = pool.map(func, args) 542 | pool.close() 543 | pool.join() 544 | 545 | print("initial load") 546 | for r in ret: 547 | count += r[0] 548 | var += np.load(dir + 'var_' + str(r[1]) + '.npy') 549 | utility_sum += np.load(dir + 'utility_sum_' + str(r[1]) + '.npy') 550 | count_sum += np.load(dir + 'count_sum_' + str(r[1]) + '.npy') 551 | 552 | shutil.rmtree(deldir) 553 | os.mkdir(dir) 554 | 555 | # compute variance 556 | var_sum = 0 557 | sigma_j = np.zeros(n) 558 | sigma_n_j = np.zeros(n) 559 | for j in range(math.ceil(n / 2) - 1, n): 560 | for i in range(n): 561 | sigma_j[j] += var[i][j] / (j + 1) 562 | if n - j - 2 < 0: 563 | sigma_n_j[j] += 0 564 | else: 565 | sigma_n_j[j] += var[i][n - j - 2] / (n - j - 1) 566 | var_sum += np.sqrt(sigma_j[j] + sigma_n_j[j]) 567 | 568 | # compute allocation 569 | m -= count 570 | print("m", m) 571 | local_m = np.zeros(n) 572 | for j in range(math.ceil(n / 2) - 1, n): 573 | local_m[j] = max( 574 | 0, 575 | math.ceil(m * np.sqrt(sigma_j[j] + sigma_n_j[j]) / var_sum)) 576 | 577 | # second stage 578 | args = split_num(local_m, proc_num) 579 | pool = Pool() 580 | func = partial(_ccshap_neyman_task, game, dir) 581 | ret = pool.map(func, args) 582 | pool.close() 583 | pool.join() 584 | 585 | print("second stage load") 586 | for i in trange(len(ret)): 587 | r = ret[i] 588 | utility_sum += np.load(dir + 'utility_' + str(r) + '.npy') 589 | count_sum += np.load(dir + 'count_' + str(r) + '.npy') 590 | shutil.rmtree(deldir) 591 | 592 | for i in range(n): 593 | for j in range(n): 594 | sv[i] += 0 if count_sum[i][j] == 0 else utility_sum[i][j] / \ 595 | count_sum[i][j] 596 | sv[i] /= n 597 | 598 | return sv 599 | 600 | 601 | def _ccshap_neyman_initial_a(game, initial_m, dir, j_list): 602 | """ Compute variance by Welford 603 | """ 604 | n = game.n 605 | var = np.zeros((n, n)) 606 | utility_sum = np.zeros((n, n)) 607 | count_sum = np.zeros((n, n)) 608 | mean_sum = np.zeros((n, n)) 609 | 610 | coef = [comb(n - 1, s) for s in range(n)] 611 | 612 | nj_list = collections.deque() 613 | for j in j_list: 614 | nj_list.append(j) 615 | h = n - j - 2 616 | if h == j or h < 0: 617 | continue 618 | nj_list.appendleft(h) 619 | 620 | local_state = np.random.RandomState(None) 621 | count = 0 622 | temp_count = -1 623 | for ttt in trange(max_time): 624 | if count == temp_count: 625 | break 626 | temp_count = count 627 | for i in trange(n): 628 | idxs = [_ for _ in range(i)] + [_ for _ in range(i + 1, n)] 629 | for j in nj_list: 630 | if count_sum[i][j] >= initial_m or count_sum[i][j] >= coef[j]: 631 | continue 632 | local_state.shuffle(idxs) 633 | count += 1 634 | if game.gt == 'voting': 635 | u_1 = game.eval_utility(idxs[:j] + [i]) 636 | u_2 = 1 - u_1 637 | elif game.gt == 'tree': 638 | u_1, u_2 = game.eval_utility(idxs[:j] + [i], 'ccx') 639 | else: 640 | u_1 = game.eval_utility(idxs[:j] + [i]) 641 | u_2 = game.eval_utility(idxs[j:]) 642 | 643 | before_mean = mean_sum[i][j] 644 | utility_sum[i][j] += (u_1 - u_2) 645 | count_sum[i][j] += 1 646 | mean_sum[i][j] = utility_sum[i][j] / count_sum[i][j] 647 | var[i][j] += (u_1 - u_2 - before_mean) * \ 648 | (u_1 - u_2 - mean_sum[i][j]) 649 | 650 | for l in range(n - 1): 651 | if l < j: 652 | before_mean = mean_sum[idxs[l]][j] 653 | utility_sum[idxs[l]][j] += (u_1 - u_2) 654 | count_sum[idxs[l]][j] += 1 655 | mean_sum[idxs[l]][j] = utility_sum[idxs[l] 656 | ][j] / count_sum[idxs[l]][j] 657 | var[idxs[l]][j] += (u_1 - u_2 - 658 | before_mean) * (u_1 - u_2 - mean_sum[idxs[l]][j]) 659 | else: 660 | before_mean = mean_sum[idxs[l]][n - j - 2] 661 | utility_sum[idxs[l]][n - j - 2] += (u_2 - u_1) 662 | count_sum[idxs[l]][n - j - 2] += 1 663 | mean_sum[idxs[l]][n - j - 2] = utility_sum[idxs[l] 664 | ][n - j - 2] / count_sum[idxs[l]][n - j - 2] 665 | var[idxs[l]][n - j - 2] += (u_2 - u_1 - before_mean) * ( 666 | u_2 - u_1 - mean_sum[idxs[l]][n - j - 2]) 667 | 668 | print("compute variance") 669 | for i in trange(n): 670 | for j in nj_list: 671 | var[i][j] = 0 if count_sum[i][j] == 1 else var[i][j] / \ 672 | (count_sum[i][j] - 1) 673 | 674 | random.seed() 675 | state = random.getstate() 676 | random.setstate(state) 677 | pid = random.getrandbits(15) 678 | while os.path.exists(dir + 'var_' + str(pid) + '.npy'): 679 | pid = random.getrandbits(15) 680 | 681 | np.save(dir + 'var_' + str(pid) + '.npy', var) 682 | np.save(dir + 'utility_sum_' + str(pid) + '.npy', utility_sum) 683 | np.save(dir + 'count_sum_' + str(pid) + '.npy', count_sum) 684 | 685 | # print("finish", nj_list) 686 | return count, pid 687 | 688 | 689 | def _ccshap_neyman_initial(game, initial_m, dir, j_list): 690 | """Initial ccn 691 | """ 692 | n = game.n 693 | var = np.zeros((n, n)) 694 | utility_sum = np.zeros((n, n)) 695 | count_sum = np.zeros((n, n)) 696 | utility = [[[] for _ in range(n)] for _ in range(n)] 697 | 698 | coef = [comb(n - 1, s) for s in range(n)] 699 | 700 | nj_list = collections.deque() 701 | for j in j_list: 702 | nj_list.append(j) 703 | h = n - j - 2 704 | if h == j or h < 0: 705 | continue 706 | nj_list.appendleft(h) 707 | nj_list = list(nj_list) 708 | 709 | local_state = np.random.RandomState(None) 710 | 711 | count = 0 712 | temp_count = -1 713 | for ttt in trange(max_time): 714 | if count == temp_count: 715 | break 716 | temp_count = count 717 | for i in trange(n): 718 | idxs = [_ for _ in range(i)] + [_ for _ in range(i + 1, n)] 719 | for j in nj_list: 720 | if len(utility[i][j]) >= initial_m or len(utility[i][j]) >= coef[j]: 721 | continue 722 | local_state.shuffle(idxs) 723 | count += 1 724 | if game.gt == 'voting': 725 | u_1 = game.eval_utility(idxs[:j] + [i]) 726 | u_2 = 1 - u_1 727 | elif game.gt == 'tree': 728 | u_1, u_2 = game.eval_utility(idxs[:j] + [i], 'ccx') 729 | else: 730 | u_1 = game.eval_utility(idxs[:j] + [i]) 731 | u_2 = game.eval_utility(idxs[j:]) 732 | 733 | utility[i][j].append(u_1 - u_2) 734 | for l in range(n - 1): 735 | if l < j: 736 | utility[idxs[l]][j].append(u_1 - u_2) 737 | else: 738 | utility[idxs[l]][n - j - 2].append(u_2 - u_1) 739 | 740 | print("compute sum and variance") 741 | for i in trange(n): 742 | for j in nj_list: 743 | utility_sum[i][j] = np.sum(utility[i][j]) 744 | count_sum[i][j] = len(utility[i][j]) 745 | var[i][j] = 0 if count_sum[i][j] == 1 else np.var( 746 | utility[i][j], ddof=1) 747 | 748 | random.seed() 749 | state = random.getstate() 750 | random.setstate(state) 751 | pid = random.getrandbits(15) 752 | while os.path.exists(dir + 'var_' + str(pid) + '.npy'): 753 | pid = random.getrandbits(15) 754 | 755 | np.save(dir + 'var_' + str(pid) + '.npy', var) 756 | np.save(dir + 'utility_sum_' + str(pid) + '.npy', utility_sum) 757 | np.save(dir + 'count_sum_' + str(pid) + '.npy', count_sum) 758 | 759 | print("finish", nj_list) 760 | return count, pid 761 | 762 | 763 | def _ccshap_neyman_task(game, dir, local_m): 764 | """Compute remaining complementary contributions in ccn 765 | """ 766 | n = game.n 767 | utility = np.zeros((n, n)) 768 | count = np.zeros((n, n)) 769 | idxs = np.arange(n) 770 | 771 | local_state = np.random.RandomState(None) 772 | for j in trange(n): 773 | for _ in range(local_m[j]): 774 | local_state.shuffle(idxs) 775 | 776 | if game.gt == 'voting': 777 | u_1 = game.eval_utility(idxs[:j + 1]) 778 | u_2 = 1 - u_1 779 | elif game.gt == 'tree': 780 | u_1, u_2 = game.eval_utility(idxs[:j + 1], 'ccx') 781 | else: 782 | u_1 = game.eval_utility(idxs[:j + 1]) 783 | u_2 = game.eval_utility(idxs[j + 1:]) 784 | 785 | temp = np.zeros(n) 786 | temp[idxs[:j + 1]] = 1 787 | utility[:, j] += temp * (u_1 - u_2) 788 | count[:, j] += temp 789 | 790 | temp = np.zeros(n) 791 | temp[idxs[j + 1:]] = 1 792 | utility[:, n - j - 2] += temp * (u_2 - u_1) 793 | count[:, n - j - 2] += temp 794 | 795 | random.seed() 796 | state = random.getstate() 797 | random.setstate(state) 798 | pid = random.getrandbits(15) 799 | while os.path.exists(dir + 'count_' + str(pid) + '.npy'): 800 | pid = random.getrandbits(15) 801 | 802 | np.save(dir + 'utility_' + str(pid) + '.npy', utility) 803 | np.save(dir + 'count_' + str(pid) + '.npy', count) 804 | 805 | return pid 806 | 807 | 808 | def ccshap_bernstein(game, 809 | m, 810 | initial_m, 811 | r, 812 | thelta, 813 | flag=False) -> np.ndarray: 814 | """Compute the Shapley value by sampling complementary contributions based on Bernstein 815 | """ 816 | n = game.n 817 | 818 | def select_coalitions_on(rankings): 819 | n = len(rankings) 820 | idxs_set = set([i for i in range(n)]) 821 | res_idx = [] 822 | res_s = math.inf 823 | max_score = 0 824 | for s in range(math.ceil(n / 2), n - 1): 825 | perm = [ 826 | rankings[i][n - s - 1] - rankings[i][s - 1] for i in range(n) 827 | ] 828 | tidxs = np.argsort(perm) 829 | rank = perm[tidxs[s - 1]] 830 | local_state.shuffle(tidxs) 831 | idxs = [] 832 | for i in tidxs: 833 | if perm[i] > rank: 834 | idxs.append(tidxs[i]) 835 | i = 0 836 | while len(idxs) < n - s and i < n: 837 | if perm[tidxs[i]] == rank: 838 | idxs.append(tidxs[i]) 839 | i += 1 840 | idxs += list(idxs_set - set(idxs)) 841 | score = 0 842 | for i in range(n - s): 843 | score += rankings[idxs[i]][n - s - 1] 844 | for i in range(n - s, n): 845 | score += rankings[idxs[i]][s - 1] 846 | if score > max_score: 847 | max_score = score 848 | res_idx, res_s = idxs, s 849 | return max_score, res_idx, res_s 850 | 851 | # use original algorithm and a little random 852 | def select_coalitions_rd(rankings): 853 | local_state = np.random.RandomState(None) 854 | n = len(rankings) 855 | 856 | rankings_matrix = rankings 857 | 858 | idx = np.arange(n) 859 | max_score = 0 860 | for s in range(math.ceil(n / 2), n): 861 | local_state.shuffle(idx) 862 | 863 | l = [] 864 | fl = [] 865 | for i in range(s): 866 | temp = rankings_matrix[idx[i]][s - 1] - rankings_matrix[ 867 | idx[i]][n - s - 1] 868 | l.append(temp) 869 | fl.append(-temp) 870 | 871 | r = [] 872 | fr = [] 873 | for i in range(s, n): 874 | temp = rankings_matrix[idx[i]][n - s - 875 | 1] - rankings_matrix[idx[i]][s - 876 | 1] 877 | r.append(temp) 878 | fr.append(-temp) 879 | 880 | sli = np.argsort(fl) 881 | slr = np.argsort(fr) 882 | 883 | score = 0 884 | p = 0 885 | while p < s and p < n - s and score + l[sli[p]] + r[slr[p]] < score: 886 | score += l[sli[p]] + r[slr[p]] 887 | idx[sli[p]], idx[s + slr[p]] = idx[s + slr[p]], idx[sli[p]] 888 | p += 1 889 | 890 | score = 0 891 | for i in range(s): 892 | score += rankings_matrix[idx[i]][s - 1] 893 | for i in range(s, n): 894 | score += rankings_matrix[idx[i]][n - s - 1] 895 | 896 | if score > max_score: 897 | max_score = score 898 | res_idx, res_s = idx, s 899 | 900 | return max_score, res_idx, res_s 901 | 902 | local_state = np.random.RandomState(None) 903 | utility = [[[] for _ in range(n)] for _ in range(n)] 904 | var = np.zeros((n, n)) 905 | coef = [comb(n - 1, s) for s in range(n)] 906 | # thelta = np.log(10 / (1 + thelta)) 907 | 908 | if flag: 909 | print("prob: ", thelta) 910 | else: 911 | print("prob: ", 1 - 3 * np.power(math.e, -thelta)) 912 | 913 | count = 0 914 | while True: 915 | temp_count = count 916 | for i in trange(n): 917 | idxs = [_ for _ in range(i)] + [_ for _ in range(i + 1, n)] 918 | for j in range(n): 919 | if len(utility[i][j]) >= initial_m or len( 920 | utility[i][j]) >= coef[j]: 921 | continue 922 | local_state.shuffle(idxs) 923 | count += 1 924 | u_1 = game.eval_utility(idxs[:j] + [i]) 925 | u_2 = game.eval_utility(idxs[j:]) 926 | utility[i][j].append(u_1 - u_2) 927 | for l in range(n - 1): 928 | if l < j: 929 | utility[idxs[l]][j].append(u_1 - u_2) 930 | else: 931 | utility[idxs[l]][n - j - 2].append(u_2 - u_1) 932 | if count == temp_count: 933 | break 934 | 935 | for i in range(n): 936 | for j in range(n): 937 | if flag: 938 | var[i][j] = np.var(utility[i][j], ddof=1) 939 | var[i][j] = (np.sqrt(2 * var[i][j] * math.log(2 / thelta) / 940 | len(utility[i][j])) + 941 | 7 * math.log(2 / thelta) / 942 | (3 * (len(utility[i][j]) - 1))) 943 | else: 944 | var[i][j] = np.var(utility[i][j]) 945 | var[i][j] = ( 946 | np.sqrt(2 * var[i][j] * thelta / len(utility[i][j])) + 947 | 3 * r * thelta / len(utility[i][j])) 948 | 949 | count = sum([len(utility[0][j]) for j in range(n)]) 950 | m -= count 951 | print(m) 952 | for _ in trange(m): 953 | min_score, idxs, j = select_coalitions_rd(var) 954 | 955 | u_1 = game.eval_utility(idxs[:j]) 956 | u_2 = game.eval_utility(idxs[j:]) 957 | for l in range(n): 958 | if l < j: 959 | utility[idxs[l]][j - 1].append(u_1 - u_2) 960 | if flag: 961 | var[idxs[l]][j - 962 | 1] = np.var(utility[idxs[l]][j - 1], ddof=1) 963 | var[idxs[l]][ 964 | j - 965 | 1] = 1 * (np.sqrt(2 * var[idxs[l]][j - 1] * math.log( 966 | 2 / thelta) / len(utility[idxs[l]][j - 1])) + 967 | 7 * math.log(2 / thelta) / 968 | (3 * (len(utility[idxs[l]][j - 1]) - 1))) 969 | else: 970 | var[idxs[l]][j - 1] = np.var(utility[idxs[l]][j - 1]) 971 | var[idxs[l]][j - 1] = 1 * ( 972 | np.sqrt(2 * var[idxs[l]][j - 1] * thelta / 973 | len(utility[idxs[l]][j - 1])) + 974 | 3 * 1 * thelta / len(utility[idxs[l]][j - 1])) 975 | else: 976 | utility[idxs[l]][n - j - 1].append(u_2 - u_1) 977 | if flag: 978 | var[idxs[l]][n - j - 1] = np.var( 979 | utility[idxs[l]][n - j - 1], ddof=1) 980 | var[idxs[l]][n - j - 1] = 1 * ( 981 | np.sqrt(2 * var[idxs[l]][n - j - 1] * math.log( 982 | 2 / thelta) / len(utility[idxs[l]][n - j - 1])) + 983 | 7 * math.log(2 / thelta) / 984 | (3 * (len(utility[idxs[l]][n - j - 1]) - 1))) 985 | else: 986 | var[idxs[l]][n - j - 1] = np.var(utility[idxs[l]][n - j - 987 | 1]) 988 | var[idxs[l]][n - j - 1] = 1 * ( 989 | np.sqrt(2 * var[idxs[l]][n - j - 1] * thelta / 990 | len(utility[idxs[l]][n - j - 1])) + 991 | 3 * 1 * thelta / len(utility[idxs[l]][n - j - 1])) 992 | 993 | sv = np.zeros(n) 994 | for i in range(n): 995 | for j in range(n): 996 | sv[i] += np.mean(utility[i][j]) 997 | sv[i] /= n 998 | return sv 999 | 1000 | 1001 | def mc_shap_notpara(game, m) -> np.ndarray: 1002 | """Compute Shapley value by sampling m permutations; not parallel 1003 | """ 1004 | local_state = np.random.RandomState(None) 1005 | n = game.n 1006 | sv = np.zeros(n) 1007 | idxs = np.arange(n) 1008 | 1009 | for _ in trange(m): 1010 | local_state.shuffle(idxs) 1011 | old_u = game.null # game.null()[0] 1012 | for j in range(1, n + 1): 1013 | temp_u = game.eval_utility(idxs[:j]) 1014 | contribution = temp_u - old_u 1015 | sv[idxs[j - 1]] += contribution 1016 | old_u = temp_u 1017 | 1018 | return sv / m 1019 | 1020 | 1021 | def mch_notpara(game, m) -> np.ndarray: 1022 | """Compute the Shapley value by sampling marginal contributions based on hoeffding; not parallel 1023 | """ 1024 | n = game.n 1025 | sv = np.zeros(n) 1026 | mk = np.zeros(n) 1027 | mk_list = [] 1028 | for i in range(n): 1029 | mk_list.append(np.power(i + 1, 2 / 3)) 1030 | s = sum(mk_list) 1031 | for i in range(n): 1032 | mk[i] = math.ceil(m * mk_list[i] / s) 1033 | 1034 | print("mk:", sum(mk)) 1035 | 1036 | local_state = np.random.RandomState(None) 1037 | utility = np.zeros((n, n)) 1038 | for i in trange(n): 1039 | idxs = [_ for _ in range(i)] + [_ for _ in range(i + 1, n)] 1040 | for j in range(n): 1041 | for _ in range(int(mk[j])): 1042 | local_state.shuffle(idxs) 1043 | u_1 = game.eval_utility(idxs[:j]) 1044 | u_2 = game.eval_utility(idxs[:j] + [i]) 1045 | utility[i][j] += (u_2 - u_1) 1046 | 1047 | for i in range(n): 1048 | for j in range(n): 1049 | sv[i] += utility[i][j] / mk[j] 1050 | sv[i] /= n 1051 | 1052 | return sv 1053 | 1054 | 1055 | def mcn_notpara(game, m) -> np.ndarray: 1056 | """Compute the Shapley value by sampling marginal contributions by optimum allocation; not parallel 1057 | """ 1058 | n = game.n 1059 | var = np.zeros((n, n)) 1060 | utility = [[[] for i in range(n)] for i in range(n)] 1061 | count = np.zeros((n, n)) 1062 | initial_m = max(2, int(m / (2 * n * n))) 1063 | 1064 | local_state = np.random.RandomState(None) 1065 | for i in trange(n): 1066 | idxs = [_ for _ in range(i)] + [_ for _ in range(i + 1, n)] 1067 | for j in range(n): 1068 | for _ in range(initial_m): 1069 | local_state.shuffle(idxs) 1070 | u_1 = game.eval_utility(idxs[:j]) 1071 | u_2 = game.eval_utility(idxs[:j] + [i]) 1072 | utility[i][j].append(u_2 - u_1) 1073 | count[i][j] += 1 1074 | 1075 | for i in range(n): 1076 | for j in range(n): 1077 | var[i][j] = np.var(utility[i][j]) * count[i][j] / (count[i][j] - 1) 1078 | 1079 | mst = np.zeros((n, n)) 1080 | for i in range(n): 1081 | for j in range(n): 1082 | mst[i][j] = max(0, m * var[i][j] / np.sum(var) - count[i][j]) 1083 | 1084 | for i in trange(n): 1085 | idxs = [_ for _ in range(i)] + [_ for _ in range(i + 1, n)] 1086 | for j in range(n): 1087 | for _ in range(int(mst[i][j])): 1088 | local_state.shuffle(idxs) 1089 | u_1 = game.eval_utility(idxs[:j]) 1090 | u_2 = game.eval_utility(idxs[:j] + [i]) 1091 | utility[i][j].append(u_2 - u_1) 1092 | 1093 | sv = np.zeros(n) 1094 | for i in range(n): 1095 | for j in range(n): 1096 | sv[i] += np.mean(utility[i][j]) 1097 | sv[i] /= n 1098 | 1099 | return sv 1100 | 1101 | 1102 | def cc_shap_nopara(game, m) -> np.ndarray: 1103 | """Compute the Shapley value by sampling m complementary contributions; not parallel 1104 | """ 1105 | n = game.n 1106 | local_state = np.random.RandomState(None) 1107 | utility = np.zeros((n + 1, n)) 1108 | count = np.zeros((n + 1, n)) 1109 | idxs = np.arange(n) 1110 | 1111 | for _ in trange(m): 1112 | local_state.shuffle(idxs) 1113 | j = random.randint(1, n) 1114 | u_1 = game.eval_utility(idxs[:j]) 1115 | u_2 = game.eval_utility(idxs[j:]) 1116 | 1117 | temp = np.zeros(n) 1118 | temp[idxs[:j]] = 1 1119 | utility[j, :] += temp * (u_1 - u_2) 1120 | count[j, :] += temp 1121 | 1122 | temp = np.zeros(n) 1123 | temp[idxs[j:]] = 1 1124 | utility[n - j, :] += temp * (u_2 - u_1) 1125 | count[n - j, :] += temp 1126 | 1127 | sv = np.zeros(n) 1128 | for i in range(n + 1): 1129 | for j in range(n): 1130 | sv[j] += 0 if count[i][j] == 0 else (utility[i][j] / count[i][j]) 1131 | sv /= n 1132 | return sv 1133 | 1134 | 1135 | def ccshap_neyman_notpara(game, initial_m, m) -> np.ndarray: 1136 | """Compute the Shapley value by sampling complementary contributions based on Neyman; not parallel 1137 | """ 1138 | n = game.n 1139 | sv = np.zeros(n) 1140 | utility = [[[] for _ in range(n)] for _ in range(n)] 1141 | var = np.zeros((n, n)) 1142 | local_state = np.random.RandomState(None) 1143 | coef = [comb(n - 1, s) for s in range(n)] 1144 | 1145 | # initialize 1146 | count = 0 1147 | while True: 1148 | temp_count = count 1149 | for i in trange(n): 1150 | idxs = [_ for _ in range(i)] + [_ for _ in range(i + 1, n)] 1151 | for j in range(n): 1152 | if len(utility[i][j]) >= initial_m or len( 1153 | utility[i][j]) >= coef[j]: 1154 | continue 1155 | local_state.shuffle(idxs) 1156 | count += 1 1157 | u_1 = game.eval_utility(idxs[:j] + [i]) 1158 | u_2 = game.eval_utility(idxs[j:]) 1159 | utility[i][j].append(u_1 - u_2) 1160 | for l in range(n - 1): 1161 | if l < j: 1162 | utility[idxs[l]][j].append(u_1 - u_2) 1163 | else: 1164 | utility[idxs[l]][n - j - 2].append(u_2 - u_1) 1165 | 1166 | if count == temp_count: 1167 | break 1168 | 1169 | # compute variance 1170 | for i in range(n): 1171 | for j in range(n): 1172 | var[i][j] = np.var(utility[i][j], ddof=1) 1173 | 1174 | # compute allocation 1175 | var_sum = 0 1176 | sigma_j = np.zeros(n) 1177 | sigma_n_j = np.zeros(n) 1178 | for j in range(math.ceil(n / 2) - 1, n): 1179 | for i in range(n): 1180 | sigma_j[j] += var[i][j] / (j + 1) 1181 | if n - j - 2 < 0: 1182 | sigma_n_j[j] += 0 1183 | else: 1184 | sigma_n_j[j] += var[i][n - j - 2] / (n - j - 1) 1185 | var_sum += np.sqrt(sigma_j[j] + sigma_n_j[j]) 1186 | 1187 | m -= count 1188 | m = np.zeros(n) 1189 | for j in range(math.ceil(n / 2) - 1, n): 1190 | m[j] = max( 1191 | 0, 1192 | math.ceil(m * np.sqrt(sigma_j[j] + sigma_n_j[j]) / var_sum)) 1193 | 1194 | # second stage 1195 | new_utility = np.zeros((n, n)) 1196 | count = np.zeros((n, n)) 1197 | 1198 | for i in range(n): 1199 | for j in range(n): 1200 | new_utility[i][j] = np.sum(utility[i][j]) 1201 | count[i][j] = len(utility[i][j]) 1202 | 1203 | idxs = np.arange(n) 1204 | for j in trange(n): 1205 | for _ in range(int(m[j])): 1206 | local_state.shuffle(idxs) 1207 | u_1 = game.eval_utility(idxs[:j + 1]) 1208 | u_2 = game.eval_utility(idxs[j + 1:]) 1209 | 1210 | temp = np.zeros(n) 1211 | temp[idxs[:j + 1]] = 1 1212 | new_utility[:, j] += temp * (u_1 - u_2) 1213 | count[:, j] += temp 1214 | 1215 | temp = np.zeros(n) 1216 | temp[idxs[j + 1:]] = 1 1217 | new_utility[:, n - j - 2] += temp * (u_2 - u_1) 1218 | count[:, n - j - 2] += temp 1219 | 1220 | for i in range(n): 1221 | for j in range(n): 1222 | sv[i] += 0 if count[i][j] == 0 else new_utility[i][j] / count[i][j] 1223 | sv[i] /= n 1224 | 1225 | return sv 1226 | -------------------------------------------------------------------------------- /exps/data_files/student-mat.csv: -------------------------------------------------------------------------------- 1 | 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,Y 2 | "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 3 | "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 4 | "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 5 | "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 6 | "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 7 | "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 8 | "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 9 | "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 10 | "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 11 | "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 12 | "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 13 | "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 14 | "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 15 | "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 16 | "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 17 | "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 18 | "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 19 | "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 20 | "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 21 | "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 22 | "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 23 | "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 24 | "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 25 | "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 26 | "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 27 | "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 28 | "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 29 | "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 30 | "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 31 | "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 32 | "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 33 | "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 34 | "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 35 | "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 36 | "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 37 | "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 38 | "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 39 | "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 40 | "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 41 | "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 42 | "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 43 | "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 44 | "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 45 | "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 46 | "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 47 | "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 48 | "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 49 | "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 50 | "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 51 | "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 52 | "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 53 | "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 54 | "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 55 | "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 56 | "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 57 | "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 58 | "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 59 | "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 60 | "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 61 | "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 62 | "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 63 | "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 64 | "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 65 | "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 66 | "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 67 | "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 68 | "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 69 | "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 70 | "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 71 | "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 72 | "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 73 | "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 74 | "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 75 | "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 76 | "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 77 | "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 78 | "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 79 | "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 80 | "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 81 | "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 82 | "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 83 | "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 84 | "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 85 | "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 86 | "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 87 | "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 88 | "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 89 | "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 90 | "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 91 | "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 92 | "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 93 | "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 94 | "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 95 | "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 96 | "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 97 | "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 98 | "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 99 | "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 100 | "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 101 | "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 102 | "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 103 | "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 104 | "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 105 | "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 106 | "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 107 | "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 108 | "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 109 | "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 110 | "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 111 | "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 112 | "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 113 | "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 114 | "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 115 | "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 116 | "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 117 | "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 118 | "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 119 | "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 120 | "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 121 | "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 122 | "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 123 | "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 124 | "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 125 | "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 126 | "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 127 | "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 128 | "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 129 | "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 130 | "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 131 | "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 132 | "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 133 | "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 134 | "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 135 | "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 136 | "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 137 | "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 138 | "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 139 | "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 140 | "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 141 | "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 142 | "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 143 | "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 144 | "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 145 | "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 146 | "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 147 | "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 148 | "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 149 | "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 150 | "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 151 | "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 152 | "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 153 | "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 154 | "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 155 | "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 156 | "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 157 | "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 158 | "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 159 | "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 160 | "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 161 | "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 162 | "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 163 | "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 164 | "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 165 | "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 166 | "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 167 | "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 168 | "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 169 | "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 170 | "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 171 | "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 172 | "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 173 | "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 174 | "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 175 | "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 176 | "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 177 | "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 178 | "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 179 | "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 180 | "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 181 | "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 182 | "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 183 | "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 184 | "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 185 | "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 186 | "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 187 | "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 188 | "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 189 | "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 190 | "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 191 | "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 192 | "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 193 | "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 194 | "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 195 | "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 196 | "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 197 | "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 198 | "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 199 | "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 200 | "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 201 | "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 202 | "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 203 | "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 204 | "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 205 | "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 206 | "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 207 | "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 208 | "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 209 | "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 210 | "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 211 | "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 212 | "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 213 | "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 214 | "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 215 | "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 216 | "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 217 | "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 218 | "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 219 | "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 220 | "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 221 | "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 222 | "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 223 | "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 224 | "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 225 | "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 226 | "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 227 | "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 228 | "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 229 | "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 230 | "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 231 | "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 232 | "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 233 | "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 234 | "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 235 | "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 236 | "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 237 | "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 238 | "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 239 | "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 240 | "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 241 | "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 242 | "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 243 | "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 244 | "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 245 | "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 246 | "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 247 | "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 248 | "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 249 | "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 250 | "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 251 | "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 252 | "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 253 | "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 254 | "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 255 | "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 256 | "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 257 | "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 258 | "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 259 | "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 260 | "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 261 | "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 262 | "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 263 | "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 264 | "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 265 | "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 266 | "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 267 | "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 268 | "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 269 | "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 270 | "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 271 | "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 272 | "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 273 | "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 274 | "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 275 | "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 276 | "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 277 | "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 278 | "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 279 | "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 280 | "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 281 | "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 282 | "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 283 | "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 284 | "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 285 | "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 286 | "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 287 | "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 288 | "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 289 | "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 290 | "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 291 | "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 292 | "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 293 | "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 294 | "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 295 | "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 296 | "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 297 | "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 298 | "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 299 | "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 300 | "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 301 | "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 302 | "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 303 | "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 304 | "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 305 | "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 306 | "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 307 | "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 308 | "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 309 | "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 310 | "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 311 | "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 312 | "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 313 | "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 314 | "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 315 | "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 316 | "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 317 | "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 318 | "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 319 | "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 320 | "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 321 | "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 322 | "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 323 | "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 324 | "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 325 | "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 326 | "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 327 | "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 328 | "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 329 | "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 330 | "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 331 | "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 332 | "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 333 | "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 334 | "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 335 | "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 336 | "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 337 | "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 338 | "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 339 | "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 340 | "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 341 | "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 342 | "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 343 | "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 344 | "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 345 | "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 346 | "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 347 | "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 348 | "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 349 | "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 350 | "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 351 | "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 352 | "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 353 | "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 354 | "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 355 | "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 356 | "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 357 | "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 358 | "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 359 | "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 360 | "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 361 | "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 362 | "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 363 | "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 364 | "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 365 | "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 366 | "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 367 | "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 368 | "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 369 | "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 370 | "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 371 | "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 372 | "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 373 | "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 374 | "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 375 | "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 376 | "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 377 | "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 378 | "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 379 | "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 380 | "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 381 | "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 382 | "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 383 | "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 384 | "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 385 | "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 386 | "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 387 | "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 388 | "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 389 | "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 390 | "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 391 | "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 392 | "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 393 | "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 394 | "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 395 | "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 396 | "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 397 | --------------------------------------------------------------------------------