[
  {
    "path": ".dockerignore",
    "content": "node_modules/\n\n# Environments\n.env\n.venv\nenv/\nvenv/\nENV/\nenv.bak/\nvenv.bak/\n\n.idea/\n.vscode\n.atm_server_cache\n\natm/\nlogs/\nmetrics/\nmodels/\n\natm.db/"
  },
  {
    "path": ".editorconfig",
    "content": "[*]\nindent_style = space\nindent_size = 4\ntrim_trailing_whitespace = true\n\n[{.travis.yml,*.json}]\nindent_style = space\nindent_size = 2"
  },
  {
    "path": ".github/ISSUE_TEMPLATE.md",
    "content": "## Description\n\n\n## Expected Behavior\n\n\n## Actual Behavior\n\n\n## Steps to Reproduce the Problem\n\n  1.\n  1.\n  1.\n\n## Specifications\n\n  - ATMSeer Version:\n  - Vagrant Version:\n  - VirtualBox Version:\n  - OS Version:\n"
  },
  {
    "path": ".gitignore",
    "content": "# See https://help.github.com/ignore-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n\n# data\npublic/data/csvs/\natm/data/\n\n# env\n/pyenv\n# testing\n/coverage\n\n# production\n/build\n\n# misc\n.DS_Store\n.env.local\n.env.development.local\n.env.test.local\n.env.production.local\n\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\nyarn.lock\n\n# Editor configs\n.vscode/\n.idea/\n\n# Environments\n.env\n.venv\nenv/\nvenv/\nENV/\nenv.bak/\nvenv.bak/\n\natm.db\n/atm/\nlogs\n*.log\n\nmetrics/\nmodels/\ndatasets/\n\n.atm_server_cache/\n.vagrant/*\nnode.log"
  },
  {
    "path": ".gitmodules",
    "content": "[submodule \"lib/atm\"]\n\tpath = lib/atm\n\turl = http://github.com/HDI-Project/ATM.git\n"
  },
  {
    "path": "Dockerfile",
    "content": "FROM ubuntu:16.04\n\n# install utilities\nRUN apt-get update -yqq  \\\n && apt-get install -yqq \\\n unzip \\\n curl \\\n git \\\n ssh \\\n gcc \\\n make \\\n build-essential \\\n libkrb5-dev \\\n sudo \\\n apt-utils\n\nRUN sudo apt-get install -y python3 python3-pip && \\\n    pip3 install --upgrade pip\n\nRUN sudo apt-get install -y libmysqlclient-dev sqlite3\n\nRUN curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -\nRUN sudo apt-get install -yq nodejs \\\n && apt-get clean \\\n && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*\n\nADD . /code\nWORKDIR /code\n\nRUN pip3 install -r lib/atm/requirements.txt\n\nRUN pip3 install lib/atm/\n\nRUN pip3 install -r server/requirements.txt\n\nRUN pip3 uninstall -y scikit_learn\nRUN pip3 install scikit_learn==0.19.2\n\nRUN npm install --quiet\n\nRUN npm run build\n\nEXPOSE 5000\n\n# ENTRYPOINT [ \"python\" ]\nENV PYTHONPATH \"${PYTHONPATH}:/code/server\"\n"
  },
  {
    "path": "README.md",
    "content": "<p align=\"left\">\n<img width=15% src=\"https://dai.lids.mit.edu/wp-content/uploads/2018/06/Logo_DAI_highres.png\" alt=“DAI-Lab” />\n<i>An open source project from Data to AI Lab at MIT.</i>\n</p>\n\n\n\n# ATMSeer\n\nATMSeer is an interactive visualization tool for automated machine learning (AutoML). It supports users to monitor an ongoing AutoML process, analyze the searched models, and refine the search space in real-time through a multi-granularity visualization. In this instantiation, we build on top of the [ATM AutoML system](https://github.com/HDI-Project/ATM).\n\nOur paper, \"ATMSeer: Increasing Transparency and Controllability in Automated Machine Learning\", was presented at CHI 2019 ([pdf](https://arxiv.org/abs/1902.05009), [site](https://dai.lids.mit.edu/projects/atmseer/)).\n\n[![ATMSEER VIDEO](https://img.youtube.com/vi/7QwN3mmiCzY/0.jpg)](http://www.youtube.com/watch?v=7QwN3mmiCzY \"Video Title\")\n\n## Installation\n\n### Prerequisites\n\nDownload and install or update [VirtualBox](https://www.virtualbox.org/wiki/Downloads) and [Vagrant](https://www.vagrantup.com/downloads.html).\n\n### Download ATMSeer\n\n```\ngit clone https://github.com/HDI-Project/ATMSeer.git\n```\n\n### Install and launch\n\nThen go to ATMSeer project from the terminal and run\n\n```\nsh install.sh\n```\n\nThis will install all the necessary packages in a virtual environment and launch the ATMSeer server.\n\nIf you see these messages in terminal:\n\n```\n...\ndefault: [INFO] [13:07:26:werkzeug]  * Running on http://0.0.0.0:7777/ (Press CTRL+C to quit)\ndefault: [INFO] [13:07:26:werkzeug]  * Restarting with stat\ndefault: [WARNING] [13:07:31:werkzeug]  * Debugger is active!\ndefault: [INFO] [13:07:31:werkzeug]  * Debugger PIN: 295-249-971\ndefault: No valid rules have been specified for JavaScript files\n\n```\nthen ATMSeer is up and running.\n\nFinally, navigate to `http://localhost:7779/` in your broswer (preferably Chrome) to see ATMSeer.\n\n### Debugging\n\nIn case you experience any issues, please try the following.\n\n1. Open a terminal and navigate to ATMSeer project location.\n2. Run `vagrant up` command (in case vagrant is not already running).\n3. From the same terminal run `vagrant ssh`.\n4. Run `cd /vagrant` and `sh start.sh`.\n\nOpen a second terminal and navigate to the ATMSeer project directory.\nRun `vagrant ssh`, `cd /vagrant`, and `npm start`.\n\nIf you are still experiencing issues, please [open an issue](https://github.com/HDI-Project/ATMSeer/issues/new) and include as much detail as you can on your problem.\n\n### Deploy with Docker [alternative]\n\nIf you have problem using [VirtualBox](https://www.virtualbox.org/wiki/Downloads) and [Vagrant](https://www.vagrantup.com/downloads.html) (especially in Windows), you can choose to use Docker instead.\n\nDownload and Install [Docker](https://docs.docker.com/install/) and [Compose](https://docs.docker.com/compose/install/)\n\n```\nsh install-docker.sh\n```\n\nIf you see the following message:\n\n```\natmseer |  * Serving Flask app \"server\" (lazy loading)\natmseer |  * Environment: production\natmseer |    WARNING: Do not use the development server in a production environment.\natmseer |    Use a production WSGI server instead.\natmseer |  * Debug mode: off\natmseer | [INFO] [13:43:13:werkzeug]  * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)\n```\n\nYou can navigate to `http://localhost:5000/` in your broswer (preferably Chrome) to see ATMSeer.\n\n\n\n## Using ATMSeer\n\nTo see ATMSeer in action, you will first upload a dataset to use with the AutoML process, create a \"datarun\", and then monitor and control the ongoing AutoML process.\n\n### Upload a dataset\n\nYou first need to upload a dataset to use with the AutoML process. We have provided several example datasets in `public/viz`. For example, press \"Upload\" and navigate to your ATMSeer installation and upload `public/viz/blood.csv`.\n\nTo use your own dataset, take care to provide it in the required data format (https://hdi-project.github.io/ATM/readme.html#data-format).\n\n### Create a datarun\n\nA datarun is a single AutoML process, comprising a dataset, a configuration for the AutoML process, and associated state information.\n\nTo create a new datarun, click the add icon, adjust methods, budget type, and budget, and press \"Submit\". You should not need to adjust advanced settings in most cases. If you do, please see https://hdi-project.github.io/ATM/database.html#dataruns for some details on the setting options.\n\n### Start the AutoML process\n\nNow, select your datarun from the list and press \"Run\" to begin the AutoML process. You should see completed trials populate on the top panel and details of algorithms, hyperpartitions, and hyperparameters in the three-level visualization on the right.\n\n## Reference\n\nIf you use ATMSeer, please consider citing our paper:\n\n``` bibtex\n@inproceedings{wang2019atmseer,\n  author = {Wang, Qianwen and Ming, Yao and Jin, Zhihua and Shen, Qiaomu and Liu, Dongyu and Smith, Micah J. and Veeramachaneni, Kalyan and Qu, Huamin},\n  title = {ATMSeer: Increasing Transparency and Controllability in Automated Machine Learning},\n  booktitle = {Proceedings of the 2019 CHI Conference on Human Factors in Computing Systems},\n  series = {CHI '19},\n  year = {2019},\n  location = {Glasgow, Scotland UK},\n  publisher = {ACM},\n  address = {New York, NY, USA},\n  url = {http://doi.acm.org/10.1145/3290605.3300911}\n}\n```\n"
  },
  {
    "path": "Vagrantfile",
    "content": "# -*- mode: ruby -*-\n# vi: set ft=ruby :\n\n# All Vagrant configuration is done below. The \"2\" in Vagrant.configure\n# configures the configuration version (we support older styles for\n# backwards compatibility). Please don't change it unless you know what\n# you're doing.\nVagrant.configure(\"2\") do |config|\n  # The most common configuration options are documented and commented below.\n  # For a complete reference, please see the online documentation at\n  # https://docs.vagrantup.com.\n\n  # Every Vagrant development environment requires a box. You can search for\n  # boxes at https://vagrantcloud.com/search.\n  # config.vm.box = \"ubuntu/trusty64\"\n  config.vm.box = \"ubuntu/xenial64\"\n\n  config.vm.network \"forwarded_port\", guest: 7777, host: 7777\n  config.vm.network \"forwarded_port\", guest: 7779, host: 7779\n\n  config.vm.provision \"vagrantprovision\", type: \"shell\", run: \"never\" do |s|\n    s.path = \"vagrantProvision.sh\"\n  end\n\n  config.vm.provision \"vagrantstart\", type: \"shell\", run: \"always\" do |s|\n    s.path = \"vagrantStart.sh\"\n  end\n\n\n  # Disable automatic box update checking. If you disable this, then\n  # boxes will only be checked for updates when the user runs\n  # `vagrant box outdated`. This is not recommended.\n  # config.vm.box_check_update = false\n\n  # Create a forwarded port mapping which allows access to a specific port\n  # within the machine from a port on the host machine. In the example below,\n  # accessing \"localhost:8080\" will access port 80 on the guest machine.\n  # NOTE: This will enable public access to the opened port\n  # config.vm.network \"forwarded_port\", guest: 80, host: 8080\n\n  # Create a forwarded port mapping which allows access to a specific port\n  # within the machine from a port on the host machine and only allow access\n  # via 127.0.0.1 to disable public access\n  # config.vm.network \"forwarded_port\", guest: 80, host: 8080, host_ip: \"127.0.0.1\"\n\n  # Create a private network, which allows host-only access to the machine\n  # using a specific IP.\n  # config.vm.network \"private_network\", ip: \"192.168.33.10\"\n\n  # Create a public network, which generally matched to bridged network.\n  # Bridged networks make the machine appear as another physical device on\n  # your network.\n  # config.vm.network \"public_network\"\n\n  # Share an additional folder to the guest VM. The first argument is\n  # the path on the host to the actual folder. The second argument is\n  # the path on the guest to mount the folder. And the optional third\n  # argument is a set of non-required options.\n  # config.vm.synced_folder \"../data\", \"/vagrant_data\"\n\n  # Provider-specific configuration so you can fine-tune various\n  # backing providers for Vagrant. These expose provider-specific options.\n  # Example for VirtualBox:\n  #\n  config.vm.provider \"virtualbox\" do |vb|\n  #   # Display the VirtualBox GUI when booting the machine\n  #   vb.gui = true\n  #\n  #   # Customize the amount of memory on the VM:\n    vb.memory = \"4096\"\n  end\n  #\n  # View the documentation for the provider you are using for more\n  # information on available options.\n\n  # Enable provisioning with a shell script. Additional provisioners such as\n  # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the\n  # documentation for more information about their specific syntax and use.\n  # config.vm.provision \"shell\" #, inline: <<-SHELL\n  #   sudo apt-get update\n  #   apt-get install -y apache2\n  # SHELL\nend\n"
  },
  {
    "path": "cleanup.sh",
    "content": "rm -rf models/* metrics/* logs/* atm.db"
  },
  {
    "path": "docker-compose.yml",
    "content": "version: \"3\"\nservices:\n  web:\n    build: .\n    container_name: atmseer\n    ports:\n      - \"5000:5000\"\n    command: sudo python3 server/atm_server/server.py --port 5000\n    volumes:\n      - ./logs:/code/logs\n      - ./metrics:/code/models\n      - ./models:/code/metrics\n"
  },
  {
    "path": "install-docker.sh",
    "content": "git submodule init\ngit submodule update\nmkdir logs && chmod 0777 logs\nmkdir metrics && chmod 0777 metrics\nmkdir models && chmod 0777 models\n\ndocker-compose up\n"
  },
  {
    "path": "install.sh",
    "content": "git submodule init\ngit submodule update\nmkdir logs && chmod 0777 logs\nmkdir metrics && chmod 0777 metrics\nmkdir models && chmod 0777 models\n\nvagrant up --provision-with vagrantprovision\nvagrant reload\n"
  },
  {
    "path": "kill.sh",
    "content": "#!/bin/bash\npkill -9 python\n"
  },
  {
    "path": "log.txt",
    "content": " * Serving Flask app \"server\" (lazy loading)\n * Environment: production\n   WARNING: Do not use the development server in a production environment.\n   Use a production WSGI server instead.\n * Debug mode: on\n[('criterion', 'entropy')]\n[('max_features', <btb.hyper_parameter.HyperParameter object at 0x7f793d8c65c0>), ('max_depth', <btb.hyper_parameter.HyperParameter object at 0x7f793d8c60f0>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f793906f8d0>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f793906f588>)]\n[('n_estimators', 100), ('n_jobs', -1)]\n[('criterion', 'entropy')]\n[('max_features', <btb.hyper_parameter.HyperParameter object at 0x7f79401cf160>), ('max_depth', <btb.hyper_parameter.HyperParameter object at 0x7f7939061160>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f7939061978>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f7940144e80>)]\n[('n_estimators', 100), ('n_jobs', -1)]\n[('criterion', 'entropy')]\n[('max_features', <btb.hyper_parameter.HyperParameter object at 0x7f79471b89e8>), ('max_depth', <btb.hyper_parameter.HyperParameter object at 0x7f79388f04e0>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f794013f438>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f793d901b00>)]\n[('n_estimators', 100), ('n_jobs', -1)]\n[('criterion', 'entropy')]\n[('max_features', <btb.hyper_parameter.HyperParameter object at 0x7f7938ed2240>), ('max_depth', <btb.hyper_parameter.HyperParameter object at 0x7f7938ed20f0>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f7934009278>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f7934009208>)]\n[('n_estimators', 100), ('n_jobs', -1)]\n[('criterion', 'entropy')]\n[('max_features', <btb.hyper_parameter.HyperParameter object at 0x7f7933f10320>), ('max_depth', <btb.hyper_parameter.HyperParameter object at 0x7f79389773c8>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f7942960a90>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f7942960b00>)]\n[('n_estimators', 100), ('n_jobs', -1)]\n[('criterion', 'entropy')]\n[('max_features', <btb.hyper_parameter.HyperParameter object at 0x7f7938df9eb8>), ('max_depth', <btb.hyper_parameter.HyperParameter object at 0x7f793b4e4ba8>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f793b4e4c18>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f793b4e4c88>)]\n[('n_estimators', 100), ('n_jobs', -1)]\n[('criterion', 'entropy')]\n[('max_features', <btb.hyper_parameter.HyperParameter object at 0x7f7938922208>), ('max_depth', <btb.hyper_parameter.HyperParameter object at 0x7f793b185208>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f793b4dfa90>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f793b4df4e0>)]\n[('n_estimators', 100), ('n_jobs', -1)]\n[('criterion', 'entropy')]\n[('max_features', <btb.hyper_parameter.HyperParameter object at 0x7f79470f5080>), ('max_depth', <btb.hyper_parameter.HyperParameter object at 0x7f79470f5d68>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f793b563048>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f793b563b38>)]\n[('n_estimators', 100), ('n_jobs', -1)]\n[('criterion', 'entropy')]\n[('max_features', <btb.hyper_parameter.HyperParameter object at 0x7f7933f54358>), ('max_depth', <btb.hyper_parameter.HyperParameter object at 0x7f7938e4fba8>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f793d95b908>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f793d95bb00>)]\n[('n_estimators', 100), ('n_jobs', -1)]\n[('criterion', 'entropy')]\n[('max_features', <btb.hyper_parameter.HyperParameter object at 0x7f793b2b8240>), ('max_depth', <btb.hyper_parameter.HyperParameter object at 0x7f793b2b8048>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f7933c85b38>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f7933b8a2b0>)]\n[('n_estimators', 100), ('n_jobs', -1)]\n[('criterion', 'entropy')]\n[('max_features', <btb.hyper_parameter.HyperParameter object at 0x7f7931742518>), ('max_depth', <btb.hyper_parameter.HyperParameter object at 0x7f7931742f28>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f79310f7400>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f79310f7470>)]\n[('n_estimators', 100), ('n_jobs', -1)]\n[('criterion', 'entropy')]\n[('max_features', <btb.hyper_parameter.HyperParameter object at 0x7f793170ab00>), ('max_depth', <btb.hyper_parameter.HyperParameter object at 0x7f793170af60>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f7933d3bd68>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f79312e8ef0>)]\n[('n_estimators', 100), ('n_jobs', -1)]\n[('criterion', 'entropy')]\n[('max_features', <btb.hyper_parameter.HyperParameter object at 0x7f793b1bd198>), ('max_depth', <btb.hyper_parameter.HyperParameter object at 0x7f793b6a1c88>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f793b567908>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f79339a35c0>)]\n[('n_estimators', 100), ('n_jobs', -1)]\n[('criterion', 'entropy')]\n[('max_features', <btb.hyper_parameter.HyperParameter object at 0x7f793b28aac8>), ('max_depth', <btb.hyper_parameter.HyperParameter object at 0x7f793b28a6d8>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f79314634e0>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f7933e7b860>)]\n[('n_estimators', 100), ('n_jobs', -1)]\n[('criterion', 'entropy')]\n[('max_features', <btb.hyper_parameter.HyperParameter object at 0x7f7933fe06a0>), ('max_depth', <btb.hyper_parameter.HyperParameter object at 0x7f7933d07f98>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f793d943588>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f793d943eb8>)]\n[('n_estimators', 100), ('n_jobs', -1)]\n[('criterion', 'entropy')]\n[('max_features', <btb.hyper_parameter.HyperParameter object at 0x7f7938f10fd0>), ('max_depth', <btb.hyper_parameter.HyperParameter object at 0x7f793b20e0b8>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f7942926668>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f7942926588>)]\n[('n_estimators', 100), ('n_jobs', -1)]\n[('criterion', 'entropy')]\n[('max_features', <btb.hyper_parameter.HyperParameter object at 0x7f793404e2b0>), ('max_depth', <btb.hyper_parameter.HyperParameter object at 0x7f793404ec88>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f793892f390>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f7931637358>)]\n[('n_estimators', 100), ('n_jobs', -1)]\n[('criterion', 'entropy')]\n[('max_features', <btb.hyper_parameter.HyperParameter object at 0x7f793b21d4e0>), ('max_depth', <btb.hyper_parameter.HyperParameter object at 0x7f793b201208>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f794997c2e8>), ('min_samples_leaf', <btb.hyper_parameter.HyperParameter object at 0x7f79315e9470>)]\n[('n_estimators', 100), ('n_jobs', -1)]\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"vis_atm\",\n  \"version\": \"0.1.0\",\n  \"author\": \"qianwen Wang\",\n  \"private\": true,\n  \"dependencies\": {\n    \"@types/echarts\": \"0.0.13\",\n    \"antd\": \"3.5.4\",\n    \"axios\": \"^0.18.1\",\n    \"d3\": \"^5.6.0\",\n    \"echarts\": \"^4.1.0\",\n    \"echarts-for-react\": \"^2.0.12-beta.0\",\n    \"ml-pca\": \"^2.1.0\",\n    \"react\": \"^16.3.2\",\n    \"react-dom\": \"^16.3.2\",\n    \"react-scripts-ts\": \"2.16.0\"\n  },\n  \"scripts\": {\n    \"start\": \"cross-env PORT=7779 react-scripts-ts start\",\n    \"build\": \"react-scripts-ts build\",\n    \"test\": \"react-scripts-ts test --env=jsdom\",\n    \"eject\": \"react-scripts-ts eject\"\n  },\n  \"devDependencies\": {\n    \"@types/jest\": \"^22.2.3\",\n    \"@types/node\": \"^10.1.2\",\n    \"@types/react\": \"^16.3.14\",\n    \"@types/react-dom\": \"^16.0.5\",\n    \"cross-env\": \"^5.2.0\",\n    \"typescript\": \"^2.8.3\"\n  }\n}\n"
  },
  {
    "path": "public/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n    <meta name=\"theme-color\" content=\"#000000\">\n    <!--\n      manifest.json provides metadata used when your web app is added to the\n      homescreen on Android. See https://developers.google.com/web/fundamentals/engage-and-retain/web-app-manifest/\n    -->\n    <link rel=\"manifest\" href=\"%PUBLIC_URL%/manifest.json\">\n    <link rel=\"shortcut icon\" href=\"%PUBLIC_URL%/favicon.ico\">\n    <!--\n      Notice the use of %PUBLIC_URL% in the tags above.\n      It will be replaced with the URL of the `public` folder during the build.\n      Only files inside the `public` folder can be referenced from the HTML.\n\n      Unlike \"/favicon.ico\" or \"favicon.ico\", \"%PUBLIC_URL%/favicon.ico\" will\n      work correctly both with client-side routing and a non-root public URL.\n      Learn how to configure a non-root public URL by running `npm run build`.\n    -->\n    <title>ATMSeer</title>\n  </head>\n  <body>\n    <noscript>\n      You need to enable JavaScript to run this app.\n    </noscript>\n    <div id=\"root\"></div>\n    <!--\n      This HTML file is a template.\n      If you open it directly in the browser, you will see an empty page.\n\n      You can add webfonts, meta tags, or analytics to this file.\n      The build step will place the bundled scripts into the <body> tag.\n\n      To begin the development, run `npm start` or `yarn start`.\n      To create a production bundle, use `npm run build` or `yarn build`.\n    -->\n  </body>\n</html>\n"
  },
  {
    "path": "public/manifest.json",
    "content": "{\n  \"short_name\": \"React App\",\n  \"name\": \"Create React App Sample\",\n  \"icons\": [\n    {\n      \"src\": \"favicon.ico\",\n      \"sizes\": \"64x64 32x32 24x24 16x16\",\n      \"type\": \"image/x-icon\"\n    }\n  ],\n  \"start_url\": \"./index.html\",\n  \"display\": \"standalone\",\n  \"theme_color\": \"#000000\",\n  \"background_color\": \"#ffffff\"\n}\n"
  },
  {
    "path": "public/morley.csv",
    "content": "Expt,Run,Speed\n1,1,850\n1,2,740\n1,3,900\n1,4,1070\n1,5,930\n1,6,850\n1,7,950\n1,8,980\n1,9,980\n1,10,880\n1,11,1000\n1,12,980\n1,13,930\n1,14,650\n1,15,760\n1,16,810\n1,17,1000\n1,18,1000\n1,19,960\n1,20,960\n2,1,960\n2,2,940\n2,3,960\n2,4,940\n2,5,880\n2,6,800\n2,7,850\n2,8,880\n2,9,900\n2,10,840\n2,11,830\n2,12,790\n2,13,810\n2,14,880\n2,15,880\n2,16,830\n2,17,800\n2,18,790\n2,19,760\n2,20,800\n3,1,880\n3,2,880\n3,3,880\n3,4,860\n3,5,720\n3,6,720\n3,7,620\n3,8,860\n3,9,970\n3,10,950\n3,11,880\n3,12,910\n3,13,850\n3,14,870\n3,15,840\n3,16,840\n3,17,850\n3,18,840\n3,19,840\n3,20,840\n4,1,890\n4,2,810\n4,3,810\n4,4,820\n4,5,800\n4,6,770\n4,7,760\n4,8,740\n4,9,750\n4,10,760\n4,11,910\n4,12,920\n4,13,890\n4,14,860\n4,15,880\n4,16,720\n4,17,840\n4,18,850\n4,19,850\n4,20,780\n5,1,890\n5,2,840\n5,3,780\n5,4,810\n5,5,760\n5,6,810\n5,7,790\n5,8,810\n5,9,820\n5,10,850\n5,11,870\n5,12,870\n5,13,810\n5,14,740\n5,15,810\n5,16,940\n5,17,950\n5,18,800\n5,19,810\n5,20,870"
  },
  {
    "path": "public/viz/blood.csv",
    "content": "V1,V2,V3,V4,class\r\n2,50,12500,98,2\r\n0,13,3250,28,2\r\n1,16,4000,35,2\r\n2,20,5000,45,2\r\n1,24,6000,77,1\r\n4,4,1000,4,1\r\n2,7,1750,14,2\r\n1,12,3000,35,1\r\n2,9,2250,22,2\r\n5,46,11500,98,2\r\n4,23,5750,58,1\r\n0,3,750,4,1\r\n2,10,2500,28,2\r\n1,13,3250,47,1\r\n2,6,1500,15,2\r\n2,5,1250,11,2\r\n2,14,3500,48,2\r\n2,15,3750,49,2\r\n2,6,1500,15,2\r\n2,3,750,4,2\r\n2,3,750,4,2\r\n4,11,2750,28,1\r\n2,6,1500,16,2\r\n2,6,1500,16,2\r\n9,9,2250,16,1\r\n4,14,3500,40,1\r\n4,6,1500,14,1\r\n4,12,3000,34,2\r\n4,5,1250,11,2\r\n4,8,2000,21,1\r\n1,14,3500,58,1\r\n4,10,2500,28,2\r\n4,10,2500,28,2\r\n4,9,2250,26,2\r\n2,16,4000,64,1\r\n2,8,2000,28,2\r\n2,12,3000,47,2\r\n4,6,1500,16,2\r\n2,14,3500,57,2\r\n4,7,1750,22,2\r\n2,13,3250,53,2\r\n2,5,1250,16,1\r\n2,5,1250,16,2\r\n2,5,1250,16,1\r\n4,20,5000,69,2\r\n4,9,2250,28,2\r\n2,9,2250,36,1\r\n2,2,500,2,1\r\n2,2,500,2,1\r\n2,2,500,2,1\r\n2,11,2750,46,1\r\n2,11,2750,46,2\r\n2,6,1500,22,1\r\n2,12,3000,52,1\r\n4,5,1250,14,2\r\n4,19,4750,69,2\r\n4,8,2000,26,2\r\n2,7,1750,28,2\r\n2,16,4000,81,1\r\n3,6,1500,21,1\r\n2,7,1750,29,1\r\n2,8,2000,35,2\r\n2,10,2500,49,1\r\n4,5,1250,16,2\r\n2,3,750,9,2\r\n3,16,4000,74,1\r\n2,4,1000,14,2\r\n0,2,500,4,1\r\n4,7,1750,25,1\r\n1,9,2250,51,1\r\n2,4,1000,16,1\r\n2,4,1000,16,1\r\n4,17,4250,71,2\r\n2,2,500,4,1\r\n2,2,500,4,2\r\n2,2,500,4,2\r\n2,4,1000,16,2\r\n2,2,500,4,1\r\n2,2,500,4,1\r\n2,2,500,4,1\r\n4,6,1500,23,2\r\n2,4,1000,16,1\r\n2,4,1000,16,1\r\n2,4,1000,16,1\r\n2,6,1500,28,2\r\n2,6,1500,28,1\r\n4,2,500,4,1\r\n4,2,500,4,1\r\n4,2,500,4,1\r\n2,7,1750,35,2\r\n4,2,500,4,2\r\n4,2,500,4,1\r\n4,2,500,4,1\r\n4,2,500,4,1\r\n12,11,2750,23,1\r\n4,7,1750,28,1\r\n3,17,4250,86,1\r\n4,9,2250,38,2\r\n4,4,1000,14,2\r\n5,7,1750,26,2\r\n4,8,2000,34,2\r\n2,13,3250,76,2\r\n4,9,2250,40,1\r\n2,5,1250,26,1\r\n2,5,1250,26,1\r\n6,17,4250,70,1\r\n0,8,2000,59,1\r\n3,5,1250,26,1\r\n2,3,750,14,1\r\n2,10,2500,64,1\r\n4,5,1250,23,2\r\n4,9,2250,46,1\r\n4,5,1250,23,1\r\n4,8,2000,40,2\r\n2,12,3000,82,1\r\n11,24,6000,64,1\r\n2,7,1750,46,2\r\n4,11,2750,61,1\r\n1,7,1750,57,1\r\n2,11,2750,79,2\r\n2,3,750,16,2\r\n4,5,1250,26,2\r\n2,6,1500,41,2\r\n2,5,1250,33,2\r\n2,4,1000,26,1\r\n2,5,1250,34,1\r\n4,8,2000,46,2\r\n2,4,1000,26,1\r\n4,8,2000,48,2\r\n2,2,500,10,2\r\n4,5,1250,28,1\r\n2,12,3000,95,1\r\n2,2,500,10,1\r\n4,6,1500,35,1\r\n2,11,2750,88,1\r\n2,3,750,19,1\r\n2,5,1250,37,1\r\n2,12,3000,98,1\r\n9,5,1250,19,1\r\n2,2,500,11,1\r\n2,9,2250,74,1\r\n5,14,3500,86,1\r\n4,3,750,16,1\r\n4,3,750,16,1\r\n4,2,500,9,2\r\n4,3,750,16,2\r\n6,3,750,14,1\r\n2,2,500,11,1\r\n2,2,500,11,2\r\n2,2,500,11,1\r\n2,7,1750,58,2\r\n4,6,1500,39,1\r\n4,11,2750,78,1\r\n2,1,250,2,2\r\n2,1,250,2,1\r\n2,1,250,2,1\r\n2,1,250,2,1\r\n2,1,250,2,1\r\n2,1,250,2,1\r\n2,1,250,2,1\r\n2,1,250,2,1\r\n2,1,250,2,1\r\n2,1,250,2,1\r\n2,1,250,2,2\r\n2,1,250,2,2\r\n2,1,250,2,2\r\n2,1,250,2,1\r\n2,1,250,2,1\r\n2,1,250,2,1\r\n2,1,250,2,1\r\n2,1,250,2,1\r\n2,1,250,2,1\r\n2,1,250,2,1\r\n2,1,250,2,1\r\n2,1,250,2,1\r\n11,10,2500,35,1\r\n11,4,1000,16,2\r\n4,5,1250,33,2\r\n4,6,1500,41,2\r\n2,3,750,22,1\r\n4,4,1000,26,2\r\n10,4,1000,16,1\r\n2,4,1000,35,1\r\n4,12,3000,88,1\r\n13,8,2000,26,1\r\n11,9,2250,33,1\r\n4,5,1250,34,1\r\n4,4,1000,26,1\r\n8,15,3750,77,1\r\n4,5,1250,35,2\r\n4,7,1750,52,1\r\n4,7,1750,52,1\r\n2,4,1000,35,1\r\n11,11,2750,42,1\r\n2,2,500,14,1\r\n2,5,1250,47,2\r\n9,8,2000,38,2\r\n4,6,1500,47,1\r\n11,7,1750,29,1\r\n9,9,2250,45,1\r\n4,6,1500,52,1\r\n4,7,1750,58,1\r\n6,2,500,11,2\r\n4,7,1750,58,1\r\n11,9,2250,38,1\r\n11,6,1500,26,1\r\n2,2,500,16,1\r\n2,7,1750,76,1\r\n11,6,1500,27,1\r\n11,3,750,14,1\r\n4,1,250,4,1\r\n4,1,250,4,1\r\n4,1,250,4,1\r\n4,1,250,4,1\r\n4,1,250,4,1\r\n4,1,250,4,2\r\n4,1,250,4,1\r\n4,1,250,4,1\r\n4,1,250,4,1\r\n4,1,250,4,1\r\n4,1,250,4,1\r\n4,1,250,4,2\r\n4,1,250,4,2\r\n4,1,250,4,1\r\n4,1,250,4,2\r\n4,1,250,4,2\r\n4,1,250,4,1\r\n4,3,750,24,1\r\n4,1,250,4,1\r\n4,1,250,4,1\r\n4,1,250,4,1\r\n4,1,250,4,2\r\n4,1,250,4,1\r\n10,8,2000,39,1\r\n14,7,1750,26,1\r\n8,10,2500,63,1\r\n11,3,750,15,1\r\n4,2,500,14,1\r\n2,4,1000,43,1\r\n8,9,2250,58,1\r\n8,8,2000,52,2\r\n11,22,5500,98,1\r\n4,3,750,25,2\r\n11,17,4250,79,2\r\n9,2,500,11,1\r\n4,5,1250,46,1\r\n11,12,3000,58,1\r\n7,12,3000,86,1\r\n11,2,500,11,1\r\n11,2,500,11,1\r\n11,2,500,11,1\r\n2,6,1500,75,1\r\n11,8,2000,41,2\r\n11,3,750,16,2\r\n12,13,3250,59,1\r\n2,3,750,35,1\r\n16,8,2000,28,1\r\n11,7,1750,37,1\r\n4,3,750,28,1\r\n12,12,3000,58,1\r\n4,4,1000,41,1\r\n11,14,3500,73,2\r\n2,2,500,23,1\r\n2,3,750,38,2\r\n4,5,1250,58,1\r\n4,4,1000,43,2\r\n3,2,500,23,1\r\n11,8,2000,46,1\r\n4,7,1750,82,1\r\n13,4,1000,21,1\r\n16,11,2750,40,1\r\n16,7,1750,28,1\r\n7,2,500,16,1\r\n4,5,1250,58,1\r\n4,5,1250,58,1\r\n4,4,1000,46,1\r\n14,13,3250,57,1\r\n4,3,750,34,1\r\n14,18,4500,78,1\r\n11,8,2000,48,1\r\n14,16,4000,70,1\r\n14,4,1000,22,2\r\n14,5,1250,26,1\r\n8,2,500,16,1\r\n11,5,1250,33,1\r\n11,2,500,14,1\r\n4,2,500,23,1\r\n9,2,500,16,2\r\n14,5,1250,28,2\r\n14,3,750,19,2\r\n14,4,1000,23,2\r\n16,12,3000,50,1\r\n11,4,1000,28,1\r\n11,5,1250,35,1\r\n11,5,1250,35,1\r\n2,4,1000,70,1\r\n14,5,1250,28,1\r\n14,2,500,14,1\r\n14,2,500,14,1\r\n14,2,500,14,1\r\n14,2,500,14,1\r\n14,2,500,14,1\r\n14,2,500,14,1\r\n2,3,750,52,1\r\n14,6,1500,34,1\r\n11,5,1250,37,2\r\n4,5,1250,74,1\r\n11,3,750,23,1\r\n16,4,1000,23,1\r\n16,3,750,19,1\r\n11,5,1250,38,1\r\n11,2,500,16,1\r\n12,9,2250,60,1\r\n9,1,250,9,1\r\n9,1,250,9,1\r\n4,2,500,29,1\r\n11,2,500,17,1\r\n14,4,1000,26,1\r\n11,9,2250,72,2\r\n11,5,1250,41,1\r\n15,16,4000,82,1\r\n9,5,1250,51,2\r\n11,4,1000,34,1\r\n14,8,2000,50,2\r\n16,7,1750,38,1\r\n14,2,500,16,1\r\n2,2,500,41,1\r\n14,16,4000,98,1\r\n14,4,1000,28,2\r\n16,7,1750,39,1\r\n14,7,1750,47,1\r\n16,6,1500,35,1\r\n16,6,1500,35,2\r\n11,7,1750,62,2\r\n16,2,500,16,1\r\n16,3,750,21,2\r\n11,3,750,28,1\r\n11,7,1750,64,1\r\n11,1,250,11,2\r\n9,3,750,34,1\r\n14,4,1000,30,1\r\n23,38,9500,98,1\r\n11,6,1500,58,1\r\n11,1,250,11,1\r\n11,1,250,11,1\r\n11,1,250,11,1\r\n11,1,250,11,1\r\n11,1,250,11,1\r\n11,1,250,11,1\r\n11,1,250,11,1\r\n11,1,250,11,1\r\n11,2,500,21,1\r\n11,5,1250,50,1\r\n11,2,500,21,1\r\n16,4,1000,28,1\r\n4,2,500,41,1\r\n16,6,1500,40,1\r\n14,3,750,26,1\r\n9,2,500,26,1\r\n21,16,4000,64,1\r\n14,6,1500,51,1\r\n11,2,500,24,1\r\n4,3,750,71,1\r\n21,13,3250,57,1\r\n11,6,1500,71,1\r\n14,2,500,21,2\r\n23,15,3750,57,1\r\n14,4,1000,38,1\r\n11,2,500,26,1\r\n16,5,1250,40,2\r\n4,2,500,51,2\r\n14,3,750,31,1\r\n4,2,500,52,1\r\n9,4,1000,65,1\r\n14,4,1000,40,1\r\n11,3,750,40,2\r\n14,5,1250,50,1\r\n14,1,250,14,1\r\n14,1,250,14,1\r\n14,1,250,14,1\r\n14,1,250,14,1\r\n14,1,250,14,1\r\n14,1,250,14,1\r\n14,1,250,14,1\r\n14,1,250,14,1\r\n14,7,1750,72,1\r\n14,1,250,14,1\r\n14,1,250,14,1\r\n9,3,750,52,1\r\n14,7,1750,73,1\r\n11,4,1000,58,1\r\n11,4,1000,59,1\r\n4,2,500,59,1\r\n11,4,1000,61,1\r\n16,4,1000,40,1\r\n16,10,2500,89,1\r\n21,2,500,21,2\r\n21,3,750,26,1\r\n16,8,2000,76,1\r\n21,3,750,26,2\r\n18,2,500,23,1\r\n23,5,1250,33,1\r\n23,8,2000,46,1\r\n16,3,750,34,1\r\n14,5,1250,64,1\r\n14,3,750,41,1\r\n16,1,250,16,1\r\n16,1,250,16,1\r\n16,1,250,16,1\r\n16,1,250,16,1\r\n16,1,250,16,1\r\n16,1,250,16,1\r\n16,1,250,16,1\r\n16,4,1000,45,1\r\n16,1,250,16,1\r\n16,1,250,16,1\r\n16,1,250,16,1\r\n16,1,250,16,1\r\n16,1,250,16,1\r\n16,2,500,26,1\r\n21,2,500,23,1\r\n16,2,500,27,1\r\n21,2,500,23,1\r\n21,2,500,23,1\r\n14,4,1000,57,1\r\n16,5,1250,60,1\r\n23,2,500,23,1\r\n14,5,1250,74,1\r\n23,3,750,28,1\r\n16,3,750,40,1\r\n9,2,500,52,1\r\n9,2,500,52,1\r\n16,7,1750,87,2\r\n14,4,1000,64,1\r\n14,2,500,35,1\r\n16,7,1750,93,1\r\n21,2,500,25,1\r\n14,3,750,52,1\r\n23,14,3500,93,1\r\n18,8,2000,95,1\r\n16,3,750,46,1\r\n11,3,750,76,1\r\n11,2,500,52,1\r\n11,3,750,76,1\r\n23,12,3000,86,1\r\n21,3,750,35,1\r\n23,2,500,26,1\r\n23,2,500,26,1\r\n23,8,2000,64,1\r\n16,3,750,50,1\r\n23,3,750,33,1\r\n21,3,750,38,1\r\n23,2,500,28,1\r\n21,1,250,21,1\r\n21,1,250,21,1\r\n21,1,250,21,1\r\n21,1,250,21,1\r\n21,1,250,21,1\r\n21,1,250,21,1\r\n21,1,250,21,1\r\n21,1,250,21,1\r\n21,1,250,21,1\r\n21,1,250,21,2\r\n21,1,250,21,1\r\n21,1,250,21,1\r\n21,5,1250,60,1\r\n23,4,1000,45,1\r\n21,4,1000,52,1\r\n22,1,250,22,2\r\n11,2,500,70,1\r\n23,5,1250,58,1\r\n23,3,750,40,1\r\n23,3,750,41,1\r\n14,3,750,83,1\r\n21,2,500,35,1\r\n26,5,1250,49,2\r\n23,6,1500,70,1\r\n23,1,250,23,1\r\n23,1,250,23,1\r\n23,1,250,23,1\r\n23,1,250,23,1\r\n23,1,250,23,1\r\n23,1,250,23,1\r\n23,1,250,23,1\r\n23,1,250,23,1\r\n23,4,1000,53,1\r\n21,6,1500,86,1\r\n23,3,750,48,1\r\n21,2,500,41,1\r\n21,3,750,64,1\r\n16,2,500,70,1\r\n21,3,750,70,1\r\n23,4,1000,87,1\r\n23,3,750,89,1\r\n23,2,500,87,1\r\n35,3,750,64,1\r\n38,1,250,38,1\r\n38,1,250,38,1\r\n40,1,250,40,1\r\n74,1,250,74,1\r\n2,43,10750,86,2\r\n6,22,5500,28,2\r\n2,34,8500,77,2\r\n2,44,11000,98,1\r\n0,26,6500,76,2\r\n2,41,10250,98,2\r\n3,21,5250,42,2\r\n2,11,2750,23,1\r\n2,21,5250,52,2\r\n2,13,3250,32,2\r\n4,4,1000,4,2\r\n2,11,2750,26,1\r\n2,11,2750,28,1\r\n3,14,3500,35,1\r\n4,16,4000,38,2\r\n4,6,1500,14,1\r\n3,5,1250,12,2\r\n4,33,8250,98,2\r\n3,10,2500,33,2\r\n4,10,2500,28,2\r\n2,11,2750,40,2\r\n2,11,2750,41,2\r\n4,13,3250,39,2\r\n1,10,2500,43,2\r\n4,9,2250,28,1\r\n2,4,1000,11,1\r\n2,5,1250,16,2\r\n2,15,3750,64,1\r\n5,24,6000,79,1\r\n2,6,1500,22,2\r\n4,5,1250,16,2\r\n2,4,1000,14,2\r\n4,8,2000,28,1\r\n2,4,1000,14,1\r\n2,6,1500,26,1\r\n4,5,1250,16,2\r\n2,7,1750,32,2\r\n2,6,1500,26,2\r\n2,8,2000,38,2\r\n2,2,500,4,2\r\n2,6,1500,28,2\r\n2,10,2500,52,1\r\n4,16,4000,70,2\r\n4,2,500,4,2\r\n1,14,3500,95,1\r\n4,2,500,4,2\r\n7,14,3500,48,1\r\n2,3,750,11,1\r\n2,12,3000,70,2\r\n4,7,1750,32,2\r\n4,4,1000,16,1\r\n2,6,1500,35,2\r\n4,6,1500,28,2\r\n2,3,750,14,1\r\n2,4,1000,23,1\r\n4,4,1000,18,1\r\n5,6,1500,28,1\r\n4,6,1500,30,1\r\n14,5,1250,14,1\r\n3,8,2000,50,1\r\n4,11,2750,64,2\r\n4,9,2250,52,1\r\n4,16,4000,98,2\r\n7,10,2500,47,1\r\n4,14,3500,86,1\r\n2,9,2250,75,1\r\n4,6,1500,35,1\r\n4,9,2250,55,1\r\n4,6,1500,35,2\r\n2,6,1500,45,1\r\n2,6,1500,47,1\r\n4,2,500,9,1\r\n2,2,500,11,2\r\n2,2,500,11,1\r\n2,2,500,11,2\r\n4,6,1500,38,2\r\n3,4,1000,29,2\r\n9,9,2250,38,1\r\n11,5,1250,18,1\r\n2,3,750,21,1\r\n2,1,250,2,1\r\n2,1,250,2,2\r\n2,1,250,2,1\r\n2,1,250,2,1\r\n2,1,250,2,1\r\n2,1,250,2,1\r\n2,1,250,2,2\r\n2,1,250,2,1\r\n2,1,250,2,1\r\n2,1,250,2,1\r\n2,1,250,2,1\r\n11,11,2750,38,1\r\n2,3,750,22,1\r\n9,11,2750,49,2\r\n5,11,2750,75,1\r\n3,5,1250,38,1\r\n3,1,250,3,2\r\n4,6,1500,43,1\r\n2,3,750,24,1\r\n12,11,2750,39,1\r\n2,2,500,14,1\r\n4,6,1500,46,1\r\n9,3,750,14,1\r\n14,8,2000,26,1\r\n4,2,500,13,1\r\n4,11,2750,95,1\r\n2,7,1750,77,1\r\n2,7,1750,77,1\r\n4,1,250,4,1\r\n4,1,250,4,1\r\n4,1,250,4,1\r\n4,1,250,4,1\r\n4,1,250,4,2\r\n4,1,250,4,1\r\n4,1,250,4,1\r\n4,1,250,4,1\r\n4,1,250,4,1\r\n4,1,250,4,1\r\n4,1,250,4,2\r\n4,1,250,4,1\r\n4,7,1750,62,1\r\n4,1,250,4,1\r\n4,4,1000,34,2\r\n11,6,1500,28,1\r\n13,3,750,14,2\r\n7,5,1250,35,1\r\n9,9,2250,54,1\r\n11,2,500,11,1\r\n2,5,1250,63,1\r\n7,11,2750,89,1\r\n8,9,2250,64,1\r\n2,2,500,22,1\r\n6,3,750,26,1\r\n12,15,3750,71,1\r\n13,3,750,16,1\r\n11,16,4000,89,1\r\n4,5,1250,58,1\r\n14,7,1750,35,1\r\n11,4,1000,27,1\r\n7,9,2250,89,2\r\n11,8,2000,52,2\r\n7,5,1250,52,1\r\n11,6,1500,41,1\r\n10,5,1250,38,1\r\n14,2,500,14,2\r\n14,2,500,14,1\r\n14,2,500,14,1\r\n2,2,500,33,1\r\n11,3,750,23,1\r\n14,8,2000,46,1\r\n9,1,250,9,1\r\n16,5,1250,27,1\r\n14,4,1000,26,1\r\n4,2,500,30,1\r\n14,3,750,21,1\r\n16,16,4000,77,1\r\n4,2,500,31,1\r\n14,8,2000,50,1\r\n11,3,750,26,1\r\n14,7,1750,45,1\r\n15,5,1250,33,1\r\n16,2,500,16,1\r\n16,3,750,21,1\r\n11,8,2000,72,1\r\n11,1,250,11,1\r\n11,1,250,11,1\r\n11,1,250,11,1\r\n11,1,250,11,2\r\n11,1,250,11,1\r\n2,3,750,75,2\r\n2,3,750,77,1\r\n16,4,1000,28,1\r\n16,15,3750,87,1\r\n16,14,3500,83,1\r\n16,10,2500,62,1\r\n16,3,750,23,1\r\n14,3,750,26,1\r\n23,19,4750,62,1\r\n11,7,1750,75,1\r\n14,3,750,28,1\r\n20,14,3500,69,2\r\n4,2,500,46,1\r\n11,2,500,25,1\r\n11,3,750,37,1\r\n16,4,1000,33,1\r\n21,7,1750,38,1\r\n13,7,1750,76,1\r\n16,6,1500,50,1\r\n14,3,750,33,1\r\n14,1,250,14,1\r\n14,1,250,14,1\r\n14,1,250,14,1\r\n14,1,250,14,1\r\n14,1,250,14,1\r\n14,1,250,14,1\r\n17,7,1750,58,2\r\n14,3,750,35,1\r\n14,3,750,35,1\r\n16,7,1750,64,1\r\n21,2,500,21,1\r\n16,3,750,35,1\r\n16,1,250,16,1\r\n16,1,250,16,1\r\n16,1,250,16,1\r\n16,1,250,16,1\r\n16,1,250,16,1\r\n14,2,500,29,1\r\n11,4,1000,74,1\r\n11,2,500,38,2\r\n21,6,1500,48,1\r\n23,2,500,23,1\r\n23,6,1500,45,1\r\n14,2,500,35,2\r\n16,6,1500,81,1\r\n16,4,1000,58,1\r\n16,5,1250,71,1\r\n21,2,500,26,1\r\n21,3,750,35,1\r\n21,3,750,35,1\r\n23,8,2000,69,1\r\n21,3,750,38,1\r\n23,3,750,35,1\r\n21,3,750,40,1\r\n23,2,500,28,1\r\n21,1,250,21,1\r\n21,1,250,21,1\r\n25,6,1500,50,1\r\n21,1,250,21,1\r\n21,1,250,21,1\r\n23,3,750,39,1\r\n21,2,500,33,1\r\n14,3,750,79,1\r\n23,1,250,23,2\r\n23,1,250,23,1\r\n23,1,250,23,1\r\n23,1,250,23,1\r\n23,1,250,23,1\r\n23,1,250,23,1\r\n23,1,250,23,1\r\n23,4,1000,52,1\r\n23,1,250,23,1\r\n23,7,1750,88,1\r\n16,3,750,86,1\r\n23,2,500,38,1\r\n21,2,500,52,1\r\n23,3,750,62,1\r\n39,1,250,39,1\r\n72,1,250,72,1"
  },
  {
    "path": "public/viz/datarun1_gp.csv",
    "content": "trail ID,method,parameters,metrics,performance\r\n0,knn,_scale = True; algorithm = brute; metric = manhattan; n_neighbors = 7; weights = distance,f1 and cv,0.686 +- 0.463\r\n1,knn,_scale = True; algorithm = brute; metric = manhattan; n_neighbors = 14; weights = distance,f1 and cv,0.857 +- 0.229\r\n2,knn,_scale = True; algorithm = brute; metric = manhattan; n_neighbors = 14; weights = distance,f1 and cv,0.816 +- 0.261\r\n3,knn,_scale = True; algorithm = brute; metric = manhattan; n_neighbors = 14; weights = distance,f1 and cv,0.661 +- 0.372\r\n4,knn,_scale = True; algorithm = brute; metric = minkowski; n_neighbors = 13; p = 3; weights = distance,f1 and cv,0.619 +- 0.687\r\n5,knn,_scale = True; algorithm = brute; metric = minkowski; n_neighbors = 13; p = 1; weights = distance,f1 and cv,0.719 +- 0.477\r\n6,knn,_scale = True; algorithm = brute; metric = minkowski; n_neighbors = 13; p = 1; weights = distance,f1 and cv,0.721 +- 0.257\r\n7,mlp,_scale = True; activation = logistic; alpha = 0.00530026476357; batch_size = auto; hidden_layer_sizes[0] = 195; hidden_layer_sizes[1] = 205; learning_rate = adaptive; learning_rate_init = 0.424197908329; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.533 +- 0.533\r\n8,mlp,_scale = True; activation = logistic; alpha = 0.00798119444472; batch_size = auto; hidden_layer_sizes[0] = 216; hidden_layer_sizes[1] = 12; learning_rate = adaptive; learning_rate_init = 0.398794294569; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.895 +- 0.132\r\n9,mlp,_scale = True; activation = logistic; alpha = 0.00379155634861; batch_size = auto; hidden_layer_sizes[0] = 172; hidden_layer_sizes[1] = 99; learning_rate = adaptive; learning_rate_init = 0.598925397734; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.431 +- 0.704\r\n10,mlp,_scale = True; activation = identity; alpha = 0.00137991259211; batch_size = auto; hidden_layer_sizes[0] = 203; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.597 +- 0.515\r\n11,mlp,_scale = True; activation = identity; alpha = 0.000932548884706; batch_size = auto; hidden_layer_sizes[0] = 155; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.641 +- 0.339\r\n12,knn,_scale = True; algorithm = ball_tree; leaf_size = 11; metric = minkowski; n_neighbors = 1; p = 2; weights = distance,f1 and cv,0.737 +- 0.143\r\n13,knn,_scale = True; algorithm = ball_tree; leaf_size = 24; metric = minkowski; n_neighbors = 11; p = 2; weights = distance,f1 and cv,0.790 +- 0.305\r\n14,knn,_scale = True; algorithm = ball_tree; leaf_size = 24; metric = minkowski; n_neighbors = 11; p = 3; weights = distance,f1 and cv,0.658 +- 0.285\r\n15,mlp,_scale = True; activation = logistic; alpha = 0.00689815348979; batch_size = auto; hidden_layer_sizes[0] = 57; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.728 +- 0.174\r\n16,mlp,_scale = True; activation = logistic; alpha = 0.0039549442717; batch_size = auto; hidden_layer_sizes[0] = 259; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.753 +- 0.189\r\n17,mlp,_scale = True; activation = logistic; alpha = 0.00281476836221; batch_size = auto; hidden_layer_sizes[0] = 259; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.696 +- 0.524\r\n18,mlp,_scale = True; activation = relu; alpha = 0.0034843610708; batch_size = auto; hidden_layer_sizes[0] = 285; hidden_layer_sizes[1] = 123; hidden_layer_sizes[2] = 251; learning_rate = adaptive; learning_rate_init = 0.224074210427; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.795 +- 0.154\r\n19,mlp,_scale = True; activation = relu; alpha = 0.00542506698297; batch_size = auto; hidden_layer_sizes[0] = 176; hidden_layer_sizes[1] = 80; hidden_layer_sizes[2] = 106; learning_rate = adaptive; learning_rate_init = 0.0211862121565; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.714 +- 0.211\r\n20,mlp,_scale = True; activation = relu; alpha = 0.00842941088502; batch_size = auto; hidden_layer_sizes[0] = 245; hidden_layer_sizes[1] = 215; hidden_layer_sizes[2] = 215; learning_rate = adaptive; learning_rate_init = 0.841552109636; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.629 +- 0.098\r\n21,mlp,_scale = True; activation = tanh; alpha = 0.00597255742769; batch_size = auto; hidden_layer_sizes[0] = 233; hidden_layer_sizes[1] = 118; learning_rate = constant; learning_rate_init = 0.931582061106; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.748 +- 0.310\r\n22,mlp,_scale = True; activation = tanh; alpha = 0.00758679628786; batch_size = auto; hidden_layer_sizes[0] = 212; hidden_layer_sizes[1] = 159; learning_rate = constant; learning_rate_init = 0.511327574962; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.764 +- 0.172\r\n23,mlp,_scale = True; activation = tanh; alpha = 0.00293353681982; batch_size = auto; hidden_layer_sizes[0] = 207; hidden_layer_sizes[1] = 154; learning_rate = constant; learning_rate_init = 0.599525801536; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.743 +- 0.285\r\n24,mlp,_scale = True; activation = identity; alpha = 0.00757508457799; batch_size = auto; hidden_layer_sizes[0] = 169; learning_rate = adaptive; learning_rate_init = 0.788346166024; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.789 +- 0.312\r\n25,mlp,_scale = True; activation = identity; alpha = 0.00787731013044; batch_size = auto; hidden_layer_sizes[0] = 11; learning_rate = adaptive; learning_rate_init = 0.643536374804; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.809 +- 0.134\r\n26,mlp,_scale = True; activation = identity; alpha = 0.00333255752017; batch_size = auto; hidden_layer_sizes[0] = 11; learning_rate = adaptive; learning_rate_init = 0.261893435241; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.765 +- 0.164\r\n27,mlp,_scale = True; activation = identity; alpha = 0.00716646901959; batch_size = auto; hidden_layer_sizes[0] = 187; hidden_layer_sizes[1] = 224; hidden_layer_sizes[2] = 160; learning_rate = constant; learning_rate_init = 0.204547246006; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.625 +- 0.265\r\n28,mlp,_scale = True; activation = identity; alpha = 0.000774703195752; batch_size = auto; hidden_layer_sizes[0] = 99; hidden_layer_sizes[1] = 200; hidden_layer_sizes[2] = 210; learning_rate = constant; learning_rate_init = 0.596451207957; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.450 +- 0.621\r\n29,knn,_scale = True; algorithm = kd_tree; leaf_size = 38; metric = euclidean; n_neighbors = 1; weights = uniform,f1 and cv,0.820 +- 0.167\r\n30,knn,_scale = True; algorithm = kd_tree; leaf_size = 1; metric = euclidean; n_neighbors = 13; weights = uniform,f1 and cv,0.626 +- 0.642\r\n31,rf,criterion = gini; max_depth = 9; max_features = 0.367839067747; min_samples_leaf = 3; n_estimators = 100; n_jobs = -1,f1 and cv,0.785 +- 0.306\r\n32,rf,criterion = gini; max_depth = 9; max_features = 0.402117977448; min_samples_leaf = 1; n_estimators = 100; n_jobs = -1,f1 and cv,0.860 +- 0.074\r\n33,rf,criterion = gini; max_depth = 9; max_features = 0.382966272577; min_samples_leaf = 1; n_estimators = 100; n_jobs = -1,f1 and cv,0.752 +- 0.309\r\n34,mlp,_scale = True; activation = logistic; alpha = 0.000791933609875; batch_size = auto; hidden_layer_sizes[0] = 100; learning_rate = invscaling; learning_rate_init = 0.630083279272; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.593 +- 0.665\r\n35,mlp,_scale = True; activation = logistic; alpha = 0.00866503894322; batch_size = auto; hidden_layer_sizes[0] = 72; learning_rate = invscaling; learning_rate_init = 0.464195768863; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.612 +- 0.660\r\n36,logreg,C = 0.0214259326819; _scale = True; class_weight = balanced; dual = True; fit_intercept = False; penalty = l2; tol = 0.000345805380725,f1 and cv,0.833 +- 0.230\r\n37,logreg,C = 0.683408146675; _scale = True; class_weight = balanced; dual = True; fit_intercept = False; penalty = l2; tol = 1214.1761078,f1 and cv,0.752 +- 0.372\r\n38,logreg,C = 0.017734143058; _scale = True; class_weight = balanced; dual = True; fit_intercept = False; penalty = l2; tol = 0.00123640541548,f1 and cv,0.683 +- 0.356\r\n39,mlp,_scale = True; activation = logistic; alpha = 0.00888164070317; batch_size = auto; hidden_layer_sizes[0] = 102; learning_rate = constant; learning_rate_init = 0.00430280495011; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.750 +- 0.276\r\n40,mlp,_scale = True; activation = logistic; alpha = 0.00476397875238; batch_size = auto; hidden_layer_sizes[0] = 16; learning_rate = constant; learning_rate_init = 0.883876615927; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.861 +- 0.268\r\n41,mlp,_scale = True; activation = logistic; alpha = 0.00733166639002; batch_size = auto; hidden_layer_sizes[0] = 16; learning_rate = constant; learning_rate_init = 0.444678703048; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.711 +- 0.178\r\n42,knn,_scale = True; algorithm = kd_tree; leaf_size = 29; metric = minkowski; n_neighbors = 9; p = 2; weights = uniform,f1 and cv,0.735 +- 0.230\r\n43,knn,_scale = True; algorithm = kd_tree; leaf_size = 19; metric = minkowski; n_neighbors = 15; p = 3; weights = uniform,f1 and cv,0.617 +- 0.484\r\n44,knn,_scale = True; algorithm = kd_tree; leaf_size = 32; metric = chebyshev; n_neighbors = 1; weights = uniform,f1 and cv,0.598 +- 0.286\r\n45,knn,_scale = True; algorithm = kd_tree; leaf_size = 31; metric = chebyshev; n_neighbors = 4; weights = uniform,f1 and cv,0.626 +- 0.322\r\n46,mlp,_scale = True; activation = relu; alpha = 0.00759969817544; batch_size = auto; beta_1 = 0.805257558344; beta_2 = 0.919639253787; hidden_layer_sizes[0] = 271; hidden_layer_sizes[1] = 156; hidden_layer_sizes[2] = 102; learning_rate_init = 0.538063857136; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.478 +- 0.556\r\n47,mlp,_scale = True; activation = relu; alpha = 0.00183811745554; batch_size = auto; beta_1 = 0.917281907651; beta_2 = 0.909306026217; hidden_layer_sizes[0] = 94; hidden_layer_sizes[1] = 4; hidden_layer_sizes[2] = 41; learning_rate_init = 0.0100400664162; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.698 +- 0.344\r\n48,mlp,_scale = True; activation = relu; alpha = 0.0047834096605; batch_size = auto; hidden_layer_sizes[0] = 238; hidden_layer_sizes[1] = 101; learning_rate = constant; learning_rate_init = 0.488408572136; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.705 +- 0.415\r\n49,mlp,_scale = True; activation = relu; alpha = 0.00710954274516; batch_size = auto; hidden_layer_sizes[0] = 14; hidden_layer_sizes[1] = 230; learning_rate = constant; learning_rate_init = 0.786669723308; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.756 +- 0.196\r\n50,rf,criterion = entropy; max_depth = 6; max_features = 0.232233143849; min_samples_leaf = 1; n_estimators = 100; n_jobs = -1,f1 and cv,0.731 +- 0.292\r\n51,rf,criterion = entropy; max_depth = 5; max_features = 0.59182882637; min_samples_leaf = 2; n_estimators = 100; n_jobs = -1,f1 and cv,0.680 +- 0.412\r\n52,mlp,_scale = True; activation = logistic; alpha = 0.00629100817992; batch_size = auto; beta_1 = 0.809151964451; beta_2 = 0.993608194363; hidden_layer_sizes[0] = 256; learning_rate_init = 0.612522328836; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.513 +- 0.515\r\n53,mlp,_scale = True; activation = logistic; alpha = 0.00102623664838; batch_size = auto; beta_1 = 0.990889730404; beta_2 = 0.873016441774; hidden_layer_sizes[0] = 155; learning_rate_init = 0.468791139345; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.385 +- 0.639\r\n54,mlp,_scale = True; activation = tanh; alpha = 0.0060745624063; batch_size = auto; beta_1 = 0.810455090006; beta_2 = 0.86233389184; hidden_layer_sizes[0] = 166; learning_rate_init = 0.506612828834; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.754 +- 0.015\r\n55,mlp,_scale = True; activation = tanh; alpha = 0.00642222331207; batch_size = auto; beta_1 = 0.950661050707; beta_2 = 0.9228862104; hidden_layer_sizes[0] = 232; learning_rate_init = 0.737945109017; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.623 +- 0.382\r\n56,mlp,_scale = True; activation = logistic; alpha = 0.00221486648488; batch_size = auto; hidden_layer_sizes[0] = 229; hidden_layer_sizes[1] = 24; learning_rate = invscaling; learning_rate_init = 0.725149199927; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.618 +- 0.634\r\n57,mlp,_scale = True; activation = logistic; alpha = 0.00490142271385; batch_size = auto; hidden_layer_sizes[0] = 152; hidden_layer_sizes[1] = 258; learning_rate = invscaling; learning_rate_init = 0.450398857861; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.565 +- 0.566\r\n58,gnb,_scale_minmax = True,f1 and cv,0.734 +- 0.174\r\n59,mlp,_scale = True; activation = relu; alpha = 0.00732790324552; batch_size = auto; beta_1 = 0.913017407091; beta_2 = 0.873413950401; hidden_layer_sizes[0] = 198; hidden_layer_sizes[1] = 119; learning_rate_init = 0.299263258228; len(hidden_layer_sizes) = 2; solver = adam,f1 and cv,0.357 +- 0.588\r\n60,mlp,_scale = True; activation = relu; alpha = 0.00437532628446; batch_size = auto; beta_1 = 0.856779201746; beta_2 = 0.905041477573; hidden_layer_sizes[0] = 254; hidden_layer_sizes[1] = 281; learning_rate_init = 0.317421025284; len(hidden_layer_sizes) = 2; solver = adam,f1 and cv,0.514 +- 0.520\r\n61,mlp,_scale = True; activation = tanh; alpha = 0.00808218337356; batch_size = auto; beta_1 = 0.813646861773; beta_2 = 0.926051015685; hidden_layer_sizes[0] = 223; hidden_layer_sizes[1] = 79; learning_rate_init = 0.681626093158; len(hidden_layer_sizes) = 2; solver = adam,f1 and cv,0.645 +- 0.153\r\n62,mlp,_scale = True; activation = tanh; alpha = 0.00275617054662; batch_size = auto; beta_1 = 0.977371192532; beta_2 = 0.950555116359; hidden_layer_sizes[0] = 246; hidden_layer_sizes[1] = 147; learning_rate_init = 0.41924593034; len(hidden_layer_sizes) = 2; solver = adam,f1 and cv,0.697 +- 0.307\r\n63,mlp,_scale = True; activation = identity; alpha = 0.00197176250179; batch_size = auto; hidden_layer_sizes[0] = 120; learning_rate = invscaling; learning_rate_init = 0.785634918376; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.704 +- 0.399\r\n64,mlp,_scale = True; activation = identity; alpha = 0.00180158765636; batch_size = auto; hidden_layer_sizes[0] = 145; learning_rate = invscaling; learning_rate_init = 0.552198889363; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.765 +- 0.300\r\n65,logreg,C = 47093.7014376; _scale = True; class_weight = balanced; dual = True; fit_intercept = True; penalty = l2; tol = 15.325529229,f1 and cv,0.702 +- 0.278\r\n66,logreg,C = 0.443155342509; _scale = True; class_weight = balanced; dual = True; fit_intercept = True; penalty = l2; tol = 0.000101144238412,f1 and cv,0.677 +- 0.489\r\n67,mlp,_scale = True; activation = identity; alpha = 0.00367494681335; batch_size = auto; hidden_layer_sizes[0] = 142; hidden_layer_sizes[1] = 237; hidden_layer_sizes[2] = 158; learning_rate = adaptive; learning_rate_init = 0.311947801595; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.705 +- 0.211\r\n68,mlp,_scale = True; activation = identity; alpha = 0.00010321608489; batch_size = auto; hidden_layer_sizes[0] = 159; hidden_layer_sizes[1] = 75; hidden_layer_sizes[2] = 73; learning_rate = adaptive; learning_rate_init = 0.704449459858; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.000 +- 0.000\r\n69,mlp,_scale = True; activation = logistic; alpha = 0.00658761698968; batch_size = auto; hidden_layer_sizes[0] = 99; hidden_layer_sizes[1] = 152; hidden_layer_sizes[2] = 113; learning_rate = constant; learning_rate_init = 0.658043918401; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.243 +- 0.595\r\n70,mlp,_scale = True; activation = logistic; alpha = 0.00712192156559; batch_size = auto; hidden_layer_sizes[0] = 277; hidden_layer_sizes[1] = 271; hidden_layer_sizes[2] = 158; learning_rate = constant; learning_rate_init = 0.128920390882; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.728 +- 0.043\r\n71,mlp,_scale = True; activation = relu; alpha = 0.00140375540345; batch_size = auto; hidden_layer_sizes[0] = 78; hidden_layer_sizes[1] = 201; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.727 +- 0.364\r\n72,mlp,_scale = True; activation = relu; alpha = 0.00649551585093; batch_size = auto; hidden_layer_sizes[0] = 247; hidden_layer_sizes[1] = 183; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.703 +- 0.339\r\n73,logreg,C = 0.0013761076145; _scale = True; class_weight = balanced; dual = False; fit_intercept = True; penalty = l2; tol = 1.41262043531,f1 and cv,0.758 +- 0.188\r\n74,logreg,C = 9303.15817441; _scale = True; class_weight = balanced; dual = False; fit_intercept = True; penalty = l2; tol = 0.000334662940477,f1 and cv,0.552 +- 0.386\r\n75,mlp,_scale = True; activation = relu; alpha = 0.00311675023279; batch_size = auto; hidden_layer_sizes[0] = 202; learning_rate = adaptive; learning_rate_init = 0.504088851907; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.703 +- 0.321\r\n76,mlp,_scale = True; activation = relu; alpha = 0.00494765202385; batch_size = auto; hidden_layer_sizes[0] = 212; learning_rate = adaptive; learning_rate_init = 0.140358550945; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.804 +- 0.225\r\n77,knn,_scale = True; algorithm = brute; metric = euclidean; n_neighbors = 18; weights = distance,f1 and cv,0.686 +- 0.187\r\n78,knn,_scale = True; algorithm = brute; metric = euclidean; n_neighbors = 3; weights = distance,f1 and cv,0.875 +- 0.255\r\n79,mlp,_scale = True; activation = logistic; alpha = 0.00631435652909; batch_size = auto; hidden_layer_sizes[0] = 87; hidden_layer_sizes[1] = 262; hidden_layer_sizes[2] = 57; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.749 +- 0.203\r\n80,mlp,_scale = True; activation = logistic; alpha = 0.00491522611475; batch_size = auto; hidden_layer_sizes[0] = 243; hidden_layer_sizes[1] = 84; hidden_layer_sizes[2] = 207; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.690 +- 0.318\r\n81,dt,criterion = gini; max_depth = 5; max_features = 0.26928275228; min_samples_leaf = 2; min_samples_split = 3,f1 and cv,0.782 +- 0.341\r\n82,dt,criterion = gini; max_depth = 4; max_features = 0.350580615226; min_samples_leaf = 2; min_samples_split = 3,f1 and cv,0.743 +- 0.086\r\n83,mlp,_scale = True; activation = logistic; alpha = 0.00555540554099; batch_size = auto; hidden_layer_sizes[0] = 268; hidden_layer_sizes[1] = 88; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.845 +- 0.253\r\n84,mlp,_scale = True; activation = logistic; alpha = 0.00830150899829; batch_size = auto; hidden_layer_sizes[0] = 106; hidden_layer_sizes[1] = 254; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.606 +- 0.358\r\n85,knn,_scale = True; algorithm = ball_tree; leaf_size = 47; metric = chebyshev; n_neighbors = 5; weights = distance,f1 and cv,0.679 +- 0.269\r\n86,knn,_scale = True; algorithm = ball_tree; leaf_size = 49; metric = chebyshev; n_neighbors = 8; weights = distance,f1 and cv,0.566 +- 0.376\r\n87,mlp,_scale = True; activation = relu; alpha = 0.00134657693167; batch_size = auto; beta_1 = 0.901446054733; beta_2 = 0.880896299544; hidden_layer_sizes[0] = 191; learning_rate_init = 0.375569538389; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.632 +- 0.525\r\n88,mlp,_scale = True; activation = relu; alpha = 0.000297485001862; batch_size = auto; beta_1 = 0.941478867427; beta_2 = 0.973162866089; hidden_layer_sizes[0] = 69; learning_rate_init = 0.533560098352; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.860 +- 0.217\r\n89,mlp,_scale = True; activation = tanh; alpha = 0.005287015641; batch_size = auto; hidden_layer_sizes[0] = 182; learning_rate = constant; learning_rate_init = 0.163780650802; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.729 +- 0.065\r\n90,mlp,_scale = True; activation = tanh; alpha = 0.00456308654567; batch_size = auto; hidden_layer_sizes[0] = 127; learning_rate = constant; learning_rate_init = 0.135323349646; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.826 +- 0.249\r\n91,gp,kernel = exp_sine_squared; length_scale = 4.85831821276; periodicity = 0,f1 and cv,0.264 +- 0.657\r\n92,gp,kernel = exp_sine_squared; length_scale = 0.135958947829; periodicity = 0,f1 and cv,0.509 +- 0.491\r\n93,mlp,_scale = True; activation = identity; alpha = 0.00327852610934; batch_size = auto; hidden_layer_sizes[0] = 47; hidden_layer_sizes[1] = 186; learning_rate = adaptive; learning_rate_init = 0.572603383057; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.814 +- 0.184\r\n94,mlp,_scale = True; activation = identity; alpha = 0.00459711119933; batch_size = auto; hidden_layer_sizes[0] = 57; hidden_layer_sizes[1] = 244; learning_rate = adaptive; learning_rate_init = 0.183884865397; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.717 +- 0.082\r\n95,knn,_scale = True; algorithm = brute; metric = euclidean; n_neighbors = 15; weights = uniform,f1 and cv,0.748 +- 0.302\r\n96,knn,_scale = True; algorithm = brute; metric = euclidean; n_neighbors = 14; weights = uniform,f1 and cv,0.781 +- 0.123\r\n97,mlp,_scale = True; activation = identity; alpha = 0.0074516368895; batch_size = auto; hidden_layer_sizes[0] = 260; hidden_layer_sizes[1] = 272; learning_rate = constant; learning_rate_init = 0.814031098014; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.740 +- 0.568\r\n98,mlp,_scale = True; activation = identity; alpha = 0.000714089726547; batch_size = auto; hidden_layer_sizes[0] = 213; hidden_layer_sizes[1] = 198; learning_rate = constant; learning_rate_init = 0.814268876798; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.705 +- 0.160\r\n99,knn,_scale = True; algorithm = kd_tree; leaf_size = 34; metric = minkowski; n_neighbors = 20; p = 2; weights = distance,f1 and cv,0.636 +- 0.695\r\n100,knn,_scale = True; algorithm = kd_tree; leaf_size = 2; metric = minkowski; n_neighbors = 3; p = 2; weights = distance,f1 and cv,0.695 +- 0.320\r\n101,gp,kernel = exp_sine_squared; length_scale = 0.0418500347903; periodicity = 1,f1 and cv,0.518 +- 0.349\r\n102,gp,kernel = exp_sine_squared; length_scale = 3.2608797321; periodicity = 1,f1 and cv,0.636 +- 0.138\r\n103,knn,_scale = True; algorithm = ball_tree; leaf_size = 39; metric = manhattan; n_neighbors = 14; weights = distance,f1 and cv,0.734 +- 0.174\r\n104,knn,_scale = True; algorithm = ball_tree; leaf_size = 12; metric = manhattan; n_neighbors = 8; weights = distance,f1 and cv,0.735 +- 0.329\r\n105,gp,kernel = rbf,f1 and cv,0.000 +- 0.000\r\n106,logreg,C = 8003.09009751; _scale = True; class_weight = balanced; dual = False; fit_intercept = False; penalty = l2; tol = 158.3290079,f1 and cv,0.000 +- 0.000\r\n107,knn,_scale = True; algorithm = kd_tree; leaf_size = 39; metric = manhattan; n_neighbors = 5; weights = distance,f1 and cv,0.763 +- 0.174\r\n108,knn,_scale = True; algorithm = kd_tree; leaf_size = 19; metric = manhattan; n_neighbors = 1; weights = distance,f1 and cv,0.750 +- 0.390\r\n109,mlp,_scale = True; activation = tanh; alpha = 0.00825577378371; batch_size = auto; beta_1 = 0.985892130227; beta_2 = 0.828672288718; hidden_layer_sizes[0] = 30; hidden_layer_sizes[1] = 97; hidden_layer_sizes[2] = 21; learning_rate_init = 0.681012686376; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.786 +- 0.214\r\n110,mlp,_scale = True; activation = tanh; alpha = 0.00649915984678; batch_size = auto; beta_1 = 0.982349328285; beta_2 = 0.873896270168; hidden_layer_sizes[0] = 180; hidden_layer_sizes[1] = 113; hidden_layer_sizes[2] = 273; learning_rate_init = 0.244111027344; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.647 +- 0.323\r\n111,mlp,_scale = True; activation = tanh; alpha = 0.00629250795; batch_size = auto; hidden_layer_sizes[0] = 153; hidden_layer_sizes[1] = 56; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.906 +- 0.185\r\n112,mlp,_scale = True; activation = tanh; alpha = 0.00814064893138; batch_size = auto; hidden_layer_sizes[0] = 296; hidden_layer_sizes[1] = 246; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.648 +- 0.198\r\n113,mlp,_scale = True; activation = tanh; alpha = 0.0054920617902; batch_size = auto; hidden_layer_sizes[0] = 201; hidden_layer_sizes[1] = 184; learning_rate = adaptive; learning_rate_init = 0.266207557118; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.663 +- 0.331\r\n114,mlp,_scale = True; activation = tanh; alpha = 0.000210532215542; batch_size = auto; hidden_layer_sizes[0] = 84; hidden_layer_sizes[1] = 27; learning_rate = adaptive; learning_rate_init = 0.133819357352; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.758 +- 0.196\r\n115,mlp,_scale = True; activation = logistic; alpha = 0.00749068366409; batch_size = auto; hidden_layer_sizes[0] = 24; learning_rate = adaptive; learning_rate_init = 0.444646403945; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.567 +- 0.267\r\n116,mlp,_scale = True; activation = logistic; alpha = 0.00845358643974; batch_size = auto; hidden_layer_sizes[0] = 142; learning_rate = adaptive; learning_rate_init = 0.925708350382; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.740 +- 0.223\r\n117,knn,_scale = True; algorithm = brute; metric = chebyshev; n_neighbors = 15; weights = uniform,f1 and cv,0.728 +- 0.191\r\n118,knn,_scale = True; algorithm = brute; metric = chebyshev; n_neighbors = 18; weights = uniform,f1 and cv,0.660 +- 0.282\r\n119,mlp,_scale = True; activation = identity; alpha = 0.00234311244437; batch_size = auto; hidden_layer_sizes[0] = 145; learning_rate = constant; learning_rate_init = 0.141410353023; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.720 +- 0.160\r\n120,mlp,_scale = True; activation = identity; alpha = 0.00665717297745; batch_size = auto; hidden_layer_sizes[0] = 45; learning_rate = constant; learning_rate_init = 0.25076141269; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.741 +- 0.181\r\n121,mlp,_scale = True; activation = logistic; alpha = 0.00875211514426; batch_size = auto; beta_1 = 0.863778890054; beta_2 = 0.883855308382; hidden_layer_sizes[0] = 209; hidden_layer_sizes[1] = 195; learning_rate_init = 0.0853683569178; len(hidden_layer_sizes) = 2; solver = adam,f1 and cv,0.000 +- 0.000\r\n122,mlp,_scale = True; activation = logistic; alpha = 0.00293197513824; batch_size = auto; hidden_layer_sizes[0] = 43; hidden_layer_sizes[1] = 208; hidden_layer_sizes[2] = 229; learning_rate = adaptive; learning_rate_init = 0.649397583034; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.400 +- 0.653\r\n123,mlp,_scale = True; activation = logistic; alpha = 0.00681985969241; batch_size = auto; hidden_layer_sizes[0] = 14; hidden_layer_sizes[1] = 30; hidden_layer_sizes[2] = 174; learning_rate = adaptive; learning_rate_init = 0.10778253764; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.000 +- 0.000\r\n124,svm,C = 8.16055297671; _scale = True; cache_size = 15000; class_weight = balanced; gamma = 147.068791847; kernel = rbf; max_iter = 50000; probability = True; shrinking = True,f1 and cv,0.747 +- 0.054\r\n125,svm,C = 0.0089089646207; _scale = True; cache_size = 15000; class_weight = balanced; gamma = 253.344779981; kernel = rbf; max_iter = 50000; probability = True; shrinking = True,f1 and cv,0.646 +- 0.050\r\n126,mnb,_scale_minmax = True; alpha = 0.902316081541; class_prior = None; fit_prior = 0,f1 and cv,0.659 +- 0.427\r\n127,mnb,_scale_minmax = True; alpha = 0.710780560312; class_prior = None; fit_prior = 0,f1 and cv,0.694 +- 0.353\r\n128,mlp,_scale = True; activation = tanh; alpha = 0.00480760064499; batch_size = auto; hidden_layer_sizes[0] = 67; learning_rate = adaptive; learning_rate_init = 0.333529348373; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.695 +- 0.480\r\n129,mlp,_scale = True; activation = tanh; alpha = 0.0085398433589; batch_size = auto; hidden_layer_sizes[0] = 252; learning_rate = adaptive; learning_rate_init = 0.531057244459; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.575 +- 0.498\r\n130,svm,C = 0.488485724028; _scale = True; cache_size = 15000; class_weight = balanced; coef0 = 808; gamma = 1.48944568797e-05; kernel = sigmoid; max_iter = 50000; probability = True; shrinking = True,f1 and cv,0.400 +- 0.653\r\n131,svm,C = 12.6587418859; _scale = True; cache_size = 15000; class_weight = balanced; coef0 = -239; gamma = 663.160595527; kernel = sigmoid; max_iter = 50000; probability = True; shrinking = True,f1 and cv,0.694 +- 0.253\r\n132,mlp,_scale = True; activation = identity; alpha = 0.00378946917625; batch_size = auto; hidden_layer_sizes[0] = 248; hidden_layer_sizes[1] = 219; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.718 +- 0.176\r\n133,mlp,_scale = True; activation = identity; alpha = 0.00171384081042; batch_size = auto; hidden_layer_sizes[0] = 194; hidden_layer_sizes[1] = 244; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.677 +- 0.204\r\n134,gp,kernel = matern; nu = 0.5,f1 and cv,0.417 +- 0.230\r\n135,mlp,_scale = True; activation = tanh; alpha = 0.00396164402352; batch_size = auto; hidden_layer_sizes[0] = 253; hidden_layer_sizes[1] = 154; hidden_layer_sizes[2] = 216; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.763 +- 0.524\r\n136,mlp,_scale = True; activation = tanh; alpha = 0.00726596359904; batch_size = auto; hidden_layer_sizes[0] = 200; hidden_layer_sizes[1] = 28; hidden_layer_sizes[2] = 205; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.725 +- 0.274\r\n137,knn,_scale = True; algorithm = ball_tree; leaf_size = 7; metric = chebyshev; n_neighbors = 12; weights = uniform,f1 and cv,0.558 +- 0.281\r\n138,knn,_scale = True; algorithm = ball_tree; leaf_size = 33; metric = chebyshev; n_neighbors = 15; weights = uniform,f1 and cv,0.706 +- 0.178\r\n139,mlp,_scale = True; activation = relu; alpha = 0.00267022655552; batch_size = auto; hidden_layer_sizes[0] = 162; learning_rate = constant; learning_rate_init = 0.329554709582; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.741 +- 0.421\r\n140,mlp,_scale = True; activation = relu; alpha = 0.000120285567481; batch_size = auto; hidden_layer_sizes[0] = 94; learning_rate = constant; learning_rate_init = 0.287889175922; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.773 +- 0.157\r\n141,knn,_scale = True; algorithm = brute; metric = minkowski; n_neighbors = 13; p = 1; weights = uniform,f1 and cv,0.789 +- 0.280\r\n142,knn,_scale = True; algorithm = brute; metric = minkowski; n_neighbors = 19; p = 2; weights = uniform,f1 and cv,0.708 +- 0.161\r\n143,mlp,_scale = True; activation = tanh; alpha = 0.00364601841439; batch_size = auto; hidden_layer_sizes[0] = 172; hidden_layer_sizes[1] = 88; hidden_layer_sizes[2] = 134; learning_rate = constant; learning_rate_init = 0.930415677006; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.558 +- 0.645\r\n144,mlp,_scale = True; activation = tanh; alpha = 0.000723907193495; batch_size = auto; hidden_layer_sizes[0] = 25; hidden_layer_sizes[1] = 248; hidden_layer_sizes[2] = 290; learning_rate = constant; learning_rate_init = 0.449709456131; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.781 +- 0.285\r\n145,mlp,_scale = True; activation = tanh; alpha = 0.00615973608702; batch_size = auto; hidden_layer_sizes[0] = 229; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.707 +- 0.373\r\n146,mlp,_scale = True; activation = tanh; alpha = 0.00342215452488; batch_size = auto; hidden_layer_sizes[0] = 291; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.788 +- 0.371\r\n147,logreg,C = 33236.2651831; _scale = True; class_weight = balanced; fit_intercept = False; penalty = l1; tol = 45143.8756661,f1 and cv,0.000 +- 0.000\r\n148,mlp,_scale = True; activation = relu; alpha = 0.00733763196925; batch_size = auto; hidden_layer_sizes[0] = 84; hidden_layer_sizes[1] = 193; hidden_layer_sizes[2] = 23; learning_rate = constant; learning_rate_init = 0.149237023614; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.689 +- 0.208\r\n149,mlp,_scale = True; activation = relu; alpha = 0.00777580626777; batch_size = auto; hidden_layer_sizes[0] = 108; hidden_layer_sizes[1] = 205; hidden_layer_sizes[2] = 52; learning_rate = constant; learning_rate_init = 0.529978231905; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.728 +- 0.218\r\n150,knn,_scale = True; algorithm = brute; metric = chebyshev; n_neighbors = 19; weights = distance,f1 and cv,0.619 +- 0.197\r\n151,knn,_scale = True; algorithm = brute; metric = chebyshev; n_neighbors = 6; weights = distance,f1 and cv,0.532 +- 0.378\r\n152,mlp,_scale = True; activation = logistic; alpha = 0.000567528746084; batch_size = auto; hidden_layer_sizes[0] = 150; hidden_layer_sizes[1] = 264; learning_rate = constant; learning_rate_init = 0.0846532674358; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.133 +- 0.533\r\n153,mlp,_scale = True; activation = logistic; alpha = 0.00239891080963; batch_size = auto; hidden_layer_sizes[0] = 201; hidden_layer_sizes[1] = 46; learning_rate = constant; learning_rate_init = 0.426161179321; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.422 +- 0.690\r\n154,mlp,_scale = True; activation = tanh; alpha = 0.00827701278597; batch_size = auto; hidden_layer_sizes[0] = 197; hidden_layer_sizes[1] = 97; learning_rate = invscaling; learning_rate_init = 0.977395089155; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.798 +- 0.217\r\n155,mlp,_scale = True; activation = tanh; alpha = 0.00235795231137; batch_size = auto; hidden_layer_sizes[0] = 120; hidden_layer_sizes[1] = 166; learning_rate = invscaling; learning_rate_init = 0.194546202206; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.660 +- 0.338\r\n156,mlp,_scale = True; activation = identity; alpha = 0.00781093580274; batch_size = auto; beta_1 = 0.893500772757; beta_2 = 0.847286576572; hidden_layer_sizes[0] = 14; hidden_layer_sizes[1] = 247; learning_rate_init = 0.758696518557; len(hidden_layer_sizes) = 2; solver = adam,f1 and cv,0.762 +- 0.097\r\n157,mlp,_scale = True; activation = identity; alpha = 0.00567418712325; batch_size = auto; beta_1 = 0.96818040483; beta_2 = 0.97953775169; hidden_layer_sizes[0] = 126; hidden_layer_sizes[1] = 258; learning_rate_init = 0.341003076312; len(hidden_layer_sizes) = 2; solver = adam,f1 and cv,0.533 +- 0.573\r\n158,mlp,_scale = True; activation = relu; alpha = 0.00162868600501; batch_size = auto; hidden_layer_sizes[0] = 144; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.754 +- 0.425\r\n159,mlp,_scale = True; activation = relu; alpha = 0.00229409998765; batch_size = auto; hidden_layer_sizes[0] = 298; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.829 +- 0.264\r\n160,mlp,_scale = True; activation = identity; alpha = 0.00864326826731; batch_size = auto; beta_1 = 0.942795630859; beta_2 = 0.947817974492; hidden_layer_sizes[0] = 237; hidden_layer_sizes[1] = 4; hidden_layer_sizes[2] = 135; learning_rate_init = 0.887629148002; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.733 +- 0.164\r\n161,mlp,_scale = True; activation = identity; alpha = 0.00853544959721; batch_size = auto; beta_1 = 0.910177581959; beta_2 = 0.954639833114; hidden_layer_sizes[0] = 60; hidden_layer_sizes[1] = 167; hidden_layer_sizes[2] = 135; learning_rate_init = 0.248072259148; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.631 +- 0.711\r\n162,mlp,_scale = True; activation = logistic; alpha = 0.000935512363926; batch_size = auto; hidden_layer_sizes[0] = 69; hidden_layer_sizes[1] = 257; hidden_layer_sizes[2] = 173; learning_rate = invscaling; learning_rate_init = 0.643384098013; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.562 +- 0.563\r\n163,mlp,_scale = True; activation = logistic; alpha = 0.00613288968392; batch_size = auto; hidden_layer_sizes[0] = 50; hidden_layer_sizes[1] = 14; hidden_layer_sizes[2] = 259; learning_rate = invscaling; learning_rate_init = 0.886220190632; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.133 +- 0.533\r\n164,mlp,_scale = True; activation = relu; alpha = 0.00458676425967; batch_size = auto; hidden_layer_sizes[0] = 29; hidden_layer_sizes[1] = 85; learning_rate = adaptive; learning_rate_init = 0.387754092947; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.771 +- 0.272\r\n165,mlp,_scale = True; activation = relu; alpha = 0.00334926155067; batch_size = auto; hidden_layer_sizes[0] = 42; hidden_layer_sizes[1] = 200; learning_rate = adaptive; learning_rate_init = 0.540543347995; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.707 +- 0.299\r\n166,knn,_scale = True; algorithm = ball_tree; leaf_size = 12; metric = euclidean; n_neighbors = 20; weights = uniform,f1 and cv,0.646 +- 0.371\r\n167,knn,_scale = True; algorithm = ball_tree; leaf_size = 36; metric = euclidean; n_neighbors = 20; weights = uniform,f1 and cv,0.773 +- 0.170\r\n168,mlp,_scale = True; activation = relu; alpha = 0.00719711014803; batch_size = auto; hidden_layer_sizes[0] = 8; hidden_layer_sizes[1] = 221; hidden_layer_sizes[2] = 194; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.692 +- 0.424\r\n169,mlp,_scale = True; activation = relu; alpha = 0.00887638888759; batch_size = auto; hidden_layer_sizes[0] = 12; hidden_layer_sizes[1] = 299; hidden_layer_sizes[2] = 127; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.650 +- 0.380\r\n170,mlp,_scale = True; activation = tanh; alpha = 0.00614178050714; batch_size = auto; hidden_layer_sizes[0] = 61; hidden_layer_sizes[1] = 225; hidden_layer_sizes[2] = 43; learning_rate = adaptive; learning_rate_init = 0.494382591683; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.714 +- 0.199\r\n171,mlp,_scale = True; activation = tanh; alpha = 0.00738872825514; batch_size = auto; hidden_layer_sizes[0] = 11; hidden_layer_sizes[1] = 145; hidden_layer_sizes[2] = 65; learning_rate = adaptive; learning_rate_init = 0.313803037636; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.838 +- 0.191\r\n172,mlp,_scale = True; activation = relu; alpha = 0.00167916081958; batch_size = auto; hidden_layer_sizes[0] = 120; hidden_layer_sizes[1] = 121; learning_rate = invscaling; learning_rate_init = 0.958818724407; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.667 +- 0.183\r\n173,mlp,_scale = True; activation = relu; alpha = 0.0020100221907; batch_size = auto; hidden_layer_sizes[0] = 84; hidden_layer_sizes[1] = 297; learning_rate = invscaling; learning_rate_init = 0.952122922462; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.659 +- 0.327\r\n174,gp,kernel = matern; nu = 2.5,f1 and cv,0.626 +- 0.144\r\n175,knn,_scale = True; algorithm = kd_tree; leaf_size = 49; metric = manhattan; n_neighbors = 20; weights = uniform,f1 and cv,0.821 +- 0.158\r\n176,knn,_scale = True; algorithm = kd_tree; leaf_size = 5; metric = manhattan; n_neighbors = 7; weights = uniform,f1 and cv,0.803 +- 0.179\r\n177,mlp,_scale = True; activation = logistic; alpha = 0.000158711821583; batch_size = auto; beta_1 = 0.840424693096; beta_2 = 0.878668041576; hidden_layer_sizes[0] = 4; hidden_layer_sizes[1] = 50; hidden_layer_sizes[2] = 129; learning_rate_init = 0.00585355090471; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.533 +- 0.533\r\n178,mlp,_scale = True; activation = logistic; alpha = 0.00201291230505; batch_size = auto; beta_1 = 0.822720823925; beta_2 = 0.994438957081; hidden_layer_sizes[0] = 106; hidden_layer_sizes[1] = 288; hidden_layer_sizes[2] = 154; learning_rate_init = 0.97642751098; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.276 +- 0.677\r\n179,knn,_scale = True; algorithm = kd_tree; leaf_size = 13; metric = euclidean; n_neighbors = 6; weights = distance,f1 and cv,0.805 +- 0.236\r\n180,knn,_scale = True; algorithm = kd_tree; leaf_size = 25; metric = euclidean; n_neighbors = 15; weights = distance,f1 and cv,0.603 +- 0.371\r\n181,mlp,_scale = True; activation = relu; alpha = 0.00445180469685; batch_size = auto; hidden_layer_sizes[0] = 300; hidden_layer_sizes[1] = 202; hidden_layer_sizes[2] = 109; learning_rate = invscaling; learning_rate_init = 0.737533695192; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.831 +- 0.221\r\n182,mlp,_scale = True; activation = relu; alpha = 0.00221169830469; batch_size = auto; hidden_layer_sizes[0] = 300; hidden_layer_sizes[1] = 82; hidden_layer_sizes[2] = 246; learning_rate = invscaling; learning_rate_init = 0.745125016274; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.691 +- 0.341\r\n183,gp,alpha = 0.939043411847; kernel = rational_quadratic; length_scale = 0.215067015461,f1 and cv,0.607 +- 0.122\r\n184,gp,alpha = 0.674130544672; kernel = rational_quadratic; length_scale = 0.0475666943118,f1 and cv,0.688 +- 0.187\r\n185,mlp,_scale = True; activation = identity; alpha = 0.00644730586978; batch_size = auto; beta_1 = 0.882156870467; beta_2 = 0.802764529928; hidden_layer_sizes[0] = 14; learning_rate_init = 0.931185756048; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.789 +- 0.361\r\n186,mlp,_scale = True; activation = identity; alpha = 0.00582384603658; batch_size = auto; beta_1 = 0.817626145533; beta_2 = 0.868733905202; hidden_layer_sizes[0] = 45; learning_rate_init = 0.424573756977; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.798 +- 0.260\r\n187,knn,_scale = True; algorithm = ball_tree; leaf_size = 7; metric = euclidean; n_neighbors = 16; weights = distance,f1 and cv,0.735 +- 0.402\r\n188,knn,_scale = True; algorithm = ball_tree; leaf_size = 22; metric = euclidean; n_neighbors = 8; weights = distance,f1 and cv,0.849 +- 0.132\r\n189,svm,C = 0.0598810328026; _scale = True; cache_size = 15000; class_weight = balanced; kernel = linear; max_iter = 50000; probability = True; shrinking = True,f1 and cv,0.849 +- 0.188\r\n190,svm,C = 0.144754612317; _scale = True; cache_size = 15000; class_weight = balanced; kernel = linear; max_iter = 50000; probability = True; shrinking = True,f1 and cv,0.764 +- 0.238\r\n191,mlp,_scale = True; activation = logistic; alpha = 0.00558989678671; batch_size = auto; beta_1 = 0.819286301002; beta_2 = 0.909992491242; hidden_layer_sizes[0] = 240; hidden_layer_sizes[1] = 223; learning_rate_init = 0.330182353029; len(hidden_layer_sizes) = 2; solver = adam,f1 and cv,0.436 +- 0.717\r\n192,dt,criterion = entropy; max_depth = 7; max_features = 0.163511255284; min_samples_leaf = 2; min_samples_split = 4,f1 and cv,0.567 +- 0.653\r\n193,dt,criterion = entropy; max_depth = 6; max_features = 0.30231712356; min_samples_leaf = 1; min_samples_split = 4,f1 and cv,0.737 +- 0.374\r\n194,knn,_scale = True; algorithm = ball_tree; leaf_size = 34; metric = manhattan; n_neighbors = 2; weights = uniform,f1 and cv,0.709 +- 0.313\r\n195,knn,_scale = True; algorithm = ball_tree; leaf_size = 11; metric = manhattan; n_neighbors = 2; weights = uniform,f1 and cv,0.748 +- 0.149\r\n196,mlp,_scale = True; activation = identity; alpha = 0.00121727411285; batch_size = auto; hidden_layer_sizes[0] = 12; hidden_layer_sizes[1] = 64; hidden_layer_sizes[2] = 209; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.790 +- 0.232\r\n197,mlp,_scale = True; activation = identity; alpha = 0.00557906441868; batch_size = auto; hidden_layer_sizes[0] = 102; hidden_layer_sizes[1] = 297; hidden_layer_sizes[2] = 168; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.710 +- 0.247\r\n198,knn,_scale = True; algorithm = kd_tree; leaf_size = 23; metric = chebyshev; n_neighbors = 8; weights = distance,f1 and cv,0.509 +- 0.833\r\n199,knn,_scale = True; algorithm = kd_tree; leaf_size = 38; metric = chebyshev; n_neighbors = 14; weights = distance,f1 and cv,0.716 +- 0.129\r\n"
  },
  {
    "path": "public/viz/datarun1_grid.csv",
    "content": "trail ID,method,parameters,metrics,performance\r\n0,knn,_scale = True; algorithm = brute; metric = manhattan; n_neighbors = 13; weights = distance,f1 and cv,0.749 +- 0.464\r\n1,knn,_scale = True; algorithm = ball_tree; leaf_size = 38; metric = euclidean; n_neighbors = 10; weights = distance,f1 and cv,0.704 +- 0.265\r\n2,knn,_scale = True; algorithm = ball_tree; leaf_size = 32; metric = minkowski; n_neighbors = 8; p = 3; weights = uniform,f1 and cv,0.817 +- 0.306\r\n3,knn,_scale = True; algorithm = kd_tree; leaf_size = 4; metric = euclidean; n_neighbors = 5; weights = uniform,f1 and cv,0.791 +- 0.079\r\n4,logreg,C = 0.000187053924899; _scale = True; class_weight = balanced; dual = False; fit_intercept = False; penalty = l2; tol = 0.0034814857662,f1 and cv,0.664 +- 0.442\r\n5,logreg,C = 2335.37517726; _scale = True; class_weight = balanced; fit_intercept = True; penalty = l1; tol = 5208.03307363,f1 and cv,0.000 +- 0.000\r\n6,logreg,C = 160.105625083; _scale = True; class_weight = balanced; dual = True; fit_intercept = True; penalty = l2; tol = 0.0819182525731,f1 and cv,0.745 +- 0.107\r\n7,dt,criterion = entropy; max_depth = 5; max_features = 0.781478174182; min_samples_leaf = 1; min_samples_split = 2,f1 and cv,0.585 +- 0.451\r\n8,knn,_scale = True; algorithm = kd_tree; leaf_size = 49; metric = euclidean; n_neighbors = 18; weights = distance,f1 and cv,0.531 +- 0.717\r\n9,knn,_scale = True; algorithm = kd_tree; leaf_size = 17; metric = manhattan; n_neighbors = 12; weights = distance,f1 and cv,0.686 +- 0.187\r\n10,knn,_scale = True; algorithm = brute; metric = manhattan; n_neighbors = 15; weights = uniform,f1 and cv,0.786 +- 0.297\r\n11,logreg,C = 3647.55069827; _scale = True; class_weight = balanced; dual = False; fit_intercept = True; penalty = l2; tol = 0.448237732321,f1 and cv,0.769 +- 0.217\r\n12,dt,criterion = entropy; max_depth = 10; max_features = 0.913382063114; min_samples_leaf = 2; min_samples_split = 4,f1 and cv,0.649 +- 0.182\r\n13,knn,_scale = True; algorithm = ball_tree; leaf_size = 37; metric = minkowski; n_neighbors = 3; p = 3; weights = distance,f1 and cv,0.740 +- 0.527\r\n14,dt,criterion = entropy; max_depth = 5; max_features = 0.325846823079; min_samples_leaf = 1; min_samples_split = 2,f1 and cv,0.736 +- 0.283\r\n15,knn,_scale = True; algorithm = kd_tree; leaf_size = 2; metric = chebyshev; n_neighbors = 3; weights = uniform,f1 and cv,0.691 +- 0.424\r\n16,knn,_scale = True; algorithm = kd_tree; leaf_size = 27; metric = manhattan; n_neighbors = 8; weights = uniform,f1 and cv,0.730 +- 0.496\r\n17,knn,_scale = True; algorithm = ball_tree; leaf_size = 35; metric = minkowski; n_neighbors = 12; p = 1; weights = uniform,f1 and cv,0.793 +- 0.184\r\n18,logreg,C = 2.25465797942e-05; _scale = True; class_weight = balanced; fit_intercept = True; penalty = l1; tol = 98.8424586631,f1 and cv,0.000 +- 0.000\r\n19,logreg,C = 2593.12551929; _scale = True; class_weight = balanced; fit_intercept = True; penalty = l1; tol = 10437.0432791,f1 and cv,0.000 +- 0.000\r\n20,knn,_scale = True; algorithm = kd_tree; leaf_size = 23; metric = chebyshev; n_neighbors = 10; weights = distance,f1 and cv,0.604 +- 0.403\r\n21,logreg,C = 1.35334969088e-05; _scale = True; class_weight = balanced; dual = True; fit_intercept = True; penalty = l2; tol = 0.000448639710882,f1 and cv,0.729 +- 0.201\r\n22,knn,_scale = True; algorithm = ball_tree; leaf_size = 19; metric = manhattan; n_neighbors = 20; weights = distance,f1 and cv,0.648 +- 0.224\r\n23,knn,_scale = True; algorithm = ball_tree; leaf_size = 1; metric = chebyshev; n_neighbors = 7; weights = distance,f1 and cv,0.671 +- 0.142\r\n24,dt,criterion = entropy; max_depth = 10; max_features = 0.497398625415; min_samples_leaf = 2; min_samples_split = 2,f1 and cv,0.639 +- 0.317\r\n25,logreg,C = 0.00183903257216; _scale = True; class_weight = balanced; dual = False; fit_intercept = True; penalty = l2; tol = 0.000134398031491,f1 and cv,0.647 +- 0.462\r\n26,knn,_scale = True; algorithm = brute; metric = manhattan; n_neighbors = 19; weights = distance,f1 and cv,0.816 +- 0.104\r\n27,logreg,C = 0.017394914513; _scale = True; class_weight = balanced; dual = False; fit_intercept = False; penalty = l2; tol = 0.0703048129884,f1 and cv,0.698 +- 0.347\r\n28,knn,_scale = True; algorithm = kd_tree; leaf_size = 27; metric = manhattan; n_neighbors = 12; weights = uniform,f1 and cv,0.567 +- 0.670\r\n29,logreg,C = 720.35958696; _scale = True; class_weight = balanced; dual = False; fit_intercept = True; penalty = l2; tol = 860.875802944,f1 and cv,0.000 +- 0.000\r\n30,knn,_scale = True; algorithm = brute; metric = chebyshev; n_neighbors = 7; weights = distance,f1 and cv,0.631 +- 0.330\r\n31,knn,_scale = True; algorithm = ball_tree; leaf_size = 45; metric = chebyshev; n_neighbors = 3; weights = distance,f1 and cv,0.611 +- 0.420\r\n32,knn,_scale = True; algorithm = ball_tree; leaf_size = 39; metric = manhattan; n_neighbors = 16; weights = distance,f1 and cv,0.700 +- 0.374\r\n33,knn,_scale = True; algorithm = kd_tree; leaf_size = 27; metric = manhattan; n_neighbors = 5; weights = uniform,f1 and cv,0.770 +- 0.173\r\n34,logreg,C = 2.03125993463; _scale = True; class_weight = balanced; dual = True; fit_intercept = True; penalty = l2; tol = 0.00113450587983,f1 and cv,0.641 +- 0.271\r\n35,logreg,C = 3.04936416576; _scale = True; class_weight = balanced; fit_intercept = True; penalty = l1; tol = 11.3252664914,f1 and cv,0.000 +- 0.000\r\n36,knn,_scale = True; algorithm = brute; metric = minkowski; n_neighbors = 5; p = 3; weights = distance,f1 and cv,0.716 +- 0.235\r\n37,knn,_scale = True; algorithm = kd_tree; leaf_size = 22; metric = euclidean; n_neighbors = 6; weights = uniform,f1 and cv,0.779 +- 0.313\r\n38,knn,_scale = True; algorithm = brute; metric = manhattan; n_neighbors = 20; weights = distance,f1 and cv,0.780 +- 0.134\r\n39,knn,_scale = True; algorithm = kd_tree; leaf_size = 4; metric = euclidean; n_neighbors = 5; weights = uniform,f1 and cv,0.655 +- 0.374\r\n40,dt,criterion = gini; max_depth = 3; max_features = 0.410278290867; min_samples_leaf = 3; min_samples_split = 2,f1 and cv,0.684 +- 0.190\r\n41,dt,criterion = entropy; max_depth = 10; max_features = 0.379779506067; min_samples_leaf = 1; min_samples_split = 3,f1 and cv,0.694 +- 0.253\r\n42,knn,_scale = True; algorithm = kd_tree; leaf_size = 9; metric = euclidean; n_neighbors = 7; weights = uniform,f1 and cv,0.709 +- 0.288\r\n43,knn,_scale = True; algorithm = ball_tree; leaf_size = 26; metric = euclidean; n_neighbors = 8; weights = uniform,f1 and cv,0.731 +- 0.163\r\n44,knn,_scale = True; algorithm = ball_tree; leaf_size = 7; metric = chebyshev; n_neighbors = 11; weights = distance,f1 and cv,0.768 +- 0.208\r\n45,knn,_scale = True; algorithm = ball_tree; leaf_size = 13; metric = manhattan; n_neighbors = 5; weights = uniform,f1 and cv,0.698 +- 0.266\r\n46,knn,_scale = True; algorithm = brute; metric = manhattan; n_neighbors = 7; weights = distance,f1 and cv,0.727 +- 0.262\r\n47,knn,_scale = True; algorithm = kd_tree; leaf_size = 16; metric = minkowski; n_neighbors = 15; p = 3; weights = distance,f1 and cv,0.621 +- 0.265\r\n48,knn,_scale = True; algorithm = kd_tree; leaf_size = 46; metric = euclidean; n_neighbors = 7; weights = distance,f1 and cv,0.620 +- 0.742\r\n49,knn,_scale = True; algorithm = kd_tree; leaf_size = 47; metric = manhattan; n_neighbors = 6; weights = distance,f1 and cv,0.748 +- 0.365\r\n50,knn,_scale = True; algorithm = brute; metric = chebyshev; n_neighbors = 16; weights = distance,f1 and cv,0.646 +- 0.138\r\n51,knn,_scale = True; algorithm = kd_tree; leaf_size = 31; metric = chebyshev; n_neighbors = 20; weights = uniform,f1 and cv,0.746 +- 0.254\r\n52,knn,_scale = True; algorithm = ball_tree; leaf_size = 20; metric = chebyshev; n_neighbors = 3; weights = distance,f1 and cv,0.732 +- 0.280\r\n53,knn,_scale = True; algorithm = ball_tree; leaf_size = 5; metric = minkowski; n_neighbors = 16; p = 2; weights = distance,f1 and cv,0.749 +- 0.235\r\n54,knn,_scale = True; algorithm = brute; metric = euclidean; n_neighbors = 10; weights = uniform,f1 and cv,0.678 +- 0.174\r\n55,knn,_scale = True; algorithm = brute; metric = manhattan; n_neighbors = 18; weights = distance,f1 and cv,0.815 +- 0.243\r\n56,knn,_scale = True; algorithm = brute; metric = chebyshev; n_neighbors = 16; weights = uniform,f1 and cv,0.586 +- 0.347\r\n57,knn,_scale = True; algorithm = ball_tree; leaf_size = 33; metric = manhattan; n_neighbors = 18; weights = distance,f1 and cv,0.636 +- 0.426\r\n58,knn,_scale = True; algorithm = brute; metric = euclidean; n_neighbors = 10; weights = uniform,f1 and cv,0.718 +- 0.317\r\n59,knn,_scale = True; algorithm = kd_tree; leaf_size = 26; metric = minkowski; n_neighbors = 10; p = 2; weights = distance,f1 and cv,0.614 +- 0.635\r\n60,knn,_scale = True; algorithm = ball_tree; leaf_size = 1; metric = minkowski; n_neighbors = 3; p = 1; weights = uniform,f1 and cv,0.756 +- 0.303\r\n61,logreg,C = 3.41536388184e-05; _scale = True; class_weight = balanced; dual = True; fit_intercept = True; penalty = l2; tol = 0.000706626237088,f1 and cv,0.760 +- 0.261\r\n62,knn,_scale = True; algorithm = brute; metric = minkowski; n_neighbors = 18; p = 3; weights = uniform,f1 and cv,0.748 +- 0.302\r\n63,knn,_scale = True; algorithm = ball_tree; leaf_size = 1; metric = manhattan; n_neighbors = 13; weights = distance,f1 and cv,0.758 +- 0.288\r\n64,knn,_scale = True; algorithm = ball_tree; leaf_size = 32; metric = chebyshev; n_neighbors = 9; weights = uniform,f1 and cv,0.527 +- 0.560\r\n65,logreg,C = 0.000881758281515; _scale = True; class_weight = balanced; dual = False; fit_intercept = False; penalty = l2; tol = 1.48094272547e-05,f1 and cv,0.513 +- 0.668\r\n66,dt,criterion = gini; max_depth = 5; max_features = 0.522434815905; min_samples_leaf = 1; min_samples_split = 2,f1 and cv,0.584 +- 0.452\r\n67,knn,_scale = True; algorithm = brute; metric = chebyshev; n_neighbors = 6; weights = uniform,f1 and cv,0.616 +- 0.444\r\n68,logreg,C = 143.056895445; _scale = True; class_weight = balanced; fit_intercept = False; penalty = l1; tol = 0.00424864328362,f1 and cv,0.805 +- 0.123\r\n69,knn,_scale = True; algorithm = ball_tree; leaf_size = 17; metric = minkowski; n_neighbors = 13; p = 1; weights = uniform,f1 and cv,0.749 +- 0.100\r\n70,logreg,C = 0.0206281857645; _scale = True; class_weight = balanced; dual = True; fit_intercept = False; penalty = l2; tol = 5.35095733943e-05,f1 and cv,0.757 +- 0.240\r\n71,knn,_scale = True; algorithm = ball_tree; leaf_size = 38; metric = euclidean; n_neighbors = 16; weights = uniform,f1 and cv,0.780 +- 0.321\r\n72,knn,_scale = True; algorithm = brute; metric = minkowski; n_neighbors = 8; p = 3; weights = distance,f1 and cv,0.668 +- 0.302\r\n73,knn,_scale = True; algorithm = kd_tree; leaf_size = 40; metric = minkowski; n_neighbors = 3; p = 1; weights = distance,f1 and cv,0.642 +- 0.251\r\n74,knn,_scale = True; algorithm = ball_tree; leaf_size = 31; metric = chebyshev; n_neighbors = 9; weights = uniform,f1 and cv,0.500 +- 0.587\r\n75,knn,_scale = True; algorithm = ball_tree; leaf_size = 43; metric = manhattan; n_neighbors = 1; weights = distance,f1 and cv,0.755 +- 0.121\r\n76,knn,_scale = True; algorithm = ball_tree; leaf_size = 31; metric = manhattan; n_neighbors = 18; weights = distance,f1 and cv,0.671 +- 0.704\r\n77,knn,_scale = True; algorithm = brute; metric = chebyshev; n_neighbors = 12; weights = uniform,f1 and cv,0.632 +- 0.225\r\n78,logreg,C = 0.000595902947969; _scale = True; class_weight = balanced; dual = True; fit_intercept = False; penalty = l2; tol = 1.04172722169e-05,f1 and cv,0.718 +- 0.336\r\n79,knn,_scale = True; algorithm = kd_tree; leaf_size = 39; metric = minkowski; n_neighbors = 9; p = 1; weights = distance,f1 and cv,0.717 +- 0.082\r\n80,knn,_scale = True; algorithm = ball_tree; leaf_size = 32; metric = euclidean; n_neighbors = 11; weights = distance,f1 and cv,0.760 +- 0.432\r\n81,knn,_scale = True; algorithm = kd_tree; leaf_size = 12; metric = manhattan; n_neighbors = 14; weights = distance,f1 and cv,0.620 +- 0.482\r\n82,logreg,C = 39737.1240377; _scale = True; class_weight = balanced; fit_intercept = True; penalty = l1; tol = 22796.4475141,f1 and cv,0.000 +- 0.000\r\n83,knn,_scale = True; algorithm = brute; metric = manhattan; n_neighbors = 9; weights = distance,f1 and cv,0.680 +- 0.259\r\n84,knn,_scale = True; algorithm = kd_tree; leaf_size = 22; metric = manhattan; n_neighbors = 19; weights = distance,f1 and cv,0.791 +- 0.300\r\n85,knn,_scale = True; algorithm = kd_tree; leaf_size = 25; metric = chebyshev; n_neighbors = 19; weights = uniform,f1 and cv,0.691 +- 0.157\r\n86,knn,_scale = True; algorithm = brute; metric = minkowski; n_neighbors = 17; p = 1; weights = uniform,f1 and cv,0.757 +- 0.180\r\n87,knn,_scale = True; algorithm = ball_tree; leaf_size = 15; metric = chebyshev; n_neighbors = 13; weights = uniform,f1 and cv,0.711 +- 0.079\r\n88,knn,_scale = True; algorithm = brute; metric = euclidean; n_neighbors = 19; weights = distance,f1 and cv,0.732 +- 0.087\r\n89,knn,_scale = True; algorithm = brute; metric = euclidean; n_neighbors = 10; weights = distance,f1 and cv,0.701 +- 0.334\r\n90,logreg,C = 810.212983363; _scale = True; class_weight = balanced; dual = True; fit_intercept = False; penalty = l2; tol = 0.0254460704707,f1 and cv,0.731 +- 0.194\r\n91,knn,_scale = True; algorithm = kd_tree; leaf_size = 24; metric = minkowski; n_neighbors = 13; p = 3; weights = uniform,f1 and cv,0.541 +- 0.560\r\n92,logreg,C = 4.98491618564; _scale = True; class_weight = balanced; fit_intercept = False; penalty = l1; tol = 2120.19924658,f1 and cv,0.000 +- 0.000\r\n93,knn,_scale = True; algorithm = brute; metric = euclidean; n_neighbors = 15; weights = uniform,f1 and cv,0.783 +- 0.080\r\n94,knn,_scale = True; algorithm = brute; metric = manhattan; n_neighbors = 15; weights = uniform,f1 and cv,0.576 +- 0.635\r\n95,knn,_scale = True; algorithm = brute; metric = chebyshev; n_neighbors = 5; weights = distance,f1 and cv,0.713 +- 0.227\r\n96,knn,_scale = True; algorithm = kd_tree; leaf_size = 20; metric = euclidean; n_neighbors = 19; weights = uniform,f1 and cv,0.748 +- 0.121\r\n97,knn,_scale = True; algorithm = brute; metric = euclidean; n_neighbors = 2; weights = distance,f1 and cv,0.731 +- 0.271\r\n98,logreg,C = 0.0049368197232; _scale = True; class_weight = balanced; dual = True; fit_intercept = False; penalty = l2; tol = 0.413574153029,f1 and cv,0.784 +- 0.103\r\n99,logreg,C = 65.2333401319; _scale = True; class_weight = balanced; dual = True; fit_intercept = False; penalty = l2; tol = 80.4831976789,f1 and cv,0.680 +- 0.412\r\n"
  },
  {
    "path": "public/viz/datarun2_gp.csv",
    "content": "trail ID,method,parameters,metrics,performance\r\n0,mlp,_scale = True; activation = logistic; alpha = 0.00799991890745; batch_size = auto; hidden_layer_sizes[0] = 56; hidden_layer_sizes[1] = 24; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.748 +- 0.164\r\n1,mlp,_scale = True; activation = logistic; alpha = 0.00849143103282; batch_size = auto; hidden_layer_sizes[0] = 99; hidden_layer_sizes[1] = 62; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.735 +- 0.184\r\n2,mlp,_scale = True; activation = logistic; alpha = 0.00177045733688; batch_size = auto; hidden_layer_sizes[0] = 55; hidden_layer_sizes[1] = 29; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.691 +- 0.157\r\n3,mlp,_scale = True; activation = logistic; alpha = 0.00723514242738; batch_size = auto; hidden_layer_sizes[0] = 57; hidden_layer_sizes[1] = 21; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.760 +- 0.171\r\n4,mlp,_scale = True; activation = identity; alpha = 0.00547161489348; batch_size = auto; hidden_layer_sizes[0] = 209; learning_rate = invscaling; learning_rate_init = 0.650260689975; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.682 +- 0.105\r\n5,mlp,_scale = True; activation = identity; alpha = 0.00899195208914; batch_size = auto; hidden_layer_sizes[0] = 64; learning_rate = invscaling; learning_rate_init = 0.731561837323; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.609 +- 0.387\r\n6,mlp,_scale = True; activation = identity; alpha = 0.00234238712992; batch_size = auto; hidden_layer_sizes[0] = 209; learning_rate = invscaling; learning_rate_init = 0.465202580375; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.736 +- 0.259\r\n7,knn,_scale = True; algorithm = brute; metric = manhattan; n_neighbors = 15; weights = distance,f1 and cv,0.780 +- 0.278\r\n8,knn,_scale = True; algorithm = brute; metric = manhattan; n_neighbors = 8; weights = distance,f1 and cv,0.674 +- 0.146\r\n9,knn,_scale = True; algorithm = brute; metric = manhattan; n_neighbors = 15; weights = distance,f1 and cv,0.589 +- 0.305\r\n10,mlp,_scale = True; activation = tanh; alpha = 0.00224178522662; batch_size = auto; hidden_layer_sizes[0] = 239; hidden_layer_sizes[1] = 218; learning_rate = invscaling; learning_rate_init = 0.344309618261; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.791 +- 0.079\r\n11,mlp,_scale = True; activation = tanh; alpha = 0.00427765774483; batch_size = auto; hidden_layer_sizes[0] = 246; hidden_layer_sizes[1] = 184; learning_rate = invscaling; learning_rate_init = 0.0273710171825; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.735 +- 0.498\r\n12,mlp,_scale = True; activation = tanh; alpha = 0.00526485272616; batch_size = auto; hidden_layer_sizes[0] = 237; hidden_layer_sizes[1] = 218; learning_rate = invscaling; learning_rate_init = 0.879873731867; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.755 +- 0.121\r\n13,mlp,_scale = True; activation = tanh; alpha = 0.000634821692555; batch_size = auto; hidden_layer_sizes[0] = 149; hidden_layer_sizes[1] = 6; learning_rate = adaptive; learning_rate_init = 0.277926847527; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.785 +- 0.423\r\n14,mlp,_scale = True; activation = tanh; alpha = 0.00660553229005; batch_size = auto; hidden_layer_sizes[0] = 165; hidden_layer_sizes[1] = 112; learning_rate = adaptive; learning_rate_init = 0.867735422342; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.712 +- 0.130\r\n15,mlp,_scale = True; activation = tanh; alpha = 0.00371911388751; batch_size = auto; hidden_layer_sizes[0] = 148; hidden_layer_sizes[1] = 4; learning_rate = adaptive; learning_rate_init = 0.122456112659; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.707 +- 0.166\r\n16,mlp,_scale = True; activation = relu; alpha = 0.00392350082244; batch_size = auto; beta_1 = 0.914223423245; beta_2 = 0.858754257734; hidden_layer_sizes[0] = 237; hidden_layer_sizes[1] = 229; hidden_layer_sizes[2] = 67; learning_rate_init = 0.175696655355; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.594 +- 0.620\r\n17,mlp,_scale = True; activation = relu; alpha = 0.000295211950158; batch_size = auto; beta_1 = 0.917406288989; beta_2 = 0.860898038173; hidden_layer_sizes[0] = 39; hidden_layer_sizes[1] = 287; hidden_layer_sizes[2] = 51; learning_rate_init = 0.559862026703; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.213 +- 0.549\r\n18,gp,alpha = 0.041501904705; kernel = rational_quadratic; length_scale = 14.3432879364,f1 and cv,0.712 +- 0.348\r\n19,gp,alpha = 0.773879362873; kernel = rational_quadratic; length_scale = 0.0330209564233,f1 and cv,0.614 +- 0.267\r\n20,mlp,_scale = True; activation = identity; alpha = 0.00562597823112; batch_size = auto; hidden_layer_sizes[0] = 33; hidden_layer_sizes[1] = 195; hidden_layer_sizes[2] = 98; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.575 +- 0.348\r\n21,mlp,_scale = True; activation = identity; alpha = 0.00806297352457; batch_size = auto; hidden_layer_sizes[0] = 170; hidden_layer_sizes[1] = 114; hidden_layer_sizes[2] = 63; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.673 +- 0.171\r\n22,mlp,_scale = True; activation = logistic; alpha = 0.00160751379346; batch_size = auto; hidden_layer_sizes[0] = 218; hidden_layer_sizes[1] = 27; hidden_layer_sizes[2] = 67; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.694 +- 0.109\r\n23,mlp,_scale = True; activation = logistic; alpha = 0.00837727401381; batch_size = auto; hidden_layer_sizes[0] = 22; hidden_layer_sizes[1] = 245; hidden_layer_sizes[2] = 194; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.797 +- 0.311\r\n24,mlp,_scale = True; activation = logistic; alpha = 0.00879886663304; batch_size = auto; hidden_layer_sizes[0] = 243; hidden_layer_sizes[1] = 221; hidden_layer_sizes[2] = 250; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.766 +- 0.186\r\n25,knn,_scale = True; algorithm = ball_tree; leaf_size = 42; metric = euclidean; n_neighbors = 17; weights = uniform,f1 and cv,0.807 +- 0.284\r\n26,knn,_scale = True; algorithm = ball_tree; leaf_size = 4; metric = euclidean; n_neighbors = 13; weights = uniform,f1 and cv,0.682 +- 0.382\r\n27,mnb,_scale_minmax = True; alpha = 0.822696871672; class_prior = None; fit_prior = 0,f1 and cv,0.780 +- 0.234\r\n28,mnb,_scale_minmax = True; alpha = 0.955370128562; class_prior = None; fit_prior = 0,f1 and cv,0.664 +- 0.437\r\n29,dt,criterion = gini; max_depth = 7; max_features = 0.676782742212; min_samples_leaf = 2; min_samples_split = 2,f1 and cv,0.745 +- 0.277\r\n30,dt,criterion = gini; max_depth = 3; max_features = 0.979277036136; min_samples_leaf = 3; min_samples_split = 2,f1 and cv,0.760 +- 0.348\r\n31,logreg,C = 0.00528614608449; _scale = True; class_weight = balanced; dual = True; fit_intercept = False; penalty = l2; tol = 7.63521491081,f1 and cv,0.708 +- 0.381\r\n32,logreg,C = 1.87012501354; _scale = True; class_weight = balanced; dual = True; fit_intercept = False; penalty = l2; tol = 0.038350775541,f1 and cv,0.782 +- 0.149\r\n33,mlp,_scale = True; activation = relu; alpha = 0.00376390194408; batch_size = auto; hidden_layer_sizes[0] = 94; learning_rate = invscaling; learning_rate_init = 0.380382485648; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.719 +- 0.155\r\n34,mlp,_scale = True; activation = relu; alpha = 0.00206755077975; batch_size = auto; hidden_layer_sizes[0] = 70; learning_rate = invscaling; learning_rate_init = 0.4049758173; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.793 +- 0.158\r\n35,mlp,_scale = True; activation = relu; alpha = 0.00664538442617; batch_size = auto; hidden_layer_sizes[0] = 274; hidden_layer_sizes[1] = 118; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.809 +- 0.112\r\n36,mlp,_scale = True; activation = relu; alpha = 0.00718100709273; batch_size = auto; hidden_layer_sizes[0] = 41; hidden_layer_sizes[1] = 165; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.742 +- 0.260\r\n37,mlp,_scale = True; activation = identity; alpha = 0.00871607173955; batch_size = auto; hidden_layer_sizes[0] = 6; hidden_layer_sizes[1] = 290; hidden_layer_sizes[2] = 293; learning_rate = adaptive; learning_rate_init = 0.942419045492; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.000 +- 0.000\r\n38,mlp,_scale = True; activation = relu; alpha = 0.00833505964486; batch_size = auto; hidden_layer_sizes[0] = 9; hidden_layer_sizes[1] = 122; learning_rate = adaptive; learning_rate_init = 0.784859303991; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.638 +- 0.339\r\n39,mlp,_scale = True; activation = relu; alpha = 0.006648665153; batch_size = auto; hidden_layer_sizes[0] = 180; hidden_layer_sizes[1] = 15; learning_rate = adaptive; learning_rate_init = 0.562082568671; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.658 +- 0.221\r\n40,mlp,_scale = True; activation = identity; alpha = 0.00792512283525; batch_size = auto; hidden_layer_sizes[0] = 25; hidden_layer_sizes[1] = 292; hidden_layer_sizes[2] = 22; learning_rate = constant; learning_rate_init = 0.788690042474; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.367 +- 0.442\r\n41,mlp,_scale = True; activation = identity; alpha = 0.00688422258512; batch_size = auto; hidden_layer_sizes[0] = 288; hidden_layer_sizes[1] = 260; hidden_layer_sizes[2] = 238; learning_rate = constant; learning_rate_init = 0.77218536964; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.360 +- 0.406\r\n42,knn,_scale = True; algorithm = kd_tree; leaf_size = 27; metric = chebyshev; n_neighbors = 16; weights = uniform,f1 and cv,0.679 +- 0.154\r\n43,knn,_scale = True; algorithm = kd_tree; leaf_size = 33; metric = chebyshev; n_neighbors = 18; weights = uniform,f1 and cv,0.705 +- 0.228\r\n44,mlp,_scale = True; activation = relu; alpha = 0.00829106098594; batch_size = auto; hidden_layer_sizes[0] = 37; hidden_layer_sizes[1] = 118; learning_rate = constant; learning_rate_init = 0.455241704563; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.716 +- 0.415\r\n45,mlp,_scale = True; activation = relu; alpha = 0.00233838412282; batch_size = auto; hidden_layer_sizes[0] = 12; hidden_layer_sizes[1] = 24; learning_rate = constant; learning_rate_init = 0.58136369656; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.655 +- 0.119\r\n46,gp,kernel = exp_sine_squared; length_scale = 0.286115700759; periodicity = 1,f1 and cv,0.493 +- 0.441\r\n47,gp,kernel = exp_sine_squared; length_scale = 0.0757682044306; periodicity = 1,f1 and cv,0.479 +- 0.506\r\n48,mlp,_scale = True; activation = identity; alpha = 0.00811391645532; batch_size = auto; beta_1 = 0.970126220631; beta_2 = 0.995982659475; hidden_layer_sizes[0] = 277; learning_rate_init = 0.683438765367; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.847 +- 0.059\r\n49,mlp,_scale = True; activation = identity; alpha = 0.00659411144259; batch_size = auto; beta_1 = 0.905504262224; beta_2 = 0.821045183661; hidden_layer_sizes[0] = 85; learning_rate_init = 0.504346221191; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.713 +- 0.466\r\n50,logreg,C = 0.197368621397; _scale = True; class_weight = balanced; fit_intercept = True; penalty = l1; tol = 64.4595613216,f1 and cv,0.000 +- 0.000\r\n51,mlp,_scale = True; activation = relu; alpha = 0.00153881672492; batch_size = auto; hidden_layer_sizes[0] = 115; hidden_layer_sizes[1] = 227; hidden_layer_sizes[2] = 104; learning_rate = invscaling; learning_rate_init = 0.0393098031832; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.806 +- 0.533\r\n52,mlp,_scale = True; activation = relu; alpha = 0.00816849554577; batch_size = auto; hidden_layer_sizes[0] = 250; hidden_layer_sizes[1] = 85; hidden_layer_sizes[2] = 128; learning_rate = invscaling; learning_rate_init = 0.615046869676; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.674 +- 0.293\r\n53,mlp,_scale = True; activation = tanh; alpha = 0.00360979808843; batch_size = auto; beta_1 = 0.855599296801; beta_2 = 0.856429648316; hidden_layer_sizes[0] = 179; hidden_layer_sizes[1] = 53; learning_rate_init = 0.929951980019; len(hidden_layer_sizes) = 2; solver = adam,f1 and cv,0.577 +- 0.292\r\n54,mlp,_scale = True; activation = tanh; alpha = 0.0058900276749; batch_size = auto; beta_1 = 0.89139590446; beta_2 = 0.844801556636; hidden_layer_sizes[0] = 170; hidden_layer_sizes[1] = 150; learning_rate_init = 0.327819358042; len(hidden_layer_sizes) = 2; solver = adam,f1 and cv,0.569 +- 0.418\r\n55,mlp,_scale = True; activation = logistic; alpha = 0.00408815617237; batch_size = auto; hidden_layer_sizes[0] = 149; hidden_layer_sizes[1] = 9; learning_rate = constant; learning_rate_init = 0.609590912397; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.831 +- 0.221\r\n56,mlp,_scale = True; activation = logistic; alpha = 0.000300185642587; batch_size = auto; hidden_layer_sizes[0] = 91; hidden_layer_sizes[1] = 129; learning_rate = constant; learning_rate_init = 0.709215361944; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.379 +- 0.621\r\n57,mlp,_scale = True; activation = relu; alpha = 0.0030438878624; batch_size = auto; hidden_layer_sizes[0] = 81; learning_rate = constant; learning_rate_init = 0.905282464084; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.673 +- 0.232\r\n58,mlp,_scale = True; activation = relu; alpha = 0.00146693288878; batch_size = auto; hidden_layer_sizes[0] = 189; learning_rate = constant; learning_rate_init = 0.898892816545; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.841 +- 0.290\r\n59,knn,_scale = True; algorithm = brute; metric = minkowski; n_neighbors = 10; p = 1; weights = uniform,f1 and cv,0.650 +- 0.466\r\n60,knn,_scale = True; algorithm = brute; metric = minkowski; n_neighbors = 2; p = 2; weights = uniform,f1 and cv,0.826 +- 0.225\r\n61,knn,_scale = True; algorithm = kd_tree; leaf_size = 10; metric = euclidean; n_neighbors = 6; weights = distance,f1 and cv,0.776 +- 0.187\r\n62,knn,_scale = True; algorithm = kd_tree; leaf_size = 19; metric = euclidean; n_neighbors = 14; weights = distance,f1 and cv,0.733 +- 0.163\r\n63,knn,_scale = True; algorithm = kd_tree; leaf_size = 33; metric = manhattan; n_neighbors = 2; weights = uniform,f1 and cv,0.543 +- 0.732\r\n64,knn,_scale = True; algorithm = kd_tree; leaf_size = 9; metric = manhattan; n_neighbors = 3; weights = uniform,f1 and cv,0.662 +- 0.160\r\n65,logreg,C = 1.44037909643e-05; _scale = True; class_weight = balanced; fit_intercept = False; penalty = l1; tol = 387.70744433,f1 and cv,0.000 +- 0.000\r\n66,mlp,_scale = True; activation = identity; alpha = 0.00398238250451; batch_size = auto; hidden_layer_sizes[0] = 46; learning_rate = constant; learning_rate_init = 0.047364176926; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.730 +- 0.234\r\n67,mlp,_scale = True; activation = identity; alpha = 0.00463099649498; batch_size = auto; hidden_layer_sizes[0] = 107; learning_rate = constant; learning_rate_init = 0.733119060066; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.778 +- 0.281\r\n68,mlp,_scale = True; activation = tanh; alpha = 0.00562018390673; batch_size = auto; hidden_layer_sizes[0] = 87; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.793 +- 0.224\r\n69,mlp,_scale = True; activation = tanh; alpha = 0.00696111712754; batch_size = auto; hidden_layer_sizes[0] = 279; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.594 +- 0.362\r\n70,gp,kernel = constant,f1 and cv,0.707 +- 0.042\r\n71,knn,_scale = True; algorithm = kd_tree; leaf_size = 34; metric = minkowski; n_neighbors = 16; p = 2; weights = distance,f1 and cv,0.715 +- 0.140\r\n72,knn,_scale = True; algorithm = kd_tree; leaf_size = 50; metric = minkowski; n_neighbors = 19; p = 2; weights = distance,f1 and cv,0.688 +- 0.275\r\n73,mlp,_scale = True; activation = relu; alpha = 0.000282349269762; batch_size = auto; beta_1 = 0.852197982746; beta_2 = 0.983418833054; hidden_layer_sizes[0] = 62; learning_rate_init = 0.588627297032; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.819 +- 0.097\r\n74,mlp,_scale = True; activation = relu; alpha = 0.00515144712438; batch_size = auto; beta_1 = 0.994226324379; beta_2 = 0.815806660936; hidden_layer_sizes[0] = 199; learning_rate_init = 0.812129907734; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.661 +- 0.325\r\n75,logreg,C = 2725.12959188; _scale = True; class_weight = balanced; fit_intercept = True; penalty = l1; tol = 5377.22663938,f1 and cv,0.000 +- 0.000\r\n76,mlp,_scale = True; activation = identity; alpha = 0.0062318539897; batch_size = auto; hidden_layer_sizes[0] = 54; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.631 +- 0.319\r\n77,mlp,_scale = True; activation = identity; alpha = 0.00872090939651; batch_size = auto; hidden_layer_sizes[0] = 219; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.623 +- 0.349\r\n78,knn,_scale = True; algorithm = ball_tree; leaf_size = 39; metric = euclidean; n_neighbors = 17; weights = distance,f1 and cv,0.663 +- 0.380\r\n79,knn,_scale = True; algorithm = ball_tree; leaf_size = 45; metric = euclidean; n_neighbors = 10; weights = distance,f1 and cv,0.744 +- 0.193\r\n80,knn,_scale = True; algorithm = kd_tree; leaf_size = 34; metric = manhattan; n_neighbors = 1; weights = distance,f1 and cv,0.498 +- 0.526\r\n81,knn,_scale = True; algorithm = kd_tree; leaf_size = 30; metric = manhattan; n_neighbors = 7; weights = distance,f1 and cv,0.704 +- 0.227\r\n82,gp,kernel = matern; nu = 0.5,f1 and cv,0.514 +- 0.520\r\n83,mlp,_scale = True; activation = tanh; alpha = 0.00883367578485; batch_size = auto; hidden_layer_sizes[0] = 36; hidden_layer_sizes[1] = 177; hidden_layer_sizes[2] = 36; learning_rate = adaptive; learning_rate_init = 0.558670955025; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.785 +- 0.126\r\n84,mlp,_scale = True; activation = tanh; alpha = 0.00583093659719; batch_size = auto; hidden_layer_sizes[0] = 242; hidden_layer_sizes[1] = 206; hidden_layer_sizes[2] = 129; learning_rate = adaptive; learning_rate_init = 0.273588290809; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.595 +- 0.234\r\n85,mlp,_scale = True; activation = identity; alpha = 0.00147185389566; batch_size = auto; hidden_layer_sizes[0] = 15; hidden_layer_sizes[1] = 162; learning_rate = invscaling; learning_rate_init = 0.00589667281794; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.634 +- 0.196\r\n86,mlp,_scale = True; activation = identity; alpha = 0.00146904657447; batch_size = auto; hidden_layer_sizes[0] = 152; hidden_layer_sizes[1] = 39; learning_rate = invscaling; learning_rate_init = 0.501611525757; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.735 +- 0.218\r\n87,knn,_scale = True; algorithm = ball_tree; leaf_size = 18; metric = manhattan; n_neighbors = 16; weights = distance,f1 and cv,0.833 +- 0.230\r\n88,knn,_scale = True; algorithm = ball_tree; leaf_size = 38; metric = manhattan; n_neighbors = 3; weights = distance,f1 and cv,0.719 +- 0.361\r\n89,mlp,_scale = True; activation = relu; alpha = 0.00321551107466; batch_size = auto; beta_1 = 0.806148066701; beta_2 = 0.907200674379; hidden_layer_sizes[0] = 45; hidden_layer_sizes[1] = 195; learning_rate_init = 0.489362033585; len(hidden_layer_sizes) = 2; solver = adam,f1 and cv,0.753 +- 0.316\r\n90,mlp,_scale = True; activation = relu; alpha = 0.00200767805409; batch_size = auto; beta_1 = 0.878324882969; beta_2 = 0.985934115428; hidden_layer_sizes[0] = 266; hidden_layer_sizes[1] = 196; learning_rate_init = 0.109332747323; len(hidden_layer_sizes) = 2; solver = adam,f1 and cv,0.260 +- 0.644\r\n91,mlp,_scale = True; activation = identity; alpha = 0.000627780706672; batch_size = auto; beta_1 = 0.859269935731; beta_2 = 0.857146993073; hidden_layer_sizes[0] = 235; hidden_layer_sizes[1] = 202; hidden_layer_sizes[2] = 173; learning_rate_init = 0.0132779420352; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.735 +- 0.387\r\n92,mlp,_scale = True; activation = identity; alpha = 0.00664294783307; batch_size = auto; beta_1 = 0.895240629973; beta_2 = 0.96121714919; hidden_layer_sizes[0] = 199; hidden_layer_sizes[1] = 2; hidden_layer_sizes[2] = 166; learning_rate_init = 0.184764822357; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.742 +- 0.197\r\n93,knn,_scale = True; algorithm = brute; metric = euclidean; n_neighbors = 11; weights = distance,f1 and cv,0.811 +- 0.237\r\n94,knn,_scale = True; algorithm = brute; metric = euclidean; n_neighbors = 16; weights = distance,f1 and cv,0.821 +- 0.197\r\n95,mlp,_scale = True; activation = tanh; alpha = 0.00447020989052; batch_size = auto; hidden_layer_sizes[0] = 53; learning_rate = invscaling; learning_rate_init = 0.83218879304; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.843 +- 0.238\r\n96,mlp,_scale = True; activation = tanh; alpha = 0.00534383889414; batch_size = auto; hidden_layer_sizes[0] = 130; learning_rate = invscaling; learning_rate_init = 0.317531602371; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.783 +- 0.405\r\n97,knn,_scale = True; algorithm = ball_tree; leaf_size = 13; metric = manhattan; n_neighbors = 11; weights = uniform,f1 and cv,0.765 +- 0.164\r\n98,knn,_scale = True; algorithm = ball_tree; leaf_size = 13; metric = manhattan; n_neighbors = 17; weights = uniform,f1 and cv,0.713 +- 0.498\r\n99,mlp,_scale = True; activation = logistic; alpha = 0.00647870532925; batch_size = auto; beta_1 = 0.899214542024; beta_2 = 0.953020327964; hidden_layer_sizes[0] = 150; hidden_layer_sizes[1] = 273; hidden_layer_sizes[2] = 24; learning_rate_init = 0.513705713727; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.133 +- 0.533\r\n100,mlp,_scale = True; activation = logistic; alpha = 0.00504175802063; batch_size = auto; beta_1 = 0.965923313126; beta_2 = 0.870884989507; hidden_layer_sizes[0] = 169; hidden_layer_sizes[1] = 269; hidden_layer_sizes[2] = 164; learning_rate_init = 0.671616929214; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.565 +- 0.566\r\n101,knn,_scale = True; algorithm = brute; metric = euclidean; n_neighbors = 19; weights = uniform,f1 and cv,0.769 +- 0.298\r\n102,knn,_scale = True; algorithm = brute; metric = euclidean; n_neighbors = 4; weights = uniform,f1 and cv,0.641 +- 0.468\r\n103,mlp,_scale = True; activation = logistic; alpha = 0.00535635609759; batch_size = auto; hidden_layer_sizes[0] = 214; learning_rate = constant; learning_rate_init = 0.476065873624; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.145 +- 0.582\r\n104,mlp,_scale = True; activation = logistic; alpha = 0.00155844793069; batch_size = auto; hidden_layer_sizes[0] = 147; learning_rate = constant; learning_rate_init = 0.515921525931; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.506 +- 0.595\r\n105,mlp,_scale = True; activation = tanh; alpha = 0.00657916092724; batch_size = auto; hidden_layer_sizes[0] = 172; hidden_layer_sizes[1] = 78; learning_rate = constant; learning_rate_init = 0.84120659402; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.713 +- 0.307\r\n106,mlp,_scale = True; activation = tanh; alpha = 0.00631981104713; batch_size = auto; hidden_layer_sizes[0] = 278; hidden_layer_sizes[1] = 113; learning_rate = constant; learning_rate_init = 0.59761438975; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.732 +- 0.529\r\n107,gp,kernel = exp_sine_squared; length_scale = 10.4281777388; periodicity = 0,f1 and cv,0.668 +- 0.239\r\n108,gp,kernel = exp_sine_squared; length_scale = 0.0124348843377; periodicity = 0,f1 and cv,0.324 +- 0.367\r\n109,mlp,_scale = True; activation = tanh; alpha = 0.0071096109221; batch_size = auto; hidden_layer_sizes[0] = 239; hidden_layer_sizes[1] = 179; hidden_layer_sizes[2] = 50; learning_rate = invscaling; learning_rate_init = 0.851048113402; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.722 +- 0.102\r\n110,mlp,_scale = True; activation = tanh; alpha = 0.00624666516271; batch_size = auto; hidden_layer_sizes[0] = 84; hidden_layer_sizes[1] = 289; hidden_layer_sizes[2] = 188; learning_rate = invscaling; learning_rate_init = 0.22508895672; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.707 +- 0.331\r\n111,mlp,_scale = True; activation = logistic; alpha = 0.00545160793444; batch_size = auto; beta_1 = 0.921522650053; beta_2 = 0.885952281926; hidden_layer_sizes[0] = 97; hidden_layer_sizes[1] = 293; learning_rate_init = 0.699397950919; len(hidden_layer_sizes) = 2; solver = adam,f1 and cv,0.410 +- 0.670\r\n112,mlp,_scale = True; activation = logistic; alpha = 0.00773926142465; batch_size = auto; beta_1 = 0.962469816726; beta_2 = 0.857047078236; hidden_layer_sizes[0] = 128; hidden_layer_sizes[1] = 16; learning_rate_init = 0.48692840029; len(hidden_layer_sizes) = 2; solver = adam,f1 and cv,0.417 +- 0.683\r\n113,svm,C = 3.41895813938e-05; _scale = True; cache_size = 15000; class_weight = balanced; kernel = linear; max_iter = 50000; probability = True; shrinking = True,f1 and cv,0.000 +- 0.000\r\n114,knn,_scale = True; algorithm = brute; metric = chebyshev; n_neighbors = 15; weights = uniform,f1 and cv,0.737 +- 0.252\r\n115,knn,_scale = True; algorithm = brute; metric = chebyshev; n_neighbors = 3; weights = uniform,f1 and cv,0.740 +- 0.163\r\n116,mlp,_scale = True; activation = logistic; alpha = 0.00634399261369; batch_size = auto; hidden_layer_sizes[0] = 154; hidden_layer_sizes[1] = 222; hidden_layer_sizes[2] = 251; learning_rate = adaptive; learning_rate_init = 0.650390099442; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.440 +- 0.719\r\n117,mlp,_scale = True; activation = logistic; alpha = 0.0076146680887; batch_size = auto; hidden_layer_sizes[0] = 149; hidden_layer_sizes[1] = 12; hidden_layer_sizes[2] = 255; learning_rate = adaptive; learning_rate_init = 0.404560346859; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.267 +- 0.653\r\n118,svm,C = 0.000620649616089; _scale = True; cache_size = 15000; class_weight = balanced; gamma = 31.6556705129; kernel = rbf; max_iter = 50000; probability = True; shrinking = True,f1 and cv,0.400 +- 0.653\r\n119,svm,C = 0.0022628323725; _scale = True; cache_size = 15000; class_weight = balanced; gamma = 0.105226970249; kernel = rbf; max_iter = 50000; probability = True; shrinking = True,f1 and cv,0.133 +- 0.533\r\n120,mlp,_scale = True; activation = relu; alpha = 0.00569511782952; batch_size = auto; hidden_layer_sizes[0] = 4; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.701 +- 0.148\r\n121,mlp,_scale = True; activation = relu; alpha = 0.00341068824745; batch_size = auto; hidden_layer_sizes[0] = 68; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.715 +- 0.249\r\n122,mlp,_scale = True; activation = logistic; alpha = 0.00109553986077; batch_size = auto; hidden_layer_sizes[0] = 18; learning_rate = invscaling; learning_rate_init = 0.16996237031; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.648 +- 0.076\r\n123,mlp,_scale = True; activation = logistic; alpha = 0.00410451928098; batch_size = auto; hidden_layer_sizes[0] = 267; learning_rate = invscaling; learning_rate_init = 0.497287105842; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.787 +- 0.167\r\n124,knn,_scale = True; algorithm = brute; metric = chebyshev; n_neighbors = 15; weights = distance,f1 and cv,0.702 +- 0.269\r\n125,knn,_scale = True; algorithm = brute; metric = chebyshev; n_neighbors = 14; weights = distance,f1 and cv,0.682 +- 0.139\r\n126,logreg,C = 0.000214886983356; _scale = True; class_weight = balanced; dual = True; fit_intercept = True; penalty = l2; tol = 0.0606697682009,f1 and cv,0.743 +- 0.086\r\n127,logreg,C = 0.0149215712074; _scale = True; class_weight = balanced; dual = True; fit_intercept = True; penalty = l2; tol = 0.013252790367,f1 and cv,0.772 +- 0.200\r\n128,mlp,_scale = True; activation = logistic; alpha = 0.00674379437133; batch_size = auto; hidden_layer_sizes[0] = 234; learning_rate = adaptive; learning_rate_init = 0.315733576239; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.256 +- 0.629\r\n129,mlp,_scale = True; activation = logistic; alpha = 0.00225251596382; batch_size = auto; hidden_layer_sizes[0] = 296; learning_rate = adaptive; learning_rate_init = 0.117927780645; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.400 +- 0.653\r\n130,mlp,_scale = True; activation = tanh; alpha = 0.00250989500273; batch_size = auto; hidden_layer_sizes[0] = 261; hidden_layer_sizes[1] = 29; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.765 +- 0.164\r\n131,mlp,_scale = True; activation = tanh; alpha = 0.00717527438859; batch_size = auto; hidden_layer_sizes[0] = 281; hidden_layer_sizes[1] = 21; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.626 +- 0.161\r\n132,mlp,_scale = True; activation = relu; alpha = 0.00627663522928; batch_size = auto; hidden_layer_sizes[0] = 7; hidden_layer_sizes[1] = 57; hidden_layer_sizes[2] = 287; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.737 +- 0.290\r\n133,mlp,_scale = True; activation = relu; alpha = 0.00877694108375; batch_size = auto; hidden_layer_sizes[0] = 188; hidden_layer_sizes[1] = 285; hidden_layer_sizes[2] = 287; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.719 +- 0.477\r\n134,mlp,_scale = True; activation = logistic; alpha = 0.00573644572307; batch_size = auto; hidden_layer_sizes[0] = 263; hidden_layer_sizes[1] = 108; learning_rate = invscaling; learning_rate_init = 0.409766285581; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.240 +- 0.640\r\n135,mlp,_scale = True; activation = logistic; alpha = 0.000438855779034; batch_size = auto; hidden_layer_sizes[0] = 120; hidden_layer_sizes[1] = 262; learning_rate = invscaling; learning_rate_init = 0.595116141461; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.246 +- 0.603\r\n136,mlp,_scale = True; activation = identity; alpha = 0.00498270430181; batch_size = auto; hidden_layer_sizes[0] = 41; hidden_layer_sizes[1] = 145; learning_rate = adaptive; learning_rate_init = 0.258447206553; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.722 +- 0.491\r\n137,mlp,_scale = True; activation = identity; alpha = 0.00843062651055; batch_size = auto; hidden_layer_sizes[0] = 285; hidden_layer_sizes[1] = 250; learning_rate = adaptive; learning_rate_init = 0.200867030817; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.665 +- 0.248\r\n138,mlp,_scale = True; activation = tanh; alpha = 0.00388333311812; batch_size = auto; beta_1 = 0.871947033336; beta_2 = 0.897936169998; hidden_layer_sizes[0] = 78; hidden_layer_sizes[1] = 184; hidden_layer_sizes[2] = 241; learning_rate_init = 0.339093791529; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.394 +- 0.370\r\n139,mlp,_scale = True; activation = tanh; alpha = 0.00254041083504; batch_size = auto; beta_1 = 0.890001067675; beta_2 = 0.995239587889; hidden_layer_sizes[0] = 134; hidden_layer_sizes[1] = 138; hidden_layer_sizes[2] = 298; learning_rate_init = 0.6329508392; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.720 +- 0.249\r\n140,logreg,C = 0.000169227404116; _scale = True; class_weight = balanced; dual = False; fit_intercept = True; penalty = l2; tol = 4.40641336764e-05,f1 and cv,0.679 +- 0.189\r\n141,logreg,C = 8145.17905037; _scale = True; class_weight = balanced; dual = False; fit_intercept = True; penalty = l2; tol = 1.09895176679,f1 and cv,0.805 +- 0.245\r\n142,mlp,_scale = True; activation = tanh; alpha = 0.00254330722049; batch_size = auto; hidden_layer_sizes[0] = 136; learning_rate = constant; learning_rate_init = 0.917409557426; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.894 +- 0.194\r\n143,mlp,_scale = True; activation = tanh; alpha = 0.00258248944698; batch_size = auto; hidden_layer_sizes[0] = 277; learning_rate = constant; learning_rate_init = 0.0852553336674; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.776 +- 0.231\r\n144,knn,_scale = True; algorithm = kd_tree; leaf_size = 38; metric = chebyshev; n_neighbors = 6; weights = distance,f1 and cv,0.741 +- 0.123\r\n145,knn,_scale = True; algorithm = kd_tree; leaf_size = 7; metric = chebyshev; n_neighbors = 12; weights = distance,f1 and cv,0.715 +- 0.189\r\n146,logreg,C = 5936.16635027; _scale = True; class_weight = balanced; dual = False; fit_intercept = False; penalty = l2; tol = 0.000765762014002,f1 and cv,0.714 +- 0.486\r\n147,logreg,C = 106.176591673; _scale = True; class_weight = balanced; dual = False; fit_intercept = False; penalty = l2; tol = 634.086502893,f1 and cv,0.000 +- 0.000\r\n148,knn,_scale = True; algorithm = ball_tree; leaf_size = 36; metric = minkowski; n_neighbors = 19; p = 2; weights = distance,f1 and cv,0.736 +- 0.138\r\n149,knn,_scale = True; algorithm = ball_tree; leaf_size = 27; metric = minkowski; n_neighbors = 17; p = 2; weights = distance,f1 and cv,0.785 +- 0.149\r\n150,mlp,_scale = True; activation = tanh; alpha = 0.00128966913907; batch_size = auto; hidden_layer_sizes[0] = 156; learning_rate = adaptive; learning_rate_init = 0.393032014951; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.838 +- 0.191\r\n151,mlp,_scale = True; activation = tanh; alpha = 0.00846265747264; batch_size = auto; hidden_layer_sizes[0] = 137; learning_rate = adaptive; learning_rate_init = 0.937994496757; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.648 +- 0.198\r\n152,knn,_scale = True; algorithm = kd_tree; leaf_size = 48; metric = euclidean; n_neighbors = 3; weights = uniform,f1 and cv,0.761 +- 0.347\r\n153,knn,_scale = True; algorithm = kd_tree; leaf_size = 11; metric = euclidean; n_neighbors = 4; weights = uniform,f1 and cv,0.646 +- 0.487\r\n154,svm,C = 0.00967371320032; _scale = True; cache_size = 15000; class_weight = balanced; kernel = linear; max_iter = 50000; probability = True; shrinking = True,f1 and cv,0.699 +- 0.361\r\n155,knn,_scale = True; algorithm = ball_tree; leaf_size = 3; metric = minkowski; n_neighbors = 3; p = 2; weights = uniform,f1 and cv,0.620 +- 0.388\r\n156,knn,_scale = True; algorithm = ball_tree; leaf_size = 3; metric = minkowski; n_neighbors = 10; p = 2; weights = uniform,f1 and cv,0.693 +- 0.136\r\n157,knn,_scale = True; algorithm = brute; metric = minkowski; n_neighbors = 20; p = 3; weights = distance,f1 and cv,0.749 +- 0.297\r\n158,knn,_scale = True; algorithm = brute; metric = minkowski; n_neighbors = 10; p = 1; weights = distance,f1 and cv,0.686 +- 0.187\r\n159,svm,C = 3.08767056789e-05; _scale = True; cache_size = 15000; class_weight = balanced; coef0 = -500; gamma = 0.000157995812159; kernel = sigmoid; max_iter = 50000; probability = True; shrinking = True,f1 and cv,0.000 +- 0.000\r\n160,gp,kernel = rbf,f1 and cv,0.160 +- 0.392\r\n161,mlp,_scale = True; activation = identity; alpha = 0.00409914752862; batch_size = auto; hidden_layer_sizes[0] = 10; hidden_layer_sizes[1] = 124; hidden_layer_sizes[2] = 198; learning_rate = adaptive; learning_rate_init = 0.803910784878; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.000 +- 0.000\r\n162,mlp,_scale = True; activation = relu; alpha = 0.000722975852489; batch_size = auto; hidden_layer_sizes[0] = 18; learning_rate = adaptive; learning_rate_init = 0.0589195024231; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.881 +- 0.162\r\n163,mlp,_scale = True; activation = relu; alpha = 0.00276069690004; batch_size = auto; hidden_layer_sizes[0] = 98; learning_rate = adaptive; learning_rate_init = 0.582401488601; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.682 +- 0.486\r\n164,mlp,_scale = True; activation = identity; alpha = 0.00290322408132; batch_size = auto; hidden_layer_sizes[0] = 145; hidden_layer_sizes[1] = 56; learning_rate = constant; learning_rate_init = 0.630712740026; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.634 +- 0.678\r\n165,mlp,_scale = True; activation = identity; alpha = 0.0059401822615; batch_size = auto; hidden_layer_sizes[0] = 242; hidden_layer_sizes[1] = 69; learning_rate = constant; learning_rate_init = 0.783875604546; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.414 +- 0.524\r\n166,mlp,_scale = True; activation = logistic; alpha = 0.00734691511846; batch_size = auto; beta_1 = 0.979837055634; beta_2 = 0.855015251651; hidden_layer_sizes[0] = 167; learning_rate_init = 0.0168683883515; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.747 +- 0.236\r\n167,mlp,_scale = True; activation = logistic; alpha = 0.00183632302307; batch_size = auto; beta_1 = 0.906403478475; beta_2 = 0.829474115993; hidden_layer_sizes[0] = 53; learning_rate_init = 0.345052614046; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.571 +- 0.628\r\n168,rf,criterion = gini; max_depth = 9; max_features = 0.804958345337; min_samples_leaf = 3; n_estimators = 100; n_jobs = -1,f1 and cv,0.813 +- 0.389\r\n169,rf,criterion = gini; max_depth = 8; max_features = 0.307667280453; min_samples_leaf = 3; n_estimators = 100; n_jobs = -1,f1 and cv,0.848 +- 0.111\r\n170,mlp,_scale = True; activation = relu; alpha = 0.0076573246351; batch_size = auto; hidden_layer_sizes[0] = 73; hidden_layer_sizes[1] = 151; hidden_layer_sizes[2] = 64; learning_rate = constant; learning_rate_init = 0.0473321470211; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.681 +- 0.295\r\n171,mlp,_scale = True; activation = relu; alpha = 0.000685877164814; batch_size = auto; hidden_layer_sizes[0] = 200; hidden_layer_sizes[1] = 273; hidden_layer_sizes[2] = 93; learning_rate = constant; learning_rate_init = 0.779631789596; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.709 +- 0.213\r\n172,svm,C = 227.602880751; _scale = True; cache_size = 15000; class_weight = balanced; coef0 = 334; degree = 5; gamma = 0.000267654535605; kernel = poly; max_iter = 50000; probability = True; shrinking = True,f1 and cv,0.567 +- 0.383\r\n173,svm,C = 7.42631608244; _scale = True; cache_size = 15000; class_weight = balanced; coef0 = 953; degree = 3; gamma = 114.230318384; kernel = poly; max_iter = 50000; probability = True; shrinking = True,f1 and cv,0.831 +- 0.336\r\n174,mlp,_scale = True; activation = logistic; alpha = 0.00456440558355; batch_size = auto; hidden_layer_sizes[0] = 56; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.754 +- 0.107\r\n175,mlp,_scale = True; activation = logistic; alpha = 0.00349695731538; batch_size = auto; hidden_layer_sizes[0] = 299; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.718 +- 0.289\r\n176,mlp,_scale = True; activation = identity; alpha = 0.00645683821149; batch_size = auto; hidden_layer_sizes[0] = 179; learning_rate = adaptive; learning_rate_init = 0.21123025271; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.648 +- 0.479\r\n177,mlp,_scale = True; activation = identity; alpha = 0.00219027581371; batch_size = auto; hidden_layer_sizes[0] = 127; learning_rate = adaptive; learning_rate_init = 0.811623805271; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.642 +- 0.248\r\n178,mlp,_scale = True; activation = logistic; alpha = 0.000441180339435; batch_size = auto; hidden_layer_sizes[0] = 281; hidden_layer_sizes[1] = 294; hidden_layer_sizes[2] = 147; learning_rate = constant; learning_rate_init = 0.937291815316; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.533 +- 0.533\r\n179,mlp,_scale = True; activation = logistic; alpha = 0.000843572763542; batch_size = auto; hidden_layer_sizes[0] = 296; hidden_layer_sizes[1] = 169; hidden_layer_sizes[2] = 6; learning_rate = constant; learning_rate_init = 0.596167630544; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.390 +- 0.505\r\n180,mlp,_scale = True; activation = relu; alpha = 0.00198848567947; batch_size = auto; hidden_layer_sizes[0] = 249; hidden_layer_sizes[1] = 238; hidden_layer_sizes[2] = 194; learning_rate = adaptive; learning_rate_init = 0.905428347836; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.835 +- 0.144\r\n181,mlp,_scale = True; activation = relu; alpha = 0.00633666049544; batch_size = auto; hidden_layer_sizes[0] = 264; hidden_layer_sizes[1] = 85; hidden_layer_sizes[2] = 254; learning_rate = adaptive; learning_rate_init = 0.645189174426; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.753 +- 0.305\r\n182,mlp,_scale = True; activation = tanh; alpha = 0.00264250357265; batch_size = auto; beta_1 = 0.888232994177; beta_2 = 0.93918716222; hidden_layer_sizes[0] = 252; learning_rate_init = 0.633018848284; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.766 +- 0.186\r\n183,mlp,_scale = True; activation = tanh; alpha = 0.00352913577746; batch_size = auto; beta_1 = 0.963429454334; beta_2 = 0.815363692365; hidden_layer_sizes[0] = 264; learning_rate_init = 0.7703991828; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.755 +- 0.329\r\n184,mlp,_scale = True; activation = logistic; alpha = 0.00559135751197; batch_size = auto; hidden_layer_sizes[0] = 64; hidden_layer_sizes[1] = 200; learning_rate = adaptive; learning_rate_init = 0.984715966475; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.279 +- 0.684\r\n185,mlp,_scale = True; activation = logistic; alpha = 0.00602061069601; batch_size = auto; hidden_layer_sizes[0] = 74; hidden_layer_sizes[1] = 52; learning_rate = adaptive; learning_rate_init = 0.438185966665; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.267 +- 0.653\r\n186,mlp,_scale = True; activation = tanh; alpha = 0.00473516959304; batch_size = auto; hidden_layer_sizes[0] = 185; hidden_layer_sizes[1] = 23; hidden_layer_sizes[2] = 298; learning_rate = constant; learning_rate_init = 0.345744308056; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.770 +- 0.200\r\n187,mlp,_scale = True; activation = tanh; alpha = 0.00449996604742; batch_size = auto; hidden_layer_sizes[0] = 49; hidden_layer_sizes[1] = 160; hidden_layer_sizes[2] = 255; learning_rate = constant; learning_rate_init = 0.546664881572; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.669 +- 0.398\r\n188,gp,kernel = matern; nu = 1.5,f1 and cv,0.474 +- 0.350\r\n189,dt,criterion = entropy; max_depth = 2; max_features = 0.816003602121; min_samples_leaf = 2; min_samples_split = 2,f1 and cv,0.702 +- 0.228\r\n190,dt,criterion = entropy; max_depth = 4; max_features = 0.175003521757; min_samples_leaf = 2; min_samples_split = 3,f1 and cv,0.631 +- 0.393\r\n191,knn,_scale = True; algorithm = kd_tree; leaf_size = 29; metric = minkowski; n_neighbors = 6; p = 3; weights = uniform,f1 and cv,0.755 +- 0.286\r\n192,knn,_scale = True; algorithm = kd_tree; leaf_size = 20; metric = minkowski; n_neighbors = 14; p = 3; weights = uniform,f1 and cv,0.775 +- 0.227\r\n193,mlp,_scale = True; activation = identity; alpha = 0.00784529159537; batch_size = auto; hidden_layer_sizes[0] = 252; hidden_layer_sizes[1] = 130; hidden_layer_sizes[2] = 46; learning_rate = invscaling; learning_rate_init = 0.629852682622; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.663 +- 0.271\r\n194,mlp,_scale = True; activation = identity; alpha = 0.000435166593065; batch_size = auto; hidden_layer_sizes[0] = 27; hidden_layer_sizes[1] = 213; hidden_layer_sizes[2] = 294; learning_rate = invscaling; learning_rate_init = 0.374984887497; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.652 +- 0.386\r\n195,mlp,_scale = True; activation = logistic; alpha = 0.00876333613234; batch_size = auto; hidden_layer_sizes[0] = 114; hidden_layer_sizes[1] = 250; hidden_layer_sizes[2] = 35; learning_rate = invscaling; learning_rate_init = 0.383422487694; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.728 +- 0.043\r\n196,mlp,_scale = True; activation = logistic; alpha = 0.000302510140249; batch_size = auto; hidden_layer_sizes[0] = 287; hidden_layer_sizes[1] = 109; hidden_layer_sizes[2] = 107; learning_rate = invscaling; learning_rate_init = 0.297023534052; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.686 +- 0.047\r\n197,mlp,_scale = True; activation = identity; alpha = 0.00096205457469; batch_size = auto; hidden_layer_sizes[0] = 91; hidden_layer_sizes[1] = 139; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.826 +- 0.148\r\n198,mlp,_scale = True; activation = identity; alpha = 0.000503623924711; batch_size = auto; hidden_layer_sizes[0] = 104; hidden_layer_sizes[1] = 173; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.761 +- 0.178\r\n199,knn,_scale = True; algorithm = brute; metric = manhattan; n_neighbors = 6; weights = uniform,f1 and cv,0.720 +- 0.156\r\n"
  },
  {
    "path": "public/viz/datarun3_gp.csv",
    "content": "trail ID,method,parameters,metrics,performance\r\n0,mlp,_scale = True; activation = tanh; alpha = 0.00781487257724; batch_size = auto; hidden_layer_sizes[0] = 272; hidden_layer_sizes[1] = 8; learning_rate = constant; learning_rate_init = 0.0689462938739; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.679 +- 0.214\r\n1,mlp,_scale = True; activation = tanh; alpha = 0.00543619316979; batch_size = auto; hidden_layer_sizes[0] = 259; hidden_layer_sizes[1] = 270; learning_rate = constant; learning_rate_init = 0.687239967578; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.695 +- 0.480\r\n2,mlp,_scale = True; activation = tanh; alpha = 0.00720261760942; batch_size = auto; hidden_layer_sizes[0] = 261; hidden_layer_sizes[1] = 264; learning_rate = constant; learning_rate_init = 0.63223458188; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.808 +- 0.364\r\n3,mlp,_scale = True; activation = tanh; alpha = 0.000188613090589; batch_size = auto; hidden_layer_sizes[0] = 124; hidden_layer_sizes[1] = 62; learning_rate = constant; learning_rate_init = 0.47053941583; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.699 +- 0.418\r\n4,mlp,_scale = True; activation = logistic; alpha = 0.0013054020274; batch_size = auto; hidden_layer_sizes[0] = 282; hidden_layer_sizes[1] = 274; hidden_layer_sizes[2] = 31; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.781 +- 0.378\r\n5,mlp,_scale = True; activation = logistic; alpha = 0.00620897960824; batch_size = auto; hidden_layer_sizes[0] = 129; hidden_layer_sizes[1] = 259; hidden_layer_sizes[2] = 81; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.751 +- 0.414\r\n6,mlp,_scale = True; activation = logistic; alpha = 0.00763163758209; batch_size = auto; hidden_layer_sizes[0] = 152; hidden_layer_sizes[1] = 54; hidden_layer_sizes[2] = 88; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.707 +- 0.480\r\n7,knn,_scale = True; algorithm = brute; metric = euclidean; n_neighbors = 1; weights = uniform,f1 and cv,0.616 +- 0.362\r\n8,knn,_scale = True; algorithm = brute; metric = euclidean; n_neighbors = 11; weights = uniform,f1 and cv,0.737 +- 0.128\r\n9,knn,_scale = True; algorithm = brute; metric = euclidean; n_neighbors = 11; weights = uniform,f1 and cv,0.703 +- 0.453\r\n10,mlp,_scale = True; activation = relu; alpha = 0.00646205227618; batch_size = auto; hidden_layer_sizes[0] = 126; learning_rate = constant; learning_rate_init = 0.885586585832; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.806 +- 0.183\r\n11,mlp,_scale = True; activation = relu; alpha = 0.00131287408101; batch_size = auto; hidden_layer_sizes[0] = 255; learning_rate = constant; learning_rate_init = 0.251704996158; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.655 +- 0.201\r\n12,mlp,_scale = True; activation = relu; alpha = 0.00325404130072; batch_size = auto; hidden_layer_sizes[0] = 126; learning_rate = constant; learning_rate_init = 0.644087243875; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.748 +- 0.318\r\n13,svm,C = 6.75579369313e-05; _scale = True; cache_size = 15000; class_weight = balanced; gamma = 1.39351729562; kernel = rbf; max_iter = 50000; probability = True; shrinking = True,f1 and cv,0.646 +- 0.050\r\n14,svm,C = 3043.0257582; _scale = True; cache_size = 15000; class_weight = balanced; gamma = 54298.6093465; kernel = rbf; max_iter = 50000; probability = True; shrinking = True,f1 and cv,0.000 +- 0.000\r\n15,gp,kernel = matern; nu = 2.5,f1 and cv,0.584 +- 0.164\r\n16,mlp,_scale = True; activation = relu; alpha = 0.00159248380823; batch_size = auto; hidden_layer_sizes[0] = 291; learning_rate = invscaling; learning_rate_init = 0.829468493812; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.785 +- 0.306\r\n17,mlp,_scale = True; activation = relu; alpha = 0.000701749141837; batch_size = auto; hidden_layer_sizes[0] = 26; learning_rate = invscaling; learning_rate_init = 0.322870349042; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.817 +- 0.287\r\n18,mlp,_scale = True; activation = relu; alpha = 0.00588022555101; batch_size = auto; hidden_layer_sizes[0] = 26; learning_rate = invscaling; learning_rate_init = 0.298954761221; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.681 +- 0.210\r\n19,knn,_scale = True; algorithm = ball_tree; leaf_size = 12; metric = chebyshev; n_neighbors = 18; weights = uniform,f1 and cv,0.713 +- 0.350\r\n20,knn,_scale = True; algorithm = ball_tree; leaf_size = 49; metric = chebyshev; n_neighbors = 18; weights = uniform,f1 and cv,0.684 +- 0.338\r\n21,mlp,_scale = True; activation = identity; alpha = 0.000748664694229; batch_size = auto; hidden_layer_sizes[0] = 105; hidden_layer_sizes[1] = 195; hidden_layer_sizes[2] = 136; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.647 +- 0.196\r\n22,mlp,_scale = True; activation = identity; alpha = 0.000452395637246; batch_size = auto; hidden_layer_sizes[0] = 68; hidden_layer_sizes[1] = 23; hidden_layer_sizes[2] = 281; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.728 +- 0.174\r\n23,mlp,_scale = True; activation = identity; alpha = 0.00161792293576; batch_size = auto; hidden_layer_sizes[0] = 195; learning_rate = constant; learning_rate_init = 0.365688011884; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.639 +- 0.167\r\n24,mlp,_scale = True; activation = identity; alpha = 0.00349736877457; batch_size = auto; hidden_layer_sizes[0] = 12; learning_rate = constant; learning_rate_init = 0.770069409043; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.716 +- 0.285\r\n25,svm,C = 0.0144774687611; _scale = True; cache_size = 15000; class_weight = balanced; coef0 = -897; degree = 5; gamma = 9.63953019022e-05; kernel = poly; max_iter = 50000; probability = True; shrinking = True,f1 and cv,0.654 +- 0.328\r\n26,svm,C = 68361.5583244; _scale = True; cache_size = 15000; class_weight = balanced; coef0 = -681; degree = 2; gamma = 6976.80395927; kernel = poly; max_iter = 50000; probability = True; shrinking = True,f1 and cv,0.699 +- 0.243\r\n27,mlp,_scale = True; activation = logistic; alpha = 0.00521335944684; batch_size = auto; beta_1 = 0.939521502808; beta_2 = 0.879544826331; hidden_layer_sizes[0] = 37; hidden_layer_sizes[1] = 145; learning_rate_init = 0.824208604962; len(hidden_layer_sizes) = 2; solver = adam,f1 and cv,0.646 +- 0.050\r\n28,mlp,_scale = True; activation = logistic; alpha = 0.00227190507883; batch_size = auto; beta_1 = 0.898338191366; beta_2 = 0.910334662878; hidden_layer_sizes[0] = 154; hidden_layer_sizes[1] = 98; learning_rate_init = 0.0333173604139; len(hidden_layer_sizes) = 2; solver = adam,f1 and cv,0.482 +- 0.802\r\n29,rf,criterion = gini; max_depth = 3; max_features = 0.872569897951; min_samples_leaf = 1; n_estimators = 100; n_jobs = -1,f1 and cv,0.698 +- 0.248\r\n30,rf,criterion = gini; max_depth = 3; max_features = 0.412701118037; min_samples_leaf = 3; n_estimators = 100; n_jobs = -1,f1 and cv,0.802 +- 0.247\r\n31,logreg,C = 5.5359579201; _scale = True; class_weight = balanced; fit_intercept = False; penalty = l1; tol = 1.95315997637e-05,f1 and cv,0.700 +- 0.448\r\n32,logreg,C = 0.0392440215315; _scale = True; class_weight = balanced; fit_intercept = False; penalty = l1; tol = 16758.1398184,f1 and cv,0.000 +- 0.000\r\n33,gnb,_scale_minmax = True,f1 and cv,0.746 +- 0.162\r\n34,mlp,_scale = True; activation = relu; alpha = 0.00105918357866; batch_size = auto; hidden_layer_sizes[0] = 137; hidden_layer_sizes[1] = 271; learning_rate = constant; learning_rate_init = 0.603980751833; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.758 +- 0.169\r\n35,mlp,_scale = True; activation = relu; alpha = 0.00893820258848; batch_size = auto; hidden_layer_sizes[0] = 4; hidden_layer_sizes[1] = 285; learning_rate = constant; learning_rate_init = 0.622789740096; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.574 +- 0.396\r\n36,knn,_scale = True; algorithm = ball_tree; leaf_size = 22; metric = minkowski; n_neighbors = 11; p = 1; weights = distance,f1 and cv,0.661 +- 0.558\r\n37,knn,_scale = True; algorithm = ball_tree; leaf_size = 10; metric = minkowski; n_neighbors = 10; p = 1; weights = distance,f1 and cv,0.787 +- 0.198\r\n38,logreg,C = 1672.72436359; _scale = True; class_weight = balanced; dual = True; fit_intercept = False; penalty = l2; tol = 27100.381445,f1 and cv,0.850 +- 0.400\r\n39,logreg,C = 0.00630214753888; _scale = True; class_weight = balanced; dual = True; fit_intercept = False; penalty = l2; tol = 72.2322909218,f1 and cv,0.690 +- 0.399\r\n40,mlp,_scale = True; activation = relu; alpha = 0.00671090557438; batch_size = auto; hidden_layer_sizes[0] = 169; hidden_layer_sizes[1] = 245; learning_rate = invscaling; learning_rate_init = 0.320680427153; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.712 +- 0.428\r\n41,mlp,_scale = True; activation = relu; alpha = 0.00166052683936; batch_size = auto; hidden_layer_sizes[0] = 57; hidden_layer_sizes[1] = 21; learning_rate = invscaling; learning_rate_init = 0.3787697594; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.715 +- 0.249\r\n42,mlp,_scale = True; activation = identity; alpha = 0.00127587777598; batch_size = auto; hidden_layer_sizes[0] = 55; hidden_layer_sizes[1] = 261; hidden_layer_sizes[2] = 15; learning_rate = invscaling; learning_rate_init = 0.979302563433; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.379 +- 0.414\r\n43,mlp,_scale = True; activation = identity; alpha = 0.00836452785254; batch_size = auto; hidden_layer_sizes[0] = 10; hidden_layer_sizes[1] = 294; hidden_layer_sizes[2] = 24; learning_rate = invscaling; learning_rate_init = 0.0867527859754; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.683 +- 0.395\r\n44,mlp,_scale = True; activation = tanh; alpha = 0.00566483744806; batch_size = auto; beta_1 = 0.941060527496; beta_2 = 0.886333999219; hidden_layer_sizes[0] = 179; hidden_layer_sizes[1] = 163; learning_rate_init = 0.104313563407; len(hidden_layer_sizes) = 2; solver = adam,f1 and cv,0.737 +- 0.128\r\n45,mlp,_scale = True; activation = tanh; alpha = 0.0014836698397; batch_size = auto; beta_1 = 0.866515711814; beta_2 = 0.963674603878; hidden_layer_sizes[0] = 162; hidden_layer_sizes[1] = 229; learning_rate_init = 0.239838223712; len(hidden_layer_sizes) = 2; solver = adam,f1 and cv,0.548 +- 0.255\r\n46,logreg,C = 99.9229727841; _scale = True; class_weight = balanced; dual = False; fit_intercept = False; penalty = l2; tol = 244.185565265,f1 and cv,0.000 +- 0.000\r\n47,mlp,_scale = True; activation = tanh; alpha = 0.00393734628798; batch_size = auto; hidden_layer_sizes[0] = 218; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.597 +- 0.255\r\n48,mlp,_scale = True; activation = tanh; alpha = 0.00466952886902; batch_size = auto; hidden_layer_sizes[0] = 119; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.740 +- 0.502\r\n49,mlp,_scale = True; activation = relu; alpha = 0.00369484939849; batch_size = auto; hidden_layer_sizes[0] = 172; hidden_layer_sizes[1] = 5; hidden_layer_sizes[2] = 117; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.760 +- 0.292\r\n50,mlp,_scale = True; activation = relu; alpha = 0.00148965686068; batch_size = auto; hidden_layer_sizes[0] = 228; hidden_layer_sizes[1] = 258; hidden_layer_sizes[2] = 128; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.718 +- 0.239\r\n51,mlp,_scale = True; activation = tanh; alpha = 0.00463285433881; batch_size = auto; hidden_layer_sizes[0] = 17; hidden_layer_sizes[1] = 60; learning_rate = invscaling; learning_rate_init = 0.677560559236; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.713 +- 0.142\r\n52,mlp,_scale = True; activation = tanh; alpha = 0.00798742244388; batch_size = auto; hidden_layer_sizes[0] = 200; hidden_layer_sizes[1] = 130; learning_rate = invscaling; learning_rate_init = 0.980172261286; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.796 +- 0.289\r\n53,mlp,_scale = True; activation = identity; alpha = 0.00561226799357; batch_size = auto; hidden_layer_sizes[0] = 36; hidden_layer_sizes[1] = 113; hidden_layer_sizes[2] = 51; learning_rate = constant; learning_rate_init = 0.359050106477; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.704 +- 0.227\r\n54,mlp,_scale = True; activation = identity; alpha = 0.00522574484514; batch_size = auto; hidden_layer_sizes[0] = 32; hidden_layer_sizes[1] = 232; hidden_layer_sizes[2] = 184; learning_rate = constant; learning_rate_init = 0.390107009433; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.371 +- 0.732\r\n55,knn,_scale = True; algorithm = kd_tree; leaf_size = 42; metric = minkowski; n_neighbors = 9; p = 2; weights = distance,f1 and cv,0.601 +- 0.126\r\n56,knn,_scale = True; algorithm = kd_tree; leaf_size = 49; metric = minkowski; n_neighbors = 10; p = 2; weights = distance,f1 and cv,0.755 +- 0.339\r\n57,mlp,_scale = True; activation = logistic; alpha = 0.00493108097032; batch_size = auto; hidden_layer_sizes[0] = 67; hidden_layer_sizes[1] = 135; learning_rate = invscaling; learning_rate_init = 0.0413872867992; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.707 +- 0.042\r\n58,mlp,_scale = True; activation = logistic; alpha = 0.00749174273334; batch_size = auto; hidden_layer_sizes[0] = 244; hidden_layer_sizes[1] = 44; learning_rate = invscaling; learning_rate_init = 0.0678221650796; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.400 +- 0.653\r\n59,knn,_scale = True; algorithm = brute; metric = chebyshev; n_neighbors = 4; weights = distance,f1 and cv,0.728 +- 0.421\r\n60,knn,_scale = True; algorithm = brute; metric = chebyshev; n_neighbors = 10; weights = distance,f1 and cv,0.630 +- 0.485\r\n61,svm,C = 108.321856002; _scale = True; cache_size = 15000; class_weight = balanced; kernel = linear; max_iter = 50000; probability = True; shrinking = True,f1 and cv,0.676 +- 0.306\r\n62,svm,C = 0.22058306113; _scale = True; cache_size = 15000; class_weight = balanced; kernel = linear; max_iter = 50000; probability = True; shrinking = True,f1 and cv,0.522 +- 0.548\r\n63,logreg,C = 402.075650797; _scale = True; class_weight = balanced; dual = False; fit_intercept = False; penalty = l2; tol = 422.081243442,f1 and cv,0.000 +- 0.000\r\n64,mlp,_scale = True; activation = relu; alpha = 0.00447154493894; batch_size = auto; hidden_layer_sizes[0] = 133; hidden_layer_sizes[1] = 227; hidden_layer_sizes[2] = 48; learning_rate = adaptive; learning_rate_init = 0.435971730209; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.665 +- 0.459\r\n65,mlp,_scale = True; activation = relu; alpha = 0.00877916277485; batch_size = auto; hidden_layer_sizes[0] = 150; hidden_layer_sizes[1] = 37; hidden_layer_sizes[2] = 274; learning_rate = adaptive; learning_rate_init = 0.0572993617058; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.672 +- 0.466\r\n66,rf,criterion = entropy; max_depth = 5; max_features = 0.556456563127; min_samples_leaf = 2; n_estimators = 100; n_jobs = -1,f1 and cv,0.669 +- 0.443\r\n67,rf,criterion = entropy; max_depth = 2; max_features = 0.98545646594; min_samples_leaf = 2; n_estimators = 100; n_jobs = -1,f1 and cv,0.726 +- 0.415\r\n68,dt,criterion = entropy; max_depth = 5; max_features = 0.900550608963; min_samples_leaf = 1; min_samples_split = 3,f1 and cv,0.640 +- 0.491\r\n69,dt,criterion = entropy; max_depth = 10; max_features = 0.910163275881; min_samples_leaf = 1; min_samples_split = 2,f1 and cv,0.632 +- 0.387\r\n70,mlp,_scale = True; activation = identity; alpha = 0.00682078560952; batch_size = auto; beta_1 = 0.969193004536; beta_2 = 0.958225007994; hidden_layer_sizes[0] = 93; learning_rate_init = 0.913931202199; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.868 +- 0.177\r\n71,mlp,_scale = True; activation = identity; alpha = 0.00645779541489; batch_size = auto; beta_1 = 0.913476793807; beta_2 = 0.949688737801; hidden_layer_sizes[0] = 102; learning_rate_init = 0.133057916229; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.680 +- 0.422\r\n72,gp,kernel = rbf,f1 and cv,0.000 +- 0.000\r\n73,mlp,_scale = True; activation = logistic; alpha = 0.00446415534919; batch_size = auto; hidden_layer_sizes[0] = 270; learning_rate = adaptive; learning_rate_init = 0.595166464296; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.565 +- 0.566\r\n74,mlp,_scale = True; activation = logistic; alpha = 0.00047361483565; batch_size = auto; hidden_layer_sizes[0] = 199; learning_rate = adaptive; learning_rate_init = 0.115392078419; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.742 +- 0.323\r\n75,mlp,_scale = True; activation = identity; alpha = 0.00334901377344; batch_size = auto; hidden_layer_sizes[0] = 191; hidden_layer_sizes[1] = 196; learning_rate = invscaling; learning_rate_init = 0.385631095821; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.695 +- 0.422\r\n76,mlp,_scale = True; activation = identity; alpha = 0.000729809390053; batch_size = auto; hidden_layer_sizes[0] = 191; hidden_layer_sizes[1] = 9; learning_rate = invscaling; learning_rate_init = 0.376426628893; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.771 +- 0.272\r\n77,mlp,_scale = True; activation = relu; alpha = 0.00677952040327; batch_size = auto; hidden_layer_sizes[0] = 78; hidden_layer_sizes[1] = 203; learning_rate = adaptive; learning_rate_init = 0.552285906706; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.705 +- 0.236\r\n78,mlp,_scale = True; activation = relu; alpha = 0.00484606282802; batch_size = auto; hidden_layer_sizes[0] = 121; hidden_layer_sizes[1] = 32; learning_rate = adaptive; learning_rate_init = 0.525993295773; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.669 +- 0.394\r\n79,knn,_scale = True; algorithm = kd_tree; leaf_size = 38; metric = minkowski; n_neighbors = 1; p = 2; weights = uniform,f1 and cv,0.624 +- 0.254\r\n80,knn,_scale = True; algorithm = kd_tree; leaf_size = 36; metric = minkowski; n_neighbors = 6; p = 3; weights = uniform,f1 and cv,0.736 +- 0.408\r\n81,knn,_scale = True; algorithm = brute; metric = manhattan; n_neighbors = 9; weights = distance,f1 and cv,0.710 +- 0.346\r\n82,knn,_scale = True; algorithm = brute; metric = manhattan; n_neighbors = 20; weights = distance,f1 and cv,0.875 +- 0.077\r\n83,mlp,_scale = True; activation = logistic; alpha = 0.00455678708933; batch_size = auto; hidden_layer_sizes[0] = 226; hidden_layer_sizes[1] = 289; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.557 +- 0.301\r\n84,mlp,_scale = True; activation = logistic; alpha = 0.00770313808357; batch_size = auto; hidden_layer_sizes[0] = 114; hidden_layer_sizes[1] = 131; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.703 +- 0.434\r\n85,gp,kernel = exp_sine_squared; length_scale = 88.5811912348; periodicity = 1,f1 and cv,0.000 +- 0.000\r\n86,mlp,_scale = True; activation = identity; alpha = 0.00563614677265; batch_size = auto; hidden_layer_sizes[0] = 225; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.638 +- 0.284\r\n87,mlp,_scale = True; activation = identity; alpha = 0.00530367936218; batch_size = auto; hidden_layer_sizes[0] = 239; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.772 +- 0.212\r\n88,mlp,_scale = True; activation = logistic; alpha = 0.00135750262202; batch_size = auto; hidden_layer_sizes[0] = 201; hidden_layer_sizes[1] = 173; learning_rate = adaptive; learning_rate_init = 0.704545467478; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.267 +- 0.653\r\n89,mlp,_scale = True; activation = logistic; alpha = 0.00781371196677; batch_size = auto; hidden_layer_sizes[0] = 226; hidden_layer_sizes[1] = 129; learning_rate = adaptive; learning_rate_init = 0.38252192812; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.543 +- 0.544\r\n90,mlp,_scale = True; activation = tanh; alpha = 0.000225589838368; batch_size = auto; hidden_layer_sizes[0] = 70; learning_rate = invscaling; learning_rate_init = 0.24047934953; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.796 +- 0.169\r\n91,mlp,_scale = True; activation = tanh; alpha = 0.0014621770276; batch_size = auto; hidden_layer_sizes[0] = 278; learning_rate = invscaling; learning_rate_init = 0.526678709592; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.849 +- 0.222\r\n92,mlp,_scale = True; activation = logistic; alpha = 0.000395881669625; batch_size = auto; beta_1 = 0.977413026071; beta_2 = 0.824084664119; hidden_layer_sizes[0] = 160; hidden_layer_sizes[1] = 153; hidden_layer_sizes[2] = 63; learning_rate_init = 0.908710334663; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.543 +- 0.544\r\n93,mlp,_scale = True; activation = logistic; alpha = 0.000926257945602; batch_size = auto; beta_1 = 0.909017076342; beta_2 = 0.904584995376; hidden_layer_sizes[0] = 208; hidden_layer_sizes[1] = 36; hidden_layer_sizes[2] = 2; learning_rate_init = 0.894332904907; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.279 +- 0.684\r\n94,mlp,_scale = True; activation = tanh; alpha = 0.00752796608981; batch_size = auto; beta_1 = 0.843095206821; beta_2 = 0.954782682046; hidden_layer_sizes[0] = 43; hidden_layer_sizes[1] = 38; hidden_layer_sizes[2] = 272; learning_rate_init = 0.678536955782; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.654 +- 0.538\r\n95,mlp,_scale = True; activation = tanh; alpha = 0.00104497384797; batch_size = auto; beta_1 = 0.946565507377; beta_2 = 0.809265708154; hidden_layer_sizes[0] = 39; hidden_layer_sizes[1] = 238; hidden_layer_sizes[2] = 134; learning_rate_init = 0.176380045981; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.759 +- 0.276\r\n96,knn,_scale = True; algorithm = kd_tree; leaf_size = 35; metric = manhattan; n_neighbors = 7; weights = distance,f1 and cv,0.633 +- 0.311\r\n97,knn,_scale = True; algorithm = kd_tree; leaf_size = 39; metric = manhattan; n_neighbors = 18; weights = distance,f1 and cv,0.895 +- 0.256\r\n98,knn,_scale = True; algorithm = kd_tree; leaf_size = 4; metric = euclidean; n_neighbors = 19; weights = distance,f1 and cv,0.635 +- 0.676\r\n99,knn,_scale = True; algorithm = kd_tree; leaf_size = 18; metric = euclidean; n_neighbors = 5; weights = distance,f1 and cv,0.599 +- 0.519\r\n100,knn,_scale = True; algorithm = brute; metric = chebyshev; n_neighbors = 6; weights = uniform,f1 and cv,0.653 +- 0.272\r\n101,knn,_scale = True; algorithm = brute; metric = chebyshev; n_neighbors = 5; weights = uniform,f1 and cv,0.763 +- 0.198\r\n102,logreg,C = 4.97088705431e-05; _scale = True; class_weight = balanced; dual = True; fit_intercept = True; penalty = l2; tol = 222.17699589,f1 and cv,0.744 +- 0.266\r\n103,logreg,C = 0.330721375771; _scale = True; class_weight = balanced; dual = True; fit_intercept = True; penalty = l2; tol = 0.0847406446969,f1 and cv,0.756 +- 0.218\r\n104,mlp,_scale = True; activation = identity; alpha = 0.00388200759279; batch_size = auto; beta_1 = 0.803310010916; beta_2 = 0.847518868014; hidden_layer_sizes[0] = 3; hidden_layer_sizes[1] = 253; hidden_layer_sizes[2] = 240; learning_rate_init = 0.779752504983; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.665 +- 0.304\r\n105,mlp,_scale = True; activation = identity; alpha = 0.00405917657162; batch_size = auto; beta_1 = 0.948791716906; beta_2 = 0.877991922699; hidden_layer_sizes[0] = 211; hidden_layer_sizes[1] = 268; hidden_layer_sizes[2] = 148; learning_rate_init = 0.206409734509; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.621 +- 0.646\r\n106,mlp,_scale = True; activation = logistic; alpha = 0.00107775400387; batch_size = auto; hidden_layer_sizes[0] = 38; hidden_layer_sizes[1] = 260; hidden_layer_sizes[2] = 117; learning_rate = invscaling; learning_rate_init = 0.879719962022; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.585 +- 0.586\r\n107,mlp,_scale = True; activation = logistic; alpha = 0.00746351178429; batch_size = auto; hidden_layer_sizes[0] = 235; hidden_layer_sizes[1] = 209; hidden_layer_sizes[2] = 139; learning_rate = invscaling; learning_rate_init = 0.739358703115; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.565 +- 0.566\r\n108,mlp,_scale = True; activation = relu; alpha = 0.00755618547266; batch_size = auto; beta_1 = 0.818251038404; beta_2 = 0.804836838455; hidden_layer_sizes[0] = 156; hidden_layer_sizes[1] = 292; hidden_layer_sizes[2] = 229; learning_rate_init = 0.231899738619; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.499 +- 0.551\r\n109,mlp,_scale = True; activation = relu; alpha = 0.000890173654937; batch_size = auto; beta_1 = 0.888752607999; beta_2 = 0.905503364471; hidden_layer_sizes[0] = 115; hidden_layer_sizes[1] = 116; hidden_layer_sizes[2] = 74; learning_rate_init = 0.496824150454; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.463 +- 0.593\r\n110,mlp,_scale = True; activation = tanh; alpha = 0.00430648251732; batch_size = auto; hidden_layer_sizes[0] = 57; hidden_layer_sizes[1] = 200; hidden_layer_sizes[2] = 224; learning_rate = invscaling; learning_rate_init = 0.263792190615; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.683 +- 0.377\r\n111,mlp,_scale = True; activation = tanh; alpha = 0.00792514853509; batch_size = auto; hidden_layer_sizes[0] = 58; hidden_layer_sizes[1] = 298; hidden_layer_sizes[2] = 209; learning_rate = invscaling; learning_rate_init = 0.504780015822; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.798 +- 0.417\r\n112,mlp,_scale = True; activation = identity; alpha = 0.000574869927736; batch_size = auto; hidden_layer_sizes[0] = 58; hidden_layer_sizes[1] = 200; learning_rate = constant; learning_rate_init = 0.0847381122613; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.734 +- 0.139\r\n113,mlp,_scale = True; activation = identity; alpha = 0.00748872282397; batch_size = auto; hidden_layer_sizes[0] = 243; hidden_layer_sizes[1] = 215; learning_rate = constant; learning_rate_init = 0.864295574622; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.567 +- 0.265\r\n114,gp,kernel = exp_sine_squared; length_scale = 1.23258725702; periodicity = 1,f1 and cv,0.534 +- 0.554\r\n115,mlp,_scale = True; activation = identity; alpha = 0.00146328031265; batch_size = auto; hidden_layer_sizes[0] = 273; hidden_layer_sizes[1] = 261; hidden_layer_sizes[2] = 17; learning_rate = adaptive; learning_rate_init = 0.662340589203; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.000 +- 0.000\r\n116,mlp,_scale = True; activation = logistic; alpha = 0.00168729100821; batch_size = auto; beta_1 = 0.862405862008; beta_2 = 0.863444265573; hidden_layer_sizes[0] = 90; learning_rate_init = 0.921266595151; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.640 +- 0.676\r\n117,mlp,_scale = True; activation = logistic; alpha = 0.00216221770935; batch_size = auto; beta_1 = 0.854074335995; beta_2 = 0.915921532413; hidden_layer_sizes[0] = 20; learning_rate_init = 0.734002657964; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.718 +- 0.209\r\n118,mlp,_scale = True; activation = identity; alpha = 0.00520025456826; batch_size = auto; hidden_layer_sizes[0] = 165; hidden_layer_sizes[1] = 154; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.716 +- 0.441\r\n119,mlp,_scale = True; activation = identity; alpha = 0.00547849454578; batch_size = auto; hidden_layer_sizes[0] = 162; hidden_layer_sizes[1] = 291; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.758 +- 0.409\r\n120,mlp,_scale = True; activation = relu; alpha = 0.00468474485894; batch_size = auto; hidden_layer_sizes[0] = 160; hidden_layer_sizes[1] = 208; hidden_layer_sizes[2] = 237; learning_rate = constant; learning_rate_init = 0.124026768608; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.775 +- 0.306\r\n121,mlp,_scale = True; activation = relu; alpha = 0.00585513262572; batch_size = auto; hidden_layer_sizes[0] = 216; hidden_layer_sizes[1] = 191; hidden_layer_sizes[2] = 225; learning_rate = constant; learning_rate_init = 0.316155619041; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.742 +- 0.244\r\n122,knn,_scale = True; algorithm = ball_tree; leaf_size = 39; metric = euclidean; n_neighbors = 13; weights = distance,f1 and cv,0.782 +- 0.323\r\n123,knn,_scale = True; algorithm = ball_tree; leaf_size = 29; metric = euclidean; n_neighbors = 20; weights = distance,f1 and cv,0.741 +- 0.164\r\n124,svm,C = 4418.48406248; _scale = True; cache_size = 15000; class_weight = balanced; coef0 = -410; gamma = 0.0128200591314; kernel = sigmoid; max_iter = 50000; probability = True; shrinking = True,f1 and cv,0.000 +- 0.000\r\n125,knn,_scale = True; algorithm = ball_tree; leaf_size = 16; metric = chebyshev; n_neighbors = 15; weights = distance,f1 and cv,0.660 +- 0.393\r\n126,knn,_scale = True; algorithm = ball_tree; leaf_size = 14; metric = chebyshev; n_neighbors = 20; weights = distance,f1 and cv,0.585 +- 0.366\r\n127,knn,_scale = True; algorithm = ball_tree; leaf_size = 35; metric = minkowski; n_neighbors = 7; p = 3; weights = uniform,f1 and cv,0.667 +- 0.146\r\n128,knn,_scale = True; algorithm = ball_tree; leaf_size = 1; metric = minkowski; n_neighbors = 19; p = 3; weights = uniform,f1 and cv,0.623 +- 0.441\r\n129,gp,kernel = matern; nu = 0.5,f1 and cv,0.451 +- 0.198\r\n130,mlp,_scale = True; activation = logistic; alpha = 0.000492057617733; batch_size = auto; hidden_layer_sizes[0] = 183; hidden_layer_sizes[1] = 44; hidden_layer_sizes[2] = 22; learning_rate = adaptive; learning_rate_init = 0.0803546188134; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.747 +- 0.054\r\n131,mlp,_scale = True; activation = logistic; alpha = 0.0061092024869; batch_size = auto; hidden_layer_sizes[0] = 245; hidden_layer_sizes[1] = 225; hidden_layer_sizes[2] = 115; learning_rate = adaptive; learning_rate_init = 0.261554783012; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.246 +- 0.603\r\n132,dt,criterion = gini; max_depth = 9; max_features = 0.20530013294; min_samples_leaf = 3; min_samples_split = 4,f1 and cv,0.722 +- 0.431\r\n133,dt,criterion = gini; max_depth = 5; max_features = 0.895429193079; min_samples_leaf = 2; min_samples_split = 4,f1 and cv,0.671 +- 0.226\r\n134,mlp,_scale = True; activation = logistic; alpha = 0.00493337414245; batch_size = auto; hidden_layer_sizes[0] = 225; hidden_layer_sizes[1] = 249; learning_rate = constant; learning_rate_init = 0.388841600493; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.143 +- 0.571\r\n135,mlp,_scale = True; activation = logistic; alpha = 0.00107313907428; batch_size = auto; hidden_layer_sizes[0] = 125; hidden_layer_sizes[1] = 79; learning_rate = constant; learning_rate_init = 0.913790170325; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.747 +- 0.054\r\n136,svm,C = 0.000699346092196; _scale = True; cache_size = 15000; class_weight = balanced; coef0 = -356; gamma = 2904.70602162; kernel = sigmoid; max_iter = 50000; probability = True; shrinking = True,f1 and cv,0.646 +- 0.050\r\n137,mlp,_scale = True; activation = identity; alpha = 0.00734266673854; batch_size = auto; beta_1 = 0.961171981627; beta_2 = 0.888975972278; hidden_layer_sizes[0] = 257; hidden_layer_sizes[1] = 298; learning_rate_init = 0.414234249407; len(hidden_layer_sizes) = 2; solver = adam,f1 and cv,0.714 +- 0.328\r\n138,mlp,_scale = True; activation = identity; alpha = 0.00161530133551; batch_size = auto; beta_1 = 0.936825982064; beta_2 = 0.95893046097; hidden_layer_sizes[0] = 164; hidden_layer_sizes[1] = 125; learning_rate_init = 0.453433432399; len(hidden_layer_sizes) = 2; solver = adam,f1 and cv,0.659 +- 0.427\r\n139,mlp,_scale = True; activation = relu; alpha = 0.00163845695715; batch_size = auto; hidden_layer_sizes[0] = 284; learning_rate = adaptive; learning_rate_init = 0.429799911569; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.768 +- 0.312\r\n140,mlp,_scale = True; activation = relu; alpha = 0.00657294944483; batch_size = auto; hidden_layer_sizes[0] = 203; learning_rate = adaptive; learning_rate_init = 0.451312921609; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.827 +- 0.195\r\n141,knn,_scale = True; algorithm = ball_tree; leaf_size = 28; metric = manhattan; n_neighbors = 4; weights = uniform,f1 and cv,0.758 +- 0.155\r\n142,knn,_scale = True; algorithm = ball_tree; leaf_size = 46; metric = manhattan; n_neighbors = 12; weights = uniform,f1 and cv,0.562 +- 0.382\r\n143,mlp,_scale = True; activation = tanh; alpha = 0.00476005930825; batch_size = auto; beta_1 = 0.837603101953; beta_2 = 0.955572625664; hidden_layer_sizes[0] = 62; learning_rate_init = 0.836221756772; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.749 +- 0.283\r\n144,mlp,_scale = True; activation = tanh; alpha = 0.00686387329794; batch_size = auto; beta_1 = 0.893992260512; beta_2 = 0.831867746086; hidden_layer_sizes[0] = 206; learning_rate_init = 0.453787250521; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.677 +- 0.361\r\n145,mlp,_scale = True; activation = tanh; alpha = 0.00288630618482; batch_size = auto; hidden_layer_sizes[0] = 291; hidden_layer_sizes[1] = 85; learning_rate = adaptive; learning_rate_init = 0.456429072586; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.549 +- 0.559\r\n146,mlp,_scale = True; activation = tanh; alpha = 0.00213734631388; batch_size = auto; hidden_layer_sizes[0] = 264; hidden_layer_sizes[1] = 39; learning_rate = adaptive; learning_rate_init = 0.137660603614; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.819 +- 0.282\r\n147,mlp,_scale = True; activation = relu; alpha = 0.000527020841096; batch_size = auto; hidden_layer_sizes[0] = 270; hidden_layer_sizes[1] = 119; hidden_layer_sizes[2] = 191; learning_rate = invscaling; learning_rate_init = 0.132056020654; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.704 +- 0.265\r\n148,mlp,_scale = True; activation = relu; alpha = 0.000167336640832; batch_size = auto; hidden_layer_sizes[0] = 119; hidden_layer_sizes[1] = 138; hidden_layer_sizes[2] = 79; learning_rate = invscaling; learning_rate_init = 0.579541176656; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.783 +- 0.389\r\n149,knn,_scale = True; algorithm = brute; metric = minkowski; n_neighbors = 2; p = 2; weights = distance,f1 and cv,0.577 +- 0.397\r\n150,knn,_scale = True; algorithm = brute; metric = minkowski; n_neighbors = 5; p = 1; weights = distance,f1 and cv,0.758 +- 0.297\r\n151,mlp,_scale = True; activation = tanh; alpha = 0.00830371973064; batch_size = auto; hidden_layer_sizes[0] = 215; learning_rate = adaptive; learning_rate_init = 0.217830033624; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.735 +- 0.218\r\n152,mlp,_scale = True; activation = tanh; alpha = 0.00593473166394; batch_size = auto; hidden_layer_sizes[0] = 156; learning_rate = adaptive; learning_rate_init = 0.0917559046633; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.592 +- 0.701\r\n153,knn,_scale = True; algorithm = kd_tree; leaf_size = 22; metric = manhattan; n_neighbors = 17; weights = uniform,f1 and cv,0.617 +- 0.663\r\n154,knn,_scale = True; algorithm = kd_tree; leaf_size = 31; metric = manhattan; n_neighbors = 20; weights = uniform,f1 and cv,0.656 +- 0.478\r\n155,logreg,C = 0.00306769302685; _scale = True; class_weight = balanced; dual = False; fit_intercept = True; penalty = l2; tol = 0.012801448798,f1 and cv,0.788 +- 0.379\r\n156,logreg,C = 177.566822646; _scale = True; class_weight = balanced; dual = False; fit_intercept = True; penalty = l2; tol = 36300.246269,f1 and cv,0.000 +- 0.000\r\n157,mlp,_scale = True; activation = logistic; alpha = 0.00292235765101; batch_size = auto; hidden_layer_sizes[0] = 219; hidden_layer_sizes[1] = 215; hidden_layer_sizes[2] = 261; learning_rate = constant; learning_rate_init = 0.463754226406; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.562 +- 0.563\r\n158,mlp,_scale = True; activation = logistic; alpha = 0.00336265552639; batch_size = auto; hidden_layer_sizes[0] = 134; hidden_layer_sizes[1] = 288; hidden_layer_sizes[2] = 113; learning_rate = constant; learning_rate_init = 0.106379752839; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.000 +- 0.000\r\n159,knn,_scale = True; algorithm = kd_tree; leaf_size = 20; metric = chebyshev; n_neighbors = 3; weights = distance,f1 and cv,0.660 +- 0.350\r\n160,knn,_scale = True; algorithm = kd_tree; leaf_size = 15; metric = chebyshev; n_neighbors = 11; weights = distance,f1 and cv,0.651 +- 0.217\r\n161,mlp,_scale = True; activation = identity; alpha = 0.000333265318374; batch_size = auto; hidden_layer_sizes[0] = 13; hidden_layer_sizes[1] = 227; learning_rate = adaptive; learning_rate_init = 0.121745354886; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.770 +- 0.286\r\n162,mlp,_scale = True; activation = identity; alpha = 0.00294752057394; batch_size = auto; hidden_layer_sizes[0] = 128; hidden_layer_sizes[1] = 205; learning_rate = adaptive; learning_rate_init = 0.598308980669; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.617 +- 0.347\r\n163,mlp,_scale = True; activation = identity; alpha = 0.00516176907568; batch_size = auto; hidden_layer_sizes[0] = 194; hidden_layer_sizes[1] = 79; hidden_layer_sizes[2] = 153; learning_rate = adaptive; learning_rate_init = 0.353882854198; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.584 +- 0.372\r\n164,knn,_scale = True; algorithm = ball_tree; leaf_size = 38; metric = manhattan; n_neighbors = 9; weights = distance,f1 and cv,0.739 +- 0.230\r\n165,knn,_scale = True; algorithm = ball_tree; leaf_size = 39; metric = manhattan; n_neighbors = 8; weights = distance,f1 and cv,0.686 +- 0.401\r\n166,mlp,_scale = True; activation = tanh; alpha = 0.00335381389702; batch_size = auto; hidden_layer_sizes[0] = 221; learning_rate = constant; learning_rate_init = 0.0543684388061; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.729 +- 0.266\r\n167,mlp,_scale = True; activation = tanh; alpha = 0.000718678014138; batch_size = auto; hidden_layer_sizes[0] = 194; learning_rate = constant; learning_rate_init = 0.817123258156; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.699 +- 0.285\r\n168,mlp,_scale = True; activation = identity; alpha = 0.00742865324697; batch_size = auto; hidden_layer_sizes[0] = 7; learning_rate = adaptive; learning_rate_init = 0.104806834524; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.691 +- 0.059\r\n169,mlp,_scale = True; activation = identity; alpha = 0.00842933174699; batch_size = auto; hidden_layer_sizes[0] = 145; learning_rate = adaptive; learning_rate_init = 0.47682224929; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.675 +- 0.272\r\n170,knn,_scale = True; algorithm = brute; metric = euclidean; n_neighbors = 10; weights = distance,f1 and cv,0.760 +- 0.113\r\n171,knn,_scale = True; algorithm = brute; metric = euclidean; n_neighbors = 4; weights = distance,f1 and cv,0.636 +- 0.180\r\n172,gp,kernel = exp_sine_squared; length_scale = 6.13840945438; periodicity = 0,f1 and cv,0.574 +- 0.574\r\n173,gp,kernel = exp_sine_squared; length_scale = 27.2598804204; periodicity = 0,f1 and cv,0.000 +- 0.000\r\n174,mlp,_scale = True; activation = tanh; alpha = 0.00389901170727; batch_size = auto; hidden_layer_sizes[0] = 31; hidden_layer_sizes[1] = 12; hidden_layer_sizes[2] = 292; learning_rate = constant; learning_rate_init = 0.352909877432; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.681 +- 0.343\r\n175,mlp,_scale = True; activation = tanh; alpha = 0.00861460532622; batch_size = auto; hidden_layer_sizes[0] = 2; hidden_layer_sizes[1] = 251; hidden_layer_sizes[2] = 239; learning_rate = constant; learning_rate_init = 0.802964762108; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.715 +- 0.249\r\n176,mlp,_scale = True; activation = tanh; alpha = 0.00796704569567; batch_size = auto; hidden_layer_sizes[0] = 179; hidden_layer_sizes[1] = 7; hidden_layer_sizes[2] = 157; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.752 +- 0.207\r\n177,mlp,_scale = True; activation = tanh; alpha = 0.00108419022247; batch_size = auto; hidden_layer_sizes[0] = 283; hidden_layer_sizes[1] = 73; hidden_layer_sizes[2] = 51; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.641 +- 0.121\r\n178,knn,_scale = True; algorithm = ball_tree; leaf_size = 21; metric = euclidean; n_neighbors = 7; weights = uniform,f1 and cv,0.695 +- 0.235\r\n179,knn,_scale = True; algorithm = ball_tree; leaf_size = 42; metric = euclidean; n_neighbors = 13; weights = uniform,f1 and cv,0.705 +- 0.435\r\n180,mlp,_scale = True; activation = tanh; alpha = 0.00354606375968; batch_size = auto; hidden_layer_sizes[0] = 10; hidden_layer_sizes[1] = 27; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.775 +- 0.128\r\n181,mlp,_scale = True; activation = tanh; alpha = 0.00774998611852; batch_size = auto; hidden_layer_sizes[0] = 206; hidden_layer_sizes[1] = 140; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.756 +- 0.242\r\n182,gp,kernel = constant,f1 and cv,0.728 +- 0.043\r\n183,logreg,C = 1250.42827557; _scale = True; class_weight = balanced; fit_intercept = True; penalty = l1; tol = 0.00118418554271,f1 and cv,0.703 +- 0.157\r\n184,logreg,C = 0.000256996185277; _scale = True; class_weight = balanced; fit_intercept = True; penalty = l1; tol = 10261.6124623,f1 and cv,0.000 +- 0.000\r\n185,mlp,_scale = True; activation = logistic; alpha = 0.00014692611716; batch_size = auto; hidden_layer_sizes[0] = 42; learning_rate = constant; learning_rate_init = 0.974463794961; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.527 +- 0.560\r\n186,mlp,_scale = True; activation = logistic; alpha = 0.0044263395726; batch_size = auto; hidden_layer_sizes[0] = 173; learning_rate = constant; learning_rate_init = 0.696057688579; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.475 +- 0.478\r\n187,mlp,_scale = True; activation = tanh; alpha = 0.00241873404932; batch_size = auto; hidden_layer_sizes[0] = 219; hidden_layer_sizes[1] = 187; hidden_layer_sizes[2] = 300; learning_rate = adaptive; learning_rate_init = 0.687763327145; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.566 +- 0.376\r\n188,mlp,_scale = True; activation = tanh; alpha = 0.0038955923106; batch_size = auto; hidden_layer_sizes[0] = 244; hidden_layer_sizes[1] = 124; hidden_layer_sizes[2] = 211; learning_rate = adaptive; learning_rate_init = 0.881892229762; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.693 +- 0.136\r\n189,gp,kernel = matern; nu = 1.5,f1 and cv,0.643 +- 0.403\r\n190,knn,_scale = True; algorithm = kd_tree; leaf_size = 1; metric = euclidean; n_neighbors = 17; weights = uniform,f1 and cv,0.667 +- 0.183\r\n191,knn,_scale = True; algorithm = kd_tree; leaf_size = 29; metric = euclidean; n_neighbors = 16; weights = uniform,f1 and cv,0.706 +- 0.264\r\n192,mnb,_scale_minmax = True; alpha = 0.876309586449; class_prior = None; fit_prior = 1,f1 and cv,0.788 +- 0.051\r\n193,mnb,_scale_minmax = True; alpha = 0.688666400872; class_prior = None; fit_prior = 0,f1 and cv,0.737 +- 0.120\r\n194,knn,_scale = True; algorithm = kd_tree; leaf_size = 38; metric = chebyshev; n_neighbors = 14; weights = uniform,f1 and cv,0.777 +- 0.225\r\n195,knn,_scale = True; algorithm = kd_tree; leaf_size = 27; metric = chebyshev; n_neighbors = 19; weights = uniform,f1 and cv,0.742 +- 0.112\r\n196,mlp,_scale = True; activation = relu; alpha = 0.00118456803489; batch_size = auto; hidden_layer_sizes[0] = 29; hidden_layer_sizes[1] = 97; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.655 +- 0.337\r\n197,mlp,_scale = True; activation = relu; alpha = 0.00716166598187; batch_size = auto; hidden_layer_sizes[0] = 5; hidden_layer_sizes[1] = 171; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.683 +- 0.427\r\n198,mlp,_scale = True; activation = relu; alpha = 0.00498911153908; batch_size = auto; beta_1 = 0.896843350434; beta_2 = 0.9872568151; hidden_layer_sizes[0] = 57; hidden_layer_sizes[1] = 104; learning_rate_init = 0.647266236782; len(hidden_layer_sizes) = 2; solver = adam,f1 and cv,0.100 +- 0.400\r\n199,mlp,_scale = True; activation = relu; alpha = 0.0086748781932; batch_size = auto; beta_1 = 0.808846389859; beta_2 = 0.918761804441; hidden_layer_sizes[0] = 5; hidden_layer_sizes[1] = 116; learning_rate_init = 0.839328146746; len(hidden_layer_sizes) = 2; solver = adam,f1 and cv,0.516 +- 0.581\r\n200,mlp,_scale = True; activation = logistic; alpha = 0.00791651056937; batch_size = auto; hidden_layer_sizes[0] = 96; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.702 +- 0.363\r\n201,mlp,_scale = True; activation = logistic; alpha = 0.00761269673425; batch_size = auto; hidden_layer_sizes[0] = 195; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.741 +- 0.281\r\n202,mlp,_scale = True; activation = logistic; alpha = 0.00599579013339; batch_size = auto; hidden_layer_sizes[0] = 132; learning_rate = invscaling; learning_rate_init = 0.878033337806; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.739 +- 0.178\r\n203,mlp,_scale = True; activation = logistic; alpha = 0.00819682558214; batch_size = auto; hidden_layer_sizes[0] = 243; learning_rate = invscaling; learning_rate_init = 0.807274141581; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.567 +- 0.653\r\n204,mlp,_scale = True; activation = relu; alpha = 0.0014727938631; batch_size = auto; hidden_layer_sizes[0] = 237; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.800 +- 0.116\r\n205,mlp,_scale = True; activation = relu; alpha = 0.00554646313568; batch_size = auto; hidden_layer_sizes[0] = 124; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.743 +- 0.264\r\n206,knn,_scale = True; algorithm = brute; metric = manhattan; n_neighbors = 20; weights = uniform,f1 and cv,0.619 +- 0.687\r\n207,knn,_scale = True; algorithm = brute; metric = manhattan; n_neighbors = 9; weights = uniform,f1 and cv,0.732 +- 0.216\r\n208,knn,_scale = True; algorithm = brute; metric = minkowski; n_neighbors = 6; p = 1; weights = uniform,f1 and cv,0.819 +- 0.152\r\n209,knn,_scale = True; algorithm = brute; metric = minkowski; n_neighbors = 14; p = 3; weights = uniform,f1 and cv,0.664 +- 0.262\r\n210,gp,alpha = 0.441179556454; kernel = rational_quadratic; length_scale = 0.0590781492897,f1 and cv,0.577 +- 0.378\r\n211,gp,alpha = 0.394747125512; kernel = rational_quadratic; length_scale = 0.454814209874,f1 and cv,0.620 +- 0.131\r\n212,mlp,_scale = True; activation = relu; alpha = 0.00384623541841; batch_size = auto; beta_1 = 0.937909544848; beta_2 = 0.889828852962; hidden_layer_sizes[0] = 260; learning_rate_init = 0.981211355904; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.682 +- 0.311\r\n213,mlp,_scale = True; activation = relu; alpha = 0.00365876945699; batch_size = auto; beta_1 = 0.894011255549; beta_2 = 0.802233668538; hidden_layer_sizes[0] = 27; learning_rate_init = 0.406507847967; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.745 +- 0.274\r\n214,mlp,_scale = True; activation = identity; alpha = 0.00845645787211; batch_size = auto; hidden_layer_sizes[0] = 273; learning_rate = invscaling; learning_rate_init = 0.445585302825; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.767 +- 0.149\r\n215,mlp,_scale = True; activation = identity; alpha = 0.00108570440386; batch_size = auto; hidden_layer_sizes[0] = 121; learning_rate = invscaling; learning_rate_init = 0.895340433661; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.864 +- 0.219\r\n216,mlp,_scale = True; activation = tanh; alpha = 0.000728993751142; batch_size = auto; hidden_layer_sizes[0] = 278; learning_rate = invscaling; learning_rate_init = 0.670393489284; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.657 +- 0.276\r\n217,mlp,_scale = True; activation = identity; alpha = 0.00590165715418; batch_size = auto; hidden_layer_sizes[0] = 121; learning_rate = invscaling; learning_rate_init = 0.86357115334; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.777 +- 0.245\r\n218,mlp,_scale = True; activation = relu; alpha = 0.00458576632242; batch_size = auto; hidden_layer_sizes[0] = 203; learning_rate = adaptive; learning_rate_init = 0.303130900389; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.622 +- 0.207\r\n219,knn,_scale = True; algorithm = brute; metric = manhattan; n_neighbors = 20; weights = distance,f1 and cv,0.754 +- 0.393\r\n220,mlp,_scale = True; activation = identity; alpha = 0.0061414985785; batch_size = auto; beta_1 = 0.850813944282; beta_2 = 0.819958129268; hidden_layer_sizes[0] = 93; learning_rate_init = 0.743269273633; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.761 +- 0.209\r\n221,mlp,_scale = True; activation = relu; alpha = 0.00301544594515; batch_size = auto; hidden_layer_sizes[0] = 237; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.734 +- 0.086\r\n222,logreg,C = 316.540829698; _scale = True; class_weight = balanced; dual = True; fit_intercept = False; penalty = l2; tol = 113.651538457,f1 and cv,0.749 +- 0.297\r\n223,mlp,_scale = True; activation = tanh; alpha = 0.00748704668471; batch_size = auto; hidden_layer_sizes[0] = 10; hidden_layer_sizes[1] = 20; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.602 +- 0.637\r\n224,knn,_scale = True; algorithm = kd_tree; leaf_size = 38; metric = manhattan; n_neighbors = 18; weights = distance,f1 and cv,0.672 +- 0.463\r\n225,mnb,_scale_minmax = True; alpha = 0.998765544364; class_prior = None; fit_prior = 1,f1 and cv,0.670 +- 0.229\r\n226,knn,_scale = True; algorithm = ball_tree; leaf_size = 39; metric = euclidean; n_neighbors = 13; weights = distance,f1 and cv,0.703 +- 0.324\r\n227,knn,_scale = True; algorithm = kd_tree; leaf_size = 38; metric = chebyshev; n_neighbors = 14; weights = uniform,f1 and cv,0.762 +- 0.128\r\n228,mlp,_scale = True; activation = relu; alpha = 0.000284386971655; batch_size = auto; hidden_layer_sizes[0] = 151; hidden_layer_sizes[1] = 3; hidden_layer_sizes[2] = 103; learning_rate = constant; learning_rate_init = 0.695437589557; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.696 +- 0.192\r\n229,mlp,_scale = True; activation = tanh; alpha = 0.00280894987658; batch_size = auto; hidden_layer_sizes[0] = 198; hidden_layer_sizes[1] = 135; learning_rate = invscaling; learning_rate_init = 0.317156548818; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.865 +- 0.253\r\n230,logreg,C = 0.379743154494; _scale = True; class_weight = balanced; dual = True; fit_intercept = True; penalty = l2; tol = 0.069387906243,f1 and cv,0.784 +- 0.242\r\n231,rf,criterion = gini; max_depth = 3; max_features = 0.414843892414; min_samples_leaf = 3; n_estimators = 100; n_jobs = -1,f1 and cv,0.802 +- 0.307\r\n232,mlp,_scale = True; activation = relu; alpha = 0.00546833979991; batch_size = auto; hidden_layer_sizes[0] = 108; hidden_layer_sizes[1] = 193; hidden_layer_sizes[2] = 34; learning_rate = invscaling; learning_rate_init = 0.189587204661; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.781 +- 0.163\r\n233,knn,_scale = True; algorithm = brute; metric = minkowski; n_neighbors = 6; p = 1; weights = uniform,f1 and cv,0.812 +- 0.379\r\n234,mlp,_scale = True; activation = tanh; alpha = 0.00823992812488; batch_size = auto; hidden_layer_sizes[0] = 295; hidden_layer_sizes[1] = 294; hidden_layer_sizes[2] = 44; learning_rate = invscaling; learning_rate_init = 0.481404118046; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.794 +- 0.209\r\n235,mlp,_scale = True; activation = relu; alpha = 0.00399410990265; batch_size = auto; hidden_layer_sizes[0] = 233; hidden_layer_sizes[1] = 17; hidden_layer_sizes[2] = 9; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.783 +- 0.259\r\n236,mlp,_scale = True; activation = identity; alpha = 0.00630579760633; batch_size = auto; hidden_layer_sizes[0] = 162; hidden_layer_sizes[1] = 289; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.715 +- 0.157\r\n237,mlp,_scale = True; activation = identity; alpha = 0.00612355292055; batch_size = auto; hidden_layer_sizes[0] = 189; hidden_layer_sizes[1] = 10; learning_rate = invscaling; learning_rate_init = 0.316571358391; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.714 +- 0.404\r\n238,knn,_scale = True; algorithm = ball_tree; leaf_size = 10; metric = minkowski; n_neighbors = 10; p = 1; weights = distance,f1 and cv,0.673 +- 0.232\r\n239,mlp,_scale = True; activation = logistic; alpha = 0.00242931276589; batch_size = auto; hidden_layer_sizes[0] = 195; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.707 +- 0.291\r\n240,mlp,_scale = True; activation = tanh; alpha = 0.00266562382463; batch_size = auto; hidden_layer_sizes[0] = 221; learning_rate = constant; learning_rate_init = 0.0228795034676; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.776 +- 0.187\r\n241,mlp,_scale = True; activation = relu; alpha = 0.00205598323924; batch_size = auto; hidden_layer_sizes[0] = 55; hidden_layer_sizes[1] = 20; learning_rate = invscaling; learning_rate_init = 0.925931788017; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.734 +- 0.255\r\n242,mlp,_scale = True; activation = relu; alpha = 0.000649033900464; batch_size = auto; beta_1 = 0.876033262692; beta_2 = 0.895049586659; hidden_layer_sizes[0] = 27; learning_rate_init = 0.143105264242; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.780 +- 0.375\r\n243,knn,_scale = True; algorithm = ball_tree; leaf_size = 38; metric = manhattan; n_neighbors = 9; weights = distance,f1 and cv,0.751 +- 0.171\r\n244,mlp,_scale = True; activation = tanh; alpha = 0.0013265392979; batch_size = auto; beta_1 = 0.943844591381; beta_2 = 0.947204916232; hidden_layer_sizes[0] = 62; learning_rate_init = 0.437697852476; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.718 +- 0.176\r\n245,knn,_scale = True; algorithm = brute; metric = chebyshev; n_neighbors = 4; weights = uniform,f1 and cv,0.645 +- 0.318\r\n246,mlp,_scale = True; activation = tanh; alpha = 0.00614748743749; batch_size = auto; beta_1 = 0.809114945577; beta_2 = 0.990605182173; hidden_layer_sizes[0] = 218; hidden_layer_sizes[1] = 50; hidden_layer_sizes[2] = 214; learning_rate_init = 0.158953806756; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.611 +- 0.631\r\n247,mlp,_scale = True; activation = identity; alpha = 0.00467152728732; batch_size = auto; hidden_layer_sizes[0] = 239; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.693 +- 0.136\r\n248,knn,_scale = True; algorithm = ball_tree; leaf_size = 42; metric = euclidean; n_neighbors = 13; weights = uniform,f1 and cv,0.599 +- 0.405\r\n249,knn,_scale = True; algorithm = ball_tree; leaf_size = 12; metric = chebyshev; n_neighbors = 18; weights = uniform,f1 and cv,0.783 +- 0.234\r\n250,knn,_scale = True; algorithm = brute; metric = euclidean; n_neighbors = 10; weights = distance,f1 and cv,0.791 +- 0.242\r\n251,mlp,_scale = True; activation = tanh; alpha = 0.00818619325238; batch_size = auto; hidden_layer_sizes[0] = 64; hidden_layer_sizes[1] = 247; hidden_layer_sizes[2] = 181; learning_rate = constant; learning_rate_init = 0.937549184535; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.551 +- 0.388\r\n252,rf,criterion = entropy; max_depth = 2; max_features = 0.908161834155; min_samples_leaf = 2; n_estimators = 100; n_jobs = -1,f1 and cv,0.771 +- 0.324\r\n253,dt,criterion = gini; max_depth = 9; max_features = 0.206621728603; min_samples_leaf = 3; min_samples_split = 4,f1 and cv,0.609 +- 0.414\r\n254,mlp,_scale = True; activation = tanh; alpha = 0.00439204791263; batch_size = auto; hidden_layer_sizes[0] = 152; hidden_layer_sizes[1] = 140; hidden_layer_sizes[2] = 137; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.426 +- 0.496\r\n255,mlp,_scale = True; activation = identity; alpha = 0.00499907212969; batch_size = auto; hidden_layer_sizes[0] = 13; hidden_layer_sizes[1] = 225; learning_rate = adaptive; learning_rate_init = 0.95876802125; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.563 +- 0.731\r\n256,mlp,_scale = True; activation = identity; alpha = 0.00834453755326; batch_size = auto; hidden_layer_sizes[0] = 124; hidden_layer_sizes[1] = 116; hidden_layer_sizes[2] = 242; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.770 +- 0.257\r\n257,mlp,_scale = True; activation = relu; alpha = 0.00659089491028; batch_size = auto; hidden_layer_sizes[0] = 78; hidden_layer_sizes[1] = 205; learning_rate = adaptive; learning_rate_init = 0.200996550946; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.725 +- 0.274\r\n258,knn,_scale = True; algorithm = kd_tree; leaf_size = 29; metric = euclidean; n_neighbors = 16; weights = uniform,f1 and cv,0.757 +- 0.379\r\n259,mlp,_scale = True; activation = identity; alpha = 0.000532662580324; batch_size = auto; beta_1 = 0.883000256325; beta_2 = 0.985679904944; hidden_layer_sizes[0] = 264; hidden_layer_sizes[1] = 299; learning_rate_init = 0.788356525758; len(hidden_layer_sizes) = 2; solver = adam,f1 and cv,0.709 +- 0.299\r\n260,mlp,_scale = True; activation = tanh; alpha = 0.00181218575585; batch_size = auto; hidden_layer_sizes[0] = 262; hidden_layer_sizes[1] = 37; learning_rate = adaptive; learning_rate_init = 0.513613365916; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.650 +- 0.452\r\n261,mlp,_scale = True; activation = identity; alpha = 0.00425512975095; batch_size = auto; hidden_layer_sizes[0] = 7; learning_rate = adaptive; learning_rate_init = 0.0618833847181; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.752 +- 0.272\r\n262,knn,_scale = True; algorithm = kd_tree; leaf_size = 36; metric = minkowski; n_neighbors = 6; p = 2; weights = uniform,f1 and cv,0.733 +- 0.323\r\n263,knn,_scale = True; algorithm = brute; metric = chebyshev; n_neighbors = 4; weights = distance,f1 and cv,0.710 +- 0.186\r\n264,mlp,_scale = True; activation = logistic; alpha = 0.00354360494334; batch_size = auto; beta_1 = 0.82693224625; beta_2 = 0.817798909972; hidden_layer_sizes[0] = 20; learning_rate_init = 0.452164272742; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.816 +- 0.496\r\n265,knn,_scale = True; algorithm = kd_tree; leaf_size = 48; metric = minkowski; n_neighbors = 10; p = 2; weights = distance,f1 and cv,0.626 +- 0.642\r\n266,mlp,_scale = True; activation = identity; alpha = 0.00543802988332; batch_size = auto; hidden_layer_sizes[0] = 12; learning_rate = constant; learning_rate_init = 0.877546109; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.709 +- 0.405\r\n267,svm,C = 1.62680590415e-05; _scale = True; cache_size = 15000; class_weight = balanced; coef0 = 692; degree = 5; gamma = 0.412453389278; kernel = poly; max_iter = 50000; probability = True; shrinking = True,f1 and cv,0.661 +- 0.228\r\n268,knn,_scale = True; algorithm = brute; metric = manhattan; n_neighbors = 9; weights = uniform,f1 and cv,0.774 +- 0.233\r\n269,mlp,_scale = True; activation = relu; alpha = 0.00101355958991; batch_size = auto; hidden_layer_sizes[0] = 2; hidden_layer_sizes[1] = 167; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.734 +- 0.304\r\n270,mlp,_scale = True; activation = relu; alpha = 0.00262922227938; batch_size = auto; hidden_layer_sizes[0] = 26; hidden_layer_sizes[1] = 40; hidden_layer_sizes[2] = 113; learning_rate = adaptive; learning_rate_init = 0.299887409962; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.777 +- 0.245\r\n271,mlp,_scale = True; activation = tanh; alpha = 0.00271773637471; batch_size = auto; hidden_layer_sizes[0] = 119; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.749 +- 0.345\r\n272,knn,_scale = True; algorithm = brute; metric = minkowski; n_neighbors = 5; p = 1; weights = distance,f1 and cv,0.743 +- 0.445\r\n273,mlp,_scale = True; activation = relu; alpha = 0.000626343626388; batch_size = auto; hidden_layer_sizes[0] = 145; hidden_layer_sizes[1] = 271; learning_rate = constant; learning_rate_init = 0.738766298476; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.771 +- 0.146\r\n274,mlp,_scale = True; activation = tanh; alpha = 0.00385332691371; batch_size = auto; hidden_layer_sizes[0] = 215; learning_rate = adaptive; learning_rate_init = 0.483603069058; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.648 +- 0.076\r\n275,knn,_scale = True; algorithm = ball_tree; leaf_size = 28; metric = manhattan; n_neighbors = 4; weights = uniform,f1 and cv,0.760 +- 0.271\r\n276,knn,_scale = True; algorithm = kd_tree; leaf_size = 20; metric = chebyshev; n_neighbors = 3; weights = distance,f1 and cv,0.655 +- 0.280\r\n277,mlp,_scale = True; activation = logistic; alpha = 0.000848257026879; batch_size = auto; hidden_layer_sizes[0] = 199; learning_rate = adaptive; learning_rate_init = 0.653372020353; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.703 +- 0.104\r\n278,mlp,_scale = True; activation = logistic; alpha = 0.00419892412904; batch_size = auto; hidden_layer_sizes[0] = 132; learning_rate = invscaling; learning_rate_init = 0.675419025257; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.808 +- 0.160\r\n279,mlp,_scale = True; activation = identity; alpha = 0.00338450371429; batch_size = auto; hidden_layer_sizes[0] = 61; hidden_layer_sizes[1] = 198; learning_rate = constant; learning_rate_init = 0.633056212575; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.688 +- 0.708\r\n280,knn,_scale = True; algorithm = ball_tree; leaf_size = 35; metric = minkowski; n_neighbors = 7; p = 3; weights = uniform,f1 and cv,0.712 +- 0.205\r\n281,mlp,_scale = True; activation = identity; alpha = 0.000989861481974; batch_size = auto; beta_1 = 0.826792157264; beta_2 = 0.929603696055; hidden_layer_sizes[0] = 258; hidden_layer_sizes[1] = 233; hidden_layer_sizes[2] = 101; learning_rate_init = 0.36232540548; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.689 +- 0.493\r\n282,mlp,_scale = True; activation = tanh; alpha = 0.00620264986437; batch_size = auto; beta_1 = 0.851090764705; beta_2 = 0.895041241823; hidden_layer_sizes[0] = 180; hidden_layer_sizes[1] = 163; learning_rate_init = 0.480899000813; len(hidden_layer_sizes) = 2; solver = adam,f1 and cv,0.798 +- 0.278\r\n283,knn,_scale = True; algorithm = kd_tree; leaf_size = 30; metric = manhattan; n_neighbors = 20; weights = uniform,f1 and cv,0.868 +- 0.069\r\n284,dt,criterion = entropy; max_depth = 5; max_features = 0.849892428315; min_samples_leaf = 1; min_samples_split = 3,f1 and cv,0.699 +- 0.329\r\n285,mlp,_scale = True; activation = logistic; alpha = 0.00292615838825; batch_size = auto; hidden_layer_sizes[0] = 111; hidden_layer_sizes[1] = 133; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.741 +- 0.297\r\n286,mlp,_scale = True; activation = tanh; alpha = 0.00192212524063; batch_size = auto; hidden_layer_sizes[0] = 175; hidden_layer_sizes[1] = 173; hidden_layer_sizes[2] = 62; learning_rate = adaptive; learning_rate_init = 0.928033125073; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.591 +- 0.614\r\n287,knn,_scale = True; algorithm = ball_tree; leaf_size = 16; metric = chebyshev; n_neighbors = 15; weights = distance,f1 and cv,0.680 +- 0.196\r\n288,knn,_scale = True; algorithm = kd_tree; leaf_size = 4; metric = euclidean; n_neighbors = 19; weights = distance,f1 and cv,0.643 +- 0.651\r\n289,svm,C = 106.323374676; _scale = True; cache_size = 15000; class_weight = balanced; kernel = linear; max_iter = 50000; probability = True; shrinking = True,f1 and cv,0.821 +- 0.158\r\n290,gp,alpha = 0.340932352507; kernel = rational_quadratic; length_scale = 1.23158862963,f1 and cv,0.623 +- 0.402\r\n291,mlp,_scale = True; activation = logistic; alpha = 0.000565210040334; batch_size = auto; hidden_layer_sizes[0] = 201; hidden_layer_sizes[1] = 125; hidden_layer_sizes[2] = 51; learning_rate = invscaling; learning_rate_init = 0.233137263443; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.267 +- 0.653\r\n292,mlp,_scale = True; activation = logistic; alpha = 0.00017320409652; batch_size = auto; beta_1 = 0.846859613319; beta_2 = 0.94537029331; hidden_layer_sizes[0] = 119; hidden_layer_sizes[1] = 56; learning_rate_init = 0.977563567719; len(hidden_layer_sizes) = 2; solver = adam,f1 and cv,0.386 +- 0.649\r\n293,mlp,_scale = True; activation = logistic; alpha = 0.00259394948016; batch_size = auto; hidden_layer_sizes[0] = 66; hidden_layer_sizes[1] = 129; learning_rate = invscaling; learning_rate_init = 0.680402756435; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.283 +- 0.696\r\n294,mlp,_scale = True; activation = identity; alpha = 0.00222570647724; batch_size = auto; hidden_layer_sizes[0] = 245; hidden_layer_sizes[1] = 285; hidden_layer_sizes[2] = 81; learning_rate = constant; learning_rate_init = 0.792386667536; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.439 +- 0.371\r\n295,mlp,_scale = True; activation = identity; alpha = 0.00597399649341; batch_size = auto; hidden_layer_sizes[0] = 102; hidden_layer_sizes[1] = 126; hidden_layer_sizes[2] = 4; learning_rate = invscaling; learning_rate_init = 0.237457763006; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.716 +- 0.285\r\n296,mlp,_scale = True; activation = logistic; alpha = 0.00104876965561; batch_size = auto; hidden_layer_sizes[0] = 42; learning_rate = constant; learning_rate_init = 0.564448785575; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.143 +- 0.571\r\n297,mlp,_scale = True; activation = logistic; alpha = 0.00762424225727; batch_size = auto; hidden_layer_sizes[0] = 170; hidden_layer_sizes[1] = 66; hidden_layer_sizes[2] = 108; learning_rate = adaptive; learning_rate_init = 0.501482073517; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.667 +- 0.000\r\n298,mlp,_scale = True; activation = relu; alpha = 0.00624514371129; batch_size = auto; beta_1 = 0.911687585984; beta_2 = 0.894605581229; hidden_layer_sizes[0] = 14; hidden_layer_sizes[1] = 73; hidden_layer_sizes[2] = 171; learning_rate_init = 0.945435557976; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.539 +- 0.546\r\n299,mlp,_scale = True; activation = logistic; alpha = 0.00514509929195; batch_size = auto; hidden_layer_sizes[0] = 121; hidden_layer_sizes[1] = 85; learning_rate = constant; learning_rate_init = 0.509323405659; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.279 +- 0.684\r\n300,mlp,_scale = True; activation = logistic; alpha = 0.00824536634614; batch_size = auto; beta_1 = 0.954249309354; beta_2 = 0.97068214188; hidden_layer_sizes[0] = 287; hidden_layer_sizes[1] = 9; hidden_layer_sizes[2] = 72; learning_rate_init = 0.987691072877; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.256 +- 0.629\r\n301,mlp,_scale = True; activation = logistic; alpha = 0.00205265569295; batch_size = auto; hidden_layer_sizes[0] = 228; hidden_layer_sizes[1] = 128; learning_rate = adaptive; learning_rate_init = 0.184262424594; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.636 +- 0.671\r\n302,logreg,C = 0.00137935604644; _scale = True; class_weight = balanced; dual = False; fit_intercept = True; penalty = l2; tol = 0.0145842190972,f1 and cv,0.818 +- 0.166\r\n303,mlp,_scale = True; activation = identity; alpha = 0.00642725880585; batch_size = auto; hidden_layer_sizes[0] = 120; learning_rate = invscaling; learning_rate_init = 0.910605189017; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.751 +- 0.315\r\n304,mlp,_scale = True; activation = tanh; alpha = 0.00259324962854; batch_size = auto; hidden_layer_sizes[0] = 204; hidden_layer_sizes[1] = 128; learning_rate = invscaling; learning_rate_init = 0.23371434887; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.675 +- 0.220\r\n305,logreg,C = 85728.663831; _scale = True; class_weight = balanced; fit_intercept = True; penalty = l1; tol = 0.00014382891317,f1 and cv,0.765 +- 0.126\r\n306,logreg,C = 5.50467027847; _scale = True; class_weight = balanced; fit_intercept = False; penalty = l1; tol = 0.000126567166882,f1 and cv,0.784 +- 0.179\r\n307,knn,_scale = True; algorithm = brute; metric = manhattan; n_neighbors = 20; weights = distance,f1 and cv,0.860 +- 0.217\r\n308,mlp,_scale = True; activation = identity; alpha = 0.00833430314328; batch_size = auto; beta_1 = 0.89867303735; beta_2 = 0.970351592919; hidden_layer_sizes[0] = 91; learning_rate_init = 0.67307423449; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.750 +- 0.258\r\n309,rf,criterion = gini; max_depth = 3; max_features = 0.114447064015; min_samples_leaf = 3; n_estimators = 100; n_jobs = -1,f1 and cv,0.843 +- 0.238\r\n310,mlp,_scale = True; activation = tanh; alpha = 0.00160710817081; batch_size = auto; hidden_layer_sizes[0] = 279; learning_rate = invscaling; learning_rate_init = 0.046382134631; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.781 +- 0.085\r\n311,knn,_scale = True; algorithm = brute; metric = minkowski; n_neighbors = 6; p = 1; weights = uniform,f1 and cv,0.736 +- 0.309\r\n312,logreg,C = 10407.6211163; _scale = True; class_weight = balanced; dual = True; fit_intercept = False; penalty = l2; tol = 0.00210492783993,f1 and cv,0.617 +- 0.213\r\n313,svm,C = 0.195192060829; _scale = True; cache_size = 15000; class_weight = balanced; coef0 = 320; gamma = 4.6071140382e-05; kernel = sigmoid; max_iter = 50000; probability = True; shrinking = True,f1 and cv,0.667 +- 0.000\r\n314,svm,C = 0.0166982107271; _scale = True; cache_size = 15000; class_weight = balanced; gamma = 1.47623031275; kernel = rbf; max_iter = 50000; probability = True; shrinking = True,f1 and cv,0.246 +- 0.603\r\n315,logreg,C = 1.46926593721; _scale = True; class_weight = balanced; dual = True; fit_intercept = True; penalty = l2; tol = 0.125761057813,f1 and cv,0.817 +- 0.236\r\n316,mlp,_scale = True; activation = relu; alpha = 0.00256735204536; batch_size = auto; hidden_layer_sizes[0] = 26; learning_rate = invscaling; learning_rate_init = 0.859947803826; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.571 +- 0.339\r\n317,knn,_scale = True; algorithm = kd_tree; leaf_size = 38; metric = chebyshev; n_neighbors = 14; weights = uniform,f1 and cv,0.655 +- 0.399\r\n318,mlp,_scale = True; activation = relu; alpha = 0.000412743466647; batch_size = auto; hidden_layer_sizes[0] = 238; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.692 +- 0.135\r\n319,mlp,_scale = True; activation = tanh; alpha = 0.00423020019596; batch_size = auto; hidden_layer_sizes[0] = 92; hidden_layer_sizes[1] = 273; hidden_layer_sizes[2] = 282; learning_rate = invscaling; learning_rate_init = 0.127087855813; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.677 +- 0.204\r\n320,mlp,_scale = True; activation = relu; alpha = 0.0059523843558; batch_size = auto; hidden_layer_sizes[0] = 292; hidden_layer_sizes[1] = 58; hidden_layer_sizes[2] = 54; learning_rate = invscaling; learning_rate_init = 0.0861197808327; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.717 +- 0.258\r\n321,mlp,_scale = True; activation = relu; alpha = 0.00837571236372; batch_size = auto; hidden_layer_sizes[0] = 234; hidden_layer_sizes[1] = 12; hidden_layer_sizes[2] = 9; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.622 +- 0.207\r\n322,mlp,_scale = True; activation = relu; alpha = 0.00257777214607; batch_size = auto; beta_1 = 0.979336840211; beta_2 = 0.938477937719; hidden_layer_sizes[0] = 8; hidden_layer_sizes[1] = 118; learning_rate_init = 0.0163379670585; len(hidden_layer_sizes) = 2; solver = adam,f1 and cv,0.777 +- 0.373\r\n323,mlp,_scale = True; activation = logistic; alpha = 0.00872884761682; batch_size = auto; hidden_layer_sizes[0] = 243; hidden_layer_sizes[1] = 181; hidden_layer_sizes[2] = 97; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.710 +- 0.196\r\n324,knn,_scale = True; algorithm = ball_tree; leaf_size = 39; metric = euclidean; n_neighbors = 13; weights = distance,f1 and cv,0.767 +- 0.125\r\n325,mlp,_scale = True; activation = relu; alpha = 0.00514834770096; batch_size = auto; hidden_layer_sizes[0] = 203; learning_rate = adaptive; learning_rate_init = 0.951744817527; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.746 +- 0.207\r\n326,mlp,_scale = True; activation = relu; alpha = 0.00114783074356; batch_size = auto; hidden_layer_sizes[0] = 60; hidden_layer_sizes[1] = 143; hidden_layer_sizes[2] = 27; learning_rate = constant; learning_rate_init = 0.0201929038252; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.725 +- 0.266\r\n327,mlp,_scale = True; activation = relu; alpha = 0.00221737610381; batch_size = auto; hidden_layer_sizes[0] = 126; learning_rate = constant; learning_rate_init = 0.896896646571; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.735 +- 0.174\r\n328,mlp,_scale = True; activation = relu; alpha = 0.00797102730764; batch_size = auto; beta_1 = 0.869408487589; beta_2 = 0.919347184791; hidden_layer_sizes[0] = 27; learning_rate_init = 0.20497604802; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.845 +- 0.198\r\n329,mlp,_scale = True; activation = tanh; alpha = 0.00628102451734; batch_size = auto; hidden_layer_sizes[0] = 221; learning_rate = constant; learning_rate_init = 0.0288070613664; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.799 +- 0.122\r\n330,knn,_scale = True; algorithm = kd_tree; leaf_size = 39; metric = manhattan; n_neighbors = 18; weights = distance,f1 and cv,0.628 +- 0.263\r\n331,mlp,_scale = True; activation = identity; alpha = 0.00131711859293; batch_size = auto; hidden_layer_sizes[0] = 7; hidden_layer_sizes[1] = 19; hidden_layer_sizes[2] = 17; learning_rate = adaptive; learning_rate_init = 0.937999844403; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.000 +- 0.000\r\n332,mnb,_scale_minmax = True; alpha = 0.00160241408131; class_prior = None; fit_prior = 1,f1 and cv,0.723 +- 0.337\r\n333,mlp,_scale = True; activation = identity; alpha = 0.000755742071334; batch_size = auto; hidden_layer_sizes[0] = 165; hidden_layer_sizes[1] = 294; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.622 +- 0.207\r\n334,knn,_scale = True; algorithm = brute; metric = euclidean; n_neighbors = 10; weights = distance,f1 and cv,0.630 +- 0.485\r\n335,gp,kernel = exp_sine_squared; length_scale = 6.15507927795; periodicity = 0,f1 and cv,0.688 +- 0.054\r\n336,mlp,_scale = True; activation = identity; alpha = 0.00818602661631; batch_size = auto; hidden_layer_sizes[0] = 196; hidden_layer_sizes[1] = 12; learning_rate = invscaling; learning_rate_init = 0.746776772047; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.500 +- 0.516\r\n337,knn,_scale = True; algorithm = ball_tree; leaf_size = 12; metric = chebyshev; n_neighbors = 18; weights = uniform,f1 and cv,0.722 +- 0.486\r\n338,knn,_scale = True; algorithm = ball_tree; leaf_size = 38; metric = manhattan; n_neighbors = 9; weights = distance,f1 and cv,0.633 +- 0.309\r\n339,mlp,_scale = True; activation = logistic; alpha = 0.00733017994509; batch_size = auto; beta_1 = 0.815657177898; beta_2 = 0.862696069458; hidden_layer_sizes[0] = 20; learning_rate_init = 0.126781354604; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.785 +- 0.278\r\n340,mlp,_scale = True; activation = logistic; alpha = 0.000100818697748; batch_size = auto; hidden_layer_sizes[0] = 260; hidden_layer_sizes[1] = 11; hidden_layer_sizes[2] = 219; learning_rate = constant; learning_rate_init = 0.696671319052; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.410 +- 0.670\r\n341,rf,criterion = entropy; max_depth = 2; max_features = 0.152026451055; min_samples_leaf = 2; n_estimators = 100; n_jobs = -1,f1 and cv,0.886 +- 0.138\r\n342,mlp,_scale = True; activation = relu; alpha = 0.00230093814755; batch_size = auto; hidden_layer_sizes[0] = 54; hidden_layer_sizes[1] = 17; learning_rate = invscaling; learning_rate_init = 0.69866885062; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.716 +- 0.352\r\n343,mlp,_scale = True; activation = logistic; alpha = 0.00886844727295; batch_size = auto; hidden_layer_sizes[0] = 194; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.853 +- 0.259\r\n344,mlp,_scale = True; activation = identity; alpha = 0.00869794386659; batch_size = auto; hidden_layer_sizes[0] = 281; hidden_layer_sizes[1] = 278; hidden_layer_sizes[2] = 126; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.731 +- 0.194\r\n345,mlp,_scale = True; activation = tanh; alpha = 0.00469977201754; batch_size = auto; beta_1 = 0.837768716794; beta_2 = 0.822176639536; hidden_layer_sizes[0] = 63; learning_rate_init = 0.888794414192; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.787 +- 0.289\r\n346,knn,_scale = True; algorithm = kd_tree; leaf_size = 29; metric = manhattan; n_neighbors = 20; weights = uniform,f1 and cv,0.788 +- 0.254\r\n347,mlp,_scale = True; activation = tanh; alpha = 0.00569633321217; batch_size = auto; hidden_layer_sizes[0] = 205; hidden_layer_sizes[1] = 134; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.698 +- 0.248\r\n348,gp,kernel = exp_sine_squared; length_scale = 1.23127103237; periodicity = 1,f1 and cv,0.317 +- 0.527\r\n349,knn,_scale = True; algorithm = kd_tree; leaf_size = 29; metric = euclidean; n_neighbors = 15; weights = uniform,f1 and cv,0.772 +- 0.124\r\n350,knn,_scale = True; algorithm = brute; metric = manhattan; n_neighbors = 9; weights = uniform,f1 and cv,0.698 +- 0.175\r\n351,knn,_scale = True; algorithm = ball_tree; leaf_size = 10; metric = minkowski; n_neighbors = 10; p = 1; weights = distance,f1 and cv,0.838 +- 0.370\r\n352,mlp,_scale = True; activation = identity; alpha = 0.00303723211783; batch_size = auto; hidden_layer_sizes[0] = 9; learning_rate = adaptive; learning_rate_init = 0.00851605918986; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.810 +- 0.191\r\n353,mlp,_scale = True; activation = logistic; alpha = 0.00104428031269; batch_size = auto; hidden_layer_sizes[0] = 133; learning_rate = invscaling; learning_rate_init = 0.197305734958; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.524 +- 0.532\r\n354,mlp,_scale = True; activation = relu; alpha = 0.00819604091558; batch_size = auto; hidden_layer_sizes[0] = 99; hidden_layer_sizes[1] = 64; hidden_layer_sizes[2] = 64; learning_rate = adaptive; learning_rate_init = 0.724897106283; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.643 +- 0.418\r\n355,mlp,_scale = True; activation = relu; alpha = 0.00523273904536; batch_size = auto; hidden_layer_sizes[0] = 136; hidden_layer_sizes[1] = 272; learning_rate = constant; learning_rate_init = 0.194974768793; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.771 +- 0.272\r\n356,mlp,_scale = True; activation = identity; alpha = 0.00859128532404; batch_size = auto; hidden_layer_sizes[0] = 238; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.818 +- 0.166\r\n357,mlp,_scale = True; activation = relu; alpha = 0.00868522115008; batch_size = auto; hidden_layer_sizes[0] = 83; hidden_layer_sizes[1] = 209; learning_rate = adaptive; learning_rate_init = 0.0036031028349; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.734 +- 0.369\r\n358,knn,_scale = True; algorithm = kd_tree; leaf_size = 35; metric = minkowski; n_neighbors = 7; p = 2; weights = uniform,f1 and cv,0.668 +- 0.439\r\n359,mlp,_scale = True; activation = tanh; alpha = 0.00175019297081; batch_size = auto; hidden_layer_sizes[0] = 119; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.750 +- 0.333\r\n360,mlp,_scale = True; activation = tanh; alpha = 0.00149016087289; batch_size = auto; beta_1 = 0.833563941202; beta_2 = 0.887136020847; hidden_layer_sizes[0] = 184; hidden_layer_sizes[1] = 159; learning_rate_init = 0.777270209309; len(hidden_layer_sizes) = 2; solver = adam,f1 and cv,0.700 +- 0.253\r\n361,mlp,_scale = True; activation = identity; alpha = 0.00182936352472; batch_size = auto; beta_1 = 0.804827503638; beta_2 = 0.897454230843; hidden_layer_sizes[0] = 259; hidden_layer_sizes[1] = 297; learning_rate_init = 0.33999375309; len(hidden_layer_sizes) = 2; solver = adam,f1 and cv,0.803 +- 0.138\r\n362,knn,_scale = True; algorithm = ball_tree; leaf_size = 28; metric = manhattan; n_neighbors = 4; weights = uniform,f1 and cv,0.715 +- 0.266\r\n363,knn,_scale = True; algorithm = brute; metric = minkowski; n_neighbors = 5; p = 1; weights = distance,f1 and cv,0.776 +- 0.146\r\n364,mlp,_scale = True; activation = relu; alpha = 0.00145397343698; batch_size = auto; hidden_layer_sizes[0] = 2; hidden_layer_sizes[1] = 161; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.723 +- 0.172\r\n365,knn,_scale = True; algorithm = brute; metric = chebyshev; n_neighbors = 4; weights = distance,f1 and cv,0.629 +- 0.093\r\n366,mlp,_scale = True; activation = identity; alpha = 0.00473660648641; batch_size = auto; hidden_layer_sizes[0] = 12; learning_rate = constant; learning_rate_init = 0.441573946607; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.666 +- 0.421\r\n367,knn,_scale = True; algorithm = brute; metric = chebyshev; n_neighbors = 5; weights = uniform,f1 and cv,0.690 +- 0.299\r\n368,knn,_scale = True; algorithm = brute; metric = euclidean; n_neighbors = 11; weights = uniform,f1 and cv,0.721 +- 0.183\r\n369,mlp,_scale = True; activation = tanh; alpha = 0.00548795501913; batch_size = auto; beta_1 = 0.944574268838; beta_2 = 0.961187513145; hidden_layer_sizes[0] = 117; hidden_layer_sizes[1] = 203; hidden_layer_sizes[2] = 180; learning_rate_init = 0.8196348598; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.664 +- 0.256\r\n370,svm,C = 45236.8060056; _scale = True; cache_size = 15000; class_weight = balanced; kernel = linear; max_iter = 50000; probability = True; shrinking = True,f1 and cv,0.724 +- 0.362\r\n371,mlp,_scale = True; activation = tanh; alpha = 0.00863031991079; batch_size = auto; hidden_layer_sizes[0] = 70; hidden_layer_sizes[1] = 121; learning_rate = adaptive; learning_rate_init = 0.21930917353; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.748 +- 0.285\r\n372,svm,C = 3330.46315463; _scale = True; cache_size = 15000; class_weight = balanced; coef0 = 402; degree = 5; gamma = 495.798025791; kernel = poly; max_iter = 50000; probability = True; shrinking = True,f1 and cv,0.663 +- 0.139\r\n373,mlp,_scale = True; activation = logistic; alpha = 0.00560162739189; batch_size = auto; hidden_layer_sizes[0] = 199; learning_rate = adaptive; learning_rate_init = 0.216126073855; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.604 +- 0.126\r\n374,dt,criterion = gini; max_depth = 9; max_features = 0.108945887204; min_samples_leaf = 3; min_samples_split = 4,f1 and cv,0.750 +- 0.227\r\n375,knn,_scale = True; algorithm = ball_tree; leaf_size = 35; metric = minkowski; n_neighbors = 7; p = 3; weights = uniform,f1 and cv,0.750 +- 0.227\r\n376,mlp,_scale = True; activation = logistic; alpha = 0.00842652778583; batch_size = auto; hidden_layer_sizes[0] = 114; hidden_layer_sizes[1] = 133; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.797 +- 0.311\r\n377,knn,_scale = True; algorithm = ball_tree; leaf_size = 21; metric = euclidean; n_neighbors = 6; weights = uniform,f1 and cv,0.651 +- 0.513\r\n378,mlp,_scale = True; activation = identity; alpha = 0.00401452209263; batch_size = auto; hidden_layer_sizes[0] = 61; hidden_layer_sizes[1] = 197; learning_rate = constant; learning_rate_init = 0.617695514235; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.615 +- 0.496\r\n379,knn,_scale = True; algorithm = kd_tree; leaf_size = 49; metric = minkowski; n_neighbors = 10; p = 3; weights = distance,f1 and cv,0.670 +- 0.095\r\n380,mlp,_scale = True; activation = tanh; alpha = 0.0073362195518; batch_size = auto; hidden_layer_sizes[0] = 215; learning_rate = adaptive; learning_rate_init = 0.0390695367536; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.861 +- 0.268\r\n381,mlp,_scale = True; activation = identity; alpha = 0.00485582735763; batch_size = auto; beta_1 = 0.917131038685; beta_2 = 0.935884839678; hidden_layer_sizes[0] = 281; hidden_layer_sizes[1] = 265; hidden_layer_sizes[2] = 126; learning_rate_init = 0.221448368641; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.617 +- 0.548\r\n382,dt,criterion = entropy; max_depth = 5; max_features = 0.166993450906; min_samples_leaf = 1; min_samples_split = 3,f1 and cv,0.429 +- 0.591\r\n383,knn,_scale = True; algorithm = kd_tree; leaf_size = 20; metric = chebyshev; n_neighbors = 3; weights = distance,f1 and cv,0.672 +- 0.412\r\n384,mlp,_scale = True; activation = identity; alpha = 0.00464886411401; batch_size = auto; hidden_layer_sizes[0] = 13; hidden_layer_sizes[1] = 232; learning_rate = adaptive; learning_rate_init = 0.0632747534908; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.816 +- 0.257\r\n385,mlp,_scale = True; activation = tanh; alpha = 0.00401985656003; batch_size = auto; hidden_layer_sizes[0] = 52; hidden_layer_sizes[1] = 156; hidden_layer_sizes[2] = 213; learning_rate = constant; learning_rate_init = 0.332540258775; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.733 +- 0.415\r\n386,knn,_scale = True; algorithm = ball_tree; leaf_size = 17; metric = chebyshev; n_neighbors = 15; weights = distance,f1 and cv,0.632 +- 0.277\r\n387,knn,_scale = True; algorithm = kd_tree; leaf_size = 3; metric = euclidean; n_neighbors = 19; weights = distance,f1 and cv,0.773 +- 0.223\r\n388,mlp,_scale = True; activation = tanh; alpha = 0.00305833390841; batch_size = auto; hidden_layer_sizes[0] = 34; hidden_layer_sizes[1] = 142; hidden_layer_sizes[2] = 145; learning_rate = adaptive; learning_rate_init = 0.112840364065; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.771 +- 0.272\r\n389,gp,alpha = 0.182090203556; kernel = rational_quadratic; length_scale = 0.855181474309,f1 and cv,0.640 +- 0.371\r\n390,mlp,_scale = True; activation = tanh; alpha = 0.00869573862285; batch_size = auto; hidden_layer_sizes[0] = 286; hidden_layer_sizes[1] = 69; hidden_layer_sizes[2] = 55; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.687 +- 0.262\r\n391,mlp,_scale = True; activation = identity; alpha = 0.00845461272476; batch_size = auto; hidden_layer_sizes[0] = 226; hidden_layer_sizes[1] = 72; hidden_layer_sizes[2] = 276; learning_rate = invscaling; learning_rate_init = 0.93455425833; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.741 +- 0.356\r\n392,mlp,_scale = True; activation = logistic; alpha = 0.00561501028415; batch_size = auto; hidden_layer_sizes[0] = 163; hidden_layer_sizes[1] = 68; hidden_layer_sizes[2] = 107; learning_rate = adaptive; learning_rate_init = 0.200200463088; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.747 +- 0.054\r\n393,logreg,C = 1.60164244522e-05; _scale = True; class_weight = balanced; dual = False; fit_intercept = True; penalty = l2; tol = 1.01690187877,f1 and cv,0.859 +- 0.170\r\n394,knn,_scale = True; algorithm = brute; metric = manhattan; n_neighbors = 20; weights = distance,f1 and cv,0.625 +- 0.387\r\n395,mlp,_scale = True; activation = identity; alpha = 0.00119263797158; batch_size = auto; hidden_layer_sizes[0] = 122; learning_rate = invscaling; learning_rate_init = 0.934435482261; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.652 +- 0.485\r\n396,rf,criterion = gini; max_depth = 3; max_features = 0.150862533492; min_samples_leaf = 3; n_estimators = 100; n_jobs = -1,f1 and cv,0.761 +- 0.398\r\n397,logreg,C = 0.967685528007; _scale = True; class_weight = balanced; dual = True; fit_intercept = True; penalty = l2; tol = 1.83932774191e-05,f1 and cv,0.709 +- 0.472\r\n398,mlp,_scale = True; activation = identity; alpha = 0.00746032482678; batch_size = auto; hidden_layer_sizes[0] = 192; hidden_layer_sizes[1] = 126; hidden_layer_sizes[2] = 287; learning_rate = constant; learning_rate_init = 0.82811770041; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.296 +- 0.350\r\n399,mlp,_scale = True; activation = logistic; alpha = 0.00359218773566; batch_size = auto; beta_1 = 0.90583908353; beta_2 = 0.900979473187; hidden_layer_sizes[0] = 32; hidden_layer_sizes[1] = 144; learning_rate_init = 0.28498347755; len(hidden_layer_sizes) = 2; solver = adam,f1 and cv,0.276 +- 0.677\r\n400,mlp,_scale = True; activation = tanh; alpha = 0.00845076814561; batch_size = auto; hidden_layer_sizes[0] = 277; learning_rate = invscaling; learning_rate_init = 0.159481059923; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.622 +- 0.207\r\n401,mlp,_scale = True; activation = relu; alpha = 0.000195331257204; batch_size = auto; beta_1 = 0.920194042804; beta_2 = 0.975423056122; hidden_layer_sizes[0] = 190; hidden_layer_sizes[1] = 59; hidden_layer_sizes[2] = 253; learning_rate_init = 0.169574009451; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.400 +- 0.653\r\n402,mlp,_scale = True; activation = identity; alpha = 0.00329927031433; batch_size = auto; beta_1 = 0.941757958353; beta_2 = 0.984237582581; hidden_layer_sizes[0] = 93; learning_rate_init = 0.901945226902; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.701 +- 0.255\r\n403,rf,criterion = entropy; max_depth = 2; max_features = 0.41285462442; min_samples_leaf = 2; n_estimators = 100; n_jobs = -1,f1 and cv,0.632 +- 0.368\r\n404,mlp,_scale = True; activation = relu; alpha = 0.000428898465953; batch_size = auto; beta_1 = 0.959339229263; beta_2 = 0.994065423552; hidden_layer_sizes[0] = 27; learning_rate_init = 0.795784105474; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.850 +- 0.274\r\n405,logreg,C = 4.5460426167; _scale = True; class_weight = balanced; fit_intercept = False; penalty = l1; tol = 1.40360408069e-05,f1 and cv,0.681 +- 0.304\r\n406,mlp,_scale = True; activation = tanh; alpha = 0.0028229308381; batch_size = auto; hidden_layer_sizes[0] = 197; hidden_layer_sizes[1] = 135; learning_rate = invscaling; learning_rate_init = 0.168697613502; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.703 +- 0.225\r\n407,knn,_scale = True; algorithm = brute; metric = minkowski; n_neighbors = 6; p = 1; weights = uniform,f1 and cv,0.705 +- 0.435\r\n408,logreg,C = 1252.28657932; _scale = True; class_weight = balanced; fit_intercept = True; penalty = l1; tol = 0.0136986779605,f1 and cv,0.807 +- 0.237\r\n409,mlp,_scale = True; activation = logistic; alpha = 0.00741827562275; batch_size = auto; hidden_layer_sizes[0] = 194; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.590 +- 0.151\r\n410,mlp,_scale = True; activation = tanh; alpha = 0.00622598644367; batch_size = auto; hidden_layer_sizes[0] = 270; learning_rate = constant; learning_rate_init = 0.354688363605; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.726 +- 0.206\r\n411,mlp,_scale = True; activation = logistic; alpha = 0.00788566657083; batch_size = auto; hidden_layer_sizes[0] = 229; hidden_layer_sizes[1] = 126; learning_rate = adaptive; learning_rate_init = 0.950873013335; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.133 +- 0.533\r\n412,knn,_scale = True; algorithm = ball_tree; leaf_size = 39; metric = euclidean; n_neighbors = 14; weights = distance,f1 and cv,0.826 +- 0.138\r\n413,mlp,_scale = True; activation = relu; alpha = 0.00537555401414; batch_size = auto; hidden_layer_sizes[0] = 113; hidden_layer_sizes[1] = 197; hidden_layer_sizes[2] = 73; learning_rate = invscaling; learning_rate_init = 0.0267762886009; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.745 +- 0.274\r\n414,mlp,_scale = True; activation = relu; alpha = 0.000745945658486; batch_size = auto; hidden_layer_sizes[0] = 236; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.695 +- 0.163\r\n415,mlp,_scale = True; activation = relu; alpha = 0.000283001198362; batch_size = auto; hidden_layer_sizes[0] = 203; learning_rate = adaptive; learning_rate_init = 0.706117587961; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.749 +- 0.250\r\n416,mlp,_scale = True; activation = logistic; alpha = 0.00730978534392; batch_size = auto; hidden_layer_sizes[0] = 230; hidden_layer_sizes[1] = 206; hidden_layer_sizes[2] = 134; learning_rate = invscaling; learning_rate_init = 0.440721884626; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.533 +- 0.533\r\n417,knn,_scale = True; algorithm = ball_tree; leaf_size = 11; metric = minkowski; n_neighbors = 9; p = 1; weights = distance,f1 and cv,0.669 +- 0.364\r\n418,mlp,_scale = True; activation = logistic; alpha = 0.000171271671167; batch_size = auto; beta_1 = 0.913623948599; beta_2 = 0.802750244192; hidden_layer_sizes[0] = 21; learning_rate_init = 0.339338004717; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.700 +- 0.082\r\n419,mlp,_scale = True; activation = tanh; alpha = 0.00146966504813; batch_size = auto; hidden_layer_sizes[0] = 64; hidden_layer_sizes[1] = 284; hidden_layer_sizes[2] = 271; learning_rate = invscaling; learning_rate_init = 0.67622687065; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.676 +- 0.221\r\n420,mlp,_scale = True; activation = logistic; alpha = 0.00284583323507; batch_size = auto; hidden_layer_sizes[0] = 284; hidden_layer_sizes[1] = 278; hidden_layer_sizes[2] = 29; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.615 +- 0.327\r\n421,mlp,_scale = True; activation = relu; alpha = 0.00246551206649; batch_size = auto; hidden_layer_sizes[0] = 126; learning_rate = constant; learning_rate_init = 0.786268327469; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.757 +- 0.278\r\n422,mlp,_scale = True; activation = relu; alpha = 0.0029147398737; batch_size = auto; hidden_layer_sizes[0] = 250; hidden_layer_sizes[1] = 65; hidden_layer_sizes[2] = 295; learning_rate = constant; learning_rate_init = 0.803964441675; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.699 +- 0.157\r\n423,knn,_scale = True; algorithm = kd_tree; leaf_size = 27; metric = chebyshev; n_neighbors = 19; weights = uniform,f1 and cv,0.750 +- 0.059\r\n424,mlp,_scale = True; activation = relu; alpha = 0.0081261216967; batch_size = auto; beta_1 = 0.908411404654; beta_2 = 0.847630903201; hidden_layer_sizes[0] = 12; hidden_layer_sizes[1] = 121; learning_rate_init = 0.143989380824; len(hidden_layer_sizes) = 2; solver = adam,f1 and cv,0.769 +- 0.428\r\n425,mlp,_scale = True; activation = tanh; alpha = 0.00100939898622; batch_size = auto; beta_1 = 0.844457073643; beta_2 = 0.838067121764; hidden_layer_sizes[0] = 63; learning_rate_init = 0.717866049935; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.750 +- 0.170\r\n426,mlp,_scale = True; activation = logistic; alpha = 0.00288914414818; batch_size = auto; hidden_layer_sizes[0] = 67; hidden_layer_sizes[1] = 142; learning_rate = invscaling; learning_rate_init = 0.352955841168; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.702 +- 0.490\r\n427,knn,_scale = True; algorithm = kd_tree; leaf_size = 30; metric = manhattan; n_neighbors = 20; weights = uniform,f1 and cv,0.832 +- 0.124\r\n428,mlp,_scale = True; activation = identity; alpha = 0.00140816205686; batch_size = auto; hidden_layer_sizes[0] = 10; learning_rate = adaptive; learning_rate_init = 0.0944175784958; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.750 +- 0.170\r\n429,mlp,_scale = True; activation = identity; alpha = 0.00783662044065; batch_size = auto; hidden_layer_sizes[0] = 239; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.707 +- 0.294\r\n430,mnb,_scale_minmax = True; alpha = 0.492055291906; class_prior = None; fit_prior = 1,f1 and cv,0.712 +- 0.456\r\n431,logreg,C = 0.000278916797761; _scale = True; class_weight = balanced; dual = True; fit_intercept = False; penalty = l2; tol = 0.0206323536789,f1 and cv,0.663 +- 0.380\r\n432,knn,_scale = True; algorithm = kd_tree; leaf_size = 29; metric = euclidean; n_neighbors = 15; weights = uniform,f1 and cv,0.794 +- 0.262\r\n433,knn,_scale = True; algorithm = ball_tree; leaf_size = 12; metric = chebyshev; n_neighbors = 18; weights = uniform,f1 and cv,0.793 +- 0.068\r\n434,mlp,_scale = True; activation = identity; alpha = 0.00208091410978; batch_size = auto; beta_1 = 0.816252078499; beta_2 = 0.870129705441; hidden_layer_sizes[0] = 34; hidden_layer_sizes[1] = 113; learning_rate_init = 0.389325580924; len(hidden_layer_sizes) = 2; solver = adam,f1 and cv,0.699 +- 0.337\r\n435,logreg,C = 0.0296010907802; _scale = True; class_weight = balanced; dual = False; fit_intercept = False; penalty = l2; tol = 0.0158808734364,f1 and cv,0.830 +- 0.288\r\n436,mlp,_scale = True; activation = relu; alpha = 0.000511133897707; batch_size = auto; hidden_layer_sizes[0] = 121; hidden_layer_sizes[1] = 30; hidden_layer_sizes[2] = 275; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.729 +- 0.307\r\n437,mlp,_scale = True; activation = tanh; alpha = 0.00227938787745; batch_size = auto; hidden_layer_sizes[0] = 269; hidden_layer_sizes[1] = 262; learning_rate = constant; learning_rate_init = 0.140202485062; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.788 +- 0.240\r\n438,mlp,_scale = True; activation = relu; alpha = 0.00593079281063; batch_size = auto; hidden_layer_sizes[0] = 52; hidden_layer_sizes[1] = 231; learning_rate = invscaling; learning_rate_init = 0.240954688484; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.881 +- 0.132\r\n439,mlp,_scale = True; activation = identity; alpha = 0.00636815513417; batch_size = auto; hidden_layer_sizes[0] = 300; hidden_layer_sizes[1] = 136; hidden_layer_sizes[2] = 47; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.691 +- 0.238\r\n440,mlp,_scale = True; activation = relu; alpha = 0.00162899152143; batch_size = auto; hidden_layer_sizes[0] = 143; hidden_layer_sizes[1] = 274; learning_rate = constant; learning_rate_init = 0.937026101117; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.500 +- 0.566\r\n441,knn,_scale = True; algorithm = brute; metric = minkowski; n_neighbors = 5; p = 1; weights = distance,f1 and cv,0.753 +- 0.098\r\n442,mlp,_scale = True; activation = relu; alpha = 0.00218070458954; batch_size = auto; hidden_layer_sizes[0] = 25; learning_rate = invscaling; learning_rate_init = 0.662341323068; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.583 +- 0.676\r\n443,mlp,_scale = True; activation = tanh; alpha = 0.00062661613995; batch_size = auto; hidden_layer_sizes[0] = 214; learning_rate = adaptive; learning_rate_init = 0.945407980255; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.775 +- 0.128\r\n444,mlp,_scale = True; activation = tanh; alpha = 0.00563969847861; batch_size = auto; hidden_layer_sizes[0] = 119; len(hidden_layer_sizes) = 1; solver = lbfgs,f1 and cv,0.803 +- 0.295\r\n445,mlp,_scale = True; activation = relu; alpha = 0.000307091673804; batch_size = auto; hidden_layer_sizes[0] = 86; hidden_layer_sizes[1] = 212; learning_rate = adaptive; learning_rate_init = 0.908847725115; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.727 +- 0.338\r\n446,mlp,_scale = True; activation = tanh; alpha = 0.00732152637602; batch_size = auto; hidden_layer_sizes[0] = 205; hidden_layer_sizes[1] = 139; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.791 +- 0.290\r\n447,svm,C = 0.0368614581556; _scale = True; cache_size = 15000; class_weight = balanced; coef0 = 318; gamma = 0.000384642071511; kernel = sigmoid; max_iter = 50000; probability = True; shrinking = True,f1 and cv,0.246 +- 0.603\r\n448,knn,_scale = True; algorithm = kd_tree; leaf_size = 40; metric = manhattan; n_neighbors = 17; weights = distance,f1 and cv,0.902 +- 0.182\r\n449,knn,_scale = True; algorithm = brute; metric = manhattan; n_neighbors = 9; weights = uniform,f1 and cv,0.727 +- 0.193\r\n450,knn,_scale = True; algorithm = brute; metric = euclidean; n_neighbors = 10; weights = distance,f1 and cv,0.761 +- 0.398\r\n451,mlp,_scale = True; activation = identity; alpha = 0.000426457511073; batch_size = auto; hidden_layer_sizes[0] = 161; hidden_layer_sizes[1] = 292; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.872 +- 0.175\r\n452,knn,_scale = True; algorithm = ball_tree; leaf_size = 37; metric = manhattan; n_neighbors = 9; weights = distance,f1 and cv,0.638 +- 0.284\r\n453,mlp,_scale = True; activation = logistic; alpha = 0.00540399487598; batch_size = auto; hidden_layer_sizes[0] = 115; hidden_layer_sizes[1] = 136; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.661 +- 0.700\r\n454,mlp,_scale = True; activation = relu; alpha = 0.00771470852914; batch_size = auto; hidden_layer_sizes[0] = 5; hidden_layer_sizes[1] = 165; len(hidden_layer_sizes) = 2; solver = lbfgs,f1 and cv,0.842 +- 0.250\r\n455,knn,_scale = True; algorithm = ball_tree; leaf_size = 28; metric = manhattan; n_neighbors = 4; weights = uniform,f1 and cv,0.681 +- 0.132\r\n456,mlp,_scale = True; activation = tanh; alpha = 0.00253079358354; batch_size = auto; beta_1 = 0.823794545233; beta_2 = 0.948546494758; hidden_layer_sizes[0] = 295; hidden_layer_sizes[1] = 82; learning_rate_init = 0.667021938282; len(hidden_layer_sizes) = 2; solver = adam,f1 and cv,0.742 +- 0.308\r\n457,knn,_scale = True; algorithm = brute; metric = euclidean; n_neighbors = 11; weights = uniform,f1 and cv,0.753 +- 0.249\r\n458,mlp,_scale = True; activation = identity; alpha = 0.00685358608646; batch_size = auto; hidden_layer_sizes[0] = 11; hidden_layer_sizes[1] = 229; learning_rate = adaptive; learning_rate_init = 0.452907530524; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.676 +- 0.469\r\n459,gp,kernel = exp_sine_squared; length_scale = 7.11795937741; periodicity = 0,f1 and cv,0.283 +- 0.696\r\n460,mlp,_scale = True; activation = tanh; alpha = 0.0063995280768; batch_size = auto; hidden_layer_sizes[0] = 70; hidden_layer_sizes[1] = 123; learning_rate = adaptive; learning_rate_init = 0.58052736282; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.731 +- 0.163\r\n461,knn,_scale = True; algorithm = kd_tree; leaf_size = 37; metric = minkowski; n_neighbors = 6; p = 3; weights = uniform,f1 and cv,0.729 +- 0.201\r\n462,mlp,_scale = True; activation = relu; alpha = 0.00331037145362; batch_size = auto; hidden_layer_sizes[0] = 80; hidden_layer_sizes[1] = 270; hidden_layer_sizes[2] = 286; learning_rate = adaptive; learning_rate_init = 0.313104479189; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.700 +- 0.380\r\n463,dt,criterion = gini; max_depth = 9; max_features = 0.138857531509; min_samples_leaf = 3; min_samples_split = 4,f1 and cv,0.644 +- 0.225\r\n464,knn,_scale = True; algorithm = ball_tree; leaf_size = 34; metric = minkowski; n_neighbors = 7; p = 3; weights = uniform,f1 and cv,0.648 +- 0.436\r\n465,knn,_scale = True; algorithm = brute; metric = chebyshev; n_neighbors = 5; weights = uniform,f1 and cv,0.682 +- 0.431\r\n466,svm,C = 102.258926361; _scale = True; cache_size = 15000; class_weight = balanced; kernel = linear; max_iter = 50000; probability = True; shrinking = True,f1 and cv,0.677 +- 0.325\r\n467,mlp,_scale = True; activation = identity; alpha = 0.00184403295863; batch_size = auto; hidden_layer_sizes[0] = 12; learning_rate = constant; learning_rate_init = 0.752839342155; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.791 +- 0.127\r\n468,knn,_scale = True; algorithm = brute; metric = chebyshev; n_neighbors = 4; weights = distance,f1 and cv,0.709 +- 0.138\r\n469,mlp,_scale = True; activation = tanh; alpha = 0.00137294889179; batch_size = auto; beta_1 = 0.959866560165; beta_2 = 0.821066085136; hidden_layer_sizes[0] = 284; hidden_layer_sizes[1] = 201; hidden_layer_sizes[2] = 255; learning_rate_init = 0.736644894148; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.569 +- 0.673\r\n470,mlp,_scale = True; activation = identity; alpha = 0.000486219422539; batch_size = auto; hidden_layer_sizes[0] = 185; hidden_layer_sizes[1] = 9; learning_rate = invscaling; learning_rate_init = 0.641659882016; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.819 +- 0.154\r\n471,mlp,_scale = True; activation = tanh; alpha = 0.00747570700742; batch_size = auto; hidden_layer_sizes[0] = 47; hidden_layer_sizes[1] = 208; hidden_layer_sizes[2] = 292; learning_rate = constant; learning_rate_init = 0.21112595927; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.798 +- 0.146\r\n472,svm,C = 1.31126672447e-05; _scale = True; cache_size = 15000; class_weight = balanced; coef0 = -290; degree = 2; gamma = 0.00208706079903; kernel = poly; max_iter = 50000; probability = True; shrinking = True,f1 and cv,0.000 +- 0.000\r\n473,knn,_scale = True; algorithm = kd_tree; leaf_size = 49; metric = minkowski; n_neighbors = 9; p = 2; weights = distance,f1 and cv,0.737 +- 0.280\r\n474,knn,_scale = True; algorithm = ball_tree; leaf_size = 21; metric = euclidean; n_neighbors = 7; weights = uniform,f1 and cv,0.715 +- 0.189\r\n475,knn,_scale = True; algorithm = kd_tree; leaf_size = 3; metric = euclidean; n_neighbors = 19; weights = distance,f1 and cv,0.741 +- 0.123\r\n476,mlp,_scale = True; activation = logistic; alpha = 0.00396031698603; batch_size = auto; hidden_layer_sizes[0] = 124; hidden_layer_sizes[1] = 79; learning_rate = constant; learning_rate_init = 0.564636871594; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.552 +- 0.554\r\n477,knn,_scale = True; algorithm = kd_tree; leaf_size = 20; metric = chebyshev; n_neighbors = 4; weights = distance,f1 and cv,0.667 +- 0.266\r\n478,mlp,_scale = True; activation = logistic; alpha = 0.00556180166425; batch_size = auto; hidden_layer_sizes[0] = 131; learning_rate = invscaling; learning_rate_init = 0.160243869884; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.779 +- 0.237\r\n479,mlp,_scale = True; activation = tanh; alpha = 0.00120699276098; batch_size = auto; hidden_layer_sizes[0] = 38; hidden_layer_sizes[1] = 145; hidden_layer_sizes[2] = 143; learning_rate = adaptive; learning_rate_init = 0.747669498487; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.770 +- 0.320\r\n480,mlp,_scale = True; activation = logistic; alpha = 0.00444853705037; batch_size = auto; hidden_layer_sizes[0] = 199; learning_rate = adaptive; learning_rate_init = 0.0274133674446; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.743 +- 0.360\r\n481,mlp,_scale = True; activation = logistic; alpha = 0.001720610868; batch_size = auto; hidden_layer_sizes[0] = 173; learning_rate = constant; learning_rate_init = 0.444987370156; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.623 +- 0.046\r\n482,mlp,_scale = True; activation = identity; alpha = 0.000891053940475; batch_size = auto; hidden_layer_sizes[0] = 268; hidden_layer_sizes[1] = 65; learning_rate = constant; learning_rate_init = 0.739013351708; len(hidden_layer_sizes) = 2; solver = sgd,f1 and cv,0.407 +- 0.502\r\n483,mlp,_scale = True; activation = identity; alpha = 0.00665577663657; batch_size = auto; beta_1 = 0.83627310194; beta_2 = 0.841887465659; hidden_layer_sizes[0] = 146; hidden_layer_sizes[1] = 239; hidden_layer_sizes[2] = 158; learning_rate_init = 0.383080936147; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.670 +- 0.315\r\n484,knn,_scale = True; algorithm = ball_tree; leaf_size = 16; metric = chebyshev; n_neighbors = 15; weights = distance,f1 and cv,0.571 +- 0.369\r\n485,mlp,_scale = True; activation = logistic; alpha = 0.00627313306934; batch_size = auto; beta_1 = 0.929895349149; beta_2 = 0.883694176744; hidden_layer_sizes[0] = 128; hidden_layer_sizes[1] = 71; hidden_layer_sizes[2] = 189; learning_rate_init = 0.208134673461; len(hidden_layer_sizes) = 3; solver = adam,f1 and cv,0.369 +- 0.603\r\n486,mlp,_scale = True; activation = identity; alpha = 0.00453565697523; batch_size = auto; hidden_layer_sizes[0] = 294; hidden_layer_sizes[1] = 36; hidden_layer_sizes[2] = 107; learning_rate = invscaling; learning_rate_init = 0.151870545818; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.789 +- 0.087\r\n487,mlp,_scale = True; activation = tanh; alpha = 0.0043695975583; batch_size = auto; hidden_layer_sizes[0] = 84; hidden_layer_sizes[1] = 84; hidden_layer_sizes[2] = 296; len(hidden_layer_sizes) = 3; solver = lbfgs,f1 and cv,0.743 +- 0.212\r\n488,logreg,C = 1.52099093805e-05; _scale = True; class_weight = balanced; dual = False; fit_intercept = True; penalty = l2; tol = 0.493534653924,f1 and cv,0.793 +- 0.158\r\n489,gp,alpha = 0.00587756090147; kernel = rational_quadratic; length_scale = 0.778148394697,f1 and cv,0.468 +- 0.592\r\n490,mlp,_scale = True; activation = logistic; alpha = 0.00078367842815; batch_size = auto; hidden_layer_sizes[0] = 169; hidden_layer_sizes[1] = 67; hidden_layer_sizes[2] = 109; learning_rate = adaptive; learning_rate_init = 0.275981871226; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.133 +- 0.533\r\n491,dt,criterion = entropy; max_depth = 5; max_features = 0.667360237316; min_samples_leaf = 1; min_samples_split = 3,f1 and cv,0.601 +- 0.208\r\n492,mlp,_scale = True; activation = logistic; alpha = 0.00691480278598; batch_size = auto; hidden_layer_sizes[0] = 217; hidden_layer_sizes[1] = 264; hidden_layer_sizes[2] = 30; learning_rate = constant; learning_rate_init = 0.16514303414; len(hidden_layer_sizes) = 3; solver = sgd,f1 and cv,0.000 +- 0.000\r\n493,rf,criterion = gini; max_depth = 3; max_features = 0.10933184867; min_samples_leaf = 3; n_estimators = 100; n_jobs = -1,f1 and cv,0.676 +- 0.456\r\n494,mlp,_scale = True; activation = relu; alpha = 0.00769076251375; batch_size = auto; beta_1 = 0.852683579836; beta_2 = 0.985173521755; hidden_layer_sizes[0] = 26; learning_rate_init = 0.578940068582; len(hidden_layer_sizes) = 1; solver = adam,f1 and cv,0.712 +- 0.205\r\n495,knn,_scale = True; algorithm = brute; metric = manhattan; n_neighbors = 20; weights = distance,f1 and cv,0.769 +- 0.203\r\n496,knn,_scale = True; algorithm = ball_tree; leaf_size = 38; metric = euclidean; n_neighbors = 14; weights = distance,f1 and cv,0.767 +- 0.149\r\n497,mlp,_scale = True; activation = identity; alpha = 0.00652788140446; batch_size = auto; hidden_layer_sizes[0] = 121; learning_rate = invscaling; learning_rate_init = 0.904858902526; len(hidden_layer_sizes) = 1; solver = sgd,f1 and cv,0.829 +- 0.355\r\n498,logreg,C = 2.61823955419; _scale = True; class_weight = balanced; dual = True; fit_intercept = True; penalty = l2; tol = 0.405019619021,f1 and cv,0.743 +- 0.086\r\n499,svm,C = 4.98940364301e-05; _scale = True; cache_size = 15000; class_weight = balanced; gamma = 0.445917007271; kernel = rbf; max_iter = 50000; probability = True; shrinking = True,f1 and cv,0.286 +- 0.700\r\n"
  },
  {
    "path": "public/viz/dataset_31_credit-g.csv",
    "content": "checking_status,duration,credit_history,purpose,credit_amount,savings_status,employment,installment_commitment,personal_status,other_parties,residence_since,property_magnitude,age,other_payment_plans,housing,existing_credits,job,num_dependents,own_telephone,foreign_worker,class\n'<0',6,'critical/other existing credit',radio/tv,1169,'no known savings','>=7',4,'male single',none,4,'real estate',67,none,own,2,skilled,1,yes,yes,good\n'0<=X<200',48,'existing paid',radio/tv,5951,'<100','1<=X<4',2,'female div/dep/mar',none,2,'real estate',22,none,own,1,skilled,1,none,yes,bad\n'no checking',12,'critical/other existing credit',education,2096,'<100','4<=X<7',2,'male single',none,3,'real estate',49,none,own,1,'unskilled resident',2,none,yes,good\n'<0',42,'existing paid',furniture/equipment,7882,'<100','4<=X<7',2,'male single',guarantor,4,'life insurance',45,none,'for free',1,skilled,2,none,yes,good\n'<0',24,'delayed previously','new car',4870,'<100','1<=X<4',3,'male single',none,4,'no known property',53,none,'for free',2,skilled,2,none,yes,bad\n'no checking',36,'existing paid',education,9055,'no known savings','1<=X<4',2,'male single',none,4,'no known property',35,none,'for free',1,'unskilled resident',2,yes,yes,good\n'no checking',24,'existing paid',furniture/equipment,2835,'500<=X<1000','>=7',3,'male single',none,4,'life insurance',53,none,own,1,skilled,1,none,yes,good\n'0<=X<200',36,'existing paid','used car',6948,'<100','1<=X<4',2,'male single',none,2,car,35,none,rent,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'no checking',12,'existing paid',radio/tv,3059,'>=1000','4<=X<7',2,'male div/sep',none,4,'real estate',61,none,own,1,'unskilled resident',1,none,yes,good\n'0<=X<200',30,'critical/other existing credit','new car',5234,'<100',unemployed,4,'male mar/wid',none,2,car,28,none,own,2,'high qualif/self emp/mgmt',1,none,yes,bad\n'0<=X<200',12,'existing paid','new car',1295,'<100','<1',3,'female div/dep/mar',none,1,car,25,none,rent,1,skilled,1,none,yes,bad\n'<0',48,'existing paid',business,4308,'<100','<1',3,'female div/dep/mar',none,4,'life insurance',24,none,rent,1,skilled,1,none,yes,bad\n'0<=X<200',12,'existing paid',radio/tv,1567,'<100','1<=X<4',1,'female div/dep/mar',none,1,car,22,none,own,1,skilled,1,yes,yes,good\n'<0',24,'critical/other existing credit','new car',1199,'<100','>=7',4,'male single',none,4,car,60,none,own,2,'unskilled resident',1,none,yes,bad\n'<0',15,'existing paid','new car',1403,'<100','1<=X<4',2,'female div/dep/mar',none,4,car,28,none,rent,1,skilled,1,none,yes,good\n'<0',24,'existing paid',radio/tv,1282,'100<=X<500','1<=X<4',4,'female div/dep/mar',none,2,car,32,none,own,1,'unskilled resident',1,none,yes,bad\n'no checking',24,'critical/other existing credit',radio/tv,2424,'no known savings','>=7',4,'male single',none,4,'life insurance',53,none,own,2,skilled,1,none,yes,good\n'<0',30,'no credits/all paid',business,8072,'no known savings','<1',2,'male single',none,3,car,25,bank,own,3,skilled,1,none,yes,good\n'0<=X<200',24,'existing paid','used car',12579,'<100','>=7',4,'female div/dep/mar',none,2,'no known property',44,none,'for free',1,'high qualif/self emp/mgmt',1,yes,yes,bad\n'no checking',24,'existing paid',radio/tv,3430,'500<=X<1000','>=7',3,'male single',none,2,car,31,none,own,1,skilled,2,yes,yes,good\n'no checking',9,'critical/other existing credit','new car',2134,'<100','1<=X<4',4,'male single',none,4,car,48,none,own,3,skilled,1,yes,yes,good\n'<0',6,'existing paid',radio/tv,2647,'500<=X<1000','1<=X<4',2,'male single',none,3,'real estate',44,none,rent,1,skilled,2,none,yes,good\n'<0',10,'critical/other existing credit','new car',2241,'<100','<1',1,'male single',none,3,'real estate',48,none,rent,2,'unskilled resident',2,none,no,good\n'0<=X<200',12,'critical/other existing credit','used car',1804,'100<=X<500','<1',3,'male single',none,4,'life insurance',44,none,own,1,skilled,1,none,yes,good\n'no checking',10,'critical/other existing credit',furniture/equipment,2069,'no known savings','1<=X<4',2,'male mar/wid',none,1,car,26,none,own,2,skilled,1,none,no,good\n'<0',6,'existing paid',furniture/equipment,1374,'<100','1<=X<4',1,'male single',none,2,'real estate',36,bank,own,1,'unskilled resident',1,yes,yes,good\n'no checking',6,'no credits/all paid',radio/tv,426,'<100','>=7',4,'male mar/wid',none,4,car,39,none,own,1,'unskilled resident',1,none,yes,good\n'>=200',12,'all paid',radio/tv,409,'>=1000','1<=X<4',3,'female div/dep/mar',none,3,'real estate',42,none,rent,2,skilled,1,none,yes,good\n'0<=X<200',7,'existing paid',radio/tv,2415,'<100','1<=X<4',3,'male single',guarantor,2,'real estate',34,none,own,1,skilled,1,none,yes,good\n'<0',60,'delayed previously',business,6836,'<100','>=7',3,'male single',none,4,'no known property',63,none,own,2,skilled,1,yes,yes,bad\n'0<=X<200',18,'existing paid',business,1913,'>=1000','<1',3,'male mar/wid',none,3,'real estate',36,bank,own,1,skilled,1,yes,yes,good\n'<0',24,'existing paid',furniture/equipment,4020,'<100','1<=X<4',2,'male single',none,2,car,27,stores,own,1,skilled,1,none,yes,good\n'0<=X<200',18,'existing paid','new car',5866,'100<=X<500','1<=X<4',2,'male single',none,2,car,30,none,own,2,skilled,1,yes,yes,good\n'no checking',12,'critical/other existing credit',business,1264,'no known savings','>=7',4,'male single',none,4,'no known property',57,none,rent,1,'unskilled resident',1,none,yes,good\n'>=200',12,'existing paid',furniture/equipment,1474,'<100','<1',4,'female div/dep/mar',none,1,'life insurance',33,bank,own,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'0<=X<200',45,'critical/other existing credit',radio/tv,4746,'<100','<1',4,'male single',none,2,'life insurance',25,none,own,2,'unskilled resident',1,none,yes,bad\n'no checking',48,'critical/other existing credit',education,6110,'<100','1<=X<4',1,'male single',none,3,'no known property',31,bank,'for free',1,skilled,1,yes,yes,good\n'>=200',18,'existing paid',radio/tv,2100,'<100','1<=X<4',4,'male single','co applicant',2,'real estate',37,stores,own,1,skilled,1,none,yes,bad\n'>=200',10,'existing paid','domestic appliance',1225,'<100','1<=X<4',2,'male single',none,2,car,37,none,own,1,skilled,1,yes,yes,good\n'0<=X<200',9,'existing paid',radio/tv,458,'<100','1<=X<4',4,'male single',none,3,'real estate',24,none,own,1,skilled,1,none,yes,good\n'no checking',30,'existing paid',radio/tv,2333,'500<=X<1000','>=7',4,'male single',none,2,car,30,bank,own,1,'high qualif/self emp/mgmt',1,none,yes,good\n'0<=X<200',12,'existing paid',radio/tv,1158,'500<=X<1000','1<=X<4',3,'male div/sep',none,1,car,26,none,own,1,skilled,1,yes,yes,good\n'0<=X<200',18,'delayed previously',repairs,6204,'<100','1<=X<4',2,'male single',none,4,'real estate',44,none,own,1,'unskilled resident',2,yes,yes,good\n'<0',30,'critical/other existing credit','used car',6187,'100<=X<500','4<=X<7',1,'male mar/wid',none,4,car,24,none,rent,2,skilled,1,none,yes,good\n'<0',48,'critical/other existing credit','used car',6143,'<100','>=7',4,'female div/dep/mar',none,4,'no known property',58,stores,'for free',2,'unskilled resident',1,none,yes,bad\n'no checking',11,'critical/other existing credit','new car',1393,'<100','<1',4,'female div/dep/mar',none,4,car,35,none,own,2,'high qualif/self emp/mgmt',1,none,yes,good\n'no checking',36,'existing paid',radio/tv,2299,'500<=X<1000','>=7',4,'male single',none,4,car,39,none,own,1,skilled,1,none,yes,good\n'<0',6,'existing paid','used car',1352,'500<=X<1000',unemployed,1,'female div/dep/mar',none,2,'life insurance',23,none,rent,1,'unemp/unskilled non res',1,yes,yes,good\n'no checking',11,'critical/other existing credit','new car',7228,'<100','1<=X<4',1,'male single',none,4,'life insurance',39,none,own,2,'unskilled resident',1,none,yes,good\n'no checking',12,'existing paid',radio/tv,2073,'100<=X<500','1<=X<4',4,'female div/dep/mar','co applicant',2,'real estate',28,none,own,1,skilled,1,none,yes,good\n'0<=X<200',24,'delayed previously',furniture/equipment,2333,'no known savings','<1',4,'male single',none,2,'life insurance',29,bank,own,1,'unskilled resident',1,none,yes,good\n'0<=X<200',27,'delayed previously','used car',5965,'<100','>=7',1,'male single',none,2,car,30,none,own,2,'high qualif/self emp/mgmt',1,yes,yes,good\n'no checking',12,'existing paid',radio/tv,1262,'<100','1<=X<4',3,'male single',none,2,car,25,none,own,1,skilled,1,none,yes,good\n'no checking',18,'existing paid','used car',3378,'no known savings','1<=X<4',2,'male single',none,1,'life insurance',31,none,own,1,skilled,1,yes,yes,good\n'0<=X<200',36,'delayed previously','new car',2225,'<100','>=7',4,'male single',none,4,'no known property',57,bank,'for free',2,skilled,1,yes,yes,bad\n'no checking',6,'all paid','new car',783,'no known savings','1<=X<4',1,'male single',guarantor,2,'real estate',26,stores,own,1,'unskilled resident',2,none,yes,good\n'0<=X<200',12,'existing paid',radio/tv,6468,'no known savings',unemployed,2,'male single',none,1,'no known property',52,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,bad\n'no checking',36,'critical/other existing credit',radio/tv,9566,'<100','1<=X<4',2,'female div/dep/mar',none,2,car,31,stores,own,2,skilled,1,none,yes,good\n'>=200',18,'existing paid','new car',1961,'<100','>=7',3,'female div/dep/mar',none,2,car,23,none,own,1,'high qualif/self emp/mgmt',1,none,yes,good\n'<0',36,'critical/other existing credit',furniture/equipment,6229,'<100','<1',4,'female div/dep/mar','co applicant',4,'no known property',23,none,rent,2,'unskilled resident',1,yes,yes,bad\n'0<=X<200',9,'existing paid',business,1391,'<100','1<=X<4',2,'male mar/wid',none,1,'real estate',27,bank,own,1,skilled,1,yes,yes,good\n'0<=X<200',15,'critical/other existing credit',radio/tv,1537,'no known savings','>=7',4,'male single',guarantor,4,'real estate',50,none,own,2,skilled,1,yes,yes,good\n'0<=X<200',36,'no credits/all paid',business,1953,'<100','>=7',4,'male single',none,4,'no known property',61,none,'for free',1,'high qualif/self emp/mgmt',1,yes,yes,bad\n'0<=X<200',48,'no credits/all paid',business,14421,'<100','1<=X<4',2,'male single',none,2,car,25,none,own,1,skilled,1,yes,yes,bad\n'no checking',24,'existing paid',radio/tv,3181,'<100','<1',4,'female div/dep/mar',none,4,'life insurance',26,none,own,1,skilled,1,yes,yes,good\n'no checking',27,'existing paid',repairs,5190,'no known savings','>=7',4,'male single',none,4,'life insurance',48,none,own,4,skilled,2,yes,yes,good\n'no checking',12,'existing paid',radio/tv,2171,'<100','<1',2,'female div/dep/mar',none,2,car,29,bank,own,1,skilled,1,none,yes,good\n'0<=X<200',12,'existing paid','new car',1007,'>=1000','1<=X<4',4,'male mar/wid',none,1,'real estate',22,none,own,1,skilled,1,none,yes,good\n'no checking',36,'existing paid',education,1819,'<100','1<=X<4',4,'male single',none,4,'no known property',37,stores,'for free',1,skilled,1,yes,yes,bad\n'no checking',36,'existing paid',radio/tv,2394,'no known savings','1<=X<4',4,'female div/dep/mar',none,4,car,25,none,own,1,skilled,1,none,yes,good\n'no checking',36,'existing paid','used car',8133,'<100','1<=X<4',1,'female div/dep/mar',none,2,'life insurance',30,bank,own,1,skilled,1,none,yes,good\n'no checking',7,'critical/other existing credit',radio/tv,730,'no known savings','>=7',4,'male single',none,2,'life insurance',46,none,rent,2,'unskilled resident',1,yes,yes,good\n'<0',8,'critical/other existing credit',other,1164,'<100','>=7',3,'male single',none,4,'no known property',51,bank,'for free',2,'high qualif/self emp/mgmt',2,yes,yes,good\n'0<=X<200',42,'critical/other existing credit',business,5954,'<100','4<=X<7',2,'female div/dep/mar',none,1,'real estate',41,bank,own,2,'unskilled resident',1,none,yes,good\n'<0',36,'existing paid',education,1977,'no known savings','>=7',4,'male single',none,4,'no known property',40,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,bad\n'<0',12,'critical/other existing credit','used car',1526,'<100','>=7',4,'male single',none,4,'no known property',66,none,'for free',2,'high qualif/self emp/mgmt',1,none,yes,good\n'<0',42,'existing paid',radio/tv,3965,'<100','<1',4,'male single',none,3,car,34,none,own,1,skilled,1,none,yes,bad\n'0<=X<200',11,'delayed previously',radio/tv,4771,'<100','4<=X<7',2,'male single',none,4,'life insurance',51,none,own,1,skilled,1,none,yes,good\n'no checking',54,'no credits/all paid','used car',9436,'no known savings','1<=X<4',2,'male single',none,2,'life insurance',39,none,own,1,'unskilled resident',2,none,yes,good\n'0<=X<200',30,'existing paid',furniture/equipment,3832,'<100','<1',2,'male mar/wid',none,1,'life insurance',22,none,own,1,skilled,1,none,yes,good\n'no checking',24,'existing paid',radio/tv,5943,'no known savings','<1',1,'female div/dep/mar',none,1,car,44,none,own,2,skilled,1,yes,yes,bad\n'no checking',15,'existing paid',radio/tv,1213,'500<=X<1000','>=7',4,'male single',none,3,'life insurance',47,stores,own,1,skilled,1,yes,yes,good\n'no checking',18,'existing paid',business,1568,'100<=X<500','1<=X<4',3,'female div/dep/mar',none,4,'life insurance',24,none,rent,1,'unskilled resident',1,none,yes,good\n'<0',24,'existing paid',other,1755,'<100','>=7',4,'female div/dep/mar',guarantor,4,'real estate',58,none,own,1,'unskilled resident',1,yes,yes,good\n'<0',10,'existing paid',radio/tv,2315,'<100','>=7',3,'male single',none,4,'real estate',52,none,own,1,'unskilled resident',1,none,yes,good\n'no checking',12,'critical/other existing credit',business,1412,'<100','1<=X<4',4,'female div/dep/mar',guarantor,2,'real estate',29,none,own,2,'high qualif/self emp/mgmt',1,yes,yes,good\n'0<=X<200',18,'critical/other existing credit',furniture/equipment,1295,'<100','<1',4,'female div/dep/mar',none,1,'life insurance',27,none,own,2,skilled,1,none,yes,good\n'0<=X<200',36,'existing paid',education,12612,'100<=X<500','1<=X<4',1,'male single',none,4,'no known property',47,none,'for free',1,skilled,2,yes,yes,bad\n'<0',18,'existing paid','new car',2249,'100<=X<500','4<=X<7',4,'male single',none,3,car,30,none,own,1,'high qualif/self emp/mgmt',2,yes,yes,good\n'<0',12,'no credits/all paid',repairs,1108,'<100','4<=X<7',4,'male single',none,3,'real estate',28,none,own,2,skilled,1,none,yes,bad\n'no checking',12,'critical/other existing credit',radio/tv,618,'<100','>=7',4,'male single',none,4,'real estate',56,none,own,1,skilled,1,none,yes,good\n'<0',12,'critical/other existing credit','used car',1409,'<100','>=7',4,'male single',none,3,'real estate',54,none,own,1,skilled,1,none,yes,good\n'no checking',12,'critical/other existing credit',radio/tv,797,'no known savings','>=7',4,'female div/dep/mar',none,3,'life insurance',33,bank,own,1,'unskilled resident',2,none,yes,bad\n'>=200',24,'critical/other existing credit',furniture/equipment,3617,'no known savings','>=7',4,'male single','co applicant',4,'no known property',20,none,rent,2,skilled,1,none,yes,good\n'0<=X<200',12,'existing paid','new car',1318,'>=1000','>=7',4,'male single',none,4,'real estate',54,none,own,1,skilled,1,yes,yes,good\n'0<=X<200',54,'no credits/all paid',business,15945,'<100','<1',3,'male single',none,4,'no known property',58,none,rent,1,skilled,1,yes,yes,bad\n'no checking',12,'critical/other existing credit',education,2012,'no known savings','4<=X<7',4,'female div/dep/mar',none,2,car,61,none,own,1,skilled,1,none,yes,good\n'0<=X<200',18,'existing paid',business,2622,'100<=X<500','1<=X<4',4,'male single',none,4,car,34,none,own,1,skilled,1,none,yes,good\n'0<=X<200',36,'critical/other existing credit',radio/tv,2337,'<100','>=7',4,'male single',none,4,'real estate',36,none,own,1,skilled,1,none,yes,good\n'0<=X<200',20,'delayed previously','used car',7057,'no known savings','4<=X<7',3,'male single',none,4,'life insurance',36,bank,rent,2,'high qualif/self emp/mgmt',2,yes,yes,good\n'no checking',24,'existing paid','new car',1469,'100<=X<500','>=7',4,'male mar/wid',none,4,'real estate',41,none,rent,1,'unskilled resident',1,none,yes,good\n'0<=X<200',36,'existing paid',radio/tv,2323,'<100','4<=X<7',4,'male single',none,4,car,24,none,rent,1,skilled,1,none,yes,good\n'no checking',6,'delayed previously',radio/tv,932,'<100','1<=X<4',3,'female div/dep/mar',none,2,'real estate',24,none,own,1,skilled,1,none,yes,good\n'0<=X<200',9,'critical/other existing credit',furniture/equipment,1919,'<100','4<=X<7',4,'male single',none,3,car,35,none,rent,1,skilled,1,yes,yes,good\n'no checking',12,'existing paid','used car',2445,'no known savings','<1',2,'male mar/wid',none,4,car,26,none,rent,1,skilled,1,yes,yes,good\n'0<=X<200',24,'critical/other existing credit',other,11938,'<100','1<=X<4',2,'male single','co applicant',3,car,39,none,own,2,'high qualif/self emp/mgmt',2,yes,yes,bad\n'no checking',18,'all paid','new car',6458,'<100','>=7',2,'male single',none,4,'no known property',39,bank,own,2,'high qualif/self emp/mgmt',2,yes,yes,bad\n'0<=X<200',12,'existing paid','new car',6078,'<100','4<=X<7',2,'male single',none,2,car,32,none,own,1,skilled,1,none,yes,good\n'<0',24,'existing paid',furniture/equipment,7721,'no known savings','<1',1,'female div/dep/mar',none,2,'life insurance',30,none,own,1,skilled,1,yes,no,good\n'0<=X<200',14,'existing paid',business,1410,'500<=X<1000','>=7',1,'male mar/wid',none,2,'real estate',35,none,own,1,skilled,1,yes,yes,good\n'0<=X<200',6,'delayed previously',business,1449,'100<=X<500','>=7',1,'male div/sep',none,2,car,31,bank,own,2,skilled,2,none,yes,good\n'>=200',15,'existing paid',education,392,'<100','<1',4,'female div/dep/mar',none,4,'life insurance',23,none,rent,1,skilled,1,yes,yes,good\n'0<=X<200',18,'existing paid','new car',6260,'<100','4<=X<7',3,'male single',none,3,'real estate',28,none,rent,1,'unskilled resident',1,none,yes,good\n'no checking',36,'critical/other existing credit','new car',7855,'<100','1<=X<4',4,'female div/dep/mar',none,2,'real estate',25,stores,own,2,skilled,1,yes,yes,bad\n'<0',12,'existing paid',radio/tv,1680,'500<=X<1000','>=7',3,'male mar/wid',none,1,'real estate',35,none,own,1,skilled,1,none,yes,good\n'no checking',48,'critical/other existing credit',radio/tv,3578,'no known savings','>=7',4,'male single',none,1,'real estate',47,none,own,1,skilled,1,yes,yes,good\n'<0',42,'existing paid',radio/tv,7174,'no known savings','4<=X<7',4,'female div/dep/mar',none,3,car,30,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,bad\n'<0',10,'critical/other existing credit',furniture/equipment,2132,'no known savings','<1',2,'female div/dep/mar','co applicant',3,'real estate',27,none,rent,2,skilled,1,none,no,good\n'<0',33,'critical/other existing credit',furniture/equipment,4281,'500<=X<1000','1<=X<4',1,'female div/dep/mar',none,4,car,23,none,own,2,skilled,1,none,yes,bad\n'0<=X<200',12,'critical/other existing credit','new car',2366,'500<=X<1000','4<=X<7',3,'male div/sep',none,3,car,36,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'<0',21,'existing paid',radio/tv,1835,'<100','1<=X<4',3,'female div/dep/mar',none,2,'real estate',25,none,own,2,skilled,1,yes,yes,bad\n'no checking',24,'critical/other existing credit','used car',3868,'<100','>=7',4,'female div/dep/mar',none,2,car,41,none,rent,2,'high qualif/self emp/mgmt',1,yes,yes,good\n'no checking',12,'existing paid',furniture/equipment,1768,'<100','1<=X<4',3,'male single',none,2,'real estate',24,none,rent,1,'unskilled resident',1,none,yes,good\n'>=200',10,'critical/other existing credit','new car',781,'<100','>=7',4,'male single',none,4,'no known property',63,none,'for free',2,skilled,1,yes,yes,good\n'0<=X<200',18,'existing paid',furniture/equipment,1924,'no known savings','<1',4,'female div/dep/mar',none,3,'real estate',27,none,rent,1,skilled,1,none,yes,bad\n'<0',12,'critical/other existing credit','new car',2121,'<100','1<=X<4',4,'male single',none,2,'life insurance',30,none,own,2,skilled,1,none,yes,good\n'<0',12,'existing paid',radio/tv,701,'<100','1<=X<4',4,'male mar/wid',none,2,'real estate',40,none,own,1,'unskilled resident',1,none,yes,good\n'0<=X<200',12,'existing paid',repairs,639,'<100','1<=X<4',4,'male single',none,2,car,30,none,own,1,skilled,1,none,yes,bad\n'0<=X<200',12,'critical/other existing credit','used car',1860,'<100',unemployed,4,'male single',none,2,car,34,none,own,2,'high qualif/self emp/mgmt',1,yes,yes,good\n'<0',12,'critical/other existing credit','new car',3499,'<100','1<=X<4',3,'female div/dep/mar','co applicant',2,'real estate',29,none,own,2,skilled,1,none,yes,bad\n'0<=X<200',48,'existing paid','new car',8487,'no known savings','4<=X<7',1,'female div/dep/mar',none,2,car,24,none,own,1,skilled,1,none,yes,good\n'<0',36,'delayed previously',education,6887,'<100','1<=X<4',4,'male single',none,3,'life insurance',29,stores,own,1,skilled,1,yes,yes,bad\n'no checking',15,'existing paid',furniture/equipment,2708,'<100','<1',2,'male single',none,3,'life insurance',27,bank,own,2,'unskilled resident',1,none,yes,good\n'no checking',18,'existing paid',furniture/equipment,1984,'<100','1<=X<4',4,'male single',none,4,'no known property',47,bank,'for free',2,skilled,1,none,yes,good\n'no checking',60,'existing paid',radio/tv,10144,'100<=X<500','4<=X<7',2,'female div/dep/mar',none,4,'real estate',21,none,own,1,skilled,1,yes,yes,good\n'no checking',12,'critical/other existing credit',radio/tv,1240,'no known savings','>=7',4,'female div/dep/mar',none,2,'real estate',38,none,own,2,skilled,1,yes,yes,good\n'no checking',27,'delayed previously','used car',8613,'>=1000','1<=X<4',2,'male single',none,2,car,27,none,own,2,skilled,1,none,yes,good\n'0<=X<200',12,'existing paid',radio/tv,766,'500<=X<1000','1<=X<4',4,'male single',none,3,'real estate',66,none,own,1,'unskilled resident',1,none,yes,bad\n'0<=X<200',15,'critical/other existing credit',radio/tv,2728,'no known savings','4<=X<7',4,'male single',guarantor,2,'real estate',35,bank,own,3,skilled,1,yes,yes,good\n'>=200',12,'existing paid',radio/tv,1881,'<100','1<=X<4',2,'female div/dep/mar',none,2,car,44,none,rent,1,'unskilled resident',1,yes,yes,good\n'>=200',6,'existing paid','new car',709,'>=1000','<1',2,'male mar/wid',none,2,'real estate',27,none,own,1,'unemp/unskilled non res',1,none,no,good\n'0<=X<200',36,'existing paid',radio/tv,4795,'<100','<1',4,'female div/dep/mar',none,1,'no known property',30,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'<0',27,'existing paid',radio/tv,3416,'<100','1<=X<4',3,'male single',none,2,car,27,none,own,1,'high qualif/self emp/mgmt',1,none,yes,good\n'<0',18,'existing paid',furniture/equipment,2462,'<100','1<=X<4',2,'male single',none,2,car,22,none,own,1,skilled,1,none,yes,bad\n'no checking',21,'critical/other existing credit',furniture/equipment,2288,'<100','<1',4,'female div/dep/mar',none,4,'life insurance',23,none,own,1,skilled,1,yes,yes,good\n'0<=X<200',48,'all paid',business,3566,'100<=X<500','4<=X<7',4,'male single',none,2,car,30,none,own,1,skilled,1,none,yes,good\n'<0',6,'critical/other existing credit','new car',860,'<100','>=7',1,'female div/dep/mar',none,4,'no known property',39,none,own,2,skilled,1,yes,yes,good\n'no checking',12,'critical/other existing credit','new car',682,'100<=X<500','4<=X<7',4,'female div/dep/mar',none,3,car,51,none,own,2,skilled,1,yes,yes,good\n'<0',36,'critical/other existing credit',furniture/equipment,5371,'<100','1<=X<4',3,'male single',guarantor,2,'life insurance',28,none,own,2,skilled,1,none,yes,good\n'no checking',18,'critical/other existing credit',radio/tv,1582,'>=1000','>=7',4,'male single',none,4,car,46,none,own,2,skilled,1,none,yes,good\n'no checking',6,'existing paid',radio/tv,1346,'100<=X<500','>=7',2,'male single',none,4,'no known property',42,bank,'for free',1,skilled,2,yes,yes,good\n'no checking',10,'existing paid',radio/tv,1924,'<100','1<=X<4',1,'male single',none,4,'life insurance',38,none,own,1,skilled,1,yes,no,good\n'>=200',36,'existing paid',radio/tv,5848,'<100','1<=X<4',4,'male single',none,1,car,24,none,own,1,skilled,1,none,yes,good\n'0<=X<200',24,'critical/other existing credit','used car',7758,'>=1000','>=7',2,'female div/dep/mar',none,4,'no known property',29,none,rent,1,skilled,1,none,yes,good\n'0<=X<200',24,'delayed previously',business,6967,'100<=X<500','4<=X<7',4,'male single',none,4,car,36,none,rent,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'<0',12,'existing paid',furniture/equipment,1282,'<100','1<=X<4',2,'female div/dep/mar',none,4,car,20,none,rent,1,skilled,1,none,yes,bad\n'<0',9,'critical/other existing credit',repairs,1288,'100<=X<500','>=7',3,'male single',guarantor,4,'real estate',48,none,own,2,skilled,2,none,no,good\n'<0',12,'all paid',retraining,339,'<100','>=7',4,'male mar/wid',none,1,car,45,bank,own,1,'unskilled resident',1,none,yes,good\n'0<=X<200',24,'existing paid','new car',3512,'100<=X<500','4<=X<7',2,'male single',none,3,car,38,bank,own,2,skilled,1,yes,yes,good\n'no checking',6,'critical/other existing credit',radio/tv,1898,'no known savings','1<=X<4',1,'male single',none,2,'real estate',34,none,own,2,'unskilled resident',2,none,yes,good\n'no checking',24,'critical/other existing credit',radio/tv,2872,'100<=X<500','>=7',3,'male single',none,4,'real estate',36,none,own,1,skilled,2,yes,yes,good\n'no checking',18,'critical/other existing credit','new car',1055,'<100','<1',4,'female div/dep/mar',none,1,'life insurance',30,none,own,2,skilled,1,none,yes,good\n'no checking',15,'existing paid','domestic appliance',1262,'500<=X<1000','4<=X<7',4,'male single',none,3,'life insurance',36,none,own,2,skilled,1,yes,yes,good\n'0<=X<200',10,'existing paid','new car',7308,'<100',unemployed,2,'male single',none,4,'no known property',70,bank,'for free',1,'high qualif/self emp/mgmt',1,yes,yes,good\n'no checking',36,'existing paid','new car',909,'500<=X<1000','>=7',4,'male single',none,4,'life insurance',36,none,own,1,skilled,1,none,yes,good\n'no checking',6,'existing paid',furniture/equipment,2978,'500<=X<1000','1<=X<4',1,'male single',none,2,car,32,none,own,1,skilled,1,yes,yes,good\n'<0',18,'existing paid',furniture/equipment,1131,'<100',unemployed,4,'female div/dep/mar',none,2,car,33,none,own,1,skilled,1,none,yes,bad\n'0<=X<200',11,'existing paid',furniture/equipment,1577,'>=1000','<1',4,'female div/dep/mar',none,1,'real estate',20,none,own,1,skilled,1,none,yes,good\n'no checking',24,'existing paid',furniture/equipment,3972,'<100','4<=X<7',2,'female div/dep/mar',none,4,'life insurance',25,none,rent,1,skilled,1,yes,yes,good\n'0<=X<200',24,'critical/other existing credit',business,1935,'<100','>=7',4,'male div/sep',none,4,'real estate',31,none,own,2,skilled,1,yes,yes,bad\n'<0',15,'no credits/all paid','new car',950,'<100','>=7',4,'male single',none,3,car,33,none,rent,2,skilled,2,none,yes,bad\n'no checking',12,'existing paid',furniture/equipment,763,'<100','1<=X<4',4,'female div/dep/mar',none,1,'real estate',26,none,own,1,skilled,1,yes,yes,good\n'0<=X<200',24,'delayed previously',furniture/equipment,2064,'<100',unemployed,3,'female div/dep/mar',none,2,'life insurance',34,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,bad\n'0<=X<200',8,'existing paid',radio/tv,1414,'<100','1<=X<4',4,'male single',guarantor,2,'real estate',33,none,own,1,skilled,1,none,no,good\n'<0',21,'delayed previously',education,3414,'<100','<1',2,'male single',none,1,'life insurance',26,none,own,2,skilled,1,none,yes,bad\n'no checking',30,'all paid','used car',7485,'no known savings',unemployed,4,'female div/dep/mar',none,1,'real estate',53,bank,own,1,'high qualif/self emp/mgmt',1,yes,yes,bad\n'<0',12,'existing paid',furniture/equipment,2577,'<100','1<=X<4',2,'male div/sep',none,1,car,42,none,own,1,skilled,1,none,yes,good\n'<0',6,'critical/other existing credit',radio/tv,338,'500<=X<1000','>=7',4,'male single',none,4,car,52,none,own,2,skilled,1,none,yes,good\n'no checking',12,'existing paid',radio/tv,1963,'<100','4<=X<7',4,'male single',none,2,car,31,none,rent,2,'high qualif/self emp/mgmt',2,yes,yes,good\n'<0',21,'critical/other existing credit','new car',571,'<100','>=7',4,'male single',none,4,'real estate',65,none,own,2,skilled,1,none,yes,good\n'no checking',36,'delayed previously',business,9572,'<100','<1',1,'male div/sep',none,1,car,28,none,own,2,skilled,1,none,yes,bad\n'0<=X<200',36,'delayed previously',business,4455,'<100','1<=X<4',2,'male div/sep',none,2,'real estate',30,stores,own,2,'high qualif/self emp/mgmt',1,yes,yes,bad\n'<0',21,'all paid','new car',1647,'no known savings','1<=X<4',4,'male single',none,2,'life insurance',40,none,own,2,'unskilled resident',2,none,yes,bad\n'no checking',24,'critical/other existing credit',furniture/equipment,3777,'>=1000','1<=X<4',4,'male single',none,4,'real estate',50,none,own,1,skilled,1,yes,yes,good\n'0<=X<200',18,'critical/other existing credit','new car',884,'<100','>=7',4,'male single',none,4,car,36,bank,own,1,skilled,2,yes,yes,bad\n'no checking',15,'critical/other existing credit',radio/tv,1360,'<100','1<=X<4',4,'male single',none,2,'life insurance',31,none,own,2,skilled,1,none,yes,good\n'0<=X<200',9,'all paid','used car',5129,'<100','>=7',2,'female div/dep/mar',none,4,'no known property',74,bank,'for free',1,'high qualif/self emp/mgmt',2,yes,yes,bad\n'0<=X<200',16,'critical/other existing credit','new car',1175,'<100',unemployed,2,'male single',none,3,car,68,none,'for free',3,'unemp/unskilled non res',1,yes,yes,good\n'<0',12,'existing paid',radio/tv,674,'100<=X<500','4<=X<7',4,'male mar/wid',none,1,'life insurance',20,none,own,1,skilled,1,none,yes,bad\n'0<=X<200',18,'no credits/all paid',furniture/equipment,3244,'<100','1<=X<4',1,'female div/dep/mar',none,4,car,33,bank,own,2,skilled,1,yes,yes,good\n'no checking',24,'existing paid',business,4591,'>=1000','1<=X<4',2,'male single',none,3,'life insurance',54,none,own,3,'high qualif/self emp/mgmt',1,yes,yes,bad\n'0<=X<200',48,'no credits/all paid',business,3844,'100<=X<500','4<=X<7',4,'male single',none,4,'no known property',34,none,'for free',1,'unskilled resident',2,none,yes,bad\n'0<=X<200',27,'existing paid',business,3915,'<100','1<=X<4',4,'male single',none,2,car,36,none,own,1,skilled,2,yes,yes,bad\n'no checking',6,'existing paid',radio/tv,2108,'<100','4<=X<7',2,'male mar/wid',none,2,'real estate',29,none,rent,1,skilled,1,none,yes,good\n'0<=X<200',45,'existing paid',radio/tv,3031,'100<=X<500','1<=X<4',4,'male single',guarantor,4,'life insurance',21,none,rent,1,skilled,1,none,yes,bad\n'0<=X<200',9,'critical/other existing credit',education,1501,'<100','>=7',2,'female div/dep/mar',none,3,car,34,none,own,2,'high qualif/self emp/mgmt',1,yes,yes,bad\n'no checking',6,'critical/other existing credit',radio/tv,1382,'<100','1<=X<4',1,'female div/dep/mar',none,1,car,28,none,own,2,skilled,1,yes,yes,good\n'0<=X<200',12,'existing paid',furniture/equipment,951,'100<=X<500','<1',4,'female div/dep/mar',none,4,car,27,bank,rent,4,skilled,1,none,yes,bad\n'0<=X<200',24,'existing paid','used car',2760,'no known savings','>=7',4,'male single',none,4,'no known property',36,bank,'for free',1,skilled,1,yes,yes,good\n'0<=X<200',18,'delayed previously',furniture/equipment,4297,'<100','>=7',4,'male div/sep',none,3,'no known property',40,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,bad\n'no checking',9,'critical/other existing credit',education,936,'500<=X<1000','>=7',4,'male single',none,2,car,52,none,own,2,skilled,1,yes,yes,good\n'<0',12,'existing paid','new car',1168,'<100','1<=X<4',4,'male mar/wid',none,3,'real estate',27,none,own,1,'unskilled resident',1,none,yes,good\n'no checking',27,'delayed previously',business,5117,'<100','4<=X<7',3,'male single',none,4,car,26,none,own,2,skilled,1,none,yes,good\n'<0',12,'existing paid',retraining,902,'<100','4<=X<7',4,'male mar/wid',none,4,'life insurance',21,none,rent,1,skilled,1,none,yes,bad\n'no checking',12,'critical/other existing credit','new car',1495,'<100','>=7',4,'male single',none,1,'real estate',38,none,own,2,'unskilled resident',2,none,yes,good\n'<0',30,'critical/other existing credit','used car',10623,'<100','>=7',3,'male single',none,4,'no known property',38,none,'for free',3,'high qualif/self emp/mgmt',2,yes,yes,good\n'no checking',12,'critical/other existing credit',furniture/equipment,1935,'<100','>=7',4,'male single',none,4,'real estate',43,none,own,3,skilled,1,yes,yes,good\n'0<=X<200',12,'critical/other existing credit','domestic appliance',1424,'<100','4<=X<7',4,'male single',none,3,'life insurance',26,none,own,1,skilled,1,none,yes,good\n'<0',24,'existing paid',business,6568,'<100','1<=X<4',2,'male mar/wid',none,2,car,21,stores,own,1,'unskilled resident',1,none,yes,good\n'no checking',12,'existing paid','used car',1413,'>=1000','4<=X<7',3,'male single',none,2,'life insurance',55,none,own,1,skilled,1,none,no,good\n'no checking',9,'critical/other existing credit',radio/tv,3074,'no known savings','1<=X<4',1,'male single',none,2,'real estate',33,none,own,2,skilled,2,none,yes,good\n'no checking',36,'existing paid',radio/tv,3835,'no known savings','>=7',2,'female div/dep/mar',none,4,'real estate',45,none,own,1,'unskilled resident',1,yes,yes,good\n'<0',27,'no credits/all paid',business,5293,'<100',unemployed,2,'male single',none,4,'life insurance',50,stores,own,2,skilled,1,yes,yes,bad\n'>=200',30,'delayed previously',business,1908,'<100','>=7',4,'male single',none,4,'real estate',66,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,bad\n'no checking',36,'critical/other existing credit',radio/tv,3342,'no known savings','>=7',4,'male single',none,2,car,51,none,own,1,skilled,1,yes,yes,good\n'0<=X<200',6,'critical/other existing credit',retraining,932,'no known savings','4<=X<7',1,'female div/dep/mar',none,3,'life insurance',39,none,own,2,'unskilled resident',1,none,yes,good\n'<0',18,'no credits/all paid',business,3104,'<100','4<=X<7',3,'male single',none,1,'life insurance',31,bank,own,1,skilled,1,yes,yes,good\n'>=200',36,'existing paid',radio/tv,3913,'<100','1<=X<4',2,'male single',none,2,'real estate',23,none,own,1,skilled,1,yes,yes,good\n'<0',24,'existing paid',furniture/equipment,3021,'<100','1<=X<4',2,'male div/sep',none,2,'real estate',24,none,rent,1,'unskilled resident',1,none,yes,good\n'no checking',10,'existing paid','new car',1364,'<100','1<=X<4',2,'female div/dep/mar',none,4,car,64,none,own,1,skilled,1,yes,yes,good\n'0<=X<200',12,'existing paid',radio/tv,625,'<100','<1',4,'male mar/wid',guarantor,1,'real estate',26,bank,own,1,'unskilled resident',1,none,yes,good\n'<0',12,'existing paid',education,1200,'no known savings','1<=X<4',4,'female div/dep/mar',none,4,'life insurance',23,bank,rent,1,skilled,1,yes,yes,good\n'no checking',12,'existing paid',radio/tv,707,'<100','1<=X<4',4,'male single',none,2,'real estate',30,bank,own,2,skilled,1,none,yes,good\n'no checking',24,'delayed previously',business,2978,'no known savings','1<=X<4',4,'male single',none,4,'real estate',32,none,own,2,skilled,2,yes,yes,good\n'no checking',15,'existing paid','used car',4657,'<100','1<=X<4',3,'male single',none,2,car,30,none,own,1,skilled,1,yes,yes,good\n'no checking',36,'no credits/all paid',repairs,2613,'<100','1<=X<4',4,'male single',none,2,car,27,none,own,2,skilled,1,none,yes,good\n'0<=X<200',48,'existing paid',radio/tv,10961,'>=1000','4<=X<7',1,'male single','co applicant',2,'no known property',27,bank,own,2,skilled,1,yes,yes,bad\n'<0',12,'existing paid',furniture/equipment,7865,'<100','>=7',4,'male single',none,4,'no known property',53,none,'for free',1,'high qualif/self emp/mgmt',1,yes,yes,bad\n'no checking',9,'existing paid',radio/tv,1478,'<100','4<=X<7',4,'male single',none,2,car,22,none,own,1,skilled,1,none,yes,bad\n'<0',24,'existing paid',furniture/equipment,3149,'<100','<1',4,'male single',none,1,'no known property',22,bank,'for free',1,skilled,1,none,yes,good\n'>=200',36,'existing paid',radio/tv,4210,'<100','1<=X<4',4,'male single',none,2,car,26,none,own,1,skilled,1,none,yes,bad\n'no checking',9,'existing paid','new car',2507,'500<=X<1000','>=7',2,'male single',none,4,'no known property',51,none,'for free',1,'unskilled resident',1,none,yes,good\n'no checking',12,'existing paid',radio/tv,2141,'100<=X<500','4<=X<7',3,'male single',none,1,'no known property',35,none,own,1,skilled,1,none,yes,good\n'0<=X<200',18,'existing paid',radio/tv,866,'<100','1<=X<4',4,'male mar/wid',guarantor,2,'real estate',25,none,own,1,'unskilled resident',1,none,yes,good\n'no checking',4,'critical/other existing credit',radio/tv,1544,'<100','4<=X<7',2,'male single',none,1,'real estate',42,none,own,3,'unskilled resident',2,none,yes,good\n'<0',24,'existing paid',radio/tv,1823,'<100',unemployed,4,'male single',none,2,car,30,stores,own,1,'high qualif/self emp/mgmt',2,none,yes,bad\n'0<=X<200',6,'existing paid','new car',14555,'no known savings',unemployed,1,'male single',none,2,'life insurance',23,none,own,1,'unemp/unskilled non res',1,yes,yes,bad\n'0<=X<200',21,'existing paid',business,2767,'100<=X<500','>=7',4,'male div/sep',none,2,car,61,bank,rent,2,'unskilled resident',1,none,yes,bad\n'no checking',12,'critical/other existing credit',radio/tv,1291,'<100','1<=X<4',4,'female div/dep/mar',none,2,'life insurance',35,none,own,2,skilled,1,none,yes,good\n'<0',30,'existing paid',radio/tv,2522,'<100','>=7',1,'male single',guarantor,3,'life insurance',39,none,own,1,skilled,2,none,yes,good\n'<0',24,'existing paid','new car',915,'no known savings','>=7',4,'female div/dep/mar',none,2,car,29,bank,own,1,skilled,1,none,yes,bad\n'no checking',6,'existing paid',radio/tv,1595,'<100','4<=X<7',3,'male single',none,2,'life insurance',51,none,own,1,skilled,2,none,yes,good\n'<0',48,'no credits/all paid','used car',4605,'<100','>=7',3,'male single',none,4,'no known property',24,none,'for free',2,skilled,2,none,yes,bad\n'no checking',12,'critical/other existing credit',business,1185,'<100','1<=X<4',3,'female div/dep/mar',none,2,'real estate',27,none,own,2,skilled,1,none,yes,good\n'no checking',12,'all paid',retraining,3447,'500<=X<1000','1<=X<4',4,'female div/dep/mar',none,3,'real estate',35,none,own,1,'unskilled resident',2,none,yes,good\n'no checking',24,'existing paid',business,1258,'<100','4<=X<7',4,'male single',none,1,'real estate',25,none,own,1,skilled,1,yes,yes,good\n'no checking',12,'critical/other existing credit',radio/tv,717,'<100','>=7',4,'male single',none,4,'real estate',52,none,own,3,skilled,1,none,yes,good\n'no checking',6,'no credits/all paid','new car',1204,'100<=X<500','1<=X<4',4,'male single',none,1,'no known property',35,bank,rent,1,skilled,1,none,no,good\n'>=200',24,'existing paid',furniture/equipment,1925,'<100','1<=X<4',2,'male single',none,2,'real estate',26,none,own,1,skilled,1,none,yes,good\n'no checking',18,'existing paid',radio/tv,433,'<100',unemployed,3,'female div/dep/mar','co applicant',4,'real estate',22,none,rent,1,skilled,1,none,yes,bad\n'<0',6,'critical/other existing credit','new car',666,'>=1000','4<=X<7',3,'female div/dep/mar',none,4,'real estate',39,none,own,2,'unskilled resident',1,yes,yes,good\n'>=200',12,'existing paid',furniture/equipment,2251,'<100','1<=X<4',1,'female div/dep/mar',none,2,car,46,none,own,1,'unskilled resident',1,none,yes,good\n'0<=X<200',30,'existing paid','new car',2150,'<100','1<=X<4',4,'female div/dep/mar',guarantor,2,'no known property',24,bank,own,1,skilled,1,none,yes,bad\n'no checking',24,'delayed previously',furniture/equipment,4151,'100<=X<500','1<=X<4',2,'male single',none,3,'life insurance',35,none,own,2,skilled,1,none,yes,good\n'0<=X<200',9,'existing paid',furniture/equipment,2030,'no known savings','4<=X<7',2,'male single',none,1,car,24,none,own,1,skilled,1,yes,yes,good\n'0<=X<200',60,'delayed previously',radio/tv,7418,'no known savings','1<=X<4',1,'male single',none,1,'real estate',27,none,own,1,'unskilled resident',1,none,yes,good\n'no checking',24,'critical/other existing credit',radio/tv,2684,'<100','1<=X<4',4,'male single',none,2,'real estate',35,none,own,2,'unskilled resident',1,none,yes,good\n'<0',12,'all paid',radio/tv,2149,'<100','1<=X<4',4,'male div/sep',none,1,'no known property',29,none,'for free',1,skilled,1,none,yes,bad\n'no checking',15,'existing paid','used car',3812,'100<=X<500','<1',1,'female div/dep/mar',none,4,car,23,none,own,1,skilled,1,yes,yes,good\n'no checking',11,'critical/other existing credit',radio/tv,1154,'100<=X<500',unemployed,4,'female div/dep/mar',none,4,'real estate',57,none,own,3,'unskilled resident',1,none,yes,good\n'<0',12,'existing paid',furniture/equipment,1657,'<100','1<=X<4',2,'male single',none,2,'real estate',27,none,own,1,skilled,1,none,yes,good\n'<0',24,'existing paid',radio/tv,1603,'<100','>=7',4,'female div/dep/mar',none,4,car,55,none,own,1,skilled,1,none,yes,good\n'<0',18,'critical/other existing credit','new car',5302,'<100','>=7',2,'male single',none,4,'no known property',36,none,'for free',3,'high qualif/self emp/mgmt',1,yes,yes,good\n'no checking',12,'critical/other existing credit',education,2748,'<100','>=7',2,'female div/dep/mar',none,4,'no known property',57,bank,'for free',3,'unskilled resident',1,none,yes,good\n'no checking',10,'critical/other existing credit','new car',1231,'<100','>=7',3,'male single',none,4,'real estate',32,none,own,2,'unskilled resident',2,none,no,good\n'0<=X<200',15,'existing paid',radio/tv,802,'<100','>=7',4,'male single',none,3,car,37,none,own,1,skilled,2,none,yes,bad\n'no checking',36,'critical/other existing credit',business,6304,'no known savings','>=7',4,'male single',none,4,'real estate',36,none,own,2,skilled,1,none,yes,good\n'no checking',24,'existing paid',radio/tv,1533,'<100','<1',4,'female div/dep/mar',none,3,car,38,stores,own,1,skilled,1,yes,yes,good\n'<0',14,'existing paid','new car',8978,'<100','>=7',1,'male div/sep',none,4,'life insurance',45,none,own,1,'high qualif/self emp/mgmt',1,yes,no,bad\n'no checking',24,'existing paid',radio/tv,999,'no known savings','>=7',4,'male single',none,2,car,25,none,own,2,skilled,1,none,yes,good\n'no checking',18,'existing paid','new car',2662,'no known savings','4<=X<7',4,'male single',none,3,'life insurance',32,none,own,1,skilled,1,none,no,good\n'no checking',12,'critical/other existing credit',furniture/equipment,1402,'500<=X<1000','4<=X<7',3,'female div/dep/mar',none,4,car,37,none,rent,1,skilled,1,yes,yes,good\n'0<=X<200',48,'all paid','new car',12169,'no known savings',unemployed,4,'male single','co applicant',4,'no known property',36,none,'for free',1,'high qualif/self emp/mgmt',1,yes,yes,good\n'0<=X<200',48,'existing paid',radio/tv,3060,'<100','4<=X<7',4,'male single',none,4,'real estate',28,none,own,2,skilled,1,none,yes,bad\n'<0',30,'existing paid',repairs,11998,'<100','<1',1,'male div/sep',none,1,'no known property',34,none,own,1,'unskilled resident',1,yes,yes,bad\n'no checking',9,'existing paid',radio/tv,2697,'<100','1<=X<4',1,'male single',none,2,'real estate',32,none,own,1,skilled,2,none,yes,good\n'no checking',18,'critical/other existing credit',radio/tv,2404,'<100','1<=X<4',2,'female div/dep/mar',none,2,car,26,none,own,2,skilled,1,none,yes,good\n'<0',12,'existing paid',furniture/equipment,1262,'no known savings','>=7',2,'male div/sep',none,4,'life insurance',49,none,own,1,'unskilled resident',1,yes,yes,good\n'no checking',6,'existing paid',furniture/equipment,4611,'<100','<1',1,'female div/dep/mar',none,4,'life insurance',32,none,own,1,skilled,1,none,yes,bad\n'no checking',24,'existing paid',radio/tv,1901,'100<=X<500','1<=X<4',4,'male single',none,4,car,29,none,rent,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'no checking',15,'critical/other existing credit','used car',3368,'>=1000','>=7',3,'male single',none,4,'no known property',23,none,rent,2,skilled,1,yes,yes,good\n'no checking',12,'existing paid',furniture/equipment,1574,'<100','1<=X<4',4,'male single',none,2,'real estate',50,none,own,1,skilled,1,none,yes,good\n'>=200',18,'all paid',radio/tv,1445,'no known savings','4<=X<7',4,'male single',none,4,car,49,bank,own,1,'unskilled resident',1,none,yes,good\n'no checking',15,'critical/other existing credit',furniture/equipment,1520,'no known savings','>=7',4,'male single',none,4,'life insurance',63,none,own,1,skilled,1,none,yes,good\n'0<=X<200',24,'critical/other existing credit','new car',3878,'100<=X<500','<1',4,'male div/sep',none,2,car,37,none,own,1,skilled,1,yes,yes,good\n'<0',47,'existing paid','new car',10722,'<100','<1',1,'female div/dep/mar',none,1,'real estate',35,none,own,1,'unskilled resident',1,yes,yes,good\n'<0',48,'existing paid','used car',4788,'<100','4<=X<7',4,'male single',none,3,'life insurance',26,none,own,1,skilled,2,none,yes,good\n'0<=X<200',48,'delayed previously',other,7582,'100<=X<500',unemployed,2,'male single',none,4,'no known property',31,none,'for free',1,'high qualif/self emp/mgmt',1,yes,yes,good\n'0<=X<200',12,'existing paid',radio/tv,1092,'<100','1<=X<4',4,'female div/dep/mar',guarantor,4,'real estate',49,none,own,2,skilled,1,yes,yes,good\n'<0',24,'delayed previously',radio/tv,1024,'<100','<1',4,'male mar/wid',none,4,'real estate',48,stores,own,1,skilled,1,none,yes,bad\n'no checking',12,'existing paid',business,1076,'<100','1<=X<4',2,'male mar/wid',none,2,'real estate',26,none,own,1,skilled,1,yes,no,good\n'0<=X<200',36,'existing paid','used car',9398,'<100','<1',1,'male mar/wid',none,4,car,28,none,rent,1,'high qualif/self emp/mgmt',1,yes,yes,bad\n'<0',24,'critical/other existing credit','used car',6419,'<100','>=7',2,'female div/dep/mar',none,4,'no known property',44,none,'for free',2,'high qualif/self emp/mgmt',2,yes,yes,good\n'>=200',42,'critical/other existing credit','used car',4796,'<100','>=7',4,'male single',none,4,'no known property',56,none,'for free',1,skilled,1,none,yes,good\n'no checking',48,'critical/other existing credit',business,7629,'no known savings','>=7',4,'male div/sep',none,2,car,46,bank,own,2,'high qualif/self emp/mgmt',2,none,yes,good\n'0<=X<200',48,'existing paid',furniture/equipment,9960,'<100','<1',1,'female div/dep/mar',none,2,car,26,none,own,1,skilled,1,yes,yes,bad\n'no checking',12,'existing paid','used car',4675,'no known savings','<1',1,'female div/dep/mar',none,4,car,20,none,rent,1,skilled,1,none,yes,good\n'no checking',10,'existing paid','new car',1287,'no known savings','>=7',4,'male single','co applicant',2,'life insurance',45,none,own,1,'unskilled resident',1,none,no,good\n'no checking',18,'existing paid',furniture/equipment,2515,'<100','1<=X<4',3,'male single',none,4,'real estate',43,none,own,1,skilled,1,yes,yes,good\n'0<=X<200',21,'critical/other existing credit',furniture/equipment,2745,'>=1000','4<=X<7',3,'male single',none,2,car,32,none,own,2,skilled,1,yes,yes,good\n'no checking',6,'existing paid','new car',672,'<100',unemployed,1,'female div/dep/mar',none,4,'real estate',54,none,own,1,'unemp/unskilled non res',1,yes,yes,good\n'0<=X<200',36,'no credits/all paid',radio/tv,3804,'<100','1<=X<4',4,'female div/dep/mar',none,1,car,42,none,own,1,skilled,1,yes,yes,bad\n'>=200',24,'critical/other existing credit','new car',1344,'no known savings','4<=X<7',4,'male single',none,2,'real estate',37,bank,own,2,'unskilled resident',2,none,yes,bad\n'<0',10,'critical/other existing credit','new car',1038,'<100','4<=X<7',4,'male single','co applicant',3,'life insurance',49,none,own,2,skilled,1,yes,yes,good\n'no checking',48,'critical/other existing credit','new car',10127,'500<=X<1000','1<=X<4',2,'male single',none,2,'no known property',44,bank,'for free',1,skilled,1,none,yes,bad\n'no checking',6,'existing paid',furniture/equipment,1543,'>=1000','1<=X<4',4,'male div/sep',none,2,'real estate',33,none,own,1,skilled,1,none,yes,good\n'no checking',30,'existing paid','used car',4811,'no known savings','4<=X<7',2,'female div/dep/mar',none,4,'life insurance',24,stores,rent,1,'unskilled resident',1,none,yes,good\n'<0',12,'existing paid',radio/tv,727,'100<=X<500','<1',4,'male mar/wid',none,3,'no known property',33,none,own,1,'unskilled resident',1,yes,yes,bad\n'0<=X<200',8,'existing paid',furniture/equipment,1237,'<100','1<=X<4',3,'female div/dep/mar',none,4,'real estate',24,none,own,1,skilled,1,none,yes,bad\n'0<=X<200',9,'existing paid','new car',276,'<100','1<=X<4',4,'male mar/wid',none,4,'real estate',22,none,rent,1,'unskilled resident',1,none,yes,good\n'0<=X<200',48,'existing paid',other,5381,'no known savings',unemployed,3,'male single',none,4,'no known property',40,bank,'for free',1,'unemp/unskilled non res',1,yes,yes,good\n'no checking',24,'existing paid',furniture/equipment,5511,'100<=X<500','1<=X<4',4,'male single',none,1,car,25,stores,own,1,skilled,1,none,yes,good\n'>=200',24,'existing paid',furniture/equipment,3749,'<100','<1',2,'female div/dep/mar',none,4,car,26,none,own,1,skilled,1,none,yes,good\n'0<=X<200',12,'existing paid','new car',685,'<100','4<=X<7',2,'male mar/wid',none,3,car,25,bank,own,1,'unskilled resident',1,none,yes,bad\n'>=200',4,'existing paid','new car',1494,'no known savings','<1',1,'male single',none,2,'real estate',29,none,own,1,'unskilled resident',2,none,no,good\n'<0',36,'all paid',furniture/equipment,2746,'<100','>=7',4,'male single',none,4,car,31,bank,own,1,skilled,1,none,yes,bad\n'<0',12,'existing paid',furniture/equipment,708,'<100','1<=X<4',2,'male single',guarantor,3,'life insurance',38,none,own,1,'unskilled resident',2,none,yes,good\n'0<=X<200',24,'existing paid',furniture/equipment,4351,'no known savings','1<=X<4',1,'female div/dep/mar',none,4,'life insurance',48,none,own,1,'unskilled resident',1,yes,yes,good\n'no checking',12,'critical/other existing credit',education,701,'<100','1<=X<4',4,'male single',none,2,car,32,none,own,2,skilled,1,none,yes,good\n'<0',15,'delayed previously',furniture/equipment,3643,'<100','>=7',1,'female div/dep/mar',none,4,'life insurance',27,none,own,2,'unskilled resident',1,none,yes,good\n'0<=X<200',30,'critical/other existing credit','new car',4249,'<100',unemployed,4,'male mar/wid',none,2,car,28,none,own,2,'high qualif/self emp/mgmt',1,none,yes,bad\n'<0',24,'existing paid',radio/tv,1938,'<100','<1',4,'male div/sep',none,3,'life insurance',32,none,own,1,skilled,1,none,yes,bad\n'<0',24,'existing paid','used car',2910,'<100','4<=X<7',2,'male single',none,1,'no known property',34,none,'for free',1,'high qualif/self emp/mgmt',1,yes,yes,good\n'<0',18,'existing paid',furniture/equipment,2659,'>=1000','1<=X<4',4,'male single',none,2,car,28,none,own,1,skilled,1,none,yes,good\n'no checking',18,'critical/other existing credit','new car',1028,'<100','1<=X<4',4,'female div/dep/mar',none,3,'real estate',36,none,own,2,skilled,1,none,yes,good\n'<0',8,'critical/other existing credit','new car',3398,'<100','4<=X<7',1,'male single',none,4,'real estate',39,none,own,2,'unskilled resident',1,none,no,good\n'no checking',12,'critical/other existing credit',furniture/equipment,5801,'no known savings','>=7',2,'male single',none,4,'life insurance',49,none,rent,1,skilled,1,yes,yes,good\n'no checking',24,'existing paid','new car',1525,'>=1000','4<=X<7',4,'female div/dep/mar',none,3,car,34,none,own,1,skilled,2,yes,yes,good\n'>=200',36,'existing paid',radio/tv,4473,'<100','>=7',4,'male single',none,2,car,31,none,own,1,skilled,1,none,yes,good\n'0<=X<200',6,'existing paid',radio/tv,1068,'<100','>=7',4,'male single',none,4,car,28,none,own,1,skilled,2,none,yes,good\n'<0',24,'critical/other existing credit','used car',6615,'<100',unemployed,2,'male single',none,4,'no known property',75,none,'for free',2,'high qualif/self emp/mgmt',1,yes,yes,good\n'no checking',18,'critical/other existing credit',education,1864,'100<=X<500','1<=X<4',4,'female div/dep/mar',none,2,'real estate',30,none,own,2,skilled,1,none,yes,bad\n'0<=X<200',60,'existing paid','new car',7408,'100<=X<500','<1',4,'female div/dep/mar',none,2,'life insurance',24,none,own,1,'high qualif/self emp/mgmt',1,none,yes,bad\n'no checking',48,'critical/other existing credit','used car',11590,'100<=X<500','1<=X<4',2,'female div/dep/mar',none,4,car,24,bank,rent,2,'unskilled resident',1,none,yes,bad\n'<0',24,'no credits/all paid',furniture/equipment,4110,'<100','>=7',3,'male single',none,4,'no known property',23,bank,rent,2,skilled,2,none,yes,bad\n'<0',6,'critical/other existing credit',furniture/equipment,3384,'<100','1<=X<4',1,'male div/sep',none,4,'real estate',44,none,rent,1,'high qualif/self emp/mgmt',1,yes,yes,bad\n'0<=X<200',13,'existing paid',radio/tv,2101,'<100','<1',2,'female div/dep/mar',guarantor,4,'life insurance',23,none,own,1,'unskilled resident',1,none,yes,good\n'<0',15,'existing paid','domestic appliance',1275,'no known savings','1<=X<4',4,'female div/dep/mar',none,2,car,24,none,rent,1,skilled,1,none,yes,bad\n'<0',24,'existing paid',furniture/equipment,4169,'<100','1<=X<4',4,'male single',none,4,'life insurance',28,none,own,1,skilled,1,none,yes,good\n'0<=X<200',10,'existing paid',furniture/equipment,1521,'<100','1<=X<4',4,'male div/sep',none,2,car,31,none,own,1,'unskilled resident',1,none,yes,good\n'0<=X<200',24,'critical/other existing credit',education,5743,'<100','<1',2,'female div/dep/mar',none,4,'no known property',24,none,'for free',2,skilled,1,yes,yes,good\n'<0',21,'existing paid',furniture/equipment,3599,'<100','4<=X<7',1,'female div/dep/mar',none,4,car,26,none,rent,1,'unskilled resident',1,none,yes,good\n'0<=X<200',18,'existing paid',radio/tv,3213,'500<=X<1000','<1',1,'male mar/wid',none,3,'real estate',25,none,rent,1,skilled,1,none,yes,good\n'0<=X<200',18,'existing paid',business,4439,'<100','>=7',1,'male single','co applicant',1,'real estate',33,bank,own,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'>=200',10,'existing paid','new car',3949,'<100','<1',1,'male single',guarantor,1,'life insurance',37,none,own,1,'unskilled resident',2,none,yes,good\n'no checking',15,'critical/other existing credit',radio/tv,1459,'<100','1<=X<4',4,'female div/dep/mar',none,2,car,43,none,own,1,'unskilled resident',1,none,yes,good\n'0<=X<200',13,'critical/other existing credit',radio/tv,882,'<100','<1',4,'male single',guarantor,4,'real estate',23,none,own,2,skilled,1,none,yes,good\n'0<=X<200',24,'existing paid',radio/tv,3758,'500<=X<1000',unemployed,1,'female div/dep/mar',none,4,'no known property',23,none,rent,1,'unemp/unskilled non res',1,none,yes,good\n'no checking',6,'delayed previously',business,1743,'100<=X<500','1<=X<4',1,'male single',none,2,'real estate',34,none,own,2,'unskilled resident',1,none,yes,good\n'0<=X<200',9,'critical/other existing credit',education,1136,'>=1000','>=7',4,'male single',none,3,'no known property',32,none,'for free',2,skilled,2,none,yes,bad\n'no checking',9,'existing paid','domestic appliance',1236,'<100','<1',1,'female div/dep/mar',none,4,'real estate',23,none,rent,1,skilled,1,yes,yes,good\n'0<=X<200',9,'existing paid',furniture/equipment,959,'<100','1<=X<4',1,'female div/dep/mar',none,2,car,29,none,own,1,skilled,1,none,no,bad\n'no checking',18,'critical/other existing credit','used car',3229,'no known savings',unemployed,2,'male single',none,4,'no known property',38,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'<0',12,'no credits/all paid',radio/tv,6199,'<100','1<=X<4',4,'male single',none,2,'life insurance',28,none,rent,2,skilled,1,yes,yes,bad\n'no checking',10,'existing paid',education,727,'500<=X<1000','>=7',4,'male single',none,4,'no known property',46,none,'for free',1,skilled,1,yes,yes,good\n'0<=X<200',24,'existing paid','new car',1246,'<100','<1',4,'male single',none,2,'real estate',23,stores,own,1,'unskilled resident',1,none,yes,bad\n'no checking',12,'critical/other existing credit',radio/tv,2331,'no known savings','>=7',1,'male single','co applicant',4,'real estate',49,none,own,1,skilled,1,yes,yes,good\n'no checking',36,'delayed previously',radio/tv,4463,'<100','1<=X<4',4,'male single',none,2,car,26,none,own,2,'high qualif/self emp/mgmt',1,yes,yes,bad\n'no checking',12,'existing paid',radio/tv,776,'<100','1<=X<4',4,'male mar/wid',none,2,'real estate',28,none,own,1,skilled,1,none,yes,good\n'<0',30,'existing paid',furniture/equipment,2406,'<100','4<=X<7',4,'female div/dep/mar',none,4,'real estate',23,none,rent,1,skilled,1,none,yes,bad\n'0<=X<200',18,'existing paid',education,1239,'no known savings','1<=X<4',4,'male single',none,4,'no known property',61,none,'for free',1,skilled,1,none,yes,good\n'>=200',12,'existing paid',radio/tv,3399,'no known savings','>=7',2,'male single',none,3,car,37,none,own,1,'high qualif/self emp/mgmt',1,none,yes,good\n'>=200',12,'delayed previously','new car',2247,'<100','1<=X<4',2,'female div/dep/mar',none,2,car,36,stores,own,2,skilled,1,yes,yes,good\n'no checking',6,'existing paid',furniture/equipment,1766,'<100','1<=X<4',1,'male mar/wid',none,2,'life insurance',21,none,rent,1,skilled,1,none,yes,good\n'<0',18,'existing paid',furniture/equipment,2473,'<100',unemployed,4,'male single',none,1,car,25,none,own,1,'unemp/unskilled non res',1,none,yes,bad\n'no checking',12,'existing paid',business,1542,'<100','4<=X<7',2,'male single',none,4,car,36,none,own,1,skilled,1,yes,yes,good\n'no checking',18,'critical/other existing credit','used car',3850,'<100','4<=X<7',3,'male single',none,1,car,27,none,own,2,skilled,1,none,yes,good\n'<0',18,'existing paid',furniture/equipment,3650,'<100','<1',1,'female div/dep/mar',none,4,car,22,none,rent,1,skilled,1,none,yes,good\n'<0',36,'existing paid',furniture/equipment,3446,'<100','>=7',4,'male single',none,2,car,42,none,own,1,skilled,2,none,yes,bad\n'0<=X<200',18,'existing paid',furniture/equipment,3001,'<100','4<=X<7',2,'female div/dep/mar',none,4,'real estate',40,none,rent,1,skilled,1,none,yes,good\n'no checking',36,'existing paid','new car',3079,'no known savings','1<=X<4',4,'male single',none,4,'real estate',36,none,own,1,skilled,1,none,yes,good\n'no checking',18,'critical/other existing credit',radio/tv,6070,'<100','>=7',3,'male single',none,4,car,33,none,own,2,skilled,1,yes,yes,good\n'no checking',10,'critical/other existing credit',furniture/equipment,2146,'<100','<1',1,'female div/dep/mar',none,3,'real estate',23,none,rent,2,skilled,1,none,yes,good\n'no checking',60,'critical/other existing credit','new car',13756,'no known savings','>=7',2,'male single',none,4,'no known property',63,bank,'for free',1,'high qualif/self emp/mgmt',1,yes,yes,good\n'0<=X<200',60,'all paid',other,14782,'100<=X<500','>=7',3,'female div/dep/mar',none,4,'no known property',60,bank,'for free',2,'high qualif/self emp/mgmt',1,yes,yes,bad\n'<0',48,'all paid',business,7685,'<100','4<=X<7',2,'female div/dep/mar',guarantor,4,car,37,none,rent,1,skilled,1,none,yes,bad\n'no checking',18,'delayed previously',radio/tv,2320,'<100',unemployed,2,'male mar/wid',none,3,'real estate',34,none,own,2,skilled,1,none,yes,good\n'no checking',7,'delayed previously',radio/tv,846,'no known savings','>=7',3,'male single',none,4,'no known property',36,none,'for free',1,skilled,1,none,yes,good\n'0<=X<200',36,'existing paid','new car',14318,'<100','>=7',4,'male single',none,2,'no known property',57,none,'for free',1,'high qualif/self emp/mgmt',1,yes,yes,bad\n'no checking',6,'critical/other existing credit','new car',362,'100<=X<500','1<=X<4',4,'female div/dep/mar',none,4,car,52,none,own,2,'unskilled resident',1,none,yes,good\n'<0',20,'existing paid',furniture/equipment,2212,'no known savings','4<=X<7',4,'male single',none,4,car,39,none,own,1,skilled,1,yes,yes,good\n'0<=X<200',18,'existing paid','used car',12976,'<100',unemployed,3,'female div/dep/mar',none,4,'no known property',38,none,'for free',1,'high qualif/self emp/mgmt',1,yes,yes,bad\n'no checking',22,'existing paid','new car',1283,'no known savings','4<=X<7',4,'female div/dep/mar',none,4,'life insurance',25,none,rent,1,skilled,1,none,yes,good\n'>=200',12,'existing paid','new car',1330,'<100','<1',4,'male single',none,1,'real estate',26,none,own,1,skilled,1,none,yes,good\n'no checking',30,'delayed previously',business,4272,'100<=X<500','1<=X<4',2,'male single',none,2,'life insurance',26,none,own,2,'unskilled resident',1,none,yes,good\n'no checking',18,'critical/other existing credit',radio/tv,2238,'<100','1<=X<4',2,'female div/dep/mar',none,1,car,25,none,own,2,skilled,1,none,yes,good\n'no checking',18,'existing paid',radio/tv,1126,'no known savings','<1',4,'female div/dep/mar',none,2,'real estate',21,none,rent,1,skilled,1,yes,yes,good\n'0<=X<200',18,'critical/other existing credit',furniture/equipment,7374,'<100',unemployed,4,'male single',none,4,'life insurance',40,stores,own,2,'high qualif/self emp/mgmt',1,yes,yes,good\n'0<=X<200',15,'critical/other existing credit',business,2326,'500<=X<1000','1<=X<4',2,'male single',none,4,car,27,bank,own,1,skilled,1,none,yes,good\n'no checking',9,'existing paid',business,1449,'<100','4<=X<7',3,'female div/dep/mar',none,2,car,27,none,own,2,skilled,1,none,yes,good\n'no checking',18,'existing paid','new car',1820,'<100','1<=X<4',2,'male mar/wid',none,2,'life insurance',30,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'0<=X<200',12,'existing paid',furniture/equipment,983,'>=1000','<1',1,'female div/dep/mar',none,4,'real estate',19,none,rent,1,'unskilled resident',1,none,yes,good\n'<0',36,'existing paid','new car',3249,'<100','4<=X<7',2,'male single',none,4,'no known property',39,bank,'for free',1,'high qualif/self emp/mgmt',2,yes,yes,good\n'<0',6,'critical/other existing credit',radio/tv,1957,'<100','4<=X<7',1,'female div/dep/mar',none,4,car,31,none,own,1,skilled,1,none,yes,good\n'no checking',9,'critical/other existing credit',furniture/equipment,2406,'<100',unemployed,2,'male single',none,3,car,31,none,own,1,'high qualif/self emp/mgmt',1,none,yes,good\n'0<=X<200',39,'delayed previously',education,11760,'100<=X<500','4<=X<7',2,'male single',none,3,'no known property',32,none,rent,1,skilled,1,yes,yes,good\n'<0',12,'existing paid',furniture/equipment,2578,'<100',unemployed,3,'female div/dep/mar',none,4,'no known property',55,none,'for free',1,'high qualif/self emp/mgmt',1,none,yes,good\n'<0',36,'critical/other existing credit',furniture/equipment,2348,'<100','1<=X<4',3,'male mar/wid',none,2,'life insurance',46,none,own,2,skilled,1,yes,yes,good\n'0<=X<200',12,'existing paid','new car',1223,'<100','>=7',1,'male div/sep',none,1,'real estate',46,none,rent,2,skilled,1,none,yes,bad\n'no checking',24,'critical/other existing credit',radio/tv,1516,'>=1000','1<=X<4',4,'female div/dep/mar',none,1,'real estate',43,none,own,2,'unskilled resident',1,none,yes,good\n'no checking',18,'existing paid',radio/tv,1473,'<100','<1',3,'male mar/wid',none,4,'real estate',39,none,own,1,skilled,1,yes,yes,good\n'0<=X<200',18,'critical/other existing credit',business,1887,'no known savings','1<=X<4',4,'male mar/wid',none,4,'real estate',28,bank,own,2,skilled,1,none,yes,good\n'no checking',24,'delayed previously',business,8648,'<100','<1',2,'male single',none,2,car,27,bank,own,2,skilled,1,yes,yes,bad\n'no checking',14,'delayed previously','new car',802,'<100','1<=X<4',4,'male single',none,2,car,27,none,own,2,'unskilled resident',1,none,yes,good\n'0<=X<200',18,'delayed previously','new car',2899,'no known savings','>=7',4,'male single',none,4,car,43,none,own,1,skilled,2,none,yes,good\n'0<=X<200',24,'existing paid',radio/tv,2039,'<100','<1',1,'male mar/wid',none,1,'life insurance',22,none,own,1,skilled,1,yes,yes,bad\n'no checking',24,'critical/other existing credit','used car',2197,'no known savings','4<=X<7',4,'male single',none,4,car,43,none,own,2,skilled,2,yes,yes,good\n'<0',15,'existing paid',radio/tv,1053,'<100','<1',4,'male mar/wid',none,2,'real estate',27,none,own,1,skilled,1,none,no,good\n'no checking',24,'existing paid',radio/tv,3235,'500<=X<1000','>=7',3,'male div/sep',none,2,car,26,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'>=200',12,'critical/other existing credit','new car',939,'500<=X<1000','4<=X<7',4,'male mar/wid',none,2,'real estate',28,none,own,3,skilled,1,yes,yes,bad\n'0<=X<200',24,'existing paid',radio/tv,1967,'<100','>=7',4,'female div/dep/mar',none,4,car,20,none,own,1,skilled,1,yes,yes,good\n'no checking',33,'critical/other existing credit','used car',7253,'<100','4<=X<7',3,'male single',none,2,car,35,none,own,2,'high qualif/self emp/mgmt',1,yes,yes,good\n'no checking',12,'critical/other existing credit',business,2292,'<100',unemployed,4,'male single',none,2,car,42,stores,own,2,'high qualif/self emp/mgmt',1,yes,yes,bad\n'no checking',10,'existing paid','new car',1597,'500<=X<1000','1<=X<4',3,'male single',none,2,'no known property',40,none,rent,1,'unskilled resident',2,none,no,good\n'<0',24,'existing paid','new car',1381,'no known savings','1<=X<4',4,'female div/dep/mar',none,2,'life insurance',35,none,own,1,skilled,1,none,yes,bad\n'no checking',36,'critical/other existing credit','used car',5842,'<100','>=7',2,'male single',none,2,'life insurance',35,none,own,2,skilled,2,yes,yes,good\n'<0',12,'existing paid','new car',2579,'<100','<1',4,'male single',none,1,'real estate',33,none,own,1,'unskilled resident',2,none,yes,bad\n'<0',18,'delayed previously',education,8471,'no known savings','1<=X<4',1,'female div/dep/mar',none,2,car,23,none,rent,2,skilled,1,yes,yes,good\n'no checking',21,'existing paid','new car',2782,'500<=X<1000','4<=X<7',1,'female div/dep/mar',none,2,car,31,bank,own,1,'high qualif/self emp/mgmt',1,none,yes,good\n'0<=X<200',18,'existing paid','new car',1042,'no known savings','1<=X<4',4,'female div/dep/mar',none,2,'life insurance',33,none,own,1,skilled,1,none,yes,bad\n'no checking',15,'existing paid','new car',3186,'>=1000','4<=X<7',2,'female div/dep/mar',none,3,car,20,none,rent,1,skilled,1,none,yes,good\n'0<=X<200',12,'existing paid','used car',2028,'no known savings','1<=X<4',4,'male single',none,2,car,30,none,own,1,skilled,1,none,yes,good\n'0<=X<200',12,'critical/other existing credit','new car',958,'<100','4<=X<7',2,'male single',none,3,'real estate',47,none,own,2,'unskilled resident',2,none,yes,good\n'no checking',21,'delayed previously',furniture/equipment,1591,'100<=X<500','4<=X<7',4,'male single',none,3,'real estate',34,none,own,2,'high qualif/self emp/mgmt',1,none,yes,good\n'0<=X<200',12,'existing paid',furniture/equipment,2762,'no known savings','>=7',1,'female div/dep/mar',none,2,'life insurance',25,bank,own,1,skilled,1,yes,yes,bad\n'0<=X<200',18,'existing paid','used car',2779,'<100','1<=X<4',1,'male mar/wid',none,3,car,21,none,rent,1,skilled,1,yes,yes,good\n'no checking',28,'critical/other existing credit',radio/tv,2743,'<100','>=7',4,'male single',none,2,car,29,none,own,2,skilled,1,none,yes,good\n'no checking',18,'critical/other existing credit',radio/tv,1149,'>=1000','1<=X<4',4,'male single',none,3,'real estate',46,none,own,2,skilled,1,none,yes,good\n'no checking',9,'existing paid',furniture/equipment,1313,'<100','>=7',1,'male single',none,4,car,20,none,own,1,skilled,1,none,yes,good\n'<0',18,'critical/other existing credit',repairs,1190,'<100',unemployed,2,'female div/dep/mar',none,4,'no known property',55,none,'for free',3,'unemp/unskilled non res',2,none,yes,bad\n'no checking',5,'existing paid',business,3448,'<100','4<=X<7',1,'male single',none,4,'real estate',74,none,own,1,'unskilled resident',1,none,yes,good\n'0<=X<200',24,'existing paid',other,11328,'<100','1<=X<4',2,'male single','co applicant',3,car,29,bank,own,2,'high qualif/self emp/mgmt',1,yes,yes,bad\n'<0',6,'critical/other existing credit',furniture/equipment,1872,'<100',unemployed,4,'male single',none,4,'no known property',36,none,'for free',3,'high qualif/self emp/mgmt',1,yes,yes,good\n'no checking',24,'critical/other existing credit',repairs,2058,'<100','1<=X<4',4,'male div/sep',none,2,'real estate',33,none,own,2,skilled,1,yes,yes,good\n'<0',9,'existing paid',furniture/equipment,2136,'<100','1<=X<4',3,'male single',none,2,'real estate',25,none,own,1,skilled,1,none,yes,good\n'0<=X<200',12,'existing paid',radio/tv,1484,'no known savings','1<=X<4',2,'male mar/wid',none,1,'real estate',25,none,own,1,skilled,1,yes,yes,bad\n'no checking',6,'existing paid',repairs,660,'500<=X<1000','4<=X<7',2,'male mar/wid',none,4,'real estate',23,none,rent,1,'unskilled resident',1,none,yes,good\n'no checking',24,'critical/other existing credit','new car',1287,'>=1000','>=7',4,'female div/dep/mar',none,4,'real estate',37,none,own,2,skilled,1,yes,yes,good\n'<0',42,'critical/other existing credit',repairs,3394,'<100',unemployed,4,'male single','co applicant',4,car,65,none,own,2,'unemp/unskilled non res',1,none,yes,good\n'>=200',12,'all paid',business,609,'<100','<1',4,'female div/dep/mar',none,1,'real estate',26,none,own,1,'unemp/unskilled non res',1,none,yes,bad\n'no checking',12,'existing paid','new car',1884,'<100','>=7',4,'male single',none,4,car,39,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'<0',12,'existing paid',furniture/equipment,1620,'<100','1<=X<4',2,'female div/dep/mar','co applicant',3,'life insurance',30,none,own,1,skilled,1,none,yes,good\n'0<=X<200',20,'delayed previously',other,2629,'<100','1<=X<4',2,'male single',none,3,car,29,bank,own,2,skilled,1,yes,yes,good\n'no checking',12,'existing paid',education,719,'<100','>=7',4,'male single',none,4,car,41,bank,own,1,'unskilled resident',2,none,yes,bad\n'0<=X<200',48,'critical/other existing credit',furniture/equipment,5096,'<100','1<=X<4',2,'female div/dep/mar',none,3,car,30,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,bad\n'no checking',9,'critical/other existing credit',education,1244,'no known savings','>=7',4,'female div/dep/mar',none,4,'life insurance',41,none,rent,2,'unskilled resident',1,none,yes,good\n'<0',36,'existing paid','new car',1842,'<100','<1',4,'female div/dep/mar',none,4,car,34,none,own,1,skilled,1,yes,yes,bad\n'0<=X<200',7,'existing paid',radio/tv,2576,'<100','1<=X<4',2,'male single',guarantor,2,'real estate',35,none,own,1,skilled,1,none,yes,good\n'>=200',12,'existing paid',furniture/equipment,1424,'no known savings','>=7',3,'female div/dep/mar',none,4,'real estate',55,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'0<=X<200',15,'delayed previously',repairs,1512,'>=1000','1<=X<4',3,'male mar/wid',none,3,'life insurance',61,stores,own,2,skilled,1,none,yes,bad\n'no checking',36,'critical/other existing credit','used car',11054,'no known savings','1<=X<4',4,'male single',none,2,car,30,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'no checking',6,'existing paid',radio/tv,518,'<100','1<=X<4',3,'female div/dep/mar',none,1,'real estate',29,none,own,1,skilled,1,none,yes,good\n'no checking',12,'no credits/all paid',furniture/equipment,2759,'<100','>=7',2,'male single',none,4,'life insurance',34,none,own,2,skilled,1,none,yes,good\n'no checking',24,'existing paid','used car',2670,'<100','>=7',4,'male single',none,4,car,35,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'<0',24,'existing paid','new car',4817,'<100','4<=X<7',2,'male single','co applicant',3,'life insurance',31,none,own,1,skilled,1,yes,yes,bad\n'no checking',24,'existing paid','used car',2679,'<100','<1',4,'female div/dep/mar',none,1,'no known property',29,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'<0',11,'critical/other existing credit','new car',3905,'<100','1<=X<4',2,'male single',none,2,'real estate',36,none,rent,2,skilled,2,none,yes,good\n'<0',12,'existing paid','used car',3386,'<100','>=7',3,'male single',none,4,'no known property',35,none,'for free',1,skilled,1,yes,yes,bad\n'<0',6,'existing paid','domestic appliance',343,'<100','<1',4,'female div/dep/mar',none,1,'real estate',27,none,own,1,skilled,1,none,yes,good\n'no checking',18,'existing paid',radio/tv,4594,'<100','<1',3,'male single',none,2,car,32,none,own,1,skilled,1,yes,yes,good\n'<0',36,'existing paid',furniture/equipment,3620,'<100','1<=X<4',1,'male single',guarantor,2,'life insurance',37,none,own,1,skilled,2,none,yes,good\n'<0',15,'existing paid','new car',1721,'<100','<1',2,'male single',none,3,'real estate',36,none,own,1,skilled,1,none,yes,good\n'0<=X<200',12,'existing paid',furniture/equipment,3017,'<100','<1',3,'female div/dep/mar',none,1,'real estate',34,none,rent,1,'high qualif/self emp/mgmt',1,none,yes,good\n'0<=X<200',12,'existing paid',retraining,754,'no known savings','>=7',4,'male single',none,4,'life insurance',38,none,own,2,skilled,1,none,yes,good\n'no checking',18,'existing paid',business,1950,'<100','4<=X<7',4,'male single',none,1,car,34,stores,own,2,skilled,1,yes,yes,good\n'<0',24,'existing paid','used car',2924,'<100','1<=X<4',3,'male single',guarantor,4,'no known property',63,bank,own,1,skilled,2,yes,yes,good\n'<0',24,'delayed previously',radio/tv,1659,'<100','<1',4,'female div/dep/mar',none,2,car,29,none,rent,1,'unskilled resident',1,yes,yes,bad\n'no checking',48,'delayed previously',radio/tv,7238,'no known savings','>=7',3,'male single',none,3,car,32,bank,own,2,skilled,2,none,yes,good\n'no checking',33,'delayed previously',business,2764,'<100','1<=X<4',2,'female div/dep/mar',none,2,car,26,none,own,2,skilled,1,yes,yes,good\n'no checking',24,'delayed previously','used car',4679,'<100','4<=X<7',3,'male single',none,3,car,35,none,own,2,'unskilled resident',1,yes,yes,good\n'0<=X<200',24,'existing paid',radio/tv,3092,'100<=X<500','<1',3,'male mar/wid',none,2,car,22,none,rent,1,skilled,1,yes,yes,bad\n'<0',6,'existing paid',education,448,'<100','<1',4,'female div/dep/mar',none,4,'life insurance',23,none,own,1,skilled,1,none,yes,bad\n'<0',9,'existing paid','new car',654,'<100','1<=X<4',4,'male single',none,3,car,28,none,own,1,'unskilled resident',1,none,yes,bad\n'no checking',6,'existing paid',retraining,1238,'no known savings',unemployed,4,'male single',none,4,'life insurance',36,none,own,1,'high qualif/self emp/mgmt',2,yes,yes,good\n'0<=X<200',18,'critical/other existing credit',radio/tv,1245,'<100','1<=X<4',4,'male mar/wid',none,2,car,33,none,own,1,skilled,1,none,yes,bad\n'<0',18,'no credits/all paid',furniture/equipment,3114,'<100','<1',1,'female div/dep/mar',none,4,'life insurance',26,none,rent,1,skilled,1,none,yes,bad\n'no checking',39,'existing paid','used car',2569,'500<=X<1000','1<=X<4',4,'male single',none,4,car,24,none,own,1,skilled,1,none,yes,good\n'>=200',24,'existing paid',radio/tv,5152,'<100','4<=X<7',4,'male single',none,2,car,25,bank,own,1,skilled,1,none,yes,good\n'0<=X<200',12,'existing paid',business,1037,'100<=X<500','4<=X<7',3,'male single',none,4,'real estate',39,none,own,1,'unskilled resident',1,none,yes,good\n'<0',15,'critical/other existing credit',furniture/equipment,1478,'<100','>=7',4,'male single',none,4,car,44,none,own,2,skilled,2,yes,yes,good\n'0<=X<200',12,'critical/other existing credit',radio/tv,3573,'<100','1<=X<4',1,'female div/dep/mar',none,1,'real estate',23,none,own,1,'unskilled resident',1,none,yes,good\n'0<=X<200',24,'existing paid','new car',1201,'<100','<1',4,'male single',none,1,'life insurance',26,none,own,1,skilled,1,none,yes,good\n'<0',30,'existing paid',furniture/equipment,3622,'>=1000','>=7',4,'female div/dep/mar',none,4,'life insurance',57,none,rent,2,skilled,1,yes,yes,good\n'no checking',15,'delayed previously',furniture/equipment,960,'>=1000','4<=X<7',3,'female div/dep/mar',none,2,'life insurance',30,none,own,2,skilled,1,none,yes,good\n'no checking',12,'critical/other existing credit','new car',1163,'500<=X<1000','1<=X<4',4,'male single',none,4,'real estate',44,none,own,1,skilled,1,yes,yes,good\n'0<=X<200',6,'delayed previously','new car',1209,'<100',unemployed,4,'male single',none,4,'life insurance',47,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,bad\n'no checking',12,'existing paid',radio/tv,3077,'<100','1<=X<4',2,'male single',none,4,car,52,none,own,1,skilled,1,yes,yes,good\n'no checking',24,'existing paid','new car',3757,'<100','>=7',4,'female div/dep/mar','co applicant',4,'no known property',62,none,'for free',1,skilled,1,yes,yes,good\n'no checking',10,'existing paid','new car',1418,'100<=X<500','1<=X<4',3,'male single',none,2,'real estate',35,none,rent,1,'unskilled resident',1,none,no,good\n'no checking',6,'existing paid','new car',3518,'<100','1<=X<4',2,'male single',guarantor,3,'life insurance',26,none,rent,1,skilled,1,none,yes,good\n'no checking',12,'critical/other existing credit',radio/tv,1934,'<100','>=7',2,'male single',none,2,'no known property',26,none,own,2,skilled,1,none,yes,good\n'0<=X<200',27,'no credits/all paid',business,8318,'<100','>=7',2,'female div/dep/mar',none,4,'no known property',42,none,'for free',2,'high qualif/self emp/mgmt',1,yes,yes,bad\n'no checking',6,'critical/other existing credit',radio/tv,1237,'100<=X<500','1<=X<4',1,'female div/dep/mar',none,1,'life insurance',27,none,own,2,skilled,1,none,yes,good\n'0<=X<200',6,'existing paid',radio/tv,368,'no known savings','>=7',4,'male single',none,4,'life insurance',38,none,own,1,skilled,1,none,yes,good\n'<0',12,'critical/other existing credit','new car',2122,'<100','1<=X<4',3,'male single',none,2,'real estate',39,none,rent,2,'unskilled resident',2,none,no,good\n'<0',24,'existing paid',furniture/equipment,2996,'no known savings','1<=X<4',2,'male mar/wid',none,4,car,20,none,own,1,skilled,1,none,yes,bad\n'0<=X<200',36,'existing paid',furniture/equipment,9034,'100<=X<500','<1',4,'male single','co applicant',1,'no known property',29,none,rent,1,'high qualif/self emp/mgmt',1,yes,yes,bad\n'no checking',24,'critical/other existing credit',furniture/equipment,1585,'<100','4<=X<7',4,'male single',none,3,'life insurance',40,none,own,2,skilled,1,none,yes,good\n'0<=X<200',18,'existing paid',radio/tv,1301,'<100','>=7',4,'male mar/wid',guarantor,2,'real estate',32,none,own,1,'unskilled resident',1,none,yes,good\n'>=200',6,'critical/other existing credit','new car',1323,'100<=X<500','>=7',2,'male div/sep',none,4,car,28,none,own,2,skilled,2,yes,yes,good\n'<0',24,'existing paid','new car',3123,'<100','<1',4,'female div/dep/mar',none,1,'life insurance',27,none,own,1,skilled,1,none,yes,bad\n'<0',36,'existing paid','used car',5493,'<100','>=7',2,'male single',none,4,'no known property',42,none,'for free',1,skilled,2,none,yes,good\n'>=200',9,'existing paid',radio/tv,1126,'100<=X<500','>=7',2,'male div/sep',none,4,'real estate',49,none,own,1,skilled,1,none,yes,good\n'0<=X<200',24,'critical/other existing credit',radio/tv,1216,'100<=X<500','<1',4,'male single',none,4,'no known property',38,bank,own,2,skilled,2,none,yes,bad\n'<0',24,'existing paid','new car',1207,'<100','<1',4,'female div/dep/mar',none,4,'life insurance',24,none,rent,1,skilled,1,none,yes,bad\n'no checking',10,'existing paid','new car',1309,'no known savings','1<=X<4',4,'male single',guarantor,4,'life insurance',27,none,own,1,'unskilled resident',1,none,yes,bad\n'>=200',15,'critical/other existing credit','used car',2360,'500<=X<1000','1<=X<4',2,'male single',none,2,car,36,none,own,1,skilled,1,yes,yes,good\n'0<=X<200',15,'all paid','new car',6850,'100<=X<500',unemployed,1,'male single',none,2,'life insurance',34,none,own,1,'high qualif/self emp/mgmt',2,yes,yes,bad\n'no checking',24,'existing paid',radio/tv,1413,'<100','1<=X<4',4,'male mar/wid',none,2,'life insurance',28,none,own,1,skilled,1,none,yes,good\n'no checking',39,'existing paid','used car',8588,'100<=X<500','>=7',4,'male single',none,2,car,45,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'<0',12,'existing paid','new car',759,'<100','4<=X<7',4,'male single',none,2,'real estate',26,none,own,1,skilled,1,none,yes,bad\n'no checking',36,'existing paid','used car',4686,'<100','1<=X<4',2,'male single',none,2,'no known property',32,none,'for free',1,'high qualif/self emp/mgmt',1,yes,yes,good\n'>=200',15,'existing paid',business,2687,'<100','4<=X<7',2,'male single',none,4,'life insurance',26,none,rent,1,skilled,1,yes,yes,good\n'0<=X<200',12,'delayed previously',radio/tv,585,'<100','1<=X<4',4,'male mar/wid','co applicant',4,'real estate',20,none,rent,2,skilled,1,none,yes,good\n'no checking',24,'existing paid','new car',2255,'no known savings','<1',4,'male single',none,1,'life insurance',54,none,own,1,skilled,1,none,yes,good\n'<0',6,'critical/other existing credit','new car',609,'<100','4<=X<7',4,'female div/dep/mar',none,3,'life insurance',37,none,own,2,skilled,1,none,no,good\n'<0',6,'critical/other existing credit','new car',1361,'<100','<1',2,'male single',none,4,'real estate',40,none,own,1,'unskilled resident',2,none,no,good\n'no checking',36,'critical/other existing credit',furniture/equipment,7127,'<100','<1',2,'female div/dep/mar',none,4,'life insurance',23,none,rent,2,skilled,1,yes,yes,bad\n'<0',6,'existing paid','new car',1203,'100<=X<500','>=7',3,'male single',none,2,'life insurance',43,none,own,1,skilled,1,yes,yes,good\n'no checking',6,'critical/other existing credit',radio/tv,700,'no known savings','>=7',4,'male single',none,4,'no known property',36,none,'for free',2,skilled,1,none,yes,good\n'no checking',24,'critical/other existing credit',repairs,5507,'<100','>=7',3,'male single',none,4,'no known property',44,none,'for free',2,skilled,1,none,yes,good\n'<0',18,'existing paid',radio/tv,3190,'<100','1<=X<4',2,'female div/dep/mar',none,2,'real estate',24,none,own,1,skilled,1,none,yes,bad\n'<0',48,'no credits/all paid',furniture/equipment,7119,'<100','1<=X<4',3,'male single',none,4,'no known property',53,none,'for free',2,skilled,2,none,yes,bad\n'no checking',24,'existing paid','used car',3488,'100<=X<500','4<=X<7',3,'female div/dep/mar',none,4,car,23,none,own,1,skilled,1,none,yes,good\n'0<=X<200',18,'existing paid',radio/tv,1113,'<100','1<=X<4',4,'female div/dep/mar',guarantor,4,'real estate',26,none,own,1,'unskilled resident',2,none,yes,good\n'0<=X<200',26,'existing paid','used car',7966,'<100','<1',2,'male single',none,3,car,30,none,own,2,skilled,1,none,yes,good\n'no checking',15,'critical/other existing credit',education,1532,'100<=X<500','1<=X<4',4,'female div/dep/mar',none,3,car,31,none,own,1,skilled,1,none,yes,good\n'no checking',4,'critical/other existing credit',radio/tv,1503,'<100','4<=X<7',2,'male single',none,1,'real estate',42,none,own,2,'unskilled resident',2,none,yes,good\n'<0',36,'existing paid',radio/tv,2302,'<100','1<=X<4',4,'male div/sep',none,4,car,31,none,rent,1,skilled,1,none,yes,bad\n'<0',6,'existing paid','new car',662,'<100','<1',3,'male single',none,4,'real estate',41,none,own,1,'unskilled resident',2,yes,yes,good\n'0<=X<200',36,'existing paid',education,2273,'<100','4<=X<7',3,'male single',none,1,car,32,none,own,2,skilled,2,none,yes,good\n'0<=X<200',15,'existing paid','new car',2631,'100<=X<500','1<=X<4',2,'female div/dep/mar',none,4,car,28,none,rent,2,skilled,1,yes,yes,bad\n'no checking',12,'delayed previously','used car',1503,'<100','1<=X<4',4,'male mar/wid',none,4,'real estate',41,none,rent,1,skilled,1,none,yes,good\n'no checking',24,'existing paid',radio/tv,1311,'100<=X<500','4<=X<7',4,'male mar/wid',none,3,'life insurance',26,none,own,1,skilled,1,yes,yes,good\n'no checking',24,'existing paid',radio/tv,3105,'no known savings','<1',4,'male single',none,2,car,25,none,own,2,skilled,1,none,yes,good\n'>=200',21,'critical/other existing credit',education,2319,'<100','<1',2,'male div/sep',none,1,car,33,none,rent,1,skilled,1,none,yes,bad\n'<0',6,'existing paid','new car',1374,'no known savings',unemployed,4,'female div/dep/mar',none,3,'life insurance',75,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'0<=X<200',18,'critical/other existing credit',furniture/equipment,3612,'<100','>=7',3,'female div/dep/mar',none,4,'life insurance',37,none,own,1,skilled,1,yes,yes,good\n'<0',48,'existing paid','new car',7763,'<100','>=7',4,'male single',none,4,'no known property',42,bank,'for free',1,'high qualif/self emp/mgmt',1,none,yes,bad\n'>=200',18,'existing paid',furniture/equipment,3049,'<100','<1',1,'female div/dep/mar',none,1,'life insurance',45,stores,own,1,'unskilled resident',1,none,yes,good\n'0<=X<200',12,'existing paid',radio/tv,1534,'<100','<1',1,'male mar/wid',none,1,'real estate',23,none,rent,1,skilled,1,none,yes,bad\n'no checking',24,'delayed previously','new car',2032,'<100','>=7',4,'male single',none,4,'no known property',60,none,'for free',2,skilled,1,yes,yes,good\n'<0',30,'existing paid',furniture/equipment,6350,'no known savings','>=7',4,'male single',none,4,'life insurance',31,none,own,1,skilled,1,none,yes,bad\n'>=200',18,'existing paid',furniture/equipment,2864,'<100','1<=X<4',2,'male single',none,1,'real estate',34,none,own,1,'unskilled resident',2,none,yes,bad\n'no checking',12,'critical/other existing credit','new car',1255,'<100','>=7',4,'male single',none,4,'real estate',61,none,own,2,'unskilled resident',1,none,yes,good\n'<0',24,'delayed previously','new car',1333,'<100',unemployed,4,'male single',none,2,'real estate',43,none,'for free',2,skilled,2,none,yes,bad\n'no checking',24,'critical/other existing credit','new car',2022,'<100','1<=X<4',4,'female div/dep/mar',none,4,car,37,none,own,1,skilled,1,yes,yes,good\n'no checking',24,'existing paid',radio/tv,1552,'<100','4<=X<7',3,'male single',none,1,car,32,bank,own,1,skilled,2,none,yes,good\n'<0',12,'all paid',radio/tv,626,'<100','1<=X<4',4,'female div/dep/mar',none,4,'real estate',24,bank,own,1,'unskilled resident',1,none,yes,bad\n'no checking',48,'critical/other existing credit','used car',8858,'no known savings','4<=X<7',2,'male single',none,1,'no known property',35,none,'for free',2,skilled,1,yes,yes,good\n'no checking',12,'critical/other existing credit',repairs,996,'no known savings','4<=X<7',4,'female div/dep/mar',none,4,'real estate',23,none,own,2,skilled,1,none,yes,good\n'no checking',6,'all paid',radio/tv,1750,'500<=X<1000','>=7',2,'male single',none,4,'life insurance',45,bank,own,1,'unskilled resident',2,none,yes,good\n'<0',48,'existing paid',radio/tv,6999,'<100','4<=X<7',1,'male mar/wid',guarantor,1,'real estate',34,none,own,2,skilled,1,yes,yes,bad\n'0<=X<200',12,'critical/other existing credit','new car',1995,'100<=X<500','<1',4,'male single',none,1,car,27,none,own,1,skilled,1,none,yes,good\n'0<=X<200',9,'existing paid',education,1199,'<100','4<=X<7',4,'female div/dep/mar',none,4,'life insurance',67,none,own,2,'high qualif/self emp/mgmt',1,yes,yes,good\n'0<=X<200',12,'existing paid',radio/tv,1331,'<100','<1',2,'male single',none,1,car,22,stores,own,1,skilled,1,none,yes,bad\n'0<=X<200',18,'no credits/all paid','new car',2278,'100<=X<500','<1',3,'female div/dep/mar',none,3,car,28,none,own,2,skilled,1,none,yes,bad\n'no checking',21,'no credits/all paid','new car',5003,'no known savings','1<=X<4',1,'female div/dep/mar',none,4,'life insurance',29,bank,own,2,skilled,1,yes,yes,bad\n'<0',24,'all paid',furniture/equipment,3552,'<100','4<=X<7',3,'male single',none,4,car,27,bank,own,1,skilled,1,none,yes,bad\n'0<=X<200',18,'critical/other existing credit',furniture/equipment,1928,'<100','<1',2,'male single',none,2,'real estate',31,none,own,2,'unskilled resident',1,none,yes,bad\n'<0',24,'existing paid','used car',2964,'no known savings','>=7',4,'male single',none,4,'no known property',49,bank,'for free',1,skilled,2,yes,yes,good\n'<0',24,'all paid',radio/tv,1546,'<100','4<=X<7',4,'male single',guarantor,4,car,24,bank,rent,1,'unskilled resident',1,none,yes,bad\n'>=200',6,'delayed previously',radio/tv,683,'<100','<1',2,'female div/dep/mar',none,1,'life insurance',29,bank,own,1,skilled,1,none,yes,good\n'0<=X<200',36,'existing paid','new car',12389,'no known savings','1<=X<4',1,'male single',none,4,'no known property',37,none,'for free',1,skilled,1,yes,yes,bad\n'0<=X<200',24,'delayed previously',business,4712,'no known savings','1<=X<4',4,'male single',none,2,'life insurance',37,bank,own,2,'high qualif/self emp/mgmt',1,yes,yes,good\n'0<=X<200',24,'delayed previously',radio/tv,1553,'100<=X<500','4<=X<7',3,'female div/dep/mar',none,2,'life insurance',23,none,rent,2,skilled,1,yes,yes,good\n'<0',12,'existing paid','new car',1372,'<100','4<=X<7',2,'male div/sep',none,3,car,36,none,own,1,skilled,1,none,yes,bad\n'no checking',24,'critical/other existing credit',radio/tv,2578,'>=1000','>=7',2,'male single',none,2,car,34,none,own,1,skilled,1,none,yes,good\n'0<=X<200',48,'existing paid',radio/tv,3979,'no known savings','4<=X<7',4,'male single',none,1,car,41,none,own,2,skilled,2,yes,yes,good\n'<0',48,'existing paid',radio/tv,6758,'<100','1<=X<4',3,'female div/dep/mar',none,2,car,31,none,own,1,skilled,1,yes,yes,bad\n'<0',24,'existing paid',furniture/equipment,3234,'<100','<1',4,'female div/dep/mar',none,4,'real estate',23,none,rent,1,'unskilled resident',1,yes,yes,bad\n'no checking',30,'critical/other existing credit',radio/tv,5954,'<100','4<=X<7',3,'male single','co applicant',2,car,38,none,own,1,skilled,1,none,yes,good\n'no checking',24,'existing paid','used car',5433,'no known savings',unemployed,2,'female div/dep/mar',none,4,'life insurance',26,none,rent,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'<0',15,'existing paid',business,806,'<100','1<=X<4',4,'female div/dep/mar',none,4,'life insurance',22,none,own,1,'unskilled resident',1,none,yes,good\n'0<=X<200',9,'existing paid',radio/tv,1082,'<100','>=7',4,'male single',none,4,car,27,none,own,2,'unskilled resident',1,none,yes,good\n'no checking',15,'critical/other existing credit',furniture/equipment,2788,'<100','4<=X<7',2,'female div/dep/mar','co applicant',3,car,24,bank,own,2,skilled,1,none,yes,good\n'0<=X<200',12,'existing paid',radio/tv,2930,'<100','4<=X<7',2,'female div/dep/mar',none,1,'real estate',27,none,own,1,skilled,1,none,yes,good\n'no checking',24,'critical/other existing credit',education,1927,'no known savings','1<=X<4',3,'female div/dep/mar',none,2,car,33,none,own,2,skilled,1,yes,yes,good\n'0<=X<200',36,'critical/other existing credit','new car',2820,'<100','<1',4,'male div/sep',none,4,car,27,none,own,2,skilled,1,none,yes,bad\n'no checking',24,'existing paid',retraining,937,'<100','<1',4,'male mar/wid',none,3,car,27,none,own,2,'unskilled resident',1,none,yes,good\n'0<=X<200',18,'critical/other existing credit','new car',1056,'<100','>=7',3,'male single',guarantor,3,'real estate',30,bank,own,2,skilled,1,none,yes,bad\n'0<=X<200',12,'critical/other existing credit','new car',3124,'<100','<1',1,'male single',none,3,'real estate',49,bank,own,2,'unskilled resident',2,none,yes,good\n'no checking',9,'existing paid',furniture/equipment,1388,'<100','1<=X<4',4,'female div/dep/mar',none,2,'real estate',26,none,rent,1,skilled,1,none,yes,good\n'0<=X<200',36,'existing paid',repairs,2384,'<100','<1',4,'male single',none,1,'no known property',33,none,rent,1,'unskilled resident',1,none,yes,bad\n'no checking',12,'existing paid','new car',2133,'no known savings','>=7',4,'female div/dep/mar',none,4,'no known property',52,none,'for free',1,'high qualif/self emp/mgmt',1,yes,yes,good\n'<0',18,'existing paid',furniture/equipment,2039,'<100','1<=X<4',1,'female div/dep/mar',none,4,'real estate',20,bank,rent,1,skilled,1,none,yes,bad\n'<0',9,'critical/other existing credit','new car',2799,'<100','1<=X<4',2,'male single',none,2,'real estate',36,none,rent,2,skilled,2,none,yes,good\n'<0',12,'existing paid',furniture/equipment,1289,'<100','1<=X<4',4,'male single',guarantor,1,'life insurance',21,none,own,1,'unskilled resident',1,none,yes,good\n'<0',18,'existing paid','domestic appliance',1217,'<100','1<=X<4',4,'male mar/wid',none,3,'real estate',47,none,own,1,'unskilled resident',1,yes,yes,bad\n'<0',12,'critical/other existing credit',furniture/equipment,2246,'<100','>=7',3,'male single',none,3,'life insurance',60,none,own,2,skilled,1,none,yes,bad\n'<0',12,'critical/other existing credit',radio/tv,385,'<100','4<=X<7',4,'female div/dep/mar',none,3,'real estate',58,none,own,4,'unskilled resident',1,yes,yes,good\n'0<=X<200',24,'delayed previously','new car',1965,'no known savings','1<=X<4',4,'female div/dep/mar',none,4,car,42,none,rent,2,skilled,1,yes,yes,good\n'no checking',21,'existing paid',business,1572,'>=1000','>=7',4,'female div/dep/mar',none,4,'real estate',36,bank,own,1,'unskilled resident',1,none,yes,good\n'0<=X<200',24,'existing paid','new car',2718,'<100','1<=X<4',3,'female div/dep/mar',none,4,'life insurance',20,none,rent,1,'unskilled resident',1,yes,yes,bad\n'<0',24,'all paid',other,1358,'no known savings','>=7',4,'male single',none,3,car,40,stores,own,1,'high qualif/self emp/mgmt',1,yes,yes,bad\n'0<=X<200',6,'all paid','new car',931,'100<=X<500','<1',1,'female div/dep/mar',none,1,'life insurance',32,stores,own,1,'unskilled resident',1,none,yes,bad\n'<0',24,'existing paid','new car',1442,'<100','4<=X<7',4,'female div/dep/mar',none,4,car,23,none,rent,2,skilled,1,none,yes,bad\n'0<=X<200',24,'no credits/all paid',business,4241,'<100','1<=X<4',1,'male single',none,4,'real estate',36,none,own,3,'unskilled resident',1,yes,yes,bad\n'no checking',18,'critical/other existing credit','new car',2775,'<100','4<=X<7',2,'male single',none,2,'life insurance',31,bank,own,2,skilled,1,none,yes,bad\n'no checking',24,'delayed previously',business,3863,'<100','1<=X<4',1,'male single',none,2,'no known property',32,none,'for free',1,skilled,1,none,yes,good\n'0<=X<200',7,'existing paid',radio/tv,2329,'<100','<1',1,'female div/dep/mar',guarantor,1,'real estate',45,none,own,1,skilled,1,none,yes,good\n'0<=X<200',9,'existing paid',furniture/equipment,918,'<100','1<=X<4',4,'female div/dep/mar',none,1,'life insurance',30,none,own,1,skilled,1,none,yes,bad\n'0<=X<200',24,'all paid',education,1837,'<100','4<=X<7',4,'female div/dep/mar',none,4,'no known property',34,bank,'for free',1,'unskilled resident',1,none,yes,bad\n'no checking',36,'existing paid',furniture/equipment,3349,'<100','1<=X<4',4,'female div/dep/mar',none,2,car,28,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,bad\n'>=200',10,'existing paid',furniture/equipment,1275,'<100','<1',4,'female div/dep/mar',none,2,'life insurance',23,none,own,1,skilled,1,none,yes,good\n'<0',24,'all paid',furniture/equipment,2828,'500<=X<1000','1<=X<4',4,'male single',none,4,'real estate',22,stores,own,1,skilled,1,yes,yes,good\n'no checking',24,'critical/other existing credit',business,4526,'<100','1<=X<4',3,'male single',none,2,'real estate',74,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'0<=X<200',36,'existing paid',radio/tv,2671,'100<=X<500','1<=X<4',4,'female div/dep/mar','co applicant',4,'no known property',50,none,'for free',1,skilled,1,none,yes,bad\n'no checking',18,'existing paid',radio/tv,2051,'<100','<1',4,'male single',none,1,'real estate',33,none,own,1,skilled,1,none,yes,good\n'no checking',15,'existing paid','used car',1300,'no known savings','>=7',4,'male single',none,4,'no known property',45,bank,'for free',1,skilled,2,none,yes,good\n'<0',12,'existing paid','domestic appliance',741,'100<=X<500',unemployed,4,'female div/dep/mar',none,3,'life insurance',22,none,own,1,skilled,1,none,yes,bad\n'>=200',10,'existing paid','new car',1240,'100<=X<500','>=7',1,'female div/dep/mar',none,4,'no known property',48,none,'for free',1,'unskilled resident',2,none,yes,bad\n'<0',21,'existing paid',radio/tv,3357,'>=1000','<1',4,'female div/dep/mar',none,2,car,29,bank,own,1,skilled,1,none,yes,good\n'<0',24,'all paid','used car',3632,'<100','1<=X<4',1,'female div/dep/mar',guarantor,4,car,22,bank,rent,1,skilled,1,none,no,good\n'no checking',18,'delayed previously',furniture/equipment,1808,'<100','4<=X<7',4,'female div/dep/mar',none,1,'real estate',22,none,own,1,skilled,1,none,yes,bad\n'0<=X<200',48,'no credits/all paid',business,12204,'no known savings','1<=X<4',2,'male single',none,2,car,48,bank,own,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'0<=X<200',60,'delayed previously',radio/tv,9157,'no known savings','1<=X<4',2,'male single',none,2,'no known property',27,none,'for free',1,'high qualif/self emp/mgmt',1,none,yes,good\n'<0',6,'critical/other existing credit','new car',3676,'<100','1<=X<4',1,'male single',none,3,'real estate',37,none,rent,3,skilled,2,none,yes,good\n'0<=X<200',30,'existing paid',furniture/equipment,3441,'100<=X<500','1<=X<4',2,'female div/dep/mar','co applicant',4,car,21,none,rent,1,skilled,1,none,yes,bad\n'no checking',12,'existing paid','new car',640,'<100','1<=X<4',4,'male div/sep',none,2,'real estate',49,none,own,1,'unskilled resident',1,none,yes,good\n'0<=X<200',21,'critical/other existing credit',business,3652,'<100','4<=X<7',2,'male single',none,3,'life insurance',27,none,own,2,skilled,1,none,yes,good\n'no checking',18,'critical/other existing credit','new car',1530,'<100','1<=X<4',3,'male single',none,2,'life insurance',32,bank,own,2,skilled,1,none,yes,bad\n'no checking',48,'existing paid',business,3914,'no known savings','1<=X<4',4,'male div/sep',none,2,'real estate',38,bank,own,1,skilled,1,none,yes,bad\n'<0',12,'existing paid',furniture/equipment,1858,'<100','<1',4,'female div/dep/mar',none,1,car,22,none,rent,1,skilled,1,none,yes,good\n'<0',18,'existing paid',radio/tv,2600,'<100','1<=X<4',4,'male single',none,4,'no known property',65,none,'for free',2,skilled,1,none,yes,bad\n'no checking',15,'existing paid',radio/tv,1979,'no known savings','>=7',4,'male single',none,2,car,35,none,own,1,skilled,1,none,yes,good\n'>=200',6,'existing paid',furniture/equipment,2116,'<100','1<=X<4',2,'male single',none,2,'real estate',41,none,own,1,skilled,1,yes,yes,good\n'0<=X<200',9,'all paid','new car',1437,'100<=X<500','4<=X<7',2,'male single',none,3,'no known property',29,none,own,1,skilled,1,none,yes,bad\n'no checking',42,'critical/other existing credit',furniture/equipment,4042,'500<=X<1000','1<=X<4',4,'male single',none,4,'real estate',36,none,own,2,skilled,1,yes,yes,good\n'no checking',9,'existing paid',education,3832,'no known savings','>=7',1,'male single',none,4,'real estate',64,none,own,1,'unskilled resident',1,none,yes,good\n'<0',24,'existing paid',radio/tv,3660,'<100','1<=X<4',2,'female div/dep/mar',none,4,car,28,none,own,1,skilled,1,none,yes,good\n'<0',18,'all paid',furniture/equipment,1553,'<100','1<=X<4',4,'male single',none,3,car,44,bank,own,1,skilled,1,none,yes,bad\n'0<=X<200',15,'existing paid',radio/tv,1444,'no known savings','<1',4,'male single',none,1,'life insurance',23,none,own,1,skilled,1,none,yes,good\n'no checking',9,'existing paid',furniture/equipment,1980,'<100','<1',2,'female div/dep/mar','co applicant',2,car,19,none,rent,2,skilled,1,none,yes,bad\n'0<=X<200',24,'existing paid','new car',1355,'<100','<1',3,'female div/dep/mar',none,4,car,25,none,own,1,'unskilled resident',1,yes,yes,bad\n'no checking',12,'existing paid',education,1393,'<100','>=7',4,'male single',none,4,'life insurance',47,bank,own,3,skilled,2,yes,yes,good\n'no checking',24,'existing paid',radio/tv,1376,'500<=X<1000','4<=X<7',4,'female div/dep/mar',none,1,car,28,none,own,1,skilled,1,none,yes,good\n'no checking',60,'delayed previously',radio/tv,15653,'<100','4<=X<7',2,'male single',none,4,car,21,none,own,2,skilled,1,yes,yes,good\n'no checking',12,'existing paid',radio/tv,1493,'<100','<1',4,'female div/dep/mar',none,3,car,34,none,own,1,skilled,2,none,yes,good\n'<0',42,'delayed previously',radio/tv,4370,'<100','4<=X<7',3,'male single',none,2,'life insurance',26,bank,own,2,skilled,2,yes,yes,bad\n'<0',18,'existing paid',education,750,'<100',unemployed,4,'female div/dep/mar',none,1,'real estate',27,none,own,1,'unemp/unskilled non res',1,none,yes,bad\n'0<=X<200',15,'existing paid',repairs,1308,'<100','>=7',4,'male single',none,4,car,38,none,own,2,'unskilled resident',1,none,yes,good\n'no checking',15,'existing paid',education,4623,'100<=X<500','1<=X<4',3,'male single',none,2,'life insurance',40,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,bad\n'no checking',24,'critical/other existing credit',radio/tv,1851,'<100','4<=X<7',4,'male mar/wid',guarantor,2,car,33,none,own,2,skilled,1,yes,yes,good\n'<0',18,'critical/other existing credit',radio/tv,1880,'<100','4<=X<7',4,'male mar/wid',none,1,'life insurance',32,none,own,2,'high qualif/self emp/mgmt',1,yes,yes,good\n'no checking',36,'delayed previously',business,7980,'no known savings','<1',4,'male single',none,4,car,27,none,rent,2,skilled,1,yes,yes,bad\n'<0',30,'no credits/all paid',furniture/equipment,4583,'<100','1<=X<4',2,'male div/sep',guarantor,2,'real estate',32,none,own,2,skilled,1,none,yes,good\n'no checking',12,'existing paid','new car',1386,'500<=X<1000','1<=X<4',2,'female div/dep/mar',none,2,'life insurance',26,none,own,1,skilled,1,none,yes,bad\n'>=200',24,'existing paid','new car',947,'<100','4<=X<7',4,'male single',none,3,'no known property',38,bank,'for free',1,skilled,2,none,yes,bad\n'<0',12,'existing paid',education,684,'<100','1<=X<4',4,'male single',none,4,car,40,none,rent,1,'unskilled resident',2,none,yes,bad\n'<0',48,'existing paid',education,7476,'<100','4<=X<7',4,'male single',none,1,'no known property',50,none,'for free',1,'high qualif/self emp/mgmt',1,yes,yes,good\n'0<=X<200',12,'existing paid',furniture/equipment,1922,'<100','1<=X<4',4,'male single',none,2,'life insurance',37,none,own,1,'unskilled resident',1,none,yes,bad\n'<0',24,'existing paid','new car',2303,'<100','>=7',4,'male single','co applicant',1,'real estate',45,none,own,1,skilled,1,none,yes,bad\n'0<=X<200',36,'delayed previously','new car',8086,'100<=X<500','>=7',2,'male single',none,4,car,42,none,own,4,'high qualif/self emp/mgmt',1,yes,yes,bad\n'no checking',24,'critical/other existing credit','used car',2346,'<100','4<=X<7',4,'male single',none,3,car,35,none,own,2,skilled,1,yes,yes,good\n'<0',14,'existing paid','new car',3973,'<100',unemployed,1,'male single',none,4,'no known property',22,none,'for free',1,skilled,1,none,yes,good\n'0<=X<200',12,'existing paid','new car',888,'<100','>=7',4,'male single',none,4,car,41,bank,own,1,'unskilled resident',2,none,yes,bad\n'no checking',48,'existing paid',radio/tv,10222,'no known savings','4<=X<7',4,'male single',none,3,car,37,stores,own,1,skilled,1,yes,yes,good\n'0<=X<200',30,'no credits/all paid',business,4221,'<100','1<=X<4',2,'female div/dep/mar',none,1,car,28,none,own,2,skilled,1,none,yes,good\n'0<=X<200',18,'critical/other existing credit',furniture/equipment,6361,'<100','>=7',2,'male single',none,1,'no known property',41,none,own,1,skilled,1,yes,yes,good\n'>=200',12,'existing paid',radio/tv,1297,'<100','1<=X<4',3,'male mar/wid',none,4,'real estate',23,none,rent,1,skilled,1,none,yes,good\n'<0',12,'existing paid','new car',900,'no known savings','1<=X<4',4,'male mar/wid',none,2,car,23,none,own,1,skilled,1,none,yes,bad\n'no checking',21,'existing paid',furniture/equipment,2241,'<100','>=7',4,'male single',none,2,'real estate',50,none,own,2,skilled,1,none,yes,good\n'0<=X<200',6,'delayed previously',furniture/equipment,1050,'<100',unemployed,4,'male single',none,1,'life insurance',35,stores,own,2,'high qualif/self emp/mgmt',1,yes,yes,good\n'>=200',6,'critical/other existing credit',education,1047,'<100','1<=X<4',2,'female div/dep/mar',none,4,'life insurance',50,none,own,1,'unskilled resident',1,none,yes,good\n'no checking',24,'critical/other existing credit',other,6314,'<100',unemployed,4,'male single','co applicant',2,'no known property',27,bank,own,2,'high qualif/self emp/mgmt',1,yes,yes,good\n'0<=X<200',30,'all paid',furniture/equipment,3496,'>=1000','1<=X<4',4,'male single',none,2,car,34,stores,own,1,skilled,2,yes,yes,good\n'no checking',48,'all paid',business,3609,'<100','1<=X<4',1,'female div/dep/mar',none,1,'real estate',27,stores,own,1,skilled,1,none,yes,good\n'<0',12,'critical/other existing credit','new car',4843,'<100','>=7',3,'male single','co applicant',4,'life insurance',43,none,rent,2,skilled,1,yes,yes,bad\n'>=200',30,'critical/other existing credit',radio/tv,3017,'<100','>=7',4,'male single',none,4,'life insurance',47,none,own,1,skilled,1,none,yes,good\n'no checking',24,'critical/other existing credit',business,4139,'100<=X<500','1<=X<4',3,'male single',none,3,'life insurance',27,none,own,2,'unskilled resident',1,yes,yes,good\n'no checking',36,'existing paid',business,5742,'100<=X<500','4<=X<7',2,'male single',none,2,car,31,none,own,2,skilled,1,yes,yes,good\n'no checking',60,'existing paid','new car',10366,'<100','>=7',2,'male single',none,4,'life insurance',42,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'no checking',6,'critical/other existing credit','new car',2080,'500<=X<1000','1<=X<4',1,'male mar/wid',none,2,car,24,none,own,1,skilled,1,none,yes,good\n'no checking',21,'delayed previously',business,2580,'500<=X<1000','<1',4,'male single',none,2,'real estate',41,bank,own,1,'unskilled resident',2,none,yes,bad\n'no checking',30,'critical/other existing credit',radio/tv,4530,'<100','4<=X<7',4,'female div/dep/mar',none,4,car,26,none,rent,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'no checking',24,'critical/other existing credit',furniture/equipment,5150,'<100','>=7',4,'male single',none,4,car,33,none,own,1,skilled,1,yes,yes,good\n'0<=X<200',72,'existing paid',radio/tv,5595,'100<=X<500','1<=X<4',2,'male mar/wid',none,2,car,24,none,own,1,skilled,1,none,yes,bad\n'<0',24,'existing paid',radio/tv,2384,'<100','>=7',4,'male single',none,4,'real estate',64,bank,rent,1,'unskilled resident',1,none,yes,good\n'no checking',18,'existing paid',radio/tv,1453,'<100','<1',3,'female div/dep/mar',none,1,'real estate',26,none,own,1,skilled,1,none,yes,good\n'no checking',6,'existing paid',education,1538,'<100','<1',1,'female div/dep/mar',none,2,'no known property',56,none,own,1,skilled,1,none,yes,good\n'no checking',12,'existing paid',radio/tv,2279,'no known savings','1<=X<4',4,'male single',none,4,'no known property',37,none,'for free',1,skilled,1,yes,yes,good\n'no checking',15,'delayed previously',radio/tv,1478,'<100','1<=X<4',4,'male mar/wid',none,3,'real estate',33,bank,own,2,skilled,1,none,yes,good\n'no checking',24,'critical/other existing credit',radio/tv,5103,'<100','<1',3,'male mar/wid',none,3,'no known property',47,none,'for free',3,skilled,1,yes,yes,good\n'0<=X<200',36,'delayed previously',business,9857,'100<=X<500','4<=X<7',1,'male single',none,3,'life insurance',31,none,own,2,'unskilled resident',2,yes,yes,good\n'no checking',60,'existing paid','new car',6527,'no known savings','1<=X<4',4,'male single',none,4,'no known property',34,none,'for free',1,skilled,2,yes,yes,good\n'>=200',10,'critical/other existing credit',radio/tv,1347,'no known savings','4<=X<7',4,'male single',none,2,'life insurance',27,none,own,2,skilled,1,yes,yes,good\n'0<=X<200',36,'delayed previously','new car',2862,'100<=X<500','>=7',4,'male single',none,3,'no known property',30,none,'for free',1,skilled,1,none,yes,good\n'no checking',9,'existing paid',radio/tv,2753,'100<=X<500','>=7',3,'male single','co applicant',4,car,35,none,own,1,skilled,1,yes,yes,good\n'<0',12,'existing paid','new car',3651,'>=1000','1<=X<4',1,'male single',none,3,'life insurance',31,none,own,1,skilled,2,none,yes,good\n'<0',15,'critical/other existing credit',furniture/equipment,975,'<100','1<=X<4',2,'male div/sep',none,3,'life insurance',25,none,own,2,skilled,1,none,yes,good\n'0<=X<200',15,'existing paid',repairs,2631,'100<=X<500','1<=X<4',3,'female div/dep/mar',none,2,'real estate',25,none,own,1,'unskilled resident',1,none,yes,good\n'0<=X<200',24,'existing paid',radio/tv,2896,'100<=X<500','<1',2,'male single',none,1,car,29,none,own,1,skilled,1,none,yes,good\n'<0',6,'critical/other existing credit','new car',4716,'no known savings','<1',1,'male single',none,3,'real estate',44,none,own,2,'unskilled resident',2,none,yes,good\n'no checking',24,'existing paid',radio/tv,2284,'<100','4<=X<7',4,'male single',none,2,car,28,none,own,1,skilled,1,yes,yes,good\n'no checking',6,'existing paid','used car',1236,'500<=X<1000','1<=X<4',2,'male single',none,4,'life insurance',50,none,rent,1,skilled,1,none,yes,good\n'0<=X<200',12,'existing paid',radio/tv,1103,'<100','4<=X<7',4,'male single',guarantor,3,'real estate',29,none,own,2,skilled,1,none,no,good\n'no checking',12,'critical/other existing credit','new car',926,'<100',unemployed,1,'female div/dep/mar',none,2,'life insurance',38,none,own,1,'unemp/unskilled non res',1,none,yes,good\n'no checking',18,'critical/other existing credit',radio/tv,1800,'<100','1<=X<4',4,'male single',none,2,car,24,none,own,2,skilled,1,none,yes,good\n'>=200',15,'existing paid',education,1905,'<100','>=7',4,'male single',none,4,car,40,none,rent,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'no checking',12,'existing paid',furniture/equipment,1123,'500<=X<1000','1<=X<4',4,'female div/dep/mar',none,4,car,29,none,rent,1,'unskilled resident',1,none,yes,bad\n'<0',48,'critical/other existing credit','used car',6331,'<100','>=7',4,'male single',none,4,'no known property',46,none,'for free',2,skilled,1,yes,yes,bad\n'>=200',24,'existing paid',radio/tv,1377,'100<=X<500','>=7',4,'female div/dep/mar',none,2,'no known property',47,none,'for free',1,skilled,1,yes,yes,good\n'0<=X<200',30,'delayed previously',business,2503,'100<=X<500','>=7',4,'male single',none,2,'life insurance',41,stores,own,2,skilled,1,none,yes,good\n'0<=X<200',27,'existing paid',business,2528,'<100','<1',4,'female div/dep/mar',none,1,'life insurance',32,none,own,1,skilled,2,yes,yes,good\n'no checking',15,'existing paid','new car',5324,'500<=X<1000','>=7',1,'female div/dep/mar',none,4,'no known property',35,none,'for free',1,skilled,1,none,yes,good\n'0<=X<200',48,'existing paid','new car',6560,'100<=X<500','4<=X<7',3,'male single',none,2,'life insurance',24,none,own,1,skilled,1,none,yes,bad\n'0<=X<200',12,'no credits/all paid',furniture/equipment,2969,'<100','<1',4,'female div/dep/mar',none,3,'life insurance',25,none,rent,2,skilled,1,none,yes,bad\n'0<=X<200',9,'existing paid',radio/tv,1206,'<100','>=7',4,'female div/dep/mar',none,4,'real estate',25,none,own,1,skilled,1,none,yes,good\n'0<=X<200',9,'existing paid',radio/tv,2118,'<100','1<=X<4',2,'male single',none,2,'real estate',37,none,own,1,'unskilled resident',2,none,yes,good\n'no checking',18,'critical/other existing credit',radio/tv,629,'500<=X<1000','>=7',4,'male single',none,3,'life insurance',32,bank,own,2,'high qualif/self emp/mgmt',1,yes,yes,good\n'<0',6,'all paid',education,1198,'<100','>=7',4,'female div/dep/mar',none,4,'no known property',35,none,'for free',1,skilled,1,none,yes,bad\n'no checking',21,'existing paid','used car',2476,'no known savings','>=7',4,'male single',none,4,'real estate',46,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'<0',9,'critical/other existing credit',radio/tv,1138,'<100','1<=X<4',4,'male single',none,4,'real estate',25,none,own,2,'unskilled resident',1,none,yes,good\n'0<=X<200',60,'existing paid','new car',14027,'<100','4<=X<7',4,'male single',none,2,'no known property',27,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,bad\n'no checking',30,'critical/other existing credit','used car',7596,'no known savings','>=7',1,'male single',none,4,car,63,none,own,2,skilled,1,none,yes,good\n'no checking',30,'critical/other existing credit',radio/tv,3077,'no known savings','>=7',3,'male single',none,2,car,40,none,own,2,skilled,2,yes,yes,good\n'no checking',18,'existing paid',radio/tv,1505,'<100','1<=X<4',4,'male single',none,2,'no known property',32,none,'for free',1,'high qualif/self emp/mgmt',1,yes,yes,good\n'>=200',24,'critical/other existing credit',radio/tv,3148,'no known savings','1<=X<4',3,'male single',none,2,car,31,none,own,2,skilled,1,yes,yes,good\n'0<=X<200',20,'no credits/all paid','used car',6148,'100<=X<500','>=7',3,'male mar/wid',none,4,car,31,bank,own,2,skilled,1,yes,yes,good\n'>=200',9,'no credits/all paid',radio/tv,1337,'<100','<1',4,'male single',none,2,car,34,none,own,2,'high qualif/self emp/mgmt',1,yes,yes,bad\n'0<=X<200',6,'all paid',education,433,'>=1000','<1',4,'female div/dep/mar',none,2,'life insurance',24,bank,rent,1,skilled,2,none,yes,bad\n'<0',12,'existing paid','new car',1228,'<100','1<=X<4',4,'female div/dep/mar',none,2,'real estate',24,none,own,1,'unskilled resident',1,none,yes,bad\n'0<=X<200',9,'existing paid',radio/tv,790,'500<=X<1000','1<=X<4',4,'female div/dep/mar',none,3,'real estate',66,none,own,1,'unskilled resident',1,none,yes,good\n'no checking',27,'existing paid','new car',2570,'<100','1<=X<4',3,'female div/dep/mar',none,3,'real estate',21,none,rent,1,skilled,1,none,yes,bad\n'no checking',6,'critical/other existing credit','new car',250,'>=1000','1<=X<4',2,'female div/dep/mar',none,2,'real estate',41,bank,own,2,'unskilled resident',1,none,yes,good\n'no checking',15,'critical/other existing credit',radio/tv,1316,'500<=X<1000','1<=X<4',2,'male mar/wid',none,2,'life insurance',47,none,own,2,'unskilled resident',1,none,yes,good\n'<0',18,'existing paid',radio/tv,1882,'<100','1<=X<4',4,'female div/dep/mar',none,4,car,25,bank,rent,2,skilled,1,none,yes,bad\n'0<=X<200',48,'all paid',business,6416,'<100','>=7',4,'female div/dep/mar',none,3,'no known property',59,none,rent,1,skilled,1,none,yes,bad\n'>=200',24,'critical/other existing credit',business,1275,'>=1000','1<=X<4',2,'male div/sep',none,4,'real estate',36,none,own,2,skilled,1,yes,yes,good\n'0<=X<200',24,'delayed previously',radio/tv,6403,'<100','<1',1,'male single',none,2,car,33,none,own,1,skilled,1,none,yes,good\n'<0',24,'existing paid',radio/tv,1987,'<100','1<=X<4',2,'male single',none,4,'real estate',21,none,rent,1,'unskilled resident',2,none,yes,bad\n'0<=X<200',8,'existing paid',radio/tv,760,'<100','4<=X<7',4,'female div/dep/mar',guarantor,2,'real estate',44,none,own,1,'unskilled resident',1,none,yes,good\n'no checking',24,'existing paid','used car',2603,'>=1000','1<=X<4',2,'female div/dep/mar',none,4,car,28,none,rent,1,skilled,1,yes,yes,good\n'no checking',4,'critical/other existing credit','new car',3380,'<100','4<=X<7',1,'female div/dep/mar',none,1,'real estate',37,none,own,1,skilled,2,none,yes,good\n'0<=X<200',36,'all paid','domestic appliance',3990,'no known savings','<1',3,'female div/dep/mar',none,2,'no known property',29,bank,own,1,'unemp/unskilled non res',1,none,yes,good\n'0<=X<200',24,'existing paid','used car',11560,'<100','1<=X<4',1,'female div/dep/mar',none,4,car,23,none,rent,2,'high qualif/self emp/mgmt',1,none,yes,bad\n'<0',18,'existing paid','new car',4380,'100<=X<500','1<=X<4',3,'male single',none,4,car,35,none,own,1,'unskilled resident',2,yes,yes,good\n'no checking',6,'critical/other existing credit','new car',6761,'<100','4<=X<7',1,'male single',none,3,'no known property',45,none,own,2,'high qualif/self emp/mgmt',2,yes,yes,good\n'0<=X<200',30,'no credits/all paid',business,4280,'100<=X<500','1<=X<4',4,'female div/dep/mar',none,4,car,26,none,rent,2,'unskilled resident',1,none,yes,bad\n'<0',24,'all paid','new car',2325,'100<=X<500','4<=X<7',2,'male single',none,3,car,32,bank,own,1,skilled,1,none,yes,good\n'0<=X<200',10,'all paid',radio/tv,1048,'<100','1<=X<4',4,'male single',none,4,'real estate',23,stores,own,1,'unskilled resident',1,none,yes,good\n'no checking',21,'existing paid',radio/tv,3160,'no known savings','>=7',4,'male single',none,3,'life insurance',41,none,own,1,skilled,1,yes,yes,good\n'<0',24,'all paid',furniture/equipment,2483,'500<=X<1000','1<=X<4',4,'male single',none,4,'real estate',22,stores,own,1,skilled,1,yes,yes,good\n'<0',39,'critical/other existing credit',furniture/equipment,14179,'no known savings','4<=X<7',4,'male single',none,4,'life insurance',30,none,own,2,'high qualif/self emp/mgmt',1,yes,yes,good\n'<0',13,'critical/other existing credit',business,1797,'<100','<1',3,'male single',none,1,'life insurance',28,bank,own,2,'unskilled resident',1,none,yes,good\n'<0',15,'existing paid','new car',2511,'<100',unemployed,1,'female div/dep/mar',none,4,car,23,none,rent,1,skilled,1,none,yes,good\n'<0',12,'existing paid','new car',1274,'<100','<1',3,'female div/dep/mar',none,1,'real estate',37,none,own,1,'unskilled resident',1,none,yes,bad\n'no checking',21,'existing paid','used car',5248,'no known savings','1<=X<4',1,'male single',none,3,car,26,none,own,1,skilled,1,none,yes,good\n'no checking',15,'existing paid','used car',3029,'<100','4<=X<7',2,'male single',none,2,car,33,none,own,1,skilled,1,none,yes,good\n'<0',6,'existing paid',furniture/equipment,428,'<100','>=7',2,'female div/dep/mar',none,1,'life insurance',49,bank,own,1,skilled,1,yes,yes,good\n'<0',18,'existing paid','new car',976,'<100','<1',1,'female div/dep/mar',none,2,car,23,none,own,1,'unskilled resident',1,none,yes,bad\n'0<=X<200',12,'existing paid',business,841,'100<=X<500','4<=X<7',2,'female div/dep/mar',none,4,'real estate',23,none,rent,1,'unskilled resident',1,none,yes,good\n'no checking',30,'critical/other existing credit',radio/tv,5771,'<100','4<=X<7',4,'female div/dep/mar',none,2,car,25,none,own,2,skilled,1,none,yes,good\n'no checking',12,'delayed previously',repairs,1555,'>=1000','>=7',4,'male single',none,4,'no known property',55,none,'for free',2,skilled,2,none,yes,bad\n'<0',24,'existing paid','new car',1285,'no known savings','4<=X<7',4,'female div/dep/mar',none,4,'no known property',32,none,rent,1,skilled,1,none,yes,bad\n'>=200',6,'critical/other existing credit','new car',1299,'<100','1<=X<4',1,'male single',none,1,'real estate',74,none,own,3,'unemp/unskilled non res',2,none,no,good\n'>=200',15,'critical/other existing credit',radio/tv,1271,'no known savings','1<=X<4',3,'male single',none,4,'no known property',39,none,'for free',2,skilled,1,yes,yes,bad\n'no checking',24,'existing paid','new car',1393,'<100','1<=X<4',2,'male single',guarantor,2,'real estate',31,none,own,1,skilled,1,yes,yes,good\n'<0',12,'critical/other existing credit','new car',691,'<100','>=7',4,'male single',none,3,'life insurance',35,none,own,2,skilled,1,none,yes,bad\n'no checking',15,'critical/other existing credit','new car',5045,'no known savings','>=7',1,'female div/dep/mar',none,4,car,59,none,own,1,skilled,1,yes,yes,good\n'<0',18,'critical/other existing credit',furniture/equipment,2124,'<100','1<=X<4',4,'female div/dep/mar',none,4,'real estate',24,none,rent,2,skilled,1,none,yes,bad\n'<0',12,'existing paid',radio/tv,2214,'<100','1<=X<4',4,'male single',none,3,'life insurance',24,none,own,1,'unskilled resident',1,none,yes,good\n'no checking',21,'critical/other existing credit','new car',12680,'no known savings','>=7',4,'male single',none,4,'no known property',30,none,'for free',1,'high qualif/self emp/mgmt',1,yes,yes,bad\n'no checking',24,'critical/other existing credit','new car',2463,'100<=X<500','4<=X<7',4,'male mar/wid',none,3,'life insurance',27,none,own,2,skilled,1,yes,yes,good\n'0<=X<200',12,'existing paid',radio/tv,1155,'<100','>=7',3,'male mar/wid',guarantor,3,'real estate',40,bank,own,2,'unskilled resident',1,none,yes,good\n'<0',30,'existing paid',furniture/equipment,3108,'<100','<1',2,'male div/sep',none,4,'life insurance',31,none,own,1,'unskilled resident',1,none,yes,bad\n'no checking',10,'existing paid','used car',2901,'no known savings','<1',1,'female div/dep/mar',none,4,'real estate',31,none,rent,1,skilled,1,none,yes,good\n'0<=X<200',12,'critical/other existing credit',furniture/equipment,3617,'<100','>=7',1,'male single',none,4,car,28,none,rent,3,skilled,1,yes,yes,good\n'no checking',12,'critical/other existing credit',radio/tv,1655,'<100','>=7',2,'male single',none,4,'real estate',63,none,own,2,'unskilled resident',1,yes,yes,good\n'<0',24,'existing paid','used car',2812,'no known savings','>=7',2,'female div/dep/mar',none,4,'real estate',26,none,rent,1,skilled,1,none,yes,good\n'<0',36,'critical/other existing credit',education,8065,'<100','1<=X<4',3,'female div/dep/mar',none,2,'no known property',25,none,own,2,'high qualif/self emp/mgmt',1,yes,yes,bad\n'no checking',21,'critical/other existing credit','used car',3275,'<100','>=7',1,'male single',none,4,car,36,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'no checking',24,'critical/other existing credit',radio/tv,2223,'100<=X<500','>=7',4,'male single',none,4,'life insurance',52,bank,own,2,skilled,1,none,yes,good\n'>=200',12,'critical/other existing credit','new car',1480,'500<=X<1000',unemployed,2,'male single',none,4,'no known property',66,bank,'for free',3,'unemp/unskilled non res',1,none,yes,good\n'<0',24,'existing paid','new car',1371,'no known savings','1<=X<4',4,'female div/dep/mar',none,4,'real estate',25,none,rent,1,skilled,1,none,yes,bad\n'no checking',36,'critical/other existing credit','new car',3535,'<100','4<=X<7',4,'male single',none,4,car,37,none,own,2,skilled,1,yes,yes,good\n'<0',18,'existing paid',radio/tv,3509,'<100','4<=X<7',4,'female div/dep/mar',guarantor,1,'real estate',25,none,own,1,skilled,1,none,yes,good\n'no checking',36,'critical/other existing credit','used car',5711,'>=1000','>=7',4,'male single',none,2,car,38,none,own,2,'high qualif/self emp/mgmt',1,yes,yes,good\n'0<=X<200',18,'existing paid',repairs,3872,'<100',unemployed,2,'female div/dep/mar',none,4,car,67,none,own,1,skilled,1,yes,yes,good\n'0<=X<200',39,'critical/other existing credit',radio/tv,4933,'<100','4<=X<7',2,'male single',guarantor,2,'real estate',25,none,own,2,skilled,1,none,yes,bad\n'no checking',24,'critical/other existing credit','new car',1940,'>=1000','>=7',4,'male single',none,4,'real estate',60,none,own,1,skilled,1,yes,yes,good\n'0<=X<200',12,'no credits/all paid',retraining,1410,'<100','1<=X<4',2,'male single',none,2,'real estate',31,none,own,1,'unskilled resident',1,yes,yes,good\n'0<=X<200',12,'existing paid','new car',836,'100<=X<500','<1',4,'female div/dep/mar',none,2,'life insurance',23,bank,own,1,'unskilled resident',1,none,yes,bad\n'0<=X<200',20,'existing paid','used car',6468,'no known savings',unemployed,1,'male div/sep',none,4,'real estate',60,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'0<=X<200',18,'existing paid',business,1941,'>=1000','1<=X<4',4,'male single',none,2,'life insurance',35,none,own,1,'unskilled resident',1,yes,yes,good\n'no checking',22,'existing paid',radio/tv,2675,'500<=X<1000','>=7',3,'male single',none,4,car,40,none,own,1,skilled,1,none,yes,good\n'no checking',48,'critical/other existing credit','used car',2751,'no known savings','>=7',4,'male single',none,3,car,38,none,own,2,skilled,2,yes,yes,good\n'0<=X<200',48,'delayed previously',education,6224,'<100','>=7',4,'male single',none,4,'no known property',50,none,'for free',1,skilled,1,none,yes,bad\n'<0',40,'critical/other existing credit',education,5998,'<100','1<=X<4',4,'male single',none,3,'no known property',27,bank,own,1,skilled,1,yes,yes,bad\n'0<=X<200',21,'existing paid',business,1188,'<100','>=7',2,'female div/dep/mar',none,4,'life insurance',39,none,own,1,skilled,2,none,yes,bad\n'no checking',24,'existing paid','used car',6313,'no known savings','>=7',3,'male single',none,4,car,41,none,own,1,'high qualif/self emp/mgmt',2,yes,yes,good\n'no checking',6,'critical/other existing credit',furniture/equipment,1221,'no known savings','1<=X<4',1,'male mar/wid',none,2,'life insurance',27,none,own,2,skilled,1,none,yes,good\n'>=200',24,'existing paid',furniture/equipment,2892,'<100','>=7',3,'male div/sep',none,4,'no known property',51,none,'for free',1,skilled,1,none,yes,good\n'no checking',24,'existing paid',furniture/equipment,3062,'500<=X<1000','>=7',4,'male single',none,3,'no known property',32,none,rent,1,skilled,1,yes,yes,good\n'no checking',9,'existing paid',furniture/equipment,2301,'100<=X<500','<1',2,'female div/dep/mar',none,4,'life insurance',22,none,rent,1,skilled,1,none,yes,good\n'<0',18,'existing paid','used car',7511,'no known savings','>=7',1,'male single',none,4,'life insurance',51,none,'for free',1,skilled,2,yes,yes,bad\n'no checking',12,'critical/other existing credit',furniture/equipment,1258,'<100','<1',2,'female div/dep/mar',none,4,'life insurance',22,none,rent,2,'unskilled resident',1,none,yes,good\n'no checking',24,'delayed previously','new car',717,'no known savings','>=7',4,'male mar/wid',none,4,car,54,none,own,2,skilled,1,yes,yes,good\n'0<=X<200',9,'existing paid','new car',1549,'no known savings','<1',4,'male single',none,2,'real estate',35,none,own,1,'unemp/unskilled non res',1,none,yes,good\n'no checking',24,'critical/other existing credit',education,1597,'<100','>=7',4,'male single',none,4,'no known property',54,none,'for free',2,skilled,2,none,yes,good\n'0<=X<200',18,'critical/other existing credit',radio/tv,1795,'<100','>=7',3,'female div/dep/mar',guarantor,4,'real estate',48,bank,rent,2,'unskilled resident',1,yes,yes,good\n'<0',20,'critical/other existing credit',furniture/equipment,4272,'<100','>=7',1,'female div/dep/mar',none,4,'life insurance',24,none,own,2,skilled,1,none,yes,good\n'no checking',12,'critical/other existing credit',radio/tv,976,'no known savings','>=7',4,'male single',none,4,car,35,none,own,2,skilled,1,none,yes,good\n'0<=X<200',12,'existing paid','new car',7472,'no known savings',unemployed,1,'female div/dep/mar',none,2,'real estate',24,none,rent,1,'unemp/unskilled non res',1,none,yes,good\n'<0',36,'existing paid','new car',9271,'<100','4<=X<7',2,'male single',none,1,car,24,none,own,1,skilled,1,yes,yes,bad\n'0<=X<200',6,'existing paid',radio/tv,590,'<100','<1',3,'male mar/wid',none,3,'real estate',26,none,own,1,'unskilled resident',1,none,no,good\n'no checking',12,'critical/other existing credit',radio/tv,930,'no known savings','>=7',4,'male single',none,4,'real estate',65,none,own,4,skilled,1,none,yes,good\n'0<=X<200',42,'all paid','used car',9283,'<100',unemployed,1,'male single',none,2,'no known property',55,bank,'for free',1,'high qualif/self emp/mgmt',1,yes,yes,good\n'0<=X<200',15,'no credits/all paid','new car',1778,'<100','<1',2,'female div/dep/mar',none,1,'real estate',26,none,rent,2,'unemp/unskilled non res',1,none,yes,bad\n'0<=X<200',8,'existing paid',business,907,'<100','<1',3,'male mar/wid',none,2,'real estate',26,none,own,1,skilled,1,yes,yes,good\n'0<=X<200',6,'existing paid',radio/tv,484,'<100','4<=X<7',3,'male mar/wid',guarantor,3,'real estate',28,bank,own,1,'unskilled resident',1,none,yes,good\n'<0',36,'critical/other existing credit','used car',9629,'<100','4<=X<7',4,'male single',none,4,car,24,none,own,2,skilled,1,yes,yes,bad\n'<0',48,'existing paid','domestic appliance',3051,'<100','1<=X<4',3,'male single',none,4,car,54,none,own,1,skilled,1,none,yes,bad\n'<0',48,'existing paid','new car',3931,'<100','4<=X<7',4,'male single',none,4,'no known property',46,none,'for free',1,skilled,2,none,yes,bad\n'0<=X<200',36,'delayed previously','new car',7432,'<100','1<=X<4',2,'female div/dep/mar',none,2,'life insurance',54,none,rent,1,skilled,1,none,yes,good\n'no checking',6,'existing paid','domestic appliance',1338,'500<=X<1000','1<=X<4',1,'male div/sep',none,4,'real estate',62,none,own,1,skilled,1,none,yes,good\n'no checking',6,'critical/other existing credit',radio/tv,1554,'<100','4<=X<7',1,'female div/dep/mar',none,2,car,24,none,rent,2,skilled,1,yes,yes,good\n'<0',36,'existing paid',other,15857,'<100',unemployed,2,'male div/sep','co applicant',3,car,43,none,own,1,'high qualif/self emp/mgmt',1,none,yes,good\n'<0',18,'existing paid',radio/tv,1345,'<100','1<=X<4',4,'male mar/wid',none,3,'real estate',26,bank,own,1,skilled,1,none,yes,bad\n'no checking',12,'existing paid','new car',1101,'<100','1<=X<4',3,'male mar/wid',none,2,'real estate',27,none,own,2,skilled,1,yes,yes,good\n'>=200',12,'existing paid',radio/tv,3016,'<100','1<=X<4',3,'male mar/wid',none,1,car,24,none,own,1,skilled,1,none,yes,good\n'<0',36,'existing paid',furniture/equipment,2712,'<100','>=7',2,'male single',none,2,'life insurance',41,bank,own,1,skilled,2,none,yes,bad\n'<0',8,'critical/other existing credit','new car',731,'<100','>=7',4,'male single',none,4,'real estate',47,none,own,2,'unskilled resident',1,none,yes,good\n'no checking',18,'critical/other existing credit',furniture/equipment,3780,'<100','<1',3,'male div/sep',none,2,car,35,none,own,2,'high qualif/self emp/mgmt',1,yes,yes,good\n'<0',21,'critical/other existing credit','new car',1602,'<100','>=7',4,'male mar/wid',none,3,car,30,none,own,2,skilled,1,yes,yes,good\n'<0',18,'critical/other existing credit','new car',3966,'<100','>=7',1,'female div/dep/mar',none,4,'real estate',33,bank,rent,3,skilled,1,yes,yes,bad\n'no checking',18,'no credits/all paid',business,4165,'<100','1<=X<4',2,'male single',none,2,car,36,stores,own,2,skilled,2,none,yes,bad\n'<0',36,'existing paid','used car',8335,'no known savings','>=7',3,'male single',none,4,'no known property',47,none,'for free',1,skilled,1,none,yes,bad\n'0<=X<200',48,'delayed previously',business,6681,'no known savings','1<=X<4',4,'male single',none,4,'no known property',38,none,'for free',1,skilled,2,yes,yes,good\n'no checking',24,'delayed previously',business,2375,'500<=X<1000','1<=X<4',4,'male single',none,2,car,44,none,own,2,skilled,2,yes,yes,good\n'<0',18,'existing paid','new car',1216,'<100','<1',4,'female div/dep/mar',none,3,car,23,none,rent,1,skilled,1,yes,yes,bad\n'<0',45,'no credits/all paid',business,11816,'<100','>=7',2,'male single',none,4,car,29,none,rent,2,skilled,1,none,yes,bad\n'0<=X<200',24,'existing paid',radio/tv,5084,'no known savings','>=7',2,'female div/dep/mar',none,4,car,42,none,own,1,skilled,1,yes,yes,good\n'>=200',15,'existing paid',radio/tv,2327,'<100','<1',2,'female div/dep/mar',none,3,'real estate',25,none,own,1,'unskilled resident',1,none,yes,bad\n'<0',12,'no credits/all paid','new car',1082,'<100','1<=X<4',4,'male single',none,4,car,48,bank,own,2,skilled,1,none,yes,bad\n'no checking',12,'existing paid',radio/tv,886,'no known savings','1<=X<4',4,'female div/dep/mar',none,2,car,21,none,own,1,skilled,1,none,yes,good\n'no checking',4,'existing paid',furniture/equipment,601,'<100','<1',1,'female div/dep/mar',none,3,'real estate',23,none,rent,1,'unskilled resident',2,none,yes,good\n'<0',24,'critical/other existing credit','used car',2957,'<100','>=7',4,'male single',none,4,'life insurance',63,none,own,2,skilled,1,yes,yes,good\n'no checking',24,'critical/other existing credit',radio/tv,2611,'<100','>=7',4,'male mar/wid','co applicant',3,'real estate',46,none,own,2,skilled,1,none,yes,good\n'<0',36,'existing paid',furniture/equipment,5179,'<100','4<=X<7',4,'male single',none,2,'life insurance',29,none,own,1,skilled,1,none,yes,bad\n'no checking',21,'delayed previously','used car',2993,'<100','1<=X<4',3,'male single',none,2,'real estate',28,stores,own,2,'unskilled resident',1,none,yes,good\n'no checking',18,'existing paid',repairs,1943,'<100','<1',4,'female div/dep/mar',none,4,'real estate',23,none,own,1,skilled,1,none,yes,bad\n'no checking',24,'all paid',business,1559,'<100','4<=X<7',4,'male single',none,4,car,50,bank,own,1,skilled,1,yes,yes,good\n'no checking',18,'existing paid',furniture/equipment,3422,'<100','>=7',4,'male single',none,4,'life insurance',47,bank,own,3,skilled,2,yes,yes,good\n'0<=X<200',21,'existing paid',furniture/equipment,3976,'no known savings','4<=X<7',2,'male single',none,3,car,35,none,own,1,skilled,1,yes,yes,good\n'no checking',18,'existing paid','new car',6761,'no known savings','1<=X<4',2,'male single',none,4,car,68,none,rent,2,skilled,1,none,yes,bad\n'no checking',24,'existing paid','new car',1249,'<100','<1',4,'male mar/wid',none,2,'real estate',28,none,own,1,skilled,1,none,yes,good\n'<0',9,'existing paid',radio/tv,1364,'<100','4<=X<7',3,'male single',none,4,'real estate',59,none,own,1,skilled,1,none,yes,good\n'<0',12,'existing paid',radio/tv,709,'<100','>=7',4,'male single',none,4,'real estate',57,stores,own,1,'unskilled resident',1,none,yes,bad\n'<0',20,'critical/other existing credit','new car',2235,'<100','1<=X<4',4,'male mar/wid',guarantor,2,'life insurance',33,bank,rent,2,skilled,1,none,no,bad\n'no checking',24,'critical/other existing credit','used car',4042,'no known savings','4<=X<7',3,'male single',none,4,'life insurance',43,none,own,2,skilled,1,yes,yes,good\n'no checking',15,'critical/other existing credit',radio/tv,1471,'<100','1<=X<4',4,'male single',none,4,'no known property',35,none,'for free',2,skilled,1,yes,yes,good\n'<0',18,'all paid','new car',1442,'<100','4<=X<7',4,'male single',none,4,'no known property',32,none,'for free',2,'unskilled resident',2,none,yes,bad\n'no checking',36,'delayed previously','new car',10875,'<100','>=7',2,'male single',none,2,car,45,none,own,2,skilled,2,yes,yes,good\n'no checking',24,'existing paid','new car',1474,'100<=X<500','<1',4,'male mar/wid',none,3,'real estate',33,none,own,1,skilled,1,yes,yes,good\n'no checking',10,'existing paid',retraining,894,'no known savings','4<=X<7',4,'female div/dep/mar',none,3,'life insurance',40,none,own,1,skilled,1,yes,yes,good\n'no checking',15,'critical/other existing credit',furniture/equipment,3343,'<100','1<=X<4',4,'male single',none,2,'no known property',28,none,'for free',1,skilled,1,yes,yes,good\n'<0',15,'existing paid','new car',3959,'<100','1<=X<4',3,'female div/dep/mar',none,2,'life insurance',29,none,own,1,skilled,1,yes,yes,bad\n'no checking',9,'existing paid','new car',3577,'100<=X<500','1<=X<4',1,'male single',guarantor,2,'real estate',26,none,rent,1,skilled,2,none,no,good\n'no checking',24,'critical/other existing credit','used car',5804,'>=1000','1<=X<4',4,'male single',none,2,'real estate',27,none,own,2,skilled,1,none,yes,good\n'no checking',18,'delayed previously',business,2169,'<100','1<=X<4',4,'male mar/wid',none,2,car,28,none,own,1,skilled,1,yes,yes,bad\n'<0',24,'existing paid',radio/tv,2439,'<100','<1',4,'female div/dep/mar',none,4,'real estate',35,none,own,1,skilled,1,yes,yes,bad\n'no checking',27,'critical/other existing credit',furniture/equipment,4526,'>=1000','<1',4,'male single',none,2,'real estate',32,stores,own,2,'unskilled resident',2,yes,yes,good\n'no checking',10,'existing paid',furniture/equipment,2210,'<100','1<=X<4',2,'male single',none,2,'real estate',25,bank,rent,1,'unskilled resident',1,none,yes,bad\n'no checking',15,'existing paid',furniture/equipment,2221,'500<=X<1000','1<=X<4',2,'female div/dep/mar',none,4,car,20,none,rent,1,skilled,1,none,yes,good\n'<0',18,'existing paid',radio/tv,2389,'<100','<1',4,'female div/dep/mar',none,1,car,27,stores,own,1,skilled,1,none,yes,good\n'no checking',12,'critical/other existing credit',furniture/equipment,3331,'<100','>=7',2,'male single',none,4,'life insurance',42,stores,own,1,skilled,1,none,yes,good\n'no checking',36,'existing paid',business,7409,'no known savings','>=7',3,'male single',none,2,'life insurance',37,none,own,2,skilled,1,none,yes,good\n'<0',12,'existing paid',furniture/equipment,652,'<100','>=7',4,'female div/dep/mar',none,4,'life insurance',24,none,rent,1,skilled,1,none,yes,good\n'no checking',36,'delayed previously',furniture/equipment,7678,'500<=X<1000','4<=X<7',2,'female div/dep/mar',none,4,car,40,none,own,2,skilled,1,yes,yes,good\n'>=200',6,'critical/other existing credit','new car',1343,'<100','>=7',1,'male single',none,4,'real estate',46,none,own,2,skilled,2,none,no,good\n'<0',24,'critical/other existing credit',business,1382,'100<=X<500','4<=X<7',4,'male single',none,1,'real estate',26,none,own,2,skilled,1,yes,yes,good\n'no checking',15,'existing paid','domestic appliance',874,'no known savings','<1',4,'female div/dep/mar',none,1,'real estate',24,none,own,1,skilled,1,none,yes,good\n'<0',12,'existing paid',furniture/equipment,3590,'<100','1<=X<4',2,'male single','co applicant',2,'life insurance',29,none,own,1,'unskilled resident',2,none,yes,good\n'0<=X<200',11,'critical/other existing credit','new car',1322,'>=1000','1<=X<4',4,'female div/dep/mar',none,4,car,40,none,own,2,skilled,1,none,yes,good\n'<0',18,'all paid',radio/tv,1940,'<100','<1',3,'male single','co applicant',4,'no known property',36,bank,'for free',1,'high qualif/self emp/mgmt',1,yes,yes,good\n'no checking',36,'existing paid',radio/tv,3595,'<100','>=7',4,'male single',none,2,car,28,none,own,1,skilled,1,none,yes,good\n'<0',9,'existing paid','new car',1422,'<100','<1',3,'male single',none,2,'no known property',27,none,'for free',1,'high qualif/self emp/mgmt',1,yes,yes,bad\n'no checking',30,'critical/other existing credit',radio/tv,6742,'no known savings','4<=X<7',2,'male single',none,3,'life insurance',36,none,own,2,skilled,1,none,yes,good\n'no checking',24,'existing paid','used car',7814,'<100','4<=X<7',3,'male single',none,3,car,38,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'no checking',24,'existing paid','used car',9277,'no known savings','1<=X<4',2,'male div/sep',none,4,'no known property',48,none,'for free',1,skilled,1,yes,yes,good\n'0<=X<200',30,'critical/other existing credit','new car',2181,'no known savings','>=7',4,'male single',none,4,'real estate',36,none,own,2,skilled,1,none,yes,good\n'no checking',18,'critical/other existing credit',radio/tv,1098,'<100',unemployed,4,'female div/dep/mar',none,4,car,65,none,own,2,'unemp/unskilled non res',1,none,yes,good\n'0<=X<200',24,'existing paid',furniture/equipment,4057,'<100','4<=X<7',3,'male div/sep',none,3,car,43,none,own,1,skilled,1,yes,yes,bad\n'<0',12,'existing paid',education,795,'<100','<1',4,'female div/dep/mar',none,4,'life insurance',53,none,own,1,skilled,1,none,yes,bad\n'0<=X<200',24,'critical/other existing credit',business,2825,'no known savings','4<=X<7',4,'male single',none,3,'no known property',34,none,own,2,skilled,2,yes,yes,good\n'0<=X<200',48,'existing paid',business,15672,'<100','1<=X<4',2,'male single',none,2,car,23,none,own,1,skilled,1,yes,yes,bad\n'no checking',36,'critical/other existing credit','new car',6614,'<100','>=7',4,'male single',none,4,car,34,none,own,2,'high qualif/self emp/mgmt',1,yes,yes,good\n'no checking',28,'all paid','used car',7824,'no known savings','<1',3,'male single',guarantor,4,'real estate',40,bank,rent,2,skilled,2,yes,yes,good\n'<0',27,'critical/other existing credit',business,2442,'<100','>=7',4,'male single',none,4,car,43,stores,own,4,'high qualif/self emp/mgmt',2,yes,yes,good\n'no checking',15,'critical/other existing credit',radio/tv,1829,'<100','>=7',4,'male single',none,4,car,46,none,own,2,skilled,1,yes,yes,good\n'<0',12,'critical/other existing credit','new car',2171,'<100','1<=X<4',4,'male single',none,4,'life insurance',38,bank,own,2,'unskilled resident',1,none,no,good\n'0<=X<200',36,'critical/other existing credit','used car',5800,'<100','1<=X<4',3,'male single',none,4,car,34,none,own,2,skilled,1,yes,yes,good\n'no checking',18,'critical/other existing credit',radio/tv,1169,'no known savings','1<=X<4',4,'male single',none,3,'life insurance',29,none,own,2,skilled,1,yes,yes,good\n'no checking',36,'delayed previously','used car',8947,'no known savings','4<=X<7',3,'male single',none,2,car,31,stores,own,1,'high qualif/self emp/mgmt',2,yes,yes,good\n'<0',21,'existing paid',radio/tv,2606,'<100','<1',4,'female div/dep/mar',none,4,'life insurance',28,none,rent,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'no checking',12,'critical/other existing credit',furniture/equipment,1592,'>=1000','4<=X<7',3,'female div/dep/mar',none,2,'life insurance',35,none,own,1,skilled,1,none,no,good\n'no checking',15,'existing paid',furniture/equipment,2186,'no known savings','4<=X<7',1,'female div/dep/mar',none,4,'real estate',33,bank,rent,1,'unskilled resident',1,none,yes,good\n'<0',18,'existing paid',furniture/equipment,4153,'<100','1<=X<4',2,'male single','co applicant',3,car,42,none,own,1,skilled,1,none,yes,bad\n'<0',16,'critical/other existing credit','new car',2625,'<100','>=7',2,'male single',guarantor,4,'life insurance',43,bank,rent,1,skilled,1,yes,yes,bad\n'no checking',20,'critical/other existing credit','new car',3485,'no known savings','<1',2,'male div/sep',none,4,'real estate',44,none,own,2,skilled,1,yes,yes,good\n'no checking',36,'critical/other existing credit','used car',10477,'no known savings','>=7',2,'male single',none,4,'no known property',42,none,'for free',2,skilled,1,none,yes,good\n'no checking',15,'existing paid',radio/tv,1386,'no known savings','1<=X<4',4,'male mar/wid',none,2,'real estate',40,none,rent,1,skilled,1,yes,yes,good\n'no checking',24,'existing paid',radio/tv,1278,'<100','>=7',4,'male single',none,1,'real estate',36,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'<0',12,'existing paid',radio/tv,1107,'<100','1<=X<4',2,'male single',none,2,'real estate',20,none,rent,1,'high qualif/self emp/mgmt',2,yes,yes,good\n'<0',21,'existing paid','new car',3763,'no known savings','4<=X<7',2,'male single','co applicant',2,'real estate',24,none,own,1,'unskilled resident',1,none,no,good\n'0<=X<200',36,'existing paid',education,3711,'no known savings','1<=X<4',2,'male mar/wid',none,2,car,27,none,own,1,skilled,1,none,yes,good\n'no checking',15,'delayed previously','used car',3594,'<100','<1',1,'female div/dep/mar',none,2,'life insurance',46,none,own,2,'unskilled resident',1,none,yes,good\n'0<=X<200',9,'existing paid','new car',3195,'no known savings','1<=X<4',1,'female div/dep/mar',none,2,'real estate',33,none,own,1,'unskilled resident',1,none,yes,good\n'no checking',36,'delayed previously',radio/tv,4454,'<100','1<=X<4',4,'female div/dep/mar',none,4,'real estate',34,none,own,2,skilled,1,none,yes,good\n'0<=X<200',24,'critical/other existing credit',furniture/equipment,4736,'<100','<1',2,'female div/dep/mar',none,4,car,25,bank,own,1,'unskilled resident',1,none,yes,bad\n'0<=X<200',30,'existing paid',radio/tv,2991,'no known savings','>=7',2,'female div/dep/mar',none,4,car,25,none,own,1,skilled,1,none,yes,good\n'no checking',11,'existing paid',business,2142,'>=1000','>=7',1,'male div/sep',none,2,'real estate',28,none,own,1,skilled,1,yes,yes,good\n'<0',24,'all paid',business,3161,'<100','1<=X<4',4,'male single',none,2,'life insurance',31,none,rent,1,skilled,1,yes,yes,bad\n'0<=X<200',48,'no credits/all paid',other,18424,'<100','1<=X<4',1,'female div/dep/mar',none,2,'life insurance',32,bank,own,1,'high qualif/self emp/mgmt',1,yes,no,bad\n'no checking',10,'existing paid','used car',2848,'100<=X<500','1<=X<4',1,'male single','co applicant',2,'real estate',32,none,own,1,skilled,2,none,yes,good\n'<0',6,'existing paid','new car',14896,'<100','>=7',1,'male single',none,4,'no known property',68,bank,own,1,'high qualif/self emp/mgmt',1,yes,yes,bad\n'<0',24,'existing paid',furniture/equipment,2359,'100<=X<500',unemployed,1,'male div/sep',none,1,'life insurance',33,none,own,1,skilled,1,none,yes,bad\n'<0',24,'existing paid',furniture/equipment,3345,'<100','>=7',4,'male single',none,2,'life insurance',39,none,rent,1,'high qualif/self emp/mgmt',1,yes,yes,bad\n'no checking',18,'critical/other existing credit',furniture/equipment,1817,'<100','1<=X<4',4,'female div/dep/mar',none,2,'no known property',28,none,own,2,skilled,1,none,yes,good\n'no checking',48,'delayed previously',radio/tv,12749,'500<=X<1000','4<=X<7',4,'male single',none,1,car,37,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'<0',9,'existing paid',radio/tv,1366,'<100','<1',3,'female div/dep/mar',none,4,'life insurance',22,none,rent,1,skilled,1,none,yes,bad\n'0<=X<200',12,'existing paid','new car',2002,'<100','4<=X<7',3,'male single',none,4,'life insurance',30,none,rent,1,skilled,2,yes,yes,good\n'<0',24,'all paid',furniture/equipment,6872,'<100','<1',2,'male div/sep',none,1,'life insurance',55,bank,own,1,skilled,1,yes,yes,bad\n'<0',12,'all paid','new car',697,'<100','<1',4,'male single',none,2,car,46,bank,own,2,skilled,1,yes,yes,bad\n'<0',18,'critical/other existing credit',furniture/equipment,1049,'<100','<1',4,'female div/dep/mar',none,4,'life insurance',21,none,rent,1,skilled,1,none,yes,good\n'<0',48,'existing paid','used car',10297,'<100','4<=X<7',4,'male single',none,4,'no known property',39,stores,'for free',3,skilled,2,yes,yes,bad\n'no checking',30,'existing paid',radio/tv,1867,'no known savings','>=7',4,'male single',none,4,car,58,none,own,1,skilled,1,yes,yes,good\n'<0',12,'delayed previously','new car',1344,'<100','1<=X<4',4,'male single',none,2,'real estate',43,none,own,2,'unskilled resident',2,none,yes,good\n'<0',24,'existing paid',furniture/equipment,1747,'<100','<1',4,'male single','co applicant',1,'life insurance',24,none,own,1,'unskilled resident',1,none,no,good\n'0<=X<200',9,'existing paid',radio/tv,1670,'<100','<1',4,'female div/dep/mar',none,2,car,22,none,own,1,skilled,1,yes,yes,bad\n'no checking',9,'critical/other existing credit','new car',1224,'<100','1<=X<4',3,'male single',none,1,'real estate',30,none,own,2,skilled,1,none,yes,good\n'no checking',12,'critical/other existing credit',radio/tv,522,'500<=X<1000','>=7',4,'male single',none,4,'life insurance',42,none,own,2,skilled,2,yes,yes,good\n'<0',12,'existing paid',radio/tv,1498,'<100','1<=X<4',4,'female div/dep/mar',none,1,car,23,bank,own,1,skilled,1,none,yes,good\n'0<=X<200',30,'delayed previously',radio/tv,1919,'100<=X<500','<1',4,'male single',none,3,'no known property',30,stores,own,2,'high qualif/self emp/mgmt',1,none,yes,bad\n'>=200',9,'existing paid',radio/tv,745,'<100','1<=X<4',3,'female div/dep/mar',none,2,'real estate',28,none,own,1,'unskilled resident',1,none,yes,bad\n'0<=X<200',6,'existing paid',radio/tv,2063,'<100','<1',4,'male mar/wid',none,3,car,30,none,rent,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'0<=X<200',60,'existing paid',education,6288,'<100','1<=X<4',4,'male single',none,4,'no known property',42,none,'for free',1,skilled,1,none,yes,bad\n'no checking',24,'critical/other existing credit','used car',6842,'no known savings','1<=X<4',2,'male single',none,4,'life insurance',46,none,own,2,'high qualif/self emp/mgmt',2,yes,yes,good\n'no checking',12,'existing paid','new car',3527,'no known savings','<1',2,'male single',none,3,'life insurance',45,none,own,1,'high qualif/self emp/mgmt',2,yes,yes,good\n'no checking',10,'existing paid','new car',1546,'<100','1<=X<4',3,'male single',none,2,'real estate',31,none,own,1,'unskilled resident',2,none,no,good\n'no checking',24,'existing paid',furniture/equipment,929,'no known savings','4<=X<7',4,'male single',none,2,car,31,stores,own,1,skilled,1,yes,yes,good\n'no checking',4,'critical/other existing credit','new car',1455,'<100','4<=X<7',2,'male single',none,1,'real estate',42,none,own,3,'unskilled resident',2,none,yes,good\n'<0',15,'existing paid',furniture/equipment,1845,'<100','<1',4,'female div/dep/mar',guarantor,1,'life insurance',46,none,rent,1,skilled,1,none,yes,good\n'0<=X<200',48,'no credits/all paid','new car',8358,'500<=X<1000','<1',1,'female div/dep/mar',none,1,car,30,none,own,2,skilled,1,none,yes,good\n'<0',24,'all paid',furniture/equipment,3349,'500<=X<1000','<1',4,'male single',none,4,'no known property',30,none,'for free',1,skilled,2,yes,yes,bad\n'no checking',12,'existing paid','new car',2859,'no known savings',unemployed,4,'male single',none,4,'no known property',38,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'no checking',18,'existing paid',furniture/equipment,1533,'<100','<1',4,'male mar/wid','co applicant',1,'life insurance',43,none,own,1,'unskilled resident',2,none,yes,bad\n'no checking',24,'existing paid',radio/tv,3621,'100<=X<500','>=7',2,'male single',none,4,car,31,none,own,2,skilled,1,none,yes,bad\n'0<=X<200',18,'critical/other existing credit',business,3590,'<100',unemployed,3,'male mar/wid',none,3,car,40,none,own,3,'unemp/unskilled non res',2,yes,yes,good\n'<0',36,'delayed previously',business,2145,'<100','4<=X<7',2,'male single',none,1,car,24,none,own,2,skilled,1,yes,yes,bad\n'0<=X<200',24,'existing paid','used car',4113,'500<=X<1000','<1',3,'female div/dep/mar',none,4,car,28,none,rent,1,skilled,1,none,yes,bad\n'no checking',36,'existing paid',furniture/equipment,10974,'<100',unemployed,4,'female div/dep/mar',none,2,car,26,none,own,2,'high qualif/self emp/mgmt',1,yes,yes,bad\n'<0',12,'existing paid','new car',1893,'<100','1<=X<4',4,'female div/dep/mar',guarantor,4,'life insurance',29,none,own,1,skilled,1,yes,yes,good\n'<0',24,'critical/other existing credit',radio/tv,1231,'>=1000','>=7',4,'female div/dep/mar',none,4,'life insurance',57,none,rent,2,'high qualif/self emp/mgmt',1,yes,yes,good\n'>=200',30,'critical/other existing credit',radio/tv,3656,'no known savings','>=7',4,'male single',none,4,'life insurance',49,stores,own,2,'unskilled resident',1,none,yes,good\n'0<=X<200',9,'critical/other existing credit',radio/tv,1154,'<100','>=7',2,'male single',none,4,'real estate',37,none,own,3,'unskilled resident',1,none,yes,good\n'<0',28,'existing paid','new car',4006,'<100','1<=X<4',3,'male single',none,2,car,45,none,own,1,'unskilled resident',1,none,yes,bad\n'0<=X<200',24,'existing paid',furniture/equipment,3069,'100<=X<500','>=7',4,'male single',none,4,'no known property',30,none,'for free',1,skilled,1,none,yes,good\n'no checking',6,'critical/other existing credit',radio/tv,1740,'<100','>=7',2,'male mar/wid',none,2,'real estate',30,none,rent,2,skilled,1,none,yes,good\n'0<=X<200',21,'delayed previously','new car',2353,'<100','1<=X<4',1,'male div/sep',none,4,'life insurance',47,none,own,2,skilled,1,none,yes,good\n'no checking',15,'existing paid','new car',3556,'no known savings','1<=X<4',3,'male single',none,2,'no known property',29,none,own,1,skilled,1,none,yes,good\n'no checking',24,'existing paid',radio/tv,2397,'500<=X<1000','>=7',3,'male single',none,2,car,35,bank,own,2,skilled,1,yes,yes,bad\n'0<=X<200',6,'existing paid',repairs,454,'<100','<1',3,'male mar/wid',none,1,'life insurance',22,none,own,1,'unskilled resident',1,none,yes,good\n'0<=X<200',30,'existing paid',radio/tv,1715,'no known savings','1<=X<4',4,'female div/dep/mar',none,1,car,26,none,own,1,skilled,1,none,yes,good\n'0<=X<200',27,'critical/other existing credit',radio/tv,2520,'500<=X<1000','1<=X<4',4,'male single',none,2,'life insurance',23,none,own,2,'unskilled resident',1,none,yes,bad\n'no checking',15,'existing paid',radio/tv,3568,'<100','>=7',4,'female div/dep/mar',none,2,car,54,bank,rent,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'no checking',42,'existing paid',radio/tv,7166,'no known savings','4<=X<7',2,'male mar/wid',none,4,'life insurance',29,none,rent,1,skilled,1,yes,yes,good\n'<0',11,'critical/other existing credit','new car',3939,'<100','1<=X<4',1,'male single',none,2,'real estate',40,none,own,2,'unskilled resident',2,none,yes,good\n'0<=X<200',15,'existing paid',repairs,1514,'100<=X<500','1<=X<4',4,'male single',guarantor,2,'real estate',22,none,own,1,skilled,1,none,yes,good\n'no checking',24,'existing paid','new car',7393,'<100','1<=X<4',1,'male single',none,4,'life insurance',43,none,own,1,'unskilled resident',2,none,yes,good\n'<0',24,'all paid','new car',1193,'<100',unemployed,1,'female div/dep/mar','co applicant',4,'no known property',29,none,rent,2,'unemp/unskilled non res',1,none,yes,bad\n'<0',60,'existing paid',business,7297,'<100','>=7',4,'male single','co applicant',4,'no known property',36,none,rent,1,skilled,1,none,yes,bad\n'no checking',30,'critical/other existing credit',radio/tv,2831,'<100','1<=X<4',4,'female div/dep/mar',none,2,car,33,none,own,1,skilled,1,yes,yes,good\n'>=200',24,'existing paid',radio/tv,1258,'500<=X<1000','1<=X<4',3,'female div/dep/mar',none,3,car,57,none,own,1,'unskilled resident',1,none,yes,good\n'0<=X<200',6,'existing paid',radio/tv,753,'<100','1<=X<4',2,'female div/dep/mar',guarantor,3,'real estate',64,none,own,1,skilled,1,none,yes,good\n'0<=X<200',18,'delayed previously',business,2427,'no known savings','>=7',4,'male single',none,2,'life insurance',42,none,own,2,skilled,1,none,yes,good\n'no checking',24,'delayed previously','new car',2538,'<100','>=7',4,'male single',none,4,car,47,none,own,2,'unskilled resident',2,none,yes,bad\n'0<=X<200',15,'all paid','new car',1264,'100<=X<500','1<=X<4',2,'male mar/wid',none,2,'life insurance',25,none,rent,1,skilled,1,none,yes,bad\n'0<=X<200',30,'critical/other existing credit',furniture/equipment,8386,'<100','4<=X<7',2,'male single',none,2,'life insurance',49,none,own,1,skilled,1,none,yes,bad\n'no checking',48,'existing paid',business,4844,'<100',unemployed,3,'male single',none,2,car,33,bank,rent,1,'high qualif/self emp/mgmt',1,yes,yes,bad\n'>=200',21,'existing paid','new car',2923,'100<=X<500','1<=X<4',1,'female div/dep/mar',none,1,car,28,bank,own,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'<0',36,'existing paid','used car',8229,'<100','1<=X<4',2,'male single',none,2,'life insurance',26,none,own,1,skilled,2,none,yes,bad\n'no checking',24,'critical/other existing credit',furniture/equipment,2028,'<100','4<=X<7',2,'male single',none,2,'life insurance',30,none,own,2,'unskilled resident',1,none,yes,good\n'<0',15,'critical/other existing credit',furniture/equipment,1433,'<100','1<=X<4',4,'female div/dep/mar',none,3,'life insurance',25,none,rent,2,skilled,1,none,yes,good\n'>=200',42,'no credits/all paid',business,6289,'<100','<1',2,'male div/sep',none,1,'life insurance',33,none,own,2,skilled,1,none,yes,good\n'no checking',13,'existing paid',radio/tv,1409,'100<=X<500',unemployed,2,'female div/dep/mar',none,4,'real estate',64,none,own,1,skilled,1,none,yes,good\n'<0',24,'existing paid','used car',6579,'<100',unemployed,4,'male single',none,2,'no known property',29,none,'for free',1,'high qualif/self emp/mgmt',1,yes,yes,good\n'0<=X<200',24,'critical/other existing credit',radio/tv,1743,'<100','>=7',4,'male single',none,2,'life insurance',48,none,own,2,'unskilled resident',1,none,yes,good\n'no checking',12,'critical/other existing credit',education,3565,'no known savings','<1',2,'male single',none,1,'life insurance',37,none,own,2,'unskilled resident',2,none,yes,good\n'no checking',15,'all paid',radio/tv,1569,'100<=X<500','>=7',4,'male single',none,4,car,34,bank,own,1,'unskilled resident',2,none,yes,good\n'<0',18,'existing paid',radio/tv,1936,'no known savings','4<=X<7',2,'male mar/wid',none,4,car,23,none,rent,2,'unskilled resident',1,none,yes,good\n'<0',36,'existing paid',furniture/equipment,3959,'<100',unemployed,4,'male single',none,3,'life insurance',30,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'no checking',12,'existing paid','new car',2390,'no known savings','>=7',4,'male single',none,3,car,50,none,own,1,skilled,1,yes,yes,good\n'no checking',12,'existing paid',furniture/equipment,1736,'<100','4<=X<7',3,'female div/dep/mar',none,4,'real estate',31,none,own,1,'unskilled resident',1,none,yes,good\n'<0',30,'existing paid','used car',3857,'<100','1<=X<4',4,'male div/sep',none,4,'life insurance',40,none,own,1,'high qualif/self emp/mgmt',1,yes,yes,good\n'no checking',12,'existing paid',radio/tv,804,'<100','>=7',4,'male single',none,4,car,38,none,own,1,skilled,1,none,yes,good\n'<0',45,'existing paid',radio/tv,1845,'<100','1<=X<4',4,'male single',none,4,'no known property',23,none,'for free',1,skilled,1,yes,yes,bad\n'0<=X<200',45,'critical/other existing credit','used car',4576,'100<=X<500',unemployed,3,'male single',none,4,car,27,none,own,1,skilled,1,none,yes,good\n"
  },
  {
    "path": "public/viz/pollution_1.csv",
    "content": ",PREC,JANT,JULT,OVR65,POPN,EDUC,HOUS,DENS,NONW,WWDRK,POOR,HC,NOX,SO@,HUMID,class\n0,36.0,27.0,71.0,8.1,3.34,11.4,81.5,3243.0,8.8,42.6,11.7,21.0,15.0,59.0,59.0,0\n1,35.0,23.0,72.0,11.1,3.14,11.0,78.8,4281.0,3.5,50.7,14.4,8.0,10.0,39.0,57.0,1\n2,44.0,29.0,74.0,10.4,3.21,9.8,81.6,4260.0,0.8,39.4,12.4,6.0,6.0,33.0,54.0,1\n3,47.0,45.0,79.0,6.5,3.41,11.1,77.5,3125.0,27.1,50.2,20.6,18.0,8.0,24.0,56.0,1\n4,43.0,35.0,77.0,7.6,3.44,9.6,84.6,6441.0,24.4,43.7,14.3,43.0,38.0,206.0,55.0,1\n5,53.0,45.0,80.0,7.7,3.45,10.2,66.8,3325.0,38.5,43.1,25.5,30.0,32.0,72.0,54.0,1\n6,43.0,30.0,74.0,10.9,3.23,12.1,83.9,4679.0,3.5,49.2,11.3,21.0,32.0,62.0,56.0,0\n7,45.0,30.0,73.0,9.3,3.29,10.6,86.0,2140.0,5.3,40.4,10.5,6.0,4.0,4.0,56.0,0\n8,36.0,24.0,70.0,9.0,3.31,10.5,83.2,6582.0,8.1,42.5,12.6,18.0,12.0,37.0,61.0,1\n9,36.0,27.0,72.0,9.5,3.36,10.7,79.3,4213.0,6.7,41.0,13.2,12.0,7.0,20.0,59.0,0\n10,52.0,42.0,79.0,7.7,3.39,9.6,69.2,2302.0,22.2,41.3,24.2,18.0,8.0,27.0,56.0,1\n11,33.0,26.0,76.0,8.6,3.2,10.9,83.4,6122.0,16.3,44.9,10.7,88.0,63.0,278.0,58.0,1\n12,40.0,34.0,77.0,9.2,3.21,10.2,77.0,4101.0,13.0,45.7,15.1,26.0,26.0,146.0,57.0,1\n13,35.0,28.0,71.0,8.8,3.29,11.1,86.3,3042.0,14.7,44.6,11.4,31.0,21.0,64.0,60.0,1\n14,37.0,31.0,75.0,8.0,3.26,11.9,78.4,4259.0,13.1,49.6,13.9,23.0,9.0,15.0,58.0,1\n15,35.0,46.0,85.0,7.1,3.22,11.8,79.9,1441.0,14.8,51.2,16.1,1.0,1.0,1.0,54.0,0\n16,36.0,30.0,75.0,7.5,3.35,11.4,81.9,4029.0,12.4,44.0,12.0,6.0,4.0,16.0,58.0,0\n17,15.0,30.0,73.0,8.2,3.15,12.2,84.2,4824.0,4.7,53.1,12.7,17.0,8.0,28.0,38.0,0\n18,31.0,27.0,74.0,7.2,3.44,10.8,87.0,4834.0,15.8,43.5,13.6,52.0,35.0,124.0,59.0,1\n19,30.0,24.0,72.0,6.5,3.53,10.8,79.5,3694.0,13.1,33.8,12.4,11.0,4.0,11.0,61.0,1\n20,31.0,45.0,85.0,7.3,3.22,11.4,80.7,1844.0,11.5,48.1,18.5,1.0,1.0,1.0,53.0,0\n21,31.0,24.0,72.0,9.0,3.37,10.9,82.8,3226.0,5.1,45.2,12.3,5.0,3.0,10.0,61.0,0\n22,42.0,40.0,77.0,6.1,3.45,10.4,71.8,2269.0,22.7,41.4,19.5,8.0,3.0,5.0,53.0,1\n23,43.0,27.0,72.0,9.0,3.25,11.5,87.1,2909.0,7.2,51.6,9.5,7.0,3.0,10.0,56.0,0\n24,46.0,55.0,84.0,5.6,3.35,11.4,79.7,2647.0,21.0,46.9,17.9,6.0,5.0,1.0,59.0,1\n25,39.0,29.0,75.0,8.7,3.23,11.4,78.6,4412.0,15.6,46.6,13.2,13.0,7.0,33.0,60.0,1\n26,35.0,31.0,81.0,9.2,3.1,12.0,78.3,3262.0,12.6,48.6,13.9,7.0,4.0,4.0,55.0,0\n27,43.0,32.0,74.0,10.1,3.38,9.5,79.2,3214.0,2.9,43.7,12.0,11.0,7.0,32.0,54.0,0\n28,11.0,53.0,68.0,9.2,2.99,12.1,90.6,4700.0,7.8,48.9,12.3,648.0,319.0,130.0,47.0,0\n29,30.0,35.0,71.0,8.3,3.37,9.9,77.4,4474.0,13.1,42.6,17.7,38.0,37.0,193.0,57.0,1\n30,50.0,42.0,82.0,7.3,3.49,10.4,72.5,3497.0,36.7,43.3,26.4,15.0,18.0,34.0,59.0,1\n31,60.0,67.0,82.0,10.0,2.98,11.5,88.6,4657.0,13.5,47.3,22.4,3.0,1.0,1.0,60.0,0\n32,30.0,20.0,69.0,8.8,3.26,11.1,85.4,2934.0,5.8,44.0,9.4,33.0,23.0,125.0,64.0,0\n33,25.0,12.0,73.0,9.2,3.28,12.1,83.1,2095.0,2.0,51.9,9.8,20.0,11.0,26.0,58.0,0\n34,45.0,40.0,80.0,8.3,3.32,10.1,70.3,2682.0,21.0,46.1,24.1,17.0,14.0,78.0,56.0,1\n35,46.0,30.0,72.0,10.2,3.16,11.3,83.2,3327.0,8.8,45.3,12.2,4.0,3.0,8.0,58.0,0\n36,54.0,54.0,81.0,7.4,3.36,9.7,72.8,3172.0,31.4,45.5,24.2,20.0,17.0,1.0,62.0,1\n37,42.0,33.0,77.0,9.7,3.03,10.7,83.5,7462.0,11.3,48.7,12.4,41.0,26.0,108.0,58.0,1\n38,42.0,32.0,76.0,9.1,3.32,10.5,87.5,6092.0,17.5,45.3,13.2,29.0,32.0,161.0,54.0,1\n39,36.0,29.0,72.0,9.5,3.32,10.6,77.6,3437.0,8.1,45.5,13.8,45.0,59.0,263.0,56.0,1\n40,37.0,38.0,67.0,11.3,2.99,12.0,81.5,3387.0,3.6,50.3,13.5,56.0,21.0,44.0,73.0,0\n41,42.0,29.0,72.0,10.7,3.19,10.1,79.5,3508.0,2.2,38.8,15.7,6.0,4.0,18.0,56.0,0\n42,41.0,33.0,77.0,11.2,3.08,9.6,79.9,4843.0,2.7,38.6,14.1,11.0,11.0,89.0,54.0,1\n43,44.0,39.0,78.0,8.2,3.32,11.0,79.9,3768.0,28.6,49.5,17.5,12.0,9.0,48.0,53.0,1\n44,32.0,25.0,72.0,10.9,3.21,11.1,82.5,4355.0,5.0,46.4,10.8,7.0,4.0,18.0,60.0,0\n45,34.0,32.0,79.0,9.3,3.23,9.7,76.8,5160.0,17.2,45.1,15.3,31.0,15.0,68.0,57.0,1\n46,10.0,55.0,70.0,7.3,3.11,12.1,88.9,3033.0,5.9,51.0,14.0,144.0,66.0,20.0,61.0,0\n47,18.0,48.0,63.0,9.2,2.92,12.2,87.7,4253.0,13.7,51.2,12.0,311.0,171.0,86.0,71.0,0\n48,13.0,49.0,68.0,7.0,3.36,12.2,90.7,2702.0,3.0,51.9,9.7,105.0,32.0,3.0,71.0,0\n49,35.0,40.0,64.0,9.6,3.02,12.2,82.5,3626.0,5.7,54.3,10.1,20.0,7.0,20.0,72.0,0\n50,45.0,28.0,74.0,10.6,3.21,11.1,82.6,1883.0,3.4,41.9,12.3,5.0,4.0,20.0,56.0,0\n51,38.0,24.0,72.0,9.8,3.34,11.4,78.0,4923.0,3.8,50.5,11.1,8.0,5.0,25.0,61.0,1\n52,31.0,26.0,73.0,9.3,3.22,10.7,81.3,3249.0,9.5,43.9,13.6,11.0,7.0,25.0,59.0,1\n53,40.0,23.0,71.0,11.3,3.28,10.3,73.8,1671.0,2.5,47.4,13.5,5.0,2.0,11.0,60.0,0\n54,41.0,37.0,78.0,6.2,3.25,12.3,89.5,5308.0,25.9,59.7,10.3,65.0,28.0,102.0,52.0,1\n55,28.0,32.0,81.0,7.0,3.27,12.1,81.0,3665.0,7.5,51.6,13.2,4.0,2.0,1.0,54.0,0\n56,45.0,33.0,76.0,7.7,3.39,11.3,82.2,3152.0,12.1,47.3,10.9,14.0,11.0,42.0,56.0,1\n57,45.0,24.0,70.0,11.8,3.25,11.1,79.8,3678.0,1.0,44.8,14.0,7.0,3.0,8.0,56.0,0\n58,42.0,33.0,76.0,9.7,3.22,9.0,76.2,9699.0,4.8,42.2,14.5,8.0,8.0,49.0,54.0,0\n59,38.0,28.0,72.0,8.9,3.48,10.7,79.8,3451.0,11.7,37.5,13.0,14.0,13.0,39.0,58.0,1\n"
  },
  {
    "path": "public/viz/pollution_1_test.csv",
    "content": ",PREC,JANT,JULT,OVR65,POPN,EDUC,HOUS,DENS,NONW,WWDRK,POOR,HC,NOX,SO@,HUMID,purpose,class\n0,36,27,71,8.1,3.34,11.4,81.5,3243,8.8,42.6,11.7,21,15,59,59,radio/tv,0\n1,35,23,72,11.1,3.14,11,78.8,4281,3.5,50.7,14.4,8,10,39,57,radio/tv,1\n2,44,29,74,10.4,3.21,9.8,81.6,4260,0.8,39.4,12.4,6,6,33,54,education,1\n3,47,45,79,6.5,3.41,11.1,77.5,3125,27.1,50.2,20.6,18,8,24,56,furniture/equipment,1\n4,43,35,77,7.6,3.44,9.6,84.6,6441,24.4,43.7,14.3,43,38,206,55,'new car',1\n5,53,45,80,7.7,3.45,10.2,66.8,3325,38.5,43.1,25.5,30,32,72,54,education,1\n6,43,30,74,10.9,3.23,12.1,83.9,4679,3.5,49.2,11.3,21,32,62,56,furniture/equipment,0\n7,45,30,73,9.3,3.29,10.6,86,2140,5.3,40.4,10.5,6,4,4,56,'used car',0\n8,36,24,70,9,3.31,10.5,83.2,6582,8.1,42.5,12.6,18,12,37,61,radio/tv,1\n9,36,27,72,9.5,3.36,10.7,79.3,4213,6.7,41,13.2,12,7,20,59,'new car',0\n10,52,42,79,7.7,3.39,9.6,69.2,2302,22.2,41.3,24.2,18,8,27,56,'new car',1\n11,33,26,76,8.6,3.2,10.9,83.4,6122,16.3,44.9,10.7,88,63,278,58,business,1\n12,40,34,77,9.2,3.21,10.2,77,4101,13,45.7,15.1,26,26,146,57,radio/tv,1\n13,35,28,71,8.8,3.29,11.1,86.3,3042,14.7,44.6,11.4,31,21,64,60,'new car',1\n14,37,31,75,8,3.26,11.9,78.4,4259,13.1,49.6,13.9,23,9,15,58,'new car',1\n15,35,46,85,7.1,3.22,11.8,79.9,1441,14.8,51.2,16.1,1,1,1,54,radio/tv,0\n16,36,30,75,7.5,3.35,11.4,81.9,4029,12.4,44,12,6,4,16,58,radio/tv,0\n17,15,30,73,8.2,3.15,12.2,84.2,4824,4.7,53.1,12.7,17,8,28,38,business,0\n18,31,27,74,7.2,3.44,10.8,87,4834,15.8,43.5,13.6,52,35,124,59,'used car',1\n19,30,24,72,6.5,3.53,10.8,79.5,3694,13.1,33.8,12.4,11,4,11,61,radio/tv,1\n20,31,45,85,7.3,3.22,11.4,80.7,1844,11.5,48.1,18.5,1,1,1,53,'new car',0\n21,31,24,72,9,3.37,10.9,82.8,3226,5.1,45.2,12.3,5,3,10,61,radio/tv,0\n22,42,40,77,6.1,3.45,10.4,71.8,2269,22.7,41.4,19.5,8,3,5,53,'new car',1\n23,43,27,72,9,3.25,11.5,87.1,2909,7.2,51.6,9.5,7,3,10,56,'used car',0\n24,46,55,84,5.6,3.35,11.4,79.7,2647,21,46.9,17.9,6,5,1,59,furniture/equipment,1\n25,39,29,75,8.7,3.23,11.4,78.6,4412,15.6,46.6,13.2,13,7,33,60,furniture/equipment,1\n26,35,31,81,9.2,3.1,12,78.3,3262,12.6,48.6,13.9,7,4,4,55,radio/tv,0\n27,43,32,74,10.1,3.38,9.5,79.2,3214,2.9,43.7,12,11,7,32,54,radio/tv,0\n28,11,53,68,9.2,2.99,12.1,90.6,4700,7.8,48.9,12.3,648,319,130,47,radio/tv,0\n29,30,35,71,8.3,3.37,9.9,77.4,4474,13.1,42.6,17.7,38,37,193,57,business,1\n30,50,42,82,7.3,3.49,10.4,72.5,3497,36.7,43.3,26.4,15,18,34,59,business,1\n31,60,67,82,10,2.98,11.5,88.6,4657,13.5,47.3,22.4,3,1,1,60,furniture/equipment,0\n32,30,20,69,8.8,3.26,11.1,85.4,2934,5.8,44,9.4,33,23,125,64,'new car',0\n33,25,12,73,9.2,3.28,12.1,83.1,2095,2,51.9,9.8,20,11,26,58,business,0\n34,45,40,80,8.3,3.32,10.1,70.3,2682,21,46.1,24.1,17,14,78,56,furniture/equipment,1\n35,46,30,72,10.2,3.16,11.3,83.2,3327,8.8,45.3,12.2,4,3,8,58,radio/tv,0\n36,54,54,81,7.4,3.36,9.7,72.8,3172,31.4,45.5,24.2,20,17,1,62,education,1\n37,42,33,77,9.7,3.03,10.7,83.5,7462,11.3,48.7,12.4,41,26,108,58,radio/tv,1\n38,42,32,76,9.1,3.32,10.5,87.5,6092,17.5,45.3,13.2,29,32,161,54,'domestic appliance',1\n39,36,29,72,9.5,3.32,10.6,77.6,3437,8.1,45.5,13.8,45,59,263,56,radio/tv,1\n40,37,38,67,11.3,2.99,12,81.5,3387,3.6,50.3,13.5,56,21,44,73,radio/tv,0\n41,42,29,72,10.7,3.19,10.1,79.5,3508,2.2,38.8,15.7,6,4,18,56,radio/tv,0\n42,41,33,77,11.2,3.08,9.6,79.9,4843,2.7,38.6,14.1,11,11,89,54,repairs,1\n43,44,39,78,8.2,3.32,11,79.9,3768,28.6,49.5,17.5,12,9,48,53,'used car',1\n44,32,25,72,10.9,3.21,11.1,82.5,4355,5,46.4,10.8,7,4,18,60,'used car',0\n45,34,32,79,9.3,3.23,9.7,76.8,5160,17.2,45.1,15.3,31,15,68,57,'new car',1\n46,10,55,70,7.3,3.11,12.1,88.9,3033,5.9,51,14,144,66,20,61,radio/tv,0\n47,18,48,63,9.2,2.92,12.2,87.7,4253,13.7,51.2,12,311,171,86,71,'used car',0\n48,13,49,68,7,3.36,12.2,90.7,2702,3,51.9,9.7,105,32,3,71,'new car',0\n49,35,40,64,9.6,3.02,12.2,82.5,3626,5.7,54.3,10.1,20,7,20,72,radio/tv,0\n50,45,28,74,10.6,3.21,11.1,82.6,1883,3.4,41.9,12.3,5,4,20,56,furniture/equipment,0\n51,38,24,72,9.8,3.34,11.4,78,4923,3.8,50.5,11.1,8,5,25,61,'used car',1\n52,31,26,73,9.3,3.22,10.7,81.3,3249,9.5,43.9,13.6,11,7,25,59,radio/tv,1\n53,40,23,71,11.3,3.28,10.3,73.8,1671,2.5,47.4,13.5,5,2,11,60,'used car',0\n54,41,37,78,6.2,3.25,12.3,89.5,5308,25.9,59.7,10.3,65,28,102,52,'new car',1\n55,28,32,81,7,3.27,12.1,81,3665,7.5,51.6,13.2,4,2,1,54,'new car',0\n56,45,33,76,7.7,3.39,11.3,82.2,3152,12.1,47.3,10.9,14,11,42,56,radio/tv,1\n57,45,24,70,11.8,3.25,11.1,79.8,3678,1,44.8,14,7,3,8,56,radio/tv,0\n58,42,33,76,9.7,3.22,9,76.2,9699,4.8,42.2,14.5,8,8,49,54,'new car',0\n59,38,28,72,8.9,3.48,10.7,79.8,3451,11.7,37.5,13,14,13,39,58,furniture/equipment,1\n"
  },
  {
    "path": "scripts/build_with_docker.sh",
    "content": "#!/usr/bin/env bash\n\nnpm run build\ndocker build . -t atm-vis"
  },
  {
    "path": "scripts/start_docker.sh",
    "content": "#!/usr/bin/env bash\n\ndocker run -p 5000:5000 -v ~/workspace/atm/ATM-VIS/atm.db:/code/atm.db \\\n    -v ~/workspace/atm/ATM-VIS/atm:/code/atm -v ~/workspace/atm/ATM-VIS/logs:/code/logs \\\n    -v ~/workspace/atm/ATM-VIS/models:/code/models -v ~/workspace/atm/ATM-VIS/metrics:/code/metrics  \\\n    atm-vis"
  },
  {
    "path": "server/.gitignore",
    "content": "# ignore log files and saved models/metrics\nmodels/\nmetrics/\nlogs/\n.atm_server_cache/\n\n# ignore virtualenv and other binary files\n*.pem\n.DS_Store\n.idea/\n*.pickle\n*.tsv\n*.db\n\n# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution / packaging\n.Python\nbuild/\ndevelop-eggs/\ndist/\ndownloads/\neggs/\n.eggs/\nlib/\nlib64/\nparts/\nsdist/\nvar/\nwheels/\n*.egg-info/\n.installed.cfg\n*.egg\nMANIFEST\n\n# PyInstaller\n#  Usually these files are written by a python script from a template\n#  before PyInstaller builds the exe, so as to inject date/other infos into it.\n*.manifest\n*.spec\n\n# Installer logs\npip-log.txt\npip-delete-this-directory.txt\n\n# Unit test / coverage reports\nhtmlcov/\n.tox/\n.coverage\n.coverage.*\n.cache\nnosetests.xml\ncoverage.xml\n*.cover\n.hypothesis/\n.pytest_cache/\n\n# Translations\n*.mo\n*.pot\n\n# Django stuff:\n*.log\nlocal_settings.py\ndb.sqlite3\n\n# Flask stuff:\ninstance/\n.webassets-cache\n\n# Scrapy stuff:\n.scrapy\n\n# Sphinx documentation\ndocs/_build/\n\n# PyBuilder\ntarget/\n\n# Jupyter Notebook\n.ipynb_checkpoints\n\n# pyenv\n.python-version\n\n# celery beat schedule file\ncelerybeat-schedule\n\n# SageMath parsed files\n*.sage.py\n\n# Environments\n.env\n.venv\nenv/\nvenv/\nENV/\nenv.bak/\nvenv.bak/\n\n# Spyder project settings\n.spyderproject\n.spyproject\n\n# Rope project settings\n.ropeproject\n\n# mkdocs documentation\n/site\n\n# mypy\n.mypy_cache/\n"
  },
  {
    "path": "server/atm_server/__init__.py",
    "content": "import os\n\nSERVER_ROOT = os.path.dirname(os.path.abspath(os.path.join(__file__, '..')))\n\nfrom atm_server.cli import cli"
  },
  {
    "path": "server/atm_server/api.py",
    "content": "import os\nimport copy\nimport logging\nimport yaml\nimport json\n\nfrom multiprocessing import Process\nfrom flask import request, jsonify, Blueprint, current_app, Response\nfrom werkzeug.utils import secure_filename\nfrom sqlalchemy.exc import InvalidRequestError\n\nfrom atm.enter_data import enter_data, create_dataset\nfrom atm.constants import ClassifierStatus, RunStatus, PartitionStatus\nfrom atm.config import load_config\n\nfrom .utils import flaskJSONEnCoder\nfrom .error import ApiError\nfrom .db import fetch_entity, summarize_classifiers, fetch_dataset_path, get_db, summarize_datarun, \\\n    fetch_classifiers, fetch_hyperpartitions\nfrom atm_server.atm_helper import start_worker, stop_worker, work, get_datarun_steps_info, new_datarun, \\\n    maybe_create_datarun_configs, update_datarun_method_config, load_datarun_method_config, datarun_config, load_datarun_config,\\\n    load_datarun_config_dict\nfrom recommender.predict_dataset import Recommender\n\napi = Blueprint('api', __name__)\n\nlogger = logging.getLogger('atm_vis')\n\n\ndef allowed_file(filename):\n    \"\"\"\n    Checks if filename ends with an allowed file extension.\n    See: http://flask.pocoo.org/docs/0.12/patterns/fileuploads/\n    \"\"\"\n    return '.' in filename and \\\n           filename.rsplit('.', 1)[1].lower() in current_app.config['ALLOWED_EXTENSIONS']\n\n\n@api.errorhandler(ApiError)\ndef handle_invalid_usage(error):\n    # response = jsonify(error.to_dict())\n    # response.status_code = error.status_code\n    logging.exception(error)\n    response = jsonify({\"error\":str(error)})\n    response.status_code = 500\n    return response\n\n@api.errorhandler(InvalidRequestError)\ndef handle_db_request_error(error):\n    logging.exception(error)\n    print(error)\n    response = jsonify({\"error\":str(error)})\n    response.status_code = 500\n    return response\n\n\n# inject a more powerful jsonEncoder\napi.json_encoder = flaskJSONEnCoder\n\n\n# Wrap the return as a json response\ndef fetch_entity_as_json(*args, **kwargs):\n    return jsonify(fetch_entity(*args, **kwargs))\n\n\n# def read_file_in_chunks(file_path, chunk_size):\n\n\n######################\n# API Starts here\n######################\n\n\n@api.route('/datasets', methods=['GET'])\ndef get_datasets():\n    \"\"\"Fetch the info of all datasets\"\"\"\n    return fetch_entity_as_json('Dataset')\n\n\n@api.route('/datasets/<int:dataset_id>', methods=['GET'])\ndef get_dataset(dataset_id):\n    \"\"\"Fetch the info of a dataset by id\"\"\"\n    return fetch_entity_as_json('Dataset', {'id': dataset_id}, True)\n\n\n@api.route('/dataset_file/<int:dataset_id>', methods=['GET'])\ndef get_dataset_file(dataset_id):\n    \"\"\"Fetch the dataset file by id\"\"\"\n    train = request.args.get('train', True, type=bool)\n    dataset_path = fetch_dataset_path(dataset_id, train)\n\n    def read_in_chunks(chunk_size=1024):\n        f = open(dataset_path, 'r')\n        while True:\n            data = f.read(chunk_size)\n            if not data:\n                break\n            yield data\n        f.close()\n    return Response(read_in_chunks(), mimetype='text/csv')\n\n\n@api.route('/dataruns', methods=['GET'])\ndef get_dataruns():\n    \"\"\"\n    Fetch the info of dataruns. A query parameter of dataset_id is supported.\n    E.g.: /api/dataruns?dataset_id=1\n    \"\"\"\n    dataset_id = request.args.get('dataset_id', None, type=int)\n    return fetch_entity_as_json('Datarun', {'dataset_id': dataset_id})\n\n\n@api.route('/dataruns/<int:datarun_id>', methods=['GET'])\ndef get_datarun(datarun_id):\n    \"\"\"Fetch the summary of a datarun by id\"\"\"\n    return fetch_entity_as_json('Datarun', {'id': datarun_id}, True)\n\n\n@api.route('/datarun_summary/<int:datarun_id>', methods=['GET'])\ndef get_datarun_summary(datarun_id):\n    \"\"\"Fetch the summary of a datarun by id\"\"\"\n    classifier_start = request.args.get('classifier_start', None, type=int)\n    classifier_end = request.args.get('classifier_end', None, type=int)\n    return jsonify(summarize_datarun(datarun_id, classifier_start, classifier_end))\n\n\n@api.route('/hyperpartitions', methods=['GET'])\ndef get_hyperpartitions():\n    \"\"\"\n    Fetch the info of hyperpartitions.\n    E.g.: /api/hyperpartitions?dataset_id=1&datarun_id=1\n    \"\"\"\n    dataset_id = request.args.get('dataset_id', None, type=int)\n    datarun_id = request.args.get('datarun_id', None, type=int)\n    nice = request.args.get('nice', True, type=bool)\n    return jsonify(fetch_hyperpartitions(dataset_id=dataset_id, datarun_id=datarun_id, nice=nice))\n\n\n@api.route('/hyperpartitions/<int:hyperpartition_id>', methods=['GET'])\ndef get_hyperpartition(hyperpartition_id):\n    \"\"\"Fetch the info of a hyperpartition by id\"\"\"\n    nice = request.args.get('nice', True, type=bool)\n    return jsonify(fetch_hyperpartitions(hyperpartition_id, nice=nice)[0])\n\n\n@api.route('/classifiers', methods=['GET'])\ndef get_classifiers():\n    \"\"\"\n    Fetch the info of classifiers.\n    E.g.: /api/classifiers?datarun_id=1&hyperpartition_id=1\n    \"\"\"\n    datarun_id = request.args.get('datarun_id', None, type=int)\n    hyperpartition_id = request.args.get('hyperpartition_id', None, type=int)\n    status = request.args.get('status', ClassifierStatus.COMPLETE, type=str)\n    # sort_by_score = request.args.get('sort_by_score', False, type=bool)\n    nice = request.args.get('nice', True, type=bool)\n    return jsonify(fetch_classifiers(datarun_id=datarun_id, hyperpartition_id=hyperpartition_id,\n                                     status=status, nice=nice))\n\n    # return fetch_entity_as_json('Classifier', {'datarun_id': datarun_id,\n    #                                            'hyperpartition_id': hyperpartition_id})\n\n\n@api.route('/classifiers/<int:classifier_id>', methods=['GET'])\ndef get_classifier(classifier_id):\n    \"\"\"Fetch the info of a classifier by id\"\"\"\n    nice = request.args.get('nice', True, type=bool)\n    return jsonify(fetch_classifiers(classifier_id, nice=nice)[0])\n    # return fetch_entity_as_json('Classifier', {'id': classifier_id}, True)\n\n\n@api.route('/classifier_summary', methods=['GET'])\ndef get_classifier_summary():\n    \"\"\"\n    Summarize the classifiers as a csv.\n    For the fields in the csv, see `atm_server.db:summarize_classifiers` for details.\n    E.g.: /api/classifier_summary?datarun_id=1\n    \"\"\"\n    dataset_id = request.args.get('datarset_id', None, type=int)\n    datarun_id = request.args.get('datarun_id', None, type=int)\n    hyperpartition_id = request.args.get('hyperpartition_id', None, type=int)\n    method = request.args.get('method', None, type=str)\n    csv_data = summarize_classifiers(dataset_id, datarun_id, hyperpartition_id=hyperpartition_id, method=method)\n\n    def generate():\n        for row in csv_data:\n            yield ','.join(row) + '\\n'\n    return Response(generate(), mimetype='text/csv')\n\n\n@api.route('/datarun_steps_scores/<int:datarun_id>', methods=['GET'])\ndef get_datarun_steps_scores(datarun_id):\n    \"\"\"\n        Get the scores of the hyperpartitions/method in each step.\n        Query arameters:\n            classifier_start: only return the scores of and after the `classifier_start` th classifier\n            classifier_end: only return the scores before the `classifier_end` th classifier,\n                Note that :classifier_start and :classifier_end are not ids, they starts from 1.\n                (This is because the caller may not know the classifier ids of the datarun)\n            nice: A flag for return nice format result\n    :param datarun_id: the id of the datarun\n    :return:\n        if nice is False,\n        [\n            {\"1\": 0.2, \"2\": 0.3, ...},\n            ...\n        ]\n        if nice is True,\n        [\n            {\n                \"knn\": [0.2, 0.3],\n                \"logreg\": [0.1],\n                ...\n            },\n            ...\n        ]\n    \"\"\"\n    classifier_start = request.args.get('classifier_start', None, type=int)\n    classifier_end = request.args.get('classifier_end', None, type=int)\n    nice = request.args.get('nice', 0, type=int)\n    scores_of_steps = get_datarun_steps_info(datarun_id, classifier_start, classifier_end, nice)\n    return jsonify(scores_of_steps)\n\n\n# route to post a new CSV file and create a datarun with enter_data\n@api.route('/enter_data', methods=['POST'])\ndef post_enter_data():\n    \"\"\"\n    Deprecated. Use post_new_dataset and post_new_datarun\n    Receives and saves a CSV file, after which it executes the enter_data function.\n    See: http://flask.pocoo.org/docs/0.12/patterns/fileuploads/\n    \"\"\"\n    if 'file' not in request.files:\n        raise ApiError('No file part', status_code=400)\n\n    file = request.files['file']\n\n    # if user does not select file, browser also submits an empty part without filename\n    if file.filename == '':\n        raise ApiError('Empty file part', status_code=400)\n    if file and allowed_file(file.filename):\n        filename = secure_filename(file.filename)\n        rel_filepath = os.path.join(current_app.config['UPLOAD_FOLDER'], filename)\n        abs_filepath = os.path.abspath(rel_filepath)\n\n        if not os.path.exists(current_app.config['UPLOAD_FOLDER']):\n            os.makedirs(current_app.config['UPLOAD_FOLDER'])\n        if os.path.exists(abs_filepath):\n            file_name, file_extension = os.path.splitext(abs_filepath)\n            path_temp = file_name + '_%d' + file_extension\n            count = 2\n            while os.path.exists(abs_filepath):\n                abs_filepath = path_temp % count\n                count += 1\n                # Ugly hack to prevent dead loop\n                if count > 100:\n                    raise ValueError('The saved data file renamed to over 100, please rename the file and upload.')\n            logger.warning('Filename %s already exists, renamed and saved to %s' % (rel_filepath, abs_filepath))\n\n        file.save(abs_filepath)\n\n        run_conf = current_app.config['RUN_CONF']\n        sql_conf = current_app.config['SQL_CONF']\n        aws_conf = current_app.config['AWS_CONF']\n        run_per_partition = current_app.config['RUN_PER_PARTITION']\n        # we need to set a customized train_path but without modifying the\n        # global run_conf object, so we deepcopy the run_conf object\n\n        upload_run_conf = copy.deepcopy(run_conf)\n        upload_run_conf.train_path = abs_filepath\n\n        datarun_id = enter_data(sql_conf, upload_run_conf, aws_conf, run_per_partition)\n\n        return jsonify({'success': True, 'filename': os.path.split(abs_filepath)[1], 'id': datarun_id})\n\n\n# route to post a new CSV file and create a datarun with enter_data\n@api.route('/new_dataset', methods=['POST'])\ndef post_new_dataset():\n    \"\"\"\n    Receives and saves a CSV file, and create a dataset entry in the db\n    \"\"\"\n    if 'file' not in request.files:\n        raise ApiError('No file part', status_code=400)\n\n    file = request.files['file']\n\n    # if user does not select file, browser also submits an empty part without filename\n    if file.filename == '':\n        raise ApiError('Empty file part', status_code=400)\n    if file and allowed_file(file.filename):\n        filename = secure_filename(file.filename)\n        rel_filepath = os.path.join(current_app.config['UPLOAD_FOLDER'], filename)\n        abs_filepath = os.path.abspath(rel_filepath)\n\n        if not os.path.exists(current_app.config['UPLOAD_FOLDER']):\n            os.makedirs(current_app.config['UPLOAD_FOLDER'])\n        if os.path.exists(abs_filepath):\n            file_name, file_extension = os.path.splitext(abs_filepath)\n            path_temp = file_name + '_%d' + file_extension\n            count = 2\n            while os.path.exists(abs_filepath):\n                abs_filepath = path_temp % count\n                count += 1\n                # Ugly hack to prevent dead loop\n                if count > 100:\n                    raise ValueError('The saved data file renamed to over 100, please rename the file and upload.')\n            logger.warning('Filename %s already exists, renamed and saved to %s' % (rel_filepath, abs_filepath))\n\n        file.save(abs_filepath)\n\n        run_conf = current_app.config['RUN_CONF']\n        aws_conf = current_app.config['AWS_CONF']\n        # we need to set a customized train_path but without modifying the\n        # global run_conf object, so we deepcopy the run_conf object\n\n        upload_run_conf = copy.deepcopy(run_conf)\n        upload_run_conf.train_path = abs_filepath\n\n        dataset = create_dataset(get_db(), upload_run_conf, aws_conf)\n\n        return jsonify({'success': True, 'filename': os.path.split(abs_filepath)[1], 'id': dataset.id})\n\n\n# route to post a new CSV file and create a datarun with enter_data\n@api.route('/new_datarun/<int:dataset_id>', methods=['POST'])\ndef post_new_datarun(dataset_id):\n    \"\"\"\n    For a dataset (specified by the dataset_id), create a datarun with the given configuration.\n    \"\"\"\n    if 'configs' not in request.form:\n        raise ApiError('No configs in the post form!', status_code=400)\n\n    configs = request.form['configs']\n    # print(configs)\n    configs = json.loads(configs)\n\n    run_conf = current_app.config['RUN_CONF']\n    run_per_partition = current_app.config['RUN_PER_PARTITION']\n    # we need to set a customized train_path but without modifying the\n    # global run_conf object, so we deepcopy the run_conf object\n\n    upload_run_conf = copy.deepcopy(run_conf)\n    for key, val in configs.items():\n        setattr(upload_run_conf, key, val)\n    upload_run_conf.dataset_id = dataset_id\n    db = get_db()\n    datarun_id = new_datarun(db, upload_run_conf, run_per_partition)\n    maybe_create_datarun_configs(datarun_id)\n    return jsonify({'success': True, 'id': datarun_id})\n\n\n@api.route('/simple_worker', methods=['GET', 'POST'])\ndef dispatch_simple_worker():\n    \"\"\"\n    Executes the worker.py script inside a virtualenv and returns stdout and stderr\n    as response.\n    Note: It currently only works if rest_api_server.py file is in the same\n    directory as the worker.py script.\n    \"\"\"\n\n    # parent_end, child_end = Pipe()\n    p = Process(target=work)\n\n    p.start()\n    return jsonify({'submitted': True})\n    # if block:\n    #     received = parent_end.recv()\n    #     p.join()\n    #\n    #     return jsonify(received)\n\n\n# route to activate a single worker\n@api.route('/start_worker/<int:datarun_id>', methods=['GET', 'POST'])\ndef dispatch_single_worker(datarun_id):\n    \"\"\"\n    Dispatch a worker for a datarun (if the datarun is not complete or already running)\n    Return the current status of the datarun\n    \"\"\"\n    start_worker(datarun_id)\n    # db = get_db()\n    # datarun = db.get_datarun(datarun_id)\n    return jsonify({'status': RunStatus.RUNNING})\n\n\n# route to activate a single worker\n@api.route('/stop_worker/<int:datarun_id>', methods=['GET', 'POST'])\ndef stop_single_worker(datarun_id):\n    \"\"\"\n    Stop a worker by the given datarun_id (or do nothing if no worker found for the datarun)\n    Return the status of the datarun\n    \"\"\"\n    db = get_db()\n    stop = stop_worker(datarun_id)\n    datarun = db.get_datarun(datarun_id)\n    return jsonify({'status': datarun.status, 'success': stop})\n\n\n@api.route('/configs', methods=['GET','POST'])\ndef configs_info():\n    \"\"\"Fetch or set the info of run configs\"\"\"\n    datarun_id = request.args.get('datarun_id', None, type=int)\n    result = {'success': False}\n    # with datarun_config(datarun_id):\n    # run_path = current_app.config['run_config']\n    if request.method == 'GET':\n        try:\n            config = load_datarun_config_dict(datarun_id)\n        except FileNotFoundError as e:\n            raise ApiError(e, 404)\n        return jsonify(config)\n        # with open(run_path) as f:\n        #     run_args = yaml.load(f)\n        #     result.update(run_args)\n        #     result.update({'success':True})\n    elif request.method == 'POST':\n        run_path = current_app.config['RUN_CONFIG']\n        # Get local set configs\n        run_args = {}\n        with open(run_path) as f:\n            run_args = yaml.load(f)\n        # Update Local set configs And Save in the default file.\n        configs = json.loads(request.form['configs'])\n        run_args.update(configs)\n        with open(run_path,'w') as f:\n            yaml.dump(run_args,f)\n        # Load Config Again. And Update Current APP Configs.\n        config = {'run_config':run_path}\n        # Load ATM confs\n        _, run_conf, _, _ = load_config(**config)\n        current_app.config.update({'RUN_CONF': run_conf})\n        result['success']=True\n    return jsonify(result)\n\n\n@api.route('/hyperparameters/<int:datarun_id>', methods=['GET', 'POST'])\ndef update_hyperparameters(datarun_id):\n    result = {'success': False}\n    method = request.args.get('method', None, type=str)\n\n    if request.method == 'GET':\n        return jsonify(load_datarun_method_config(datarun_id, method))\n    else:\n        hp_updates = request.get_json()\n        if hp_updates is None:\n            raise ApiError('Empty or invalid json data!', 400)\n        if method is not None:\n            try:\n                update_datarun_method_config(datarun_id, method, hp_updates)\n            except ValueError as e:\n                raise ApiError(e, 400)\n        else:\n            for method, update in hp_updates.items():\n                try:\n                    update_datarun_method_config(datarun_id, method, update)\n                except ValueError as e:\n                    raise ApiError(e, 400)\n    result['success'] = True\n    return jsonify(result)\n\n\n@api.route('/disable_hyperpartition', methods=['POST'])\ndef post_disable_hyperpartition():\n    db = get_db()\n    hyperpartition_ids = request.get_json()\n    # print(hyperpartition_ids)\n\n    if hyperpartition_ids is None:\n        raise ApiError('Empty or invalid json data!', 400)\n    for _id in hyperpartition_ids:\n        db.mark_hyperpartition_errored(_id)\n    return jsonify({'success': True})\n\n\n@api.route('/enable_hyperpartition', methods=['POST'])\ndef post_enable_hyperpartition():\n    db = get_db()\n    hyperpartition_ids = request.get_json()\n    # print(hyperpartition_ids)\n    if hyperpartition_ids is None:\n        raise ApiError('Empty or invalid json data!', 400)\n    for _id in hyperpartition_ids:\n        hyperpartition = db.get_hyperpartition(_id)\n        hyperpartition.status = PartitionStatus.INCOMPLETE\n    db.session.commit()\n    return jsonify({'success': True})\n\n\n@api.route('/update_datarun_config/<int:datarun_id>', methods=['POST'])\ndef post_update_datarun_config(datarun_id):\n    \"\"\"\n    Update the configuration of a datarun_id\n    Payload is a json similar to the following (all fields are optional):\n    {\n        configs: {  # Something similar to the run.yaml, fields inside configs are optional\n            methods: ['ada', ...],  # A list of method strings representing the valid methods\n            ...\n        },\n        hyperpartitions: [102, 103, ...],  # A list of the ids of that are active hyperpartitions\n        method_configs: {\n            'ada': {  # name of the method that you want to update config\n                \"n_estimators\": {  # name of the hyperparameter that you want to change range or value\n                    \"type\": \"int\",  # the type should be included to avoid invalid input\n                    \"range\": [25, 500]\n                },\n                ...\n            },\n            ...\n        }\n    }\n    \"\"\"\n\n    update_json = request.get_json()\n    with datarun_config(datarun_id) as run_config:\n\n        if 'configs' in update_json:\n            configs = update_json['configs']\n            run_config.update_run_config(configs)\n        if 'hyperpartitions' in update_json:\n            hyperpartition_ids = update_json['hyperpartitions']\n            db = get_db()\n            try:\n                query = db.session.query(db.Hyperpartition)\n                query = query.filter(db.Hyperpartition.id.in_(hyperpartition_ids))\n                query = query.filter(db.Hyperpartition.status != PartitionStatus.GRIDDING_DONE)\n                query.update({db.Hyperpartition.status: PartitionStatus.INCOMPLETE}, synchronize_session=False)\n\n                query = db.session.query(db.Hyperpartition)\n                query = query.filter(db.Hyperpartition.id.notin_(hyperpartition_ids))\n                query = query.filter(db.Hyperpartition.status != PartitionStatus.GRIDDING_DONE)\n                query.update({db.Hyperpartition.status: PartitionStatus.ERRORED}, synchronize_session=False)\n\n                db.session.commit()\n            except:\n                db.session.rollback()\n                raise\n\n        if 'method_configs' in update_json:\n            method_configs = update_json['method_configs']\n            for method, hp_update in method_configs.items():\n                try:\n                    update_datarun_method_config(datarun_id, method, hp_update)\n                except ValueError as e:\n                    raise ApiError(e, 400)\n\n    return jsonify({'success': True})\n\n\n@api.route('/postClickEvent', methods=['POST'])\ndef post_click_event():\n    \"\"\"\n    A click event is a json file.\n    includes\n    name:\n    clickevent:\n    [{  type\n        description\n        time\n    }]\n    ip\n    \"\"\"\n    filename = './atm/clickevent.json'\n    if not os.path.exists(filename):\n        with open(filename, 'w') as f:\n            json.dump([], f)\n    configs = []\n    with open(filename, 'r') as f:\n        configs = json.load(f)\n    click_event_json = request.get_json()\n    click_event_json[\"ip\"]=request.remote_addr\n    configs.append(click_event_json)\n    with open(filename, 'w') as f:\n        json.dump(configs, f)\n    return jsonify({'success': True})\n\n\n@api.route('/getRecommendation/<int:dataset_id>', methods=['GET'])\ndef getRecommendation(dataset_id):\n    \"\"\"Get Recommendation\"\"\"\n\n    train = request.args.get('train', True, type=bool)\n    dataset_path = fetch_dataset_path(dataset_id, train)\n    rec = Recommender(current_app.config['DATASET_META_DIR'])\n    result = rec.predict_dataset(dataset_path,dataset_id)\n    if len(result)>=3:\n        result = result[0:3]\n    return jsonify({'result':result})\n"
  },
  {
    "path": "server/atm_server/atm_helper/__init__.py",
    "content": "from .datarun_config import *\nfrom .worker import *\nfrom .helpers import *\n"
  },
  {
    "path": "server/atm_server/atm_helper/btb_wireup.py",
    "content": "\"\"\"\nHelper functions that wire up the atm package\n\"\"\"\n\nfrom btb.selection import UCB1, Uniform, RecentKReward, BestKReward, PureBestKVelocity, HierarchicalByAlgorithm\nimport numpy as np\n\nK_MIN = 2\n\n\ndef _selector_scores2rewards(selector, choice_scores):\n    reward_func = selector.compute_rewards\n    if isinstance(selector, BestKReward) or isinstance(selector, RecentKReward):\n        min_num_scores = min([len(s) for s in choice_scores.values()])\n        if min_num_scores < K_MIN:\n            reward_func = super(BestKReward, selector).compute_rewards\n    elif isinstance(selector, PureBestKVelocity):\n        min_num_scores = min([len(s) for s in choice_scores.values()])\n        if min_num_scores < K_MIN:\n            reward_func = super(BestKReward, selector).compute_rewards\n        else:\n            reward_func = lambda s: [1] if len(s) == min_num_scores else [0]\n    elif isinstance(selector, HierarchicalByAlgorithm):\n        raise NotImplementedError('No support for HierarchicalByAlgorithm currently')\n\n    # convert the raw scores list for each choice to a \"rewards\" list\n\n    choice_rewards = {}\n    for choice, scores in choice_scores.items():\n        # only consider choices that this object was initialized with\n        if choice not in selector.choices:\n            continue\n        choice_rewards[choice] = reward_func(scores)\n    return choice_rewards\n\n\ndef ucb_bandit_scores(choice_rewards):\n    total_pulls = max(sum(len(r) for r in choice_rewards.values()), 1)\n\n    scores = {}\n\n    for choice, rewards in choice_rewards.items():\n        # count the number of pulls for this choice, with a floor of 1\n        choice_pulls = max(len(rewards), 1)\n\n        # compute the 2-stdev error for the estimate of this choice\n        error = np.sqrt(2.0 * np.log(total_pulls) / choice_pulls)\n\n        # compute the average reward, or default to 0\n        avg_reward = np.mean(rewards) if len(rewards) else 0\n\n        # this choice's score is the upper bound of what we think is possible\n        scores[choice] = avg_reward + error\n    return scores\n\n\ndef selector_bandit_scores(selector, choice_scores):\n    n_choices = len(choice_scores)\n    if isinstance(selector, Uniform):\n        return {choice: 1 / n_choices for choice in choice_scores.keys()}\n    elif isinstance(selector, UCB1):\n        choice_rewards = _selector_scores2rewards(selector, choice_scores)\n        return ucb_bandit_scores(choice_rewards)\n    else:\n        raise NotImplementedError(\"No implementation for class %s\" % str(type(selector)))\n"
  },
  {
    "path": "server/atm_server/atm_helper/datarun_config.py",
    "content": "import os\nimport shutil\nimport json\nimport yaml\nimport copy\nimport warnings\nfrom flask import current_app\nfrom sqlalchemy.exc import IntegrityError\nimport atm\nfrom atm.method import Method, HYPERPARAMETER_TYPES, List\nfrom atm.utilities import object_to_base_64\nfrom atm.constants import METHODS_MAP, PartitionStatus\nfrom atm.config import RunConfig\n\nfrom atm_server.db import get_db\nfrom atm_server.error import ApiError\n\n\n# DATARUN_METHOD_CONFIG_DIR = 'atm/run_config'\n\nDEFAULT_METHOD_PATH = atm.constants.METHOD_PATH\n\n\nclass NewMethod(Method):\n\n    def __init__(self, method, method_path):\n        if method in METHODS_MAP:\n            # if the configured method is a code, look up the path to its json\n            config_path = os.path.join(method_path, METHODS_MAP[method])\n        else:\n            # otherwise, it must be a path to a file\n            config_path = method\n\n        with open(config_path) as f:\n            config = json.load(f)\n\n        self.name = config['name']\n        self.root_params = config['root_hyperparameters']\n        self.conditions = config['conditional_hyperparameters']\n        self.class_path = config['class']\n\n        # create hyperparameters from the parameter config\n        self.parameters = {}\n        for k, v in list(config['hyperparameters'].items()):\n            param_type = HYPERPARAMETER_TYPES[v['type']]\n            self.parameters[k] = param_type(name=k, **v)\n\n        # List hyperparameters are special. These are replaced in the\n        # CPT with a size hyperparameter and sets of element hyperparameters\n        # conditioned on the size.\n        for name, param in list(self.parameters.items()):\n            if type(param) == List:\n                elements, conditions = param.get_elements()\n                for e in elements:\n                    self.parameters[e] = param.element\n\n                # add the size parameter, remove the list parameter\n                self.parameters[param.length.name] = param.length\n                del self.parameters[param.name]\n\n                # if this is a root param, replace its name with the new size\n                # name in the root params list\n                if param.name in self.root_params:\n                    self.root_params.append(param.length.name)\n                    self.root_params.remove(param.name)\n\n                # if this is a conditional param, replace it there instead\n                for var, cond in list(self.conditions.items()):\n                    for val, deps in list(cond.items()):\n                        if param.name in deps:\n                            deps.append(param.length.name)\n                            deps.remove(param.name)\n                            self.conditions[var][val] = deps\n\n                # finally, add all the potential sets of list elements as\n                # conditions of the list's size\n                self.conditions[param.length.name] = conditions\n\n\ndef get_datarun_config_path(datarun_id, method=None):\n    config_path = os.path.join(current_app.config['DATARUN_CONFIG_DIR'], str(datarun_id))\n    if method is None:\n        return config_path\n    if method in METHODS_MAP:\n        config_path = os.path.join(config_path, METHODS_MAP[method])\n        return config_path\n    raise ValueError('Unknown method ', method)\n\n\ndef maybe_create_datarun_configs(datarun_id):\n    config_path = get_datarun_config_path(datarun_id)\n    if not os.path.exists(config_path):\n        # Copy default configuration\n        shutil.copytree(DEFAULT_METHOD_PATH, config_path)\n        # Copy default run configuration\n        shutil.copy(current_app.config['RUN_CONFIG'], config_path)\n\n\ndef load_datarun_config_dict(datarun_id=None):\n    \"\"\"\n    Load the run config (i.e., run.yaml) of a datarun.\n    If datarun_id is None, load the default run config (i.e., config/run.yaml)\n    Return a dict\n    \"\"\"\n    if datarun_id is None:\n        config_path = current_app.config['RUN_CONFIG']\n    else:\n        config_path = get_datarun_config_path(datarun_id)\n        config_path = os.path.join(config_path, 'run.yaml')\n    run_args = {}\n    with open(config_path) as f:\n        run_args = yaml.load(f)\n    return run_args\n\n\ndef load_datarun_config(datarun_id=None):\n    \"\"\"\n    Load the run config (i.e., run.yaml) of a datarun.\n    If datarun_id is None, load the default run config (i.e., config/run.yaml)\n    Return a RunConfig Object\n    \"\"\"\n    run_args = load_datarun_config_dict(datarun_id)\n\n    if datarun_id is not None:\n        # The values in db might be different\n        db = get_db()\n        datarun = db.get_datarun(datarun_id)\n        run_args.update({key: getattr(datarun, key) for key in RunConfig.DEFAULTS if hasattr(datarun, key)})\n\n    run_conf = RunConfig(**run_args)\n    return run_conf\n\n\ndef update_datarun_config(datarun_id, config):\n    \"\"\"\n    Update the \"run_config\" of a datarun.\n    Note: new methods will not be added (If they are not exist in the config when the datarun is created)\n    :param datarun_id:\n    :param config:\n    \"\"\"\n\n    # Now update the fields in db so that configs really changes\n    db = get_db()\n    try:\n        # First update the dataruns table\n        datarun = db.get_datarun(datarun_id)\n        # describe the datarun by its tuner and selector\n        myconfig = copy.deepcopy(config)\n        tuner = myconfig.get(\"tuner\", datarun.tuner)\n        selector = myconfig.get(\"selector\", datarun.selector)\n        myconfig[\"description\"] = '__'.join([tuner, selector])\n        if \"score_target\" in myconfig:\n            myconfig[\"score_target\"] = myconfig[\"score_target\"] + '_judgment_metric'\n        for key, val in myconfig.items():\n            if val is None:\n                continue\n            if hasattr(datarun, key):\n                setattr(datarun, key, val)\n        db.session.commit()\n    except IntegrityError as e:\n        db.session.rollback()\n        raise ApiError(e, 400)\n    except:\n        db.session.rollback()\n        raise\n\n    if 'methods' in config:\n\n        try:\n            # Then update the hyperpartitions\n            methods = set(config['methods'])\n            query = db.session.query(db.Hyperpartition)\n            query = query.filter(db.Hyperpartition.datarun_id == datarun_id)\n            query = query.filter(db.Hyperpartition.status != PartitionStatus.GRIDDING_DONE)\n            query = query.filter(db.Hyperpartition.method.notin_(methods))\n            query.update({db.Hyperpartition.status: PartitionStatus.ERRORED}, synchronize_session=False)\n\n            query = db.session.query(db.Hyperpartition)\n            query = query.filter(db.Hyperpartition.datarun_id == datarun_id)\n            query = query.filter(db.Hyperpartition.status != PartitionStatus.GRIDDING_DONE)\n            query = query.filter(db.Hyperpartition.method.in_(methods))\n            query.update({db.Hyperpartition.status: PartitionStatus.INCOMPLETE}, synchronize_session=False)\n\n            db.session.commit()\n        except IntegrityError as e:\n            db.session.rollback()\n            raise ApiError(e, 400)\n        except:\n            db.session.rollback()\n            raise\n    # Update the config file as well\n    config_path = get_datarun_config_path(datarun_id)\n    config_path = os.path.join(config_path, 'run.yaml')\n    with open(config_path, 'r') as f:\n        run_args = yaml.load(f)\n\n    run_args.update(config)\n    print(run_args)\n    with open(config_path, 'w') as f:\n        yaml.dump(run_args, f)\n    return True\n\n\ndef load_datarun_method_config(datarun_id, method=None):\n    \"\"\"\n    Load the method configs (e.g., adaboost.json) of a datarun.\n    If method is None, a dict of {method: config} will be returned\n    :param datarun_id:\n    :param method: method string (the keys of atm.constants.METHODS_MAP)\n    :return:\n    \"\"\"\n    with datarun_config(datarun_id):\n        config_path = get_datarun_config_path(datarun_id, method)\n        if method is not None:\n            with open(config_path) as f:\n                return json.load(f)\n    ret = {}\n    for method in METHODS_MAP:\n        ret[method] = load_datarun_method_config(datarun_id, method)\n    return ret\n\n\ndef save_datarun_method_config(datarun_id, method, config):\n    \"\"\"Save the config of a method of a datarun\"\"\"\n    config_path = get_datarun_config_path(datarun_id, method)\n    with open(config_path, 'w') as f:\n        json.dump(config, f)\n\n\ndef update_datarun_method_config(datarun_id, method, hyperparameter_configs):\n    \"\"\"\n    Update the config of a method of a datarun by only providing the hyperparameters.\n    This method would also do some simple legality check on the provided hyperparameters.\n    The argument hyperparameter_configs is a dict like:\n        {hp: {'type': ..., 'range': ...}})\n    \"\"\"\n    assert isinstance(hyperparameter_configs, dict)\n    config = load_datarun_method_config(datarun_id, method)\n    hyperparmeters = config['hyperparameters']\n    for hp, val in hyperparameter_configs.items():\n        if hp not in hyperparmeters:\n            warnings.warn('Trying to update unknown parameter %s for method %s' % (hp, method))\n        if val['type'] != hyperparmeters[hp]['type']:\n            raise ValueError('Hyperparameter type mismatch! Trying to update %s with type %s as type %s!' % (\n                hp, hyperparmeters[hp]['type'], val['type']))\n        hyperparmeters[hp] = val\n\n    save_datarun_method_config(datarun_id, method, config)\n\n    _method = NewMethod(method, get_datarun_config_path(datarun_id))\n    parts = _method.get_hyperpartitions()\n\n    db = get_db()\n    for part in parts:\n        # if necessary, create a new datarun for each hyperpartition.\n        # This setting is useful for debugging.\n\n        # create a new hyperpartition in the database\n        query = db.session.query(db.Hyperpartition).filter(db.Hyperpartition.datarun_id == datarun_id)\n        query = query.filter(db.Hyperpartition.method == method)\n        # We assume that the categorical and constants are fixed\n        query = query.filter(db.Hyperpartition.categorical_hyperparameters_64 == object_to_base_64(part.categoricals))\n        query = query.filter(db.Hyperpartition.constant_hyperparameters_64 == object_to_base_64(part.constants))\n        # query = query.filter(db.Hyperpartition.tunable_hyperparameters_64 != object_to_base_64(part.tunables))\n\n        hps = list(query.all())\n        if len(hps) == 1:\n            hp = hps[0]\n            hp.tunables = part.tunables\n        elif len(hps) > 1:\n            raise ValueError('Multiple hyperpartitions found!')\n    db.session.commit()\n\n\n\nclass datarun_config:\n    def __init__(self, datarun_id):\n        self.datarun_id = datarun_id\n        self.config_path = None\n        self.default_path = DEFAULT_METHOD_PATH\n        self._run_config = None\n        self._method_config = None\n\n    def __enter__(self):\n        self.config_path = get_datarun_config_path(self.datarun_id)\n        # if not os.path.exists(self.config_path):\n        maybe_create_datarun_configs(self.datarun_id)\n        # Temporarily change the path\n        atm.constants.METHOD_PATH = self.config_path\n        return self\n\n    @property\n    def run_config(self):\n        if self._run_config is None:\n            # Lazy loading\n            self._run_config = load_datarun_config(self.datarun_id)\n        return self._run_config\n\n    def update_run_config(self, config):\n        update_datarun_config(self.datarun_id, config)\n        # Reset the _run_config to None\n        self._run_config = None\n\n    def load_method_config(self, method=None):\n        return load_datarun_method_config(self.datarun_id, method)\n\n    def update_method_config(self, method, hyperparameters):\n        update_datarun_method_config(self.datarun_id, method, hyperparameters)\n\n    def __exit__(self, type, error, traceback):\n        atm.constants.METHOD_PATH = self.default_path\n"
  },
  {
    "path": "server/atm_server/atm_helper/helpers.py",
    "content": "from collections import defaultdict\nimport logging\n\nimport numpy as np\nfrom atm.worker import Worker\nfrom atm.constants import ClassifierStatus, PartitionStatus\nfrom atm.utilities import get_public_ip\nfrom atm.enter_data import create_dataset, create_datarun\nfrom atm.method import Method\n\nfrom atm_server.db import get_db\nfrom .btb_wireup import selector_bandit_scores\n\n\nlogger = logging.getLogger('atm-vis')\n\n\ndef get_datarun_steps_info(datarun_id, classifier_start=None, classifier_end=None, nice=False):\n    \"\"\"\n    Get the scores of the hyperpartitions/method in each step.\n    :param datarun_id: the id of the datarun\n    :param classifier_start: only return the scores of and after the `classifier_start` th classifier\n    :param classifier_end: only return the scores before the `classifier_end` th classifier,\n        Note that :classifier_start and :classifier_end are not ids, they starts from 1.\n        (This is because the caller may not know the classifier ids of the datarun)\n    :param nice: A flag for return nice format result\n    :return:\n        if nice is False,\n        [\n            {\"1\": 0.2, \"2\": 0.3, ...},\n            ...\n        ]\n        if nice is True,\n        [\n            {\n                \"knn\": [0.2, 0.3],\n                \"logreg\": [0.1],\n                ...\n            },\n            ...\n        ]\n    \"\"\"\n    if classifier_start is None:\n        classifier_start = -np.inf\n    if classifier_end is None:\n        classifier_end = np.inf\n    db = get_db()\n\n    datarun = db.get_datarun(datarun_id=datarun_id)\n    hyperpartitions = db.get_hyperpartitions(datarun_id=datarun_id)\n\n    # load classifiers and build scores lists\n    # make sure all hyperpartitions are present in the dict, even ones that\n    # don't have any classifiers. That way the selector can choose hyperpartitions\n    # that haven't been scored yet.\n    hyperpartition_scores = {fs.id: [] for fs in hyperpartitions}\n    classifiers = db.get_classifiers(datarun_id=datarun_id, status=ClassifierStatus.COMPLETE)\n    selected_classifiers = [c for c in classifiers if c.hyperpartition_id in hyperpartition_scores]\n    # Create a temporary worker\n    worker = Worker(db, datarun, public_ip=get_public_ip())\n    bandit_scores_of_steps = []\n    for i, c in enumerate(selected_classifiers):\n        if i >= classifier_end:\n            break\n        # the cast to float is necessary because the score is a Decimal;\n        # doing Decimal-float arithmetic throws errors later on.\n        score = float(getattr(c, datarun.score_target) or 0)\n        hyperpartition_scores[c.hyperpartition_id].append(score)\n        bandit_scores = selector_bandit_scores(worker.selector, hyperpartition_scores)\n        bandit_scores = {key: float(\"%.5f\" % val) for key, val in bandit_scores.items()}\n        if i < classifier_start:\n            continue\n        bandit_scores_of_steps.append(bandit_scores)\n    # For a nicer formatted output\n    if nice:\n        results = []\n        hp_id2method = {fs.id: fs.method for fs in hyperpartitions}\n        for bandit_scores in bandit_scores_of_steps:\n            res = defaultdict(list)\n            for hp_id, score in bandit_scores.items():\n                res[hp_id2method[hp_id]].append(score)\n            results.append(res)\n        return results\n\n    return bandit_scores_of_steps\n\n\ndef new_datarun(db, run_config, run_per_partition=False):\n    \"\"\"\n    A modification of the atm.enter_data.enter_data\n    Generate a datarun, including a dataset if necessary.\n\n    db: an instance of atm.Database.\n    run_config: all attributes necessary to initialize a Datarun, including\n        Dataset info if the dataset has not already been created.\n\n    Returns: ID of the generated datarun\n    \"\"\"\n    # connect to the database\n\n    # if the user has provided a dataset id, use that. Otherwise, create a new\n    # dataset based on the arguments we were passed.\n    # if run_config.dataset_id is None:\n    #     raise ValueError('')\n    #     # dataset = create_dataset(db, run_config, aws_config=aws_config)\n    #     # run_config.dataset_id = dataset.id\n    # else:\n    dataset = db.get_dataset(run_config.dataset_id)\n\n    method_parts = {}\n    for m in run_config.methods:\n        # enumerate all combinations of categorical variables for this method\n        method = Method(m)\n        method_parts[m] = method.get_hyperpartitions()\n        logger.info('method %s has %d hyperpartitions' %\n                    (m, len(method_parts[m])))\n\n    # create hyperpartitions and datarun(s)\n    run_ids = []\n    if not run_per_partition:\n        logger.debug('saving datarun...')\n        datarun = create_datarun(db, dataset, run_config)\n\n    logger.debug('saving hyperpartions...')\n    for method, parts in list(method_parts.items()):\n        for part in parts:\n            # if necessary, create a new datarun for each hyperpartition.\n            # This setting is useful for debugging.\n            if run_per_partition:\n                datarun = create_datarun(db, dataset, run_config)\n                run_ids.append(datarun.id)\n\n            # create a new hyperpartition in the database\n            db.create_hyperpartition(datarun_id=datarun.id,\n                                     method=method,\n                                     tunables=part.tunables,\n                                     constants=part.constants,\n                                     categoricals=part.categoricals,\n                                     status=PartitionStatus.INCOMPLETE)\n\n    logger.info('Data entry complete. Summary:')\n    logger.info('\\tDataset ID: %d' % dataset.id)\n    logger.info('\\tTraining data: %s' % dataset.train_path)\n    logger.info('\\tTest data: %s' % (dataset.test_path or 'None'))\n    if run_per_partition:\n        logger.info('\\tDatarun IDs: %s' % ', '.join(map(str, run_ids)))\n    else:\n        logger.info('\\tDatarun ID: %d' % datarun.id)\n    logger.info('\\tHyperpartition selection strategy: %s' % datarun.selector)\n    logger.info('\\tParameter tuning strategy: %s' % datarun.tuner)\n    logger.info('\\tBudget: %d (%s)' % (datarun.budget, datarun.budget_type))\n\n    return run_ids or datarun.id\n"
  },
  {
    "path": "server/atm_server/atm_helper/worker.py",
    "content": "import os\nimport sys\nimport time\nimport atexit\nfrom datetime import datetime\nimport argparse\nimport logging\nfrom io import StringIO\nfrom multiprocessing import Process\n\nimport atm\nfrom atm.worker import work as atm_work\nfrom atm.database import Database\nfrom atm.config import (add_arguments_aws_s3, add_arguments_sql,\n                        add_arguments_logging,\n                        load_config, initialize_logging)\nfrom atm.constants import RunStatus\n\nfrom atm_server.error import ApiError\nfrom atm_server.db import get_db\nfrom atm_server.cache import get_cache\nfrom .datarun_config import datarun_config\n\n\nlogger = logging.getLogger('atm_server')\nlogger.setLevel(logging.INFO)\n\n\ndef return_stdout_stderr(f):\n    \"\"\"\n    A decorator that stores the stdout and stderr during a function run.\n    :param f: a function\n    :return: a tuple of (stdout_str, stderr_str, return_of_f)\n    \"\"\"\n    def inner(*args, **kwargs):\n        stdout_p = StringIO()\n        stderr_p = StringIO()\n        sys.stdout = stdout_p\n        sys.stderr = stderr_p\n\n        try:\n            ret = f(*args, **kwargs)\n        except:\n            ret = None\n\n        sys.stdout = sys.__stdout__\n        sys.stderr = sys.__stderr__\n        stdout = stdout_p.getvalue()\n        stderr = stderr_p.getvalue()\n        stdout_p.close()\n        stderr_p.close()\n        return stdout, stderr, ret\n\n    return inner\n\n\n# @return_stdout_stderr\ndef work(datarun_id, args=None):\n    \"\"\"\n    A copy of the code in atm/scripts/worker.py\n    A call to this function will start and run a simple worker\n    \"\"\"\n    _logger = logging.getLogger('atm_server.worker:work')\n    _logger.setLevel(logging.DEBUG)\n    fh = logging.FileHandler('logs/works.log')\n    fmt = '%(asctime)-12s %(name)s - %(levelname)s  %(message)s'\n    fh.setFormatter(logging.Formatter(fmt))\n    _logger.addHandler(fh)\n    parser = argparse.ArgumentParser(description='Add more classifiers to database')\n    add_arguments_sql(parser)\n    add_arguments_aws_s3(parser)\n    add_arguments_logging(parser)\n\n    # add worker-specific arguments\n    parser.add_argument('--cloud-mode', action='store_true', default=False,\n                        help='Whether to run this worker in cloud mode')\n    parser.add_argument('--time', help='Number of seconds to run worker', type=int)\n    parser.add_argument('--choose-randomly', action='store_true',\n                        help='Choose dataruns to work on randomly (default = sequential order)')\n    parser.add_argument('--no-save', dest='save_files', default=True,\n                        action='store_const', const=False,\n                        help=\"don't save models and metrics at all\")\n\n    # parse arguments and load configuration\n    if args is None:\n        args = []\n    _args = parser.parse_args(args)\n\n    # default logging config is different if initialized from the command line\n    if _args.log_config is None:\n        _args.log_config = os.path.join(atm.PROJECT_ROOT,\n                                        'config/templates/log-script.yaml')\n\n    sql_config, _, aws_config, log_config = load_config(**vars(_args))\n    initialize_logging(log_config)\n\n    # let's go\n    _logger.warning('Worker started!')\n    with datarun_config(datarun_id) as config:\n        _logger.warning('Using configs from ' + config.config_path)\n        db = Database(**vars(sql_config))\n        try:\n            atm_work(db=db,\n                     datarun_ids=[datarun_id],\n                     choose_randomly=_args.choose_randomly,\n                     save_files=_args.save_files,\n                     cloud_mode=_args.cloud_mode,\n                     aws_config=aws_config,\n                     log_config=log_config,\n                     total_time=_args.time,\n                     wait=False)\n        except Exception as e:\n            _logger.error(e)\n            mark_running_datarun_pending(db, datarun_id)\n            raise e\n    _logger.warning('Worker exited.')\n\n\ndef dispatch_worker(datarun_id):\n    \"\"\"\n    dispatch a worker process for a single datarun by calling the work function\n    :param datarun_id: the id of the datarun\n    :return: Return a handle of the process\n    \"\"\"\n    # args = ['--dataruns', str(datarun_id)]\n    p = Process(target=work, args=(datarun_id, ))\n    p.start()\n\n    def kill_it():\n        if p is not None and p.is_alive():\n            p.terminate()\n    atexit.register(kill_it)\n    return p\n    # Do nothing if the db is already running or complete\n\n\ndef monitor_dispatch_worker(datarun_id):\n    # The function is a wrapper of the dispatch worker, which tries to terminate the worker process if needed\n    # It create another process that checks the cache and determine if we should terminate the worker process\n    p_inner = dispatch_worker(datarun_id)\n    logger.warning(\"Worker process (PID: %d) started\" % p_inner.pid)\n    if p_inner is None:\n        logger.error(\"Cannot create worker process!\")\n        return\n    register_worker_process(p_inner, datarun_id)\n    # key = datarun_id2key(datarun_id)\n    # cache = get_cache()\n    while True:\n        # Check start\n        if not p_inner.is_alive():\n            # Clean the cache\n            logger.warning(\"Process (PID: %d) exited.\" % p_inner.pid)\n            clean_worker_cache(datarun_id)\n            # db = get_db()\n            # datarun = db.get_datarun(datarun_id)\n            # if datarun.status == RunStatus.RUNNING:\n            #     # The datarun is still running\n            #     mark_datarun_pending(db, datarun_id)\n            return\n        if should_worker_stop(datarun_id):\n            while True:\n                p_inner.terminate()\n                # terminate() only sends the signal, wait a while to check\n                time.sleep(0.01)\n                if p_inner.is_alive():\n                    logger.warning(\"Failed to terminate process (PID: %d) after 0.01s\" % p_inner.pid)\n                    logger.warning(\"Retrying after 1s...\")\n                    time.sleep(1)\n                else:\n                    break\n            # Since we have break the run, we need to update the datarun status\n            # Note that the run may or may not be complete, due to the delay in terminating\n            # db = get_db()\n            # datarun = db.get_datarun(datarun_id)\n            # if datarun.status == RunStatus.RUNNING:\n            #     # The datarun is still running\n            #     mark_datarun_pending(db,datarun_id)\n            logger.warning(\"Process (PID: %d) terminated (exitcode: %d)\" % (p_inner.pid, p_inner.exitcode))\n            clean_worker_cache(datarun_id)\n            return\n        # Sleep for a while\n        time.sleep(0.001)\n\n\ndef start_worker(datarun_id):\n    \"\"\"\n    A function similar to dispatch worker, but provides more comprehensive controls of the worker\n    :param datarun_id: the id of the datarun\n    :return: Return a handle of the process\n    \"\"\"\n    os.setpgrp()\n    db = get_db()\n    datarun = db.get_datarun(datarun_id)\n    if datarun is None:\n        raise ApiError(\"No datarun found with the given id: %d\" % datarun_id, 404)\n    if datarun.status != RunStatus.PENDING:\n        # Do nothing if the datarun is already running or complete\n        return None\n    # Create and start the process\n    p = Process(target=monitor_dispatch_worker, args=(datarun_id,))\n    p.start()\n\n    def kill_it():\n        if p is not None and p.is_alive():\n            p.terminate()\n        cache = get_cache()\n        key = datarun_id2key(datarun_id)\n        if cache.has(key):\n            cache.delete(key)\n    atexit.register(kill_it)\n    # Sleep a while\n    time.sleep(0.1)\n    return\n\n\ndef stop_worker(datarun_id):\n\n    # TODO: maybe there is a better way to solve the problem\n    # where the cache has been set stop, then the real pid will be lost.\n    # How can I find whether the real pid is alive?\n\n\n    # if pid == 'stop':\n    #     logger.warning(\"This worker of datarun %d has already stopped.\" % datarun_id)\n    #     cache.delete(key)\n    #     return True\n    #\n    # if pid is not None and pid != 'stop':\n    #     logger.warning(\"Terminating the worker process (PID: %d) of datarun %d\" % (pid, datarun_id))\n    #     # Then we delete the datarun process_id cache (as a signal of terminating)\n    #     cache.set(key, 'stop')\n    #     while True:\n    #         time.sleep(0.1)\n    #         if cache.has(key):\n    #             time.sleep(0.9)\n    #         else:\n    #             return True\n\n    # cache.delete(key)\n    # return True\n    # logger.warning(\"Cannot find corresponding process for datarun %d\" % datarun_id)\n    start_time = time.time()\n    key = datarun_id2key(datarun_id)\n    flag = False\n    while True:\n        signal_worker_stop(datarun_id)\n        if time.time() - start_time > 2:\n            flag = False\n            # raise ValueError('Cannot stop the process after 2s!')\n        time.sleep(0.1)\n        if get_cache().has(key):\n            time.sleep(0.4)\n        else:\n            break\n\n    db = get_db()\n    mark_running_datarun_pending(db, datarun_id)\n    return flag\n\n\ndef mark_running_datarun_pending(db, datarun_id):\n    datarun = db.get_datarun(datarun_id)\n    if datarun is None:\n        # WARNING: Raise ERROR\n        raise ApiError(\"No datarun found with the given id: %d\" % datarun_id, 404)\n    if datarun.status == RunStatus.RUNNING:\n        datarun.status = RunStatus.PENDING\n        datarun.end_time = datetime.now()\n        db.session.commit()\n\n\ndef datarun_id2key(datarun_id):\n    return \"worker:%d\" % datarun_id\n\n\ndef register_worker_process(process, datarun_id):\n    key = datarun_id2key(datarun_id)\n    cache = get_cache()\n    if not should_worker_stop(datarun_id):\n        raise ApiError(\"There should be only one live working process for one datarun!\", 500)\n    cache.set(key, process.pid)\n    cache.set(key + '(should_stop)', False)\n    logger.warning(\"Worker process (PID: %d) for datarun %d registered\" % (process.pid, datarun_id))\n\n\ndef should_worker_stop(datarun_id):\n    key = datarun_id2key(datarun_id)\n    cache = get_cache()\n    if cache.has(key) and not cache.get(key + '(should_stop)'):\n        return False\n    return True\n\n\ndef signal_worker_stop(datarun_id):\n    key = datarun_id2key(datarun_id)\n    cache = get_cache()\n    if cache.has(key):\n        pid = cache.get(key)\n        if cache.get(key + '(should_stop)'):\n            logger.warning(\"Stopped signal of worker process (PID: %d) already sent!\" % pid)\n        else:\n            logger.warning(\"Terminating the worker process (PID: %d) of datarun %d\" % (pid, datarun_id))\n            cache.set(key + '(should_stop)', True)\n            return True\n    else:\n        logger.warning(\"Worker process for datarun %d already removed!\" % datarun_id)\n    return False\n\n\ndef clean_worker_cache(datarun_id):\n    key = datarun_id2key(datarun_id)\n    cache = get_cache()\n    cache.delete(key)\n    cache.delete(key + '(should_stop)')\n"
  },
  {
    "path": "server/atm_server/atmvis.py",
    "content": "from flask import Blueprint, send_from_directory, safe_join, current_app\n\nvis = Blueprint('vis', __name__)\n\n\n@vis.route('/static/js/<path:path>')\ndef send_js(path):\n    return send_from_directory(safe_join(current_app.config['STATIC_FOLDER'], 'js'), path)\n\n\n@vis.route('/static/css/<path:path>')\ndef send_css(path):\n    return send_from_directory(safe_join(current_app.config['STATIC_FOLDER'], 'css'), path)\n\n\n@vis.route('/static/media/<path:path>')\ndef send_media(path):\n    return send_from_directory(safe_join(current_app.config['STATIC_FOLDER'], 'media'), path)\n\n\n@vis.route('/')\ndef index():\n    return send_from_directory(current_app.config['FRONT_ROOT'], 'index.html')\n\n\n@vis.route('/<string:model>', methods=['GET'])\ndef send_index(model):\n    if model == 'service-worker.js':\n        return send_from_directory(current_app.config['FRONT_ROOT'], 'service-worker.js')\n    if model == 'favicon.ico':\n        return send_from_directory(current_app.config['FRONT_ROOT'], 'favicon.ico')\n    if model == 'index.html':\n        return send_from_directory(current_app.config['FRONT_ROOT'], 'index.html')\n    if model == 'manifest.json':\n        return send_from_directory(current_app.config['FRONT_ROOT'], 'manifest.json')\n"
  },
  {
    "path": "server/atm_server/cache.py",
    "content": "\"\"\"\nA Cache Interface\nTODO: Add support for redis\n\"\"\"\n\nimport os\nfrom cachelib import SimpleCache, FileSystemCache\nfrom . import SERVER_ROOT\n\n\nclass Cache:\n    def __init__(self):\n        self._cache = {}\n\n    def set(self, key, value):\n        self._cache[key] = value\n\n    def get(self, key):\n        return self._cache.get(key, None)\n\n    def has(self, key):\n        return key in self._cache\n\n    def delete(self, *keys):\n        count = 0\n        for key in keys:\n            if key in self.has(key):\n                del self._cache[key]\n                count += 1\n        return count\n\n\n# The simpleCache uses pickle to dump and loads object. Thus we cannot store a process object in the cache\n# TODO: Find a better way to manage the processes\n# __cache = SimpleCache(default_timeout=0)\n\n# __cache = Cache()\n# This might be slow, but the cache system is safe\n__cache = FileSystemCache(default_timeout=0, cache_dir=os.path.join(SERVER_ROOT, '../.atm_server_cache'))\n\n\ndef get_cache():\n    return __cache\n"
  },
  {
    "path": "server/atm_server/cli.py",
    "content": "import click\nfrom flask import Flask\nfrom flask.cli import FlaskGroup\n\nfrom atm_server.server import create_app\n\n\n@click.group(cls=FlaskGroup, create_app=create_app)\ndef cli():\n    \"\"\"Management script for the Wiki application.\"\"\"\n\n\nif __name__ == '__main__':\n    cli()"
  },
  {
    "path": "server/atm_server/config.py",
    "content": "import os\nfrom atm_server import SERVER_ROOT\n\n\nclass Config(object):\n    UPLOAD_FOLDER = 'atm/data'\n    DATARUN_CONFIG_DIR = 'atm/run_config'\n    DATASET_META_DIR = 'atm/dataset_meta'\n    ALLOWED_EXTENSIONS = set(['csv'])\n    RUN_CONFIG = os.path.join(SERVER_ROOT, './config/run.yaml')\n    SQL_CONFIG = os.path.join(SERVER_ROOT, './config/sql.yaml')\n    FRONT_ROOT = os.path.join(SERVER_ROOT, '../build')\n    STATIC_FOLDER = os.path.join(SERVER_ROOT, '../build/static')\n\n\nclass ProductionConfig(Config):\n    pass\n\n\nclass DevelopmentConfig(Config):\n    pass\n\n\nclass TestingConfig(Config):\n    pass\n"
  },
  {
    "path": "server/atm_server/db.py",
    "content": "from collections import defaultdict\nimport numpy as np\nfrom flask import current_app, g\nfrom sqlalchemy import inspect\n\nfrom atm.database import Database, db_session\nfrom atm.constants import ClassifierStatus\n\nfrom .error import ApiError\n\n\ndef check_db_mappers(db):\n    mapper = inspect(db.Dataset)\n    if not mapper.has_property('dataruns'):\n        raise ApiError('DB %s has no property dataruns' % str(mapper), 500)\n    mapper = inspect(db.Datarun)\n    if not mapper.has_property('hyperpartitions'):\n        raise ApiError('DB %s has no property hyperpartitions' % str(mapper), 500)\n    if not mapper.has_property('classifiers'):\n        raise ApiError('DB %s has no property classifiers' % str(mapper), 500)\n    mapper = inspect(db.Hyperpartition)\n    if not mapper.has_property('classifiers'):\n        raise ApiError('DB %s has no property classifiers' % str(mapper), 500)\n    if not mapper.has_property('datarun'):\n        raise ApiError('DB %s has no property datarun' % str(mapper), 500)\n    mapper = inspect(db.Classifier)\n    if not mapper.has_property('hyperpartition'):\n        raise ApiError('DB %s has no property hyperpartition' % str(mapper), 500)\n    if not mapper.has_property('datarun'):\n        raise ApiError('DB %s has no property datarun' % str(mapper), 500)\n\n\ndef get_db():\n    \"\"\"Connect to the application's configured database. The connection\n    is unique for each request and will be reused if this is called\n    again.\n    \"\"\"\n    if 'db' not in g:\n        sql_conf = current_app.config['SQL_CONF']\n        db = Database(sql_conf.dialect, sql_conf.database, sql_conf.username,\n                        sql_conf.password, sql_conf.host, sql_conf.port,\n                        sql_conf.query)\n        check_db_mappers(db)\n        db.session = db.get_session()\n        g.db = db\n    return g.db\n\n\ndef teardown_db(e=None):\n    db = g.pop('db', None)\n    # Close db connection\n    if db is not None and db.session is not None:\n        db.session.close()\n        db.session = None\n\n\ndef init_app(app):\n    app.teardown_appcontext(teardown_db)\n\n\n# Querying & Post-processing Methods\n\ndef object_as_dict(obj):\n    return {c.key: getattr(obj, c.key) for c in inspect(obj).mapper.column_attrs}\n\n\ndef fetch_entity(entity_name, filters=None, one=False):\n    \"\"\"\n    Fetch an entity (table) form the database.\n    :param entity_name: the name of the entity, should be a table in the database.\n    :param filters: a dict specifying the filters\n    :param one: a boolean, if True, then only one result is returned or an exception will be raised.\n    :return: A dict representing the entity or a list of dicts.\n    \"\"\"\n    db = get_db()\n\n    entity = getattr(db, entity_name, None)\n    if entity is None:\n        raise ApiError('No entity named %s in the database' % entity_name, status_code=404)\n    if filters is None:\n        filters = {}\n    else:\n        # Remove None valued keys\n        filters = {key: val for key, val in filters.items() if val is not None}\n    try:\n        # with db_session(db):\n        if one:\n            result = db.session.query(entity).filter_by(**filters).one()\n            return object_as_dict(result)\n        else:\n            result = db.session.query(entity).filter_by(**filters).all()\n            return [object_as_dict(item) for item in result]\n\n    except Exception:\n        teardown_db()\n        raise ApiError('Not found', status_code=404)\n\n\ndef table_fetcher(table):\n    \"\"\"\n    Creates a generic controller function to view the full contents of a table.\n    \"\"\"\n\n    def inner():\n        result = get_db().engine.execute(''.join(['SELECT * FROM ', table]))\n        return [dict(row) for row in result]\n\n    return inner\n\n\ndef metric_string(model, target):\n    \"\"\" Stringify the metric of a model, Copied from atm/database.py \"\"\"\n    if 'cv' in target or 'mu_sigma' in target:\n        return '%.3f +- %.3f' % (model.cv_judgment_metric,\n                                 2 * model.cv_judgment_metric_stdev)\n    else:\n        return '%.3f' % model.test_judgment_metric\n\n\ndef params_string(params):\n    return '; '.join(['%s = %s' % (k, params[k]) for k in sorted(params.keys())])\n\n\ndef hyperpartition_string(hp):\n    cats = [hp.method]\n    for cat_key, cat_value in hp.categoricals:\n        if type(cat_value) is str:\n            cats.append(cat_value)\n        elif type(cat_value) is bool:\n            cats.append(cat_key)\n        elif cat_key == 'len(hidden_layer_sizes)' and type(cat_value) is int:\n            cats.append('%d_hidden_layer' % cat_value)\n    return '-'.join(cats)\n\n\ndef summarize_classifiers(dataset_id=None, datarun_id=None, hyperpartition_id=None, method=None):\n    \"\"\"\n    Get the summarized information about classifiers, filtered by the passed-in arguments.\n    The header of the csv:\n        trail ID, method, parameters, metrics, score target, performance , hyperpartitionID\n    \"\"\"\n    db = get_db()\n    # with db_session(db):\n    query = db.session.query(\n        db.Classifier,\n        db.Hyperpartition.method,\n        db.Datarun.metric,\n        db.Datarun.score_target)\\\n        .select_from(db.Classifier)\\\n        .join(db.Classifier.hyperpartition)\\\n        .join(db.Classifier.datarun)\\\n        .filter(db.Classifier.status == ClassifierStatus.COMPLETE)\n\n\n    # query = db.session.query(\n    #     db.Classifier,\n    #     db.Hyperpartition.method,\n    #     db.Datarun.metric,\n    #     db.Datarun.score_target)\\\n    #     .filter(db.Classifier.hyperpartition_id == db.Hyperpartition.id)\\\n    #     .filter(db.Classifier.datarun_id == db.Datarun.id)\\\n    #     .filter(db.Classifier.status == ClassifierStatus.COMPLETE)\n    if dataset_id is not None:\n        query = query.filter(db.Datarun.dataset_id == dataset_id)\n    if datarun_id is not None:\n        query = query.filter(db.Classifier.datarun_id == datarun_id)\n    if method is not None:\n        query = query.filter(db.Hyperpartition.method == method)\n    if hyperpartition_id is not None:\n        query = query.filter(db.Classifier.hyperpartition_id ==\n                             hyperpartition_id)\n\n    return [['trail ID', 'method', 'parameters', 'metrics', 'score target', 'performance', 'hyperpartitionID']] + [\n        [\n            str(classifier.id),\n            method,\n            params_string(classifier.hyperparameter_values),\n            metric,\n            score_target[:-len('_judgment_metric')],\n            metric_string(classifier, score_target),\n            str(classifier.hyperpartition_id)\n        ] for classifier, method, metric, score_target in query.all()]\n\n\ndef fetch_dataset_path(dataset_id, train=True):\n    db = get_db()\n    try:\n        # with db_session(db):\n        dataset = db.get_dataset(dataset_id)\n        return dataset.train_path if train else dataset.test_path\n\n    except Exception:\n        raise ApiError('Not found', status_code=404)\n\n\ndef summarize_datarun(datarun_id, classifier_start=None, classifier_end=None):\n    db = get_db()\n    datarun = db.get_datarun(datarun_id)\n\n    # with db_session(db):\n    query = db.session.query(\n        db.Classifier,\n        db.Hyperpartition.method)\\\n        .filter(db.Classifier.hyperpartition_id == db.Hyperpartition.id)\\\n        .filter(db.Classifier.status == ClassifierStatus.COMPLETE)\\\n        .filter(db.Classifier.datarun_id == datarun_id)\n    classifiers, methods = zip(*query.all())\n    classifiers = classifiers[classifier_start:classifier_end]\n    methods = methods[classifier_start:classifier_end]\n    if 'cv' in datarun.score_target or 'mu_sigma' in datarun.score_target:\n        scores = [c.cv_judgment_metric for c in classifiers]\n    else:\n        scores = [c.test_judgment_metric for c in classifiers]\n\n    best_idx = int(np.argmax(scores))\n    best_classifier = classifiers[best_idx]\n    best_score = scores[best_idx]\n    method_tries = defaultdict(int)\n    for method in methods:\n        method_tries[method] += 1\n\n    return {\n        'n_classifiers': len(scores),\n        'best_score': best_score,\n        'best_method': methods[best_idx],\n        'best_classifier_id': best_classifier.id,\n        'method_tries': method_tries\n        # 'best_classifier': best_classifier.\n        # 'best_idx':\n    }\n\n\ndef fetch_classifiers(classifier_id=None, dataset_id=None, datarun_id=None, hyperpartition_id=None,\n                      method=None, status=None, nice=True):\n    db = get_db()\n    if classifier_id is not None:\n        classifiers = [db.get_classifier(classifier_id)]\n    else:\n        classifiers = db.get_classifiers(dataset_id, datarun_id, method, hyperpartition_id, status)\n    if nice is False:\n        return [object_as_dict(item) for item in classifiers]\n    hyperpartitions = db.get_hyperpartitions(dataset_id, datarun_id, method,\n                                             ignore_gridding_done=False,\n                                             ignore_errored=False)\n    hp_id2method = {hp.id: hp.method for hp in hyperpartitions}\n\n    return [\n        {\n            'id': c.id,\n            'datarun_id': c.datarun_id,\n            'hyperpartition_id': c.hyperpartition_id,\n            'method': hp_id2method[c.hyperpartition_id],\n            'cv_metric': float(c.cv_judgment_metric),\n            'cv_metric_std': float(c.cv_judgment_metric_stdev),\n            'test_metric': float(c.test_judgment_metric),\n            'hyperparameters': c.hyperparameter_values,\n            'status': c.status,\n            'start_time': c.start_time,\n            'end_time': c.end_time\n        }\n        for c in classifiers\n    ]\n\n\ndef fetch_hyperpartitions(hyperpartition_id=None, dataset_id=None, datarun_id=None,\n                          method=None, nice=True):\n    db = get_db()\n    if hyperpartition_id is not None:\n        hyperpartitions = [db.get_hyperpartition(hyperpartition_id)]\n    else:\n        hyperpartitions = db.get_hyperpartitions(dataset_id, datarun_id, method,\n                                                 ignore_gridding_done=False,\n                                                 ignore_errored=False)\n    if nice is False:\n        return [object_as_dict(item) for item in hyperpartitions]\n\n    # print(hyperpartitions[0].categoricals)\n    # print(hyperpartitions[0].tunables)\n    # print(hyperpartitions[0].constants)\n    return [\n        {\n            'id': hp.id,\n            'datarun_id': hp.datarun_id,\n            'method': hp.method,\n            'hyperpartition_string': hyperpartition_string(hp),\n            'categoricals': {cat_key: cat_value for cat_key, cat_value in hp.categoricals},\n            'tunables': {key: value for key, value in hp.tunables},\n            'constant': {key: value for key, value in hp.constants},\n            'status': hp.status,\n        }\n        for hp in hyperpartitions\n    ]\n"
  },
  {
    "path": "server/atm_server/error.py",
    "content": "class ApiError(Exception):\n    \"\"\"\n    API error handler Exception\n    See: http://flask.pocoo.org/docs/0.12/patterns/apierrors/\n    \"\"\"\n    status_code = 400\n\n    def __init__(self, message, status_code=None, payload=None):\n        Exception.__init__(self)\n        self.message = message\n        if status_code is not None:\n            self.status_code = status_code\n        self.payload = payload\n\n    def to_dict(self):\n        rv = dict(self.payload or ())\n        rv['message'] = self.message\n        return rv\n"
  },
  {
    "path": "server/atm_server/recommender/OneHotEncoder.py",
    "content": "import numpy as np\nfrom scipy import sparse\nfrom sklearn.base import BaseEstimator, TransformerMixin\nfrom sklearn.utils import check_array\n\n\ndef _transform_selected(X, transform, selected=\"all\", copy=True):\n    \"\"\"Apply a transform function to portion of selected features\n\n    Parameters\n    ----------\n    X : array-like or sparse matrix, shape=(n_samples, n_features)\n        Dense array or sparse matrix.\n\n    transform : callable\n        A callable transform(X) -> X_transformed\n\n    copy : boolean, optional\n        Copy X even if it could be avoided.\n\n    selected: \"all\" or array of indices or mask\n        Specify which features to apply the transform to.\n\n    Returns\n    -------\n    X : array or sparse matrix, shape=(n_samples, n_features_new)\n    \"\"\"\n    X = check_array(X, accept_sparse='csc', force_all_finite=False, copy=copy)\n\n    if selected == \"all\":\n        return transform(X)\n\n    if len(selected) == 0:\n        return X\n\n    n_features = X.shape[1]\n    ind = np.arange(n_features)\n    sel = np.zeros(n_features, dtype=bool)\n    sel[np.asarray(selected)] = True\n    not_sel = np.logical_not(sel)\n    n_selected = np.sum(sel)\n\n    if n_selected == 0:\n        # No features selected.\n        return X\n    elif n_selected == n_features:\n        # All features selected.\n        return transform(X)\n    else:\n        X_sel = transform(X[:, ind[sel]])\n        X_not_sel = X[:, ind[not_sel]]\n\n        if sparse.issparse(X_sel) or sparse.issparse(X_not_sel):\n            # This is pretty memory-intense, making the memory usage for OpenML\n            # task 146810 go over 3GB\n            return sparse.hstack((X_sel, X_not_sel), format='csr')\n        else:\n            return np.hstack((X_sel, X_not_sel))\n\n\nclass OneHotEncoder(BaseEstimator, TransformerMixin):\n    \"\"\"Encode categorical integer features using a one-hot aka one-of-K scheme.\n\n    The input to this transformer should be a matrix of integers, denoting\n    the values taken on by categorical (discrete) features. The output will be\n    a sparse matrix were each column corresponds to one possible value of one\n    feature. It is assumed that input features take on values in the range\n    [0, n_values).\n\n    This encoding is needed for feeding categorical data to many scikit-learn\n    estimators, notably linear models and SVMs with the standard kernels.\n\n    Parameters\n    ----------\n\n    categorical_features: \"all\" or array of indices or mask\n        Specify what features are treated as categorical.\n\n        - 'all' (default): All features are treated as categorical.\n        - array of indices: Array of categorical feature indices.\n        - mask: Array of length n_features and with dtype=bool.\n\n        Non-categorical features are always stacked to the right of the matrix.\n\n    dtype : number type, default=np.float\n        Desired dtype of output.\n\n    sparse : boolean, default=True\n        Will return sparse matrix if set True else will return an array.\n\n    Attributes\n    ----------\n    `active_features_` : array\n        Indices for active features, meaning values that actually occur\n        in the training set. Only available when n_values is ``'auto'``.\n\n    `feature_indices_` : array of shape (n_features,)\n        Indices to feature ranges.\n        Feature ``i`` in the original data is mapped to features\n        from ``feature_indices_[i]`` to ``feature_indices_[i+1]``\n        (and then potentially masked by `active_features_` afterwards)\n\n    `n_values_` : array of shape (n_features,)\n        Maximum number of values per feature.\n\n    Examples\n    --------\n    Given a dataset with three features and two samples, we let the encoder\n    find the maximum value per feature and transform the data to a binary\n    one-hot encoding.\n\n    >>> from sklearn.preprocessing import OneHotEncoder\n    >>> enc = OneHotEncoder()\n    >>> enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], \\\n[1, 0, 2]])  # doctest: +ELLIPSIS\n    OneHotEncoder(categorical_features='all', dtype=<... 'float'>,\n           sparse=True, minimum_fraction=None)\n    >>> enc.n_values_\n    array([2, 3, 4])\n    >>> enc.feature_indices_\n    array([0, 2, 5, 9])\n    >>> enc.transform([[0, 1, 1]]).toarray()\n    array([[ 1.,  0.,  0.,  1.,  0.,  0.,  1.,  0.,  0.]])\n\n    See also\n    --------\n    sklearn.feature_extraction.DictVectorizer : performs a one-hot encoding of\n      dictionary items (also handles string-valued features).\n    sklearn.feature_extraction.FeatureHasher : performs an approximate one-hot\n      encoding of dictionary items or strings.\n    \"\"\"\n\n    def __init__(self, categorical_features=\"all\", dtype=np.float,\n                 sparse=True, minimum_fraction=None):\n        self.categorical_features = categorical_features\n        self.dtype = dtype\n        self.sparse = sparse\n        self.minimum_fraction = minimum_fraction\n\n    def fit(self, X, y=None):\n        \"\"\"Fit OneHotEncoder to X.\n\n        Parameters\n        ----------\n        X : array-like, shape=(n_samples, n_feature)\n            Input array of type int.\n\n        Returns\n        -------\n        self\n        \"\"\"\n        self.fit_transform(X)\n        return self\n\n    def _fit_transform(self, X):\n        \"\"\"Assumes X contains only categorical features.\"\"\"\n\n        # First increment everything by three to account for the fact that\n        # np.NaN will get an index of two, and 'other' values will get index of\n        # one, index of zero is not assigned to also work with sparse data\n        if sparse.issparse(X):\n            X.data += 3\n            X.data[~np.isfinite(X.data)] = 2\n        else:\n            X += 3\n            X[~np.isfinite(X)] = 2\n\n        X = check_array(X, accept_sparse='csc', force_all_finite=False,\n                        dtype=np.int32)\n\n        if X.min() < 0:\n            raise ValueError(\"X needs to contain only non-negative integers.\")\n        n_samples, n_features = X.shape\n\n        # Remember which values should not be replaced by the value 'other'\n        if self.minimum_fraction is not None:\n            do_not_replace_by_other = list()\n            for column in range(X.shape[1]):\n                do_not_replace_by_other.append(set())\n\n                if sparse.issparse(X):\n                    indptr_start = X.indptr[column]\n                    indptr_end = X.indptr[column + 1]\n                    unique, counts = np.unique(\n                        X.data[indptr_start:indptr_end], return_counts=True,\n                    )\n                    colsize = indptr_end - indptr_start\n                else:\n                    unique, counts = np.unique(\n                        X[:, column], return_counts=True,\n                    )\n                    colsize = X.shape[0]\n\n                for unique_value, count in zip(unique, counts):\n\n                    fraction = float(count) / colsize\n                    if fraction >= self.minimum_fraction:\n                        do_not_replace_by_other[-1].add(unique_value)\n\n                for unique_value in unique:\n                    if unique_value not in do_not_replace_by_other[-1]:\n                        if sparse.issparse(X):\n                            indptr_start = X.indptr[column]\n                            indptr_end = X.indptr[column + 1]\n                            X.data[indptr_start:indptr_end][\n                                X.data[indptr_start:indptr_end] ==\n                                unique_value] = 1\n                        else:\n                            X[:, column][X[:, column] == unique_value] = 1\n\n            self.do_not_replace_by_other_ = do_not_replace_by_other\n\n        if sparse.issparse(X):\n            n_values = X.max(axis=0).toarray().flatten() + 2\n        else:\n            n_values = np.max(X, axis=0) + 2\n\n        self.n_values_ = n_values\n        n_values = np.hstack([[0], n_values])\n        indices = np.cumsum(n_values)\n        self.feature_indices_ = indices\n\n        if sparse.issparse(X):\n            row_indices = X.indices\n            column_indices = []\n            for i in range(len(X.indptr) - 1):\n                nbr = X.indptr[i+1] - X.indptr[i]\n                column_indices_ = [indices[i]] * nbr\n                column_indices_ += X.data[X.indptr[i]:X.indptr[i+1]]\n                column_indices.extend(column_indices_)\n            data = np.ones(X.data.size)\n        else:\n            column_indices = (X + indices[:-1]).ravel().astype(np.int32)\n            row_indices = np.repeat(np.arange(n_samples, dtype=np.int32),\n                                    n_features)\n            data = np.ones(n_samples * n_features, dtype=np.int32)\n\n        out = sparse.coo_matrix((data, (row_indices, column_indices)),\n                                shape=(n_samples, indices[-1]),\n                                dtype=np.int32).tocsc()\n\n        mask = np.array(out.sum(axis=0)).ravel() != 0\n        active_features = np.where(mask)[0]\n        out = out[:, active_features]\n        self.active_features_ = active_features\n        return out.tocsr() if self.sparse else out.toarray()\n\n    def fit_transform(self, X, y=None):\n        \"\"\"Fit OneHotEncoder to X, then transform X.\n\n        Equivalent to self.fit(X).transform(X), but more convenient and more\n        efficient. See fit for the parameters, transform for the return value.\n        \"\"\"\n        return _transform_selected(X, self._fit_transform,\n                                   self.categorical_features, copy=True)\n\n    def _transform(self, X):\n        \"\"\"Asssumes X contains only categorical features.\"\"\"\n\n        # First increment everything by three to account for the fact that\n        # np.NaN will get an index of two, and 'other' values will get index of\n        #  one, index of zero is not assigned to also work with sparse data\n        if sparse.issparse(X):\n            X.data += 3\n            X.data[~np.isfinite(X.data)] = 2\n        else:\n            X += 3\n            X[~np.isfinite(X)] = 2\n\n        X = check_array(X, accept_sparse='csc', force_all_finite=False,\n                        dtype=np.int32)\n        if X.min() < 0:\n            raise ValueError(\"X needs to contain only non-negative integers.\")\n        n_samples, n_features = X.shape\n\n        indices = self.feature_indices_\n        if n_features != indices.shape[0] - 1:\n            raise ValueError(\"X has different shape than during fitting.\"\n                             \" Expected %d, got %d.\"\n                             % (indices.shape[0] - 1, n_features))\n\n        # Replace all indicators which were below `minimum_fraction` in the \n        # training set by 'other'\n        if self.minimum_fraction is not None:\n            for column in range(X.shape[1]):\n                if sparse.issparse(X):\n                    indptr_start = X.indptr[column]\n                    indptr_end = X.indptr[column + 1]\n                    unique = np.unique(X.data[indptr_start:indptr_end])\n                else:\n                    unique = np.unique(X[:, column])\n\n                for unique_value in unique:\n                    if unique_value not in self.do_not_replace_by_other_[\n                        column]:\n                        if sparse.issparse(X):\n                            indptr_start = X.indptr[column]\n                            indptr_end = X.indptr[column + 1]\n                            X.data[indptr_start:indptr_end][\n                                X.data[indptr_start:indptr_end] ==\n                                unique_value] = 1\n                        else:\n                            X[:, column][X[:, column] == unique_value] = 1\n\n        if sparse.issparse(X):\n            n_values_check = X.max(axis=0).toarray().flatten() + 1\n        else:\n            n_values_check = np.max(X, axis=0) + 1\n\n        # Replace all indicators which are out of bounds by 'other' (index 0)\n        if (n_values_check > self.n_values_).any():\n            # raise ValueError(\"Feature out of bounds. Try setting n_values.\")\n            for i, n_value_check in enumerate(n_values_check):\n                if (n_value_check - 1) >= self.n_values_[i]:\n                    if sparse.issparse(X):\n                        indptr_start = X.indptr[i]\n                        indptr_end = X.indptr[i+1]\n                        X.data[indptr_start:indptr_end][X.data\n                            [indptr_start:indptr_end] >= self.n_values_[i]] = 0\n                    else:\n                        X[:, i][X[:, i] >= self.n_values_[i]] = 0\n\n        if sparse.issparse(X):\n            row_indices = X.indices\n            column_indices = []\n            for i in range(len(X.indptr) - 1):\n                nbr = X.indptr[i + 1] - X.indptr[i]\n                column_indices_ = [indices[i]] * nbr\n                column_indices_ += X.data[X.indptr[i]:X.indptr[i + 1]]\n                column_indices.extend(column_indices_)\n            data = np.ones(X.data.size)\n        else:\n            column_indices = (X + indices[:-1]).ravel().astype(np.int32)\n            row_indices = np.repeat(np.arange(n_samples, dtype=np.int32),\n                                    n_features)\n            data = np.ones(n_samples * n_features, dtype=np.int32)\n        out = sparse.coo_matrix((data, (row_indices, column_indices)),\n                                shape=(n_samples, indices[-1]),\n                                dtype=np.int32).tocsc()\n\n        out = out[:, self.active_features_]\n        return out.tocsr() if self.sparse else out.toarray()\n\n    def transform(self, X):\n        \"\"\"Transform X using one-hot encoding.\n\n        Parameters\n        ----------\n        X : array-like, shape=(n_samples, n_features)\n            Input array of type int.\n\n        Returns\n        -------\n        X_out : sparse matrix if sparse=True else a 2-d array, dtype=int\n            Transformed input.\n        \"\"\"\n        return _transform_selected(X, self._transform,\n                                   self.categorical_features, copy=True)\n"
  },
  {
    "path": "server/atm_server/recommender/__init__.py",
    "content": ""
  },
  {
    "path": "server/atm_server/recommender/encoder.py",
    "content": "from __future__ import division, unicode_literals\n\nfrom builtins import object\n\nimport numpy as np\nimport pandas as pd\nfrom past.utils import old_div\nfrom sklearn.preprocessing import LabelEncoder, OneHotEncoder\n\n\nclass MetaData(object):\n    def __init__(self, class_column, train_path, test_path=None):\n        \"\"\"\n        Compute a bunch of metadata about the dataset.\n\n        class_column: name of dataframe column containing labels\n        data_paths: paths to csvs with the same columns\n        \"\"\"\n        data = pd.read_csv(train_path)\n        if test_path is not None:\n            data = data.append(pd.read_csv(test_path))\n\n        # compute the portion of labels that are the most common value\n        counts = data[class_column].value_counts()\n        total_features = data.shape[1] - 1\n        for c in data.columns:\n            if data[c].dtype == 'object':\n                total_features += len(np.unique(data[c])) - 1\n        majority_percentage = old_div(float(max(counts)), float(sum(counts)))\n\n        self.n_examples = data.shape[0]\n        self.d_features = total_features\n        self.k_classes = len(np.unique(data[class_column]))\n        self.majority = majority_percentage\n        self.size = np.array(data).nbytes\n\n\nclass DataEncoder(object):\n    def __init__(self, class_column='class', feature_columns=None):\n        self.class_column = class_column\n        self.feature_columns = feature_columns\n\n        # these will be trained with fit_encoders()\n        self.column_encoders = {}\n        self.feature_encoder = None\n        self.label_encoder = None\n\n    def fit(self, data):\n        \"\"\"\n        Fit one-hot encoders for categorical features and an integer encoder for\n        the label. These can be used later to transform raw data into a form\n        that ATM can work with.\n\n        data: pd.DataFrame of unprocessed data\n        \"\"\"\n        if self.class_column not in data.columns:\n            raise KeyError('Class column \"%s\" not found in dataset!' %\n                           self.class_column)\n\n        cat_cols = []\n        if self.feature_columns is None:\n            features = data.drop([self.class_column], axis=1)\n            self.feature_columns = features.columns\n        else:\n            features = data[self.feature_columns]\n\n        # encode categorical columns, leave ordinal values alone\n        for column in features.columns:\n            if features[column].dtype == 'object':\n                # save the indices of categorical columns for one-hot encoding\n                cat_cols.append(features.columns.get_loc(column))\n\n                # encode each feature as an integer in range(unique_vals)\n                le = LabelEncoder()\n                features[column] = le.fit_transform(features[column])\n                self.column_encoders[column] = le\n\n        # One-hot encode the whole feature matrix.\n        # Set sparse to False so that we can test for NaNs in the output\n        self.feature_encoder = OneHotEncoder(categorical_features=cat_cols,\n                                             sparse=False)\n        self.feature_encoder.fit(features)\n\n        # Train an encoder for the label as well\n        labels = np.array(data[[self.class_column]])\n        self.label_encoder = LabelEncoder()\n        self.label_encoder.fit(labels)\n\n    def transform(self, data):\n        \"\"\"\n        Convert a DataFrame of labeled data to a feature matrix in the form\n        that ATM can use.\n        \"\"\"\n        if self.class_column in data:\n            # pull labels into a separate series and transform them to integers\n            labels = np.array(data[[self.class_column]])\n            y = self.label_encoder.transform(labels)\n            # drop the label column and transform the remaining features\n        else:\n            y = None\n\n        features = data[self.feature_columns]\n\n        # encode each categorical feature as an integer\n        for column, encoder in list(self.column_encoders.items()):\n            features[column] = encoder.transform(features[column])\n\n        # one-hot encode the categorical features\n        X = self.feature_encoder.transform(features)\n\n        return X, y\n\n    def fit_transform(self, data):\n        \"\"\" Process data into a form that ATM can use. \"\"\"\n        self.fit(data)\n        return self.transform(data)\n"
  },
  {
    "path": "server/atm_server/recommender/logging_.py",
    "content": "# -*- encoding: utf-8 -*-\nimport logging\nimport logging.config\nimport os\nimport sys\n\nimport yaml\n\n\ndef setup_logger(output_file=None):\n    with open(os.path.join(os.path.dirname(__file__), 'logging.yaml'),\n              'r') as fh:\n        config = yaml.load(fh)\n    if output_file is not None:\n        config['handlers']['file_handler']['filename'] = output_file\n    logging.config.dictConfig(config)\n\n\ndef _create_logger(name):\n    logging.basicConfig(format='[%(levelname)s] [%(asctime)s:%(name)s] %('\n                           'message)s', datefmt='%H:%M:%S')\n    return logging.getLogger(name)\n\n\ndef get_logger(name):\n    logger = PickableLoggerAdapter(name)\n    return logger\n\n\nclass PickableLoggerAdapter(object):\n\n    def __init__(self, name):\n        self.name = name\n        self.logger = _create_logger(name)\n\n    def __getstate__(self):\n        \"\"\"\n        Method is called when pickle dumps an object.\n\n        Returns\n        -------\n        Dictionary, representing the object state to be pickled. Ignores\n        the self.logger field and only returns the logger name.\n        \"\"\"\n        return { 'name': self.name }\n\n    def __setstate__(self, state):\n        \"\"\"\n        Method is called when pickle loads an object. Retrieves the name and\n        creates a logger.\n\n        Parameters\n        ----------\n        state - dictionary, containing the logger name.\n\n        \"\"\"\n        self.name = state['name']\n        self.logger = _create_logger(self.name)\n\n    def debug(self, msg, *args, **kwargs):\n        self.logger.debug(msg, *args, **kwargs)\n\n    def info(self, msg, *args, **kwargs):\n        self.logger.info(msg, *args, **kwargs)\n\n    def warning(self, msg, *args, **kwargs):\n        self.logger.warning(msg, *args, **kwargs)\n\n    def error(self, msg, *args, **kwargs):\n        self.logger.error(msg, *args, **kwargs)\n\n    def exception(self, msg, *args, **kwargs):\n        self.logger.exception(msg, *args, **kwargs)\n\n    def critical(self, msg, *args, **kwargs):\n        self.logger.critical(msg, *args, **kwargs)\n\n    def log(self, level, msg, *args, **kwargs):\n        self.logger.log(level, msg, *args, **kwargs)\n\n    def isEnabledFor(self, level):\n        return self.logger.isEnabledFor(level)\n"
  },
  {
    "path": "server/atm_server/recommender/metafeature.py",
    "content": "from abc import ABCMeta, abstractmethod\nfrom six import StringIO\nimport time\nimport types\n\nfrom scipy.io import arff\nimport scipy.sparse\nimport six\n\nfrom atm_server.recommender.logging_ import get_logger\n\n\nclass AbstractMetaFeature(object):\n    __metaclass__ = ABCMeta\n\n    @abstractmethod\n    def __init__(self):\n        self.logger = get_logger(__name__)\n\n    @abstractmethod\n    def _calculate(cls, X, y, categorical):\n        pass\n\n    def __call__(self, X, y, categorical=None):\n        if categorical is None:\n            categorical = [False for i in range(X.shape[1])]\n        starttime = time.time()\n\n        try:\n            if scipy.sparse.issparse(X) and hasattr(self, \"_calculate_sparse\"):\n                value = self._calculate_sparse(X, y, categorical)\n            else:\n                value = self._calculate(X, y, categorical)\n            comment = \"\"\n        except MemoryError as e:\n            value = None\n            comment = \"Memory Error\"\n\n        endtime = time.time()\n        return MetaFeatureValue(self.__class__.__name__, self.type_,\n                                0, 0, value, endtime-starttime, comment=comment)\n\n\nclass MetaFeature(AbstractMetaFeature):\n    def __init__(self):\n        super(MetaFeature, self).__init__()\n        self.type_ = \"METAFEATURE\"\n\n\nclass HelperFunction(AbstractMetaFeature):\n    def __init__(self):\n        super(HelperFunction, self).__init__()\n        self.type_ = \"HELPERFUNCTION\"\n\n\nclass MetaFeatureValue(object):\n    def __init__(self, name, type_, fold, repeat, value, time, comment=\"\"):\n        self.name = name\n        self.type_ = type_\n        self.fold = fold\n        self.repeat = repeat\n        self.value = value\n        self.time = time\n        self.comment = comment\n\n    def to_arff_row(self):\n        if self.type_ == \"METAFEATURE\":\n            value = self.value\n        else:\n            value = \"?\"\n\n        return [self.name, self.type_, self.fold,\n                self.repeat, value, self.time, self.comment]\n\n    def __repr__(self):\n        repr = \"%s (type: %s, fold: %d, repeat: %d, value: %s, time: %3.3f, \" \\\n               \"comment: %s)\"\n        repr = repr % tuple(self.to_arff_row()[:4] +\n                            [str(self.to_arff_row()[4])] +\n                            self.to_arff_row()[5:])\n        return repr\n\nclass DatasetMetafeatures(object):\n    def __init__(self, dataset_name, metafeature_values):\n        self.dataset_name = dataset_name\n        self.metafeature_values = metafeature_values\n\n    def _get_arff(self):\n        output = dict()\n        output['relation'] = \"metafeatures_%s\" % (self.dataset_name)\n        output['description'] = \"\"\n        output['attributes'] = [('name', 'STRING'),\n                                ('type', 'STRING'),\n                                ('fold', 'NUMERIC'),\n                                ('repeat', 'NUMERIC'),\n                                ('value', 'NUMERIC'),\n                                ('time', 'NUMERIC'),\n                                ('comment', 'STRING')]\n        output['data'] = []\n\n        for key in sorted(self.metafeature_values):\n            output['data'].append(self.metafeature_values[key].to_arff_row())\n        return output\n\n    def dumps(self):\n        return self._get_arff()\n\n    def dump(self, path_or_filehandle):\n        output = self._get_arff()\n\n        if isinstance(path_or_filehandle, six.string_types):\n            with open(path_or_filehandle, \"w\") as fh:\n                arff.dump(output, fh)\n        else:\n            arff.dump(output, path_or_filehandle)\n\n    @classmethod\n    def load(cls, path_or_filehandle):\n\n        if isinstance(path_or_filehandle, six.string_types):\n            with open(path_or_filehandle) as fh:\n                input = arff.load(fh)\n        else:\n            input = arff.load(path_or_filehandle)\n\n        dataset_name = input['relation'].replace('metafeatures_', '')\n        metafeature_values = []\n        for item in input['data']:\n            mf = MetaFeatureValue(*item)\n            metafeature_values.append(mf)\n\n        return cls(dataset_name, metafeature_values)\n\n    def __repr__(self, verbosity=0):\n        repr = StringIO()\n        repr.write(\"Metafeatures for dataset %s\\n\" % self.dataset_name)\n        for name in self.metafeature_values:\n            if verbosity == 0 and self.metafeature_values[name].type_ != \"METAFEATURE\":\n                continue\n            if verbosity == 0:\n                repr.write(\"  %s: %s\\n\" %\n                           (str(name), str(self.metafeature_values[name].value)))\n            elif verbosity >= 1:\n                repr.write(\"  %s: %10s  (%10fs)\\n\" %\n                           (str(name), str(self.metafeature_values[\n                                               name].value)[:10],\n                            self.metafeature_values[name].time))\n\n            # Add the reason for a crash if one happened!\n            if verbosity > 1 and self.metafeature_values[name].comment:\n                repr.write(\"    %s\\n\" % self.metafeature_values[name].comment)\n\n        return repr.getvalue()\n\n    def keys(self):\n        return self.metafeature_values.keys()\n\n    def __getitem__(self, item):\n        return self.metafeature_values[item]\n"
  },
  {
    "path": "server/atm_server/recommender/metafeatures.py",
    "content": "from collections import defaultdict, OrderedDict, deque\nimport copy\nimport sys\n\nimport numpy as np\nimport scipy.stats\nfrom scipy.linalg import LinAlgError\nimport scipy.sparse\nimport sklearn\n# TODO use balanced accuracy!\nimport sklearn.metrics\nimport sklearn.model_selection\nfrom sklearn.utils import check_array\nfrom sklearn.multiclass import OneVsRestClassifier\n\nfrom sklearn.preprocessing import Imputer\nfrom atm_server.recommender.OneHotEncoder import OneHotEncoder\nfrom sklearn.preprocessing import StandardScaler\n\nfrom atm_server.recommender.logging_ import get_logger\nfrom atm_server.recommender.metafeature import MetaFeature, HelperFunction, DatasetMetafeatures, \\\n    MetaFeatureValue\n\n\n# TODO Allow multiple dependencies for a metafeature\n# TODO Add HelperFunction as an object\nclass HelperFunctions(object):\n    def __init__(self):\n        self.functions = OrderedDict()\n        self.values = OrderedDict()\n\n    def clear(self):\n        self.values = OrderedDict()\n        self.computation_time = OrderedDict()\n\n    def __iter__(self):\n        return self.functions.__iter__()\n\n    def __getitem__(self, item):\n        return self.functions.__getitem__(item)\n\n    def __setitem__(self, key, value):\n        return self.functions.__setitem__(key, value)\n\n    def __delitem__(self, key):\n        return self.functions.__delitem__(key)\n\n    def __contains__(self, item):\n        return self.functions.__contains__(item)\n\n    def is_calculated(self, key):\n        \"\"\"Return if a helper function has already been executed.\n\n        Necessary as get_value() can return None if the helper function hasn't\n        been executed or if it returned None.\"\"\"\n        return key in self.values\n\n    def get_value(self, key):\n        return self.values.get(key).value\n\n    def set_value(self, key, item):\n        self.values[key] = item\n\n    def define(self, name):\n        \"\"\"Decorator for adding helper functions to a \"dictionary\".\n        This behaves like a function decorating a function,\n        not a class decorating a function\"\"\"\n        def wrapper(metafeature_class):\n            instance = metafeature_class()\n            self.__setitem__(name, instance)\n            return instance\n        return wrapper\n\n\nclass MetafeatureFunctions(object):\n    def __init__(self):\n        self.functions = OrderedDict()\n        self.dependencies = OrderedDict()\n        self.values = OrderedDict()\n\n    def clear(self):\n        self.values = OrderedDict()\n\n    def __iter__(self):\n        return self.functions.__iter__()\n\n    def __getitem__(self, item):\n        return self.functions.__getitem__(item)\n\n    def __setitem__(self, key, value):\n        return self.functions.__setitem__(key, value)\n\n    def __delitem__(self, key):\n        return self.functions.__delitem__(key)\n\n    def __contains__(self, item):\n        return self.functions.__contains__(item)\n\n    def get_value(self, key):\n        return self.values[key].value\n\n    def set_value(self, key, item):\n        self.values[key] = item\n\n    def is_calculated(self, key):\n        \"\"\"Return if a helper function has already been executed.\n\n        Necessary as get_value() can return None if the helper function hasn't\n        been executed or if it returned None.\"\"\"\n        return key in self.values\n\n    def get_dependency(self, name):\n        \"\"\"Return the dependency of metafeature \"name\".\n        \"\"\"\n        return self.dependencies.get(name)\n\n    def define(self, name, dependency=None):\n        \"\"\"Decorator for adding metafeature functions to a \"dictionary\" of\n        metafeatures. This behaves like a function decorating a function,\n        not a class decorating a function\"\"\"\n        def wrapper(metafeature_class):\n            instance = metafeature_class()\n            self.__setitem__(name, instance)\n            self.dependencies[name] = dependency\n            return instance\n        return wrapper\n    \nmetafeatures = MetafeatureFunctions()\nhelper_functions = HelperFunctions()\n\n\n################################################################################\n### Simple features\n@metafeatures.define(\"NumberOfInstances\")\nclass NumberOfInstances(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        return float(X.shape[0])\n\n@metafeatures.define(\"LogNumberOfInstances\",\n                     dependency=\"NumberOfInstances\")\nclass LogNumberOfInstances(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        return np.log(metafeatures.get_value(\"NumberOfInstances\"))\n\n@metafeatures.define(\"NumberOfClasses\")\nclass NumberOfClasses(MetaFeature):\n    \"\"\"\n    Calculate the number of classes.\n\n    Calls np.unique on the targets. If the dataset is a multilabel dataset,\n    does this for each label seperately and returns the mean.\n    \"\"\"\n    def _calculate(self, X, y, categorical):\n        if len(y.shape) == 2:\n            return np.mean([len(np.unique(y[:,i])) for i in range(y.shape[1])])\n        else:\n            return float(len(np.unique(y)))\n\n@metafeatures.define(\"NumberOfFeatures\")\nclass NumberOfFeatures(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        return float(X.shape[1])\n\n@metafeatures.define(\"LogNumberOfFeatures\",\n                     dependency=\"NumberOfFeatures\")\nclass LogNumberOfFeatures(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        return np.log(metafeatures.get_value(\"NumberOfFeatures\"))\n\n@helper_functions.define(\"MissingValues\")\nclass MissingValues(HelperFunction):\n    def _calculate(self, X, y, categorical):\n        missing = ~np.isfinite(X)\n        return missing\n\n    def _calculate_sparse(self, X, y, categorical):\n        data = [True if not np.isfinite(x) else False for x in X.data]\n        missing = X.__class__((data, X.indices, X.indptr), shape=X.shape,\n                              dtype=np.bool)\n        return missing\n\n@metafeatures.define(\"NumberOfInstancesWithMissingValues\",\n                     dependency=\"MissingValues\")\nclass NumberOfInstancesWithMissingValues(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        missing = helper_functions.get_value(\"MissingValues\")\n        num_missing = missing.sum(axis=1)\n        return float(np.sum([1 if num > 0 else 0 for num in num_missing]))\n\n    def _calculate_sparse(self, X, y, categorical):\n        missing = helper_functions.get_value(\"MissingValues\")\n        new_missing = missing.tocsr()\n        num_missing = [\n            np.sum(new_missing.data[new_missing.indptr[i]:new_missing.indptr[i + 1]])\n                                for i in range(new_missing.shape[0])]\n\n        return float(np.sum([1 if num > 0 else 0 for num in num_missing]))\n\n@metafeatures.define(\"PercentageOfInstancesWithMissingValues\",\n                     dependency=\"NumberOfInstancesWithMissingValues\")\nclass PercentageOfInstancesWithMissingValues(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        return float(metafeatures.get_value(\"NumberOfInstancesWithMissingValues\")\n               / float(metafeatures[\"NumberOfInstances\"](X, y).value))\n\n@metafeatures.define(\"NumberOfFeaturesWithMissingValues\",\n                     dependency=\"MissingValues\")\nclass NumberOfFeaturesWithMissingValues(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        missing = helper_functions.get_value(\"MissingValues\")\n        num_missing = missing.sum(axis=0)\n        return float(np.sum([1 if num > 0 else 0 for num in num_missing]))\n\n    def _calculate_sparse(self, X, y, categorical):\n        missing = helper_functions.get_value(\"MissingValues\")\n        new_missing = missing.tocsc()\n        num_missing = [np.sum(\n            new_missing.data[new_missing.indptr[i]:new_missing.indptr[i+1]])\n                       for i in range(missing.shape[1])]\n\n        return float(np.sum([1 if num > 0 else 0 for num in num_missing]))\n\n@metafeatures.define(\"PercentageOfFeaturesWithMissingValues\",\n                     dependency=\"NumberOfFeaturesWithMissingValues\")\nclass PercentageOfFeaturesWithMissingValues(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        return float(metafeatures.get_value(\"NumberOfFeaturesWithMissingValues\")\\\n               / float(metafeatures[\"NumberOfFeatures\"](X, y).value))\n\n@metafeatures.define(\"NumberOfMissingValues\", dependency=\"MissingValues\")\nclass NumberOfMissingValues(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        return float(helper_functions.get_value(\"MissingValues\").sum())\n\n@metafeatures.define(\"PercentageOfMissingValues\",\n                     dependency=\"NumberOfMissingValues\")\nclass PercentageOfMissingValues(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        return float(metafeatures.get_value(\"NumberOfMissingValues\")) / \\\n               float(X.shape[0]*X.shape[1])\n\n# TODO: generalize this!\n@metafeatures.define(\"NumberOfNumericFeatures\")\nclass NumberOfNumericFeatures(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        return len(categorical) - np.sum(categorical)\n\n@metafeatures.define(\"NumberOfCategoricalFeatures\")\nclass NumberOfCategoricalFeatures(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        return np.sum(categorical)\n\n@metafeatures.define(\"RatioNumericalToNominal\")\nclass RatioNumericalToNominal(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        num_categorical = float(metafeatures[\n            \"NumberOfCategoricalFeatures\"](X, y, categorical).value)\n        num_numerical = float(metafeatures[\n            \"NumberOfNumericFeatures\"](X, y, categorical).value)\n        if num_categorical == 0.0:\n            return 0.\n        return num_numerical / num_categorical\n\n@metafeatures.define(\"RatioNominalToNumerical\")\nclass RatioNominalToNumerical(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        num_categorical = float(metafeatures[\n            \"NumberOfCategoricalFeatures\"](X, y, categorical).value)\n        num_numerical = float(metafeatures[\n            \"NumberOfNumericFeatures\"](X, y, categorical).value)\n        if num_numerical == 0.0:\n            return 0.\n        else:\n            return num_categorical / num_numerical\n\n# Number of attributes divided by number of samples\n@metafeatures.define(\"DatasetRatio\")\nclass DatasetRatio(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        return float(metafeatures[\"NumberOfFeatures\"](X, y).value) /\\\n            float(metafeatures[\"NumberOfInstances\"](X, y).value)\n\n@metafeatures.define(\"LogDatasetRatio\", dependency=\"DatasetRatio\")\nclass LogDatasetRatio(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        return np.log(metafeatures.get_value(\"DatasetRatio\"))\n\n@metafeatures.define(\"InverseDatasetRatio\")\nclass InverseDatasetRatio(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        return float(metafeatures[\"NumberOfInstances\"](X, y).value) /\\\n            float(metafeatures[\"NumberOfFeatures\"](X, y).value)\n\n@metafeatures.define(\"LogInverseDatasetRatio\",\n                     dependency=\"InverseDatasetRatio\")\nclass LogInverseDatasetRatio(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        return np.log(metafeatures.get_value(\"InverseDatasetRatio\"))\n\n@helper_functions.define(\"ClassOccurences\")\nclass ClassOccurences(HelperFunction):\n    def _calculate(self, X, y, categorical):\n        if len(y.shape) == 2:\n            occurences = []\n            for i in range(y.shape[1]):\n                occurences.append(self._calculate(X, y[:, i], categorical))\n            return occurences\n        else:\n            occurence_dict = defaultdict(float)\n            for value in y:\n                occurence_dict[value] += 1\n            return occurence_dict\n\n@metafeatures.define(\"ClassProbabilityMin\", dependency=\"ClassOccurences\")\nclass ClassProbabilityMin(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        occurences = helper_functions.get_value(\"ClassOccurences\")\n\n        min_value = np.iinfo(np.int64).max\n        if len(y.shape) == 2:\n            for i in range(y.shape[1]):\n                for num_occurences in occurences[i].values():\n                    if num_occurences < min_value:\n                        min_value = num_occurences\n        else:\n            for num_occurences in occurences.values():\n                if num_occurences < min_value:\n                    min_value = num_occurences\n        return float(min_value) / float(y.shape[0])\n\n# aka default accuracy\n@metafeatures.define(\"ClassProbabilityMax\", dependency=\"ClassOccurences\")\nclass ClassProbabilityMax(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        occurences = helper_functions.get_value(\"ClassOccurences\")\n        max_value = -1\n\n        if len(y.shape) == 2:\n            for i in range(y.shape[1]):\n                for num_occurences in occurences[i].values():\n                    if num_occurences > max_value:\n                        max_value = num_occurences\n        else:\n            for num_occurences in occurences.values():\n                if num_occurences > max_value:\n                    max_value = num_occurences\n        return float(max_value) / float(y.shape[0])\n\n@metafeatures.define(\"ClassProbabilityMean\", dependency=\"ClassOccurences\")\nclass ClassProbabilityMean(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        occurence_dict = helper_functions.get_value(\"ClassOccurences\")\n\n        if len(y.shape) == 2:\n            occurences = []\n            for i in range(y.shape[1]):\n                occurences.extend(\n                    [occurrence for occurrence in occurence_dict[\n                        i].values()])\n            occurences = np.array(occurences)\n        else:\n            occurences = np.array([occurrence for occurrence in occurence_dict.values()],\n                                  dtype=np.float64)\n        return (occurences / y.shape[0]).mean()\n\n@metafeatures.define(\"ClassProbabilitySTD\", dependency=\"ClassOccurences\")\nclass ClassProbabilitySTD(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        occurence_dict = helper_functions.get_value(\"ClassOccurences\")\n\n        if len(y.shape) == 2:\n            stds = []\n            for i in range(y.shape[1]):\n                std = np.array(\n                    [occurrence for occurrence in occurence_dict[\n                                                      i].values()],\n                    dtype=np.float64)\n                std = (std / y.shape[0]).std()\n                stds.append(std)\n            return np.mean(stds)\n        else:\n            occurences = np.array([occurrence for occurrence in occurence_dict.values()],\n                                 dtype=np.float64)\n            return (occurences / y.shape[0]).std()\n\n################################################################################\n# Reif, A Comprehensive Dataset for Evaluating Approaches of various Meta-Learning Tasks\n# defines these five metafeatures as simple metafeatures, but they could also\n#  be the counterpart for the skewness and kurtosis of the numerical features\n@helper_functions.define(\"NumSymbols\")\nclass NumSymbols(HelperFunction):\n    def _calculate(self, X, y, categorical):\n        symbols_per_column = []\n        for i, column in enumerate(X.T):\n            if categorical[i]:\n                unique_values = np.unique(column)\n                num_unique = np.sum(np.isfinite(unique_values))\n                symbols_per_column.append(num_unique)\n        return symbols_per_column\n\n    def _calculate_sparse(self, X, y, categorical):\n        symbols_per_column = []\n        new_X = X.tocsc()\n        for i in range(new_X.shape[1]):\n            if categorical[i]:\n                unique_values = np.unique(new_X.getcol(i).data)\n                num_unique = np.sum(np.isfinite(unique_values))\n                symbols_per_column.append(num_unique)\n        return symbols_per_column\n\n@metafeatures.define(\"SymbolsMin\", dependency=\"NumSymbols\")\nclass SymbolsMin(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        # The minimum can only be zero if there are no nominal features,\n        # otherwise it is at least one\n        # TODO: shouldn't this rather be two?\n        minimum = None\n        for unique in helper_functions.get_value(\"NumSymbols\"):\n            if unique > 0 and (minimum is None or unique < minimum):\n                minimum = unique\n        return minimum if minimum is not None else 0\n\n@metafeatures.define(\"SymbolsMax\", dependency=\"NumSymbols\")\nclass SymbolsMax(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        values = helper_functions.get_value(\"NumSymbols\")\n        if len(values) == 0:\n            return 0\n        return max(max(values), 0)\n\n@metafeatures.define(\"SymbolsMean\", dependency=\"NumSymbols\")\nclass SymbolsMean(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        # TODO: categorical attributes without a symbol don't count towards this\n        # measure\n        values = [val for val in helper_functions.get_value(\"NumSymbols\") if val > 0]\n        mean = np.nanmean(values)\n        return mean if np.isfinite(mean) else 0\n\n@metafeatures.define(\"SymbolsSTD\", dependency=\"NumSymbols\")\nclass SymbolsSTD(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        values = [val for val in helper_functions.get_value(\"NumSymbols\") if val > 0]\n        std = np.nanstd(values)\n        return std if np.isfinite(std) else 0\n\n@metafeatures.define(\"SymbolsSum\", dependency=\"NumSymbols\")\nclass SymbolsSum(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        sum = np.nansum(helper_functions.get_value(\"NumSymbols\"))\n        return sum if np.isfinite(sum) else 0\n\n################################################################################\n# Statistical meta features\n# Only use third and fourth statistical moment because it is common to\n# standardize for the other two\n# see Engels & Theusinger, 1998 - Using a Data Metric for Preprocessing Advice for Data Mining Applications.\n\n@helper_functions.define(\"Kurtosisses\")\nclass Kurtosisses(HelperFunction):\n    def _calculate(self, X, y, categorical):\n        kurts = []\n        for i in range(X.shape[1]):\n            if not categorical[i]:\n                kurts.append(scipy.stats.kurtosis(X[:, i]))\n        return kurts\n\n    def _calculate_sparse(self, X, y, categorical):\n        kurts = []\n        X_new = X.tocsc()\n        for i in range(X_new.shape[1]):\n            if not categorical[i]:\n                start = X_new.indptr[i]\n                stop = X_new.indptr[i+1]\n                kurts.append(scipy.stats.kurtosis(X_new.data[start:stop]))\n        return kurts\n\n@metafeatures.define(\"KurtosisMin\", dependency=\"Kurtosisses\")\nclass KurtosisMin(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        kurts = helper_functions.get_value(\"Kurtosisses\")\n        minimum = np.nanmin(kurts) if len(kurts) > 0 else 0\n        return minimum if np.isfinite(minimum) else 0\n\n@metafeatures.define(\"KurtosisMax\", dependency=\"Kurtosisses\")\nclass KurtosisMax(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        kurts = helper_functions.get_value(\"Kurtosisses\")\n        maximum = np.nanmax(kurts) if len(kurts) > 0 else 0\n        return maximum if np.isfinite(maximum) else 0\n\n@metafeatures.define(\"KurtosisMean\", dependency=\"Kurtosisses\")\nclass KurtosisMean(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        kurts = helper_functions.get_value(\"Kurtosisses\")\n        mean = np.nanmean(kurts) if len(kurts) > 0 else 0\n        return mean if np.isfinite(mean) else 0\n\n@metafeatures.define(\"KurtosisSTD\", dependency=\"Kurtosisses\")\nclass KurtosisSTD(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        kurts = helper_functions.get_value(\"Kurtosisses\")\n        std = np.nanstd(kurts) if len(kurts) > 0 else 0\n        return std if np.isfinite(std) else 0\n\n@helper_functions.define(\"Skewnesses\")\nclass Skewnesses(HelperFunction):\n    def _calculate(self, X, y, categorical):\n        skews = []\n        for i in range(X.shape[1]):\n            if not categorical[i]:\n                skews.append(scipy.stats.skew(X[:, i]))\n        return skews\n\n    def _calculate_sparse(self, X, y, categorical):\n        skews = []\n        X_new = X.tocsc()\n        for i in range(X_new.shape[1]):\n            if not categorical[i]:\n                start = X_new.indptr[i]\n                stop = X_new.indptr[i + 1]\n                skews.append(scipy.stats.skew(X_new.data[start:stop]))\n        return skews\n\n@metafeatures.define(\"SkewnessMin\", dependency=\"Skewnesses\")\nclass SkewnessMin(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        skews = helper_functions.get_value(\"Skewnesses\")\n        minimum = np.nanmin(skews) if len(skews) > 0 else 0\n        return minimum if np.isfinite(minimum) else 0\n\n@metafeatures.define(\"SkewnessMax\", dependency=\"Skewnesses\")\nclass SkewnessMax(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        skews = helper_functions.get_value(\"Skewnesses\")\n        maximum = np.nanmax(skews) if len(skews) > 0 else 0\n        return maximum if np.isfinite(maximum) else 0\n\n@metafeatures.define(\"SkewnessMean\", dependency=\"Skewnesses\")\nclass SkewnessMean(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        skews = helper_functions.get_value(\"Skewnesses\")\n        mean = np.nanmean(skews) if len(skews) > 0 else 0\n        return mean if np.isfinite(mean) else 0\n\n@metafeatures.define(\"SkewnessSTD\", dependency=\"Skewnesses\")\nclass SkewnessSTD(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        skews = helper_functions.get_value(\"Skewnesses\")\n        std = np.nanstd(skews) if len(skews) > 0 else 0\n        return std if np.isfinite(std) else 0\n\n#@metafeatures.define(\"cancor1\")\n#def cancor1(X, y):\n#    pass\n\n#@metafeatures.define(\"cancor2\")\n#def cancor2(X, y):\n#    pass\n\n################################################################################\n# Information-theoretic metafeatures\n@metafeatures.define(\"ClassEntropy\")\nclass ClassEntropy(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        labels = 1 if len(y.shape) == 1 else y.shape[1]\n        if labels == 1:\n            y = y.reshape((-1, 1))\n\n        entropies = []\n        for i in range(labels):\n            occurence_dict = defaultdict(float)\n            for value in y[:, i]:\n                occurence_dict[value] += 1\n            entropies.append(scipy.stats.entropy([occurence_dict[key] for key in\n                                                 occurence_dict], base=2))\n\n        return np.mean(entropies)\n\n#@metafeatures.define(\"normalized_class_entropy\")\n\n#@metafeatures.define(\"attribute_entropy\")\n\n#@metafeatures.define(\"normalized_attribute_entropy\")\n\n#@metafeatures.define(\"joint_entropy\")\n\n#@metafeatures.define(\"mutual_information\")\n\n#@metafeatures.define(\"noise-signal-ratio\")\n\n#@metafeatures.define(\"signal-noise-ratio\")\n\n#@metafeatures.define(\"equivalent_number_of_attributes\")\n\n#@metafeatures.define(\"conditional_entropy\")\n\n#@metafeatures.define(\"average_attribute_entropy\")\n\n################################################################################\n# Landmarking features, computed with cross validation\n# These should be invoked with the same transformations of X and y with which\n# sklearn will be called later on\n\n# from Pfahringer 2000\n# Linear discriminant learner\n@metafeatures.define(\"LandmarkLDA\")\nclass LandmarkLDA(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        import sklearn.discriminant_analysis\n        if len(y.shape) == 1 or y.shape[1] == 1:\n            kf = sklearn.model_selection.StratifiedKFold(n_splits=10)\n        else:\n            kf = sklearn.model_selection.KFold(n_splits=10)\n\n        accuracy = 0.\n        try:\n            for train, test in kf.split(X, y):\n                lda = sklearn.discriminant_analysis.LinearDiscriminantAnalysis()\n\n                if len(y.shape) == 1 or y.shape[1] == 1:\n                    lda.fit(X[train], y[train])\n                else:\n                    lda = OneVsRestClassifier(lda)\n                    lda.fit(X[train], y[train])\n\n                predictions = lda.predict(X[test])\n                accuracy += sklearn.metrics.accuracy_score(predictions, y[test])\n            return accuracy / 10\n        except scipy.linalg.LinAlgError as e:\n            self.logger.warning(\"LDA failed: %s Returned 0 instead!\" % e)\n            return np.NaN\n        except ValueError as e:\n            self.logger.warning(\"LDA failed: %s Returned 0 instead!\" % e)\n            return np.NaN\n\n    def _calculate_sparse(self, X, y, categorical):\n        return np.NaN\n\n# Naive Bayes\n@metafeatures.define(\"LandmarkNaiveBayes\")\nclass LandmarkNaiveBayes(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        import sklearn.naive_bayes\n\n        if len(y.shape) == 1 or y.shape[1] == 1:\n            kf = sklearn.model_selection.StratifiedKFold(n_splits=10)\n        else:\n            kf = sklearn.model_selection.KFold(n_splits=10)\n\n        accuracy = 0.\n        for train, test in kf.split(X, y):\n            nb = sklearn.naive_bayes.GaussianNB()\n\n            if len(y.shape) == 1 or y.shape[1] == 1:\n                nb.fit(X[train], y[train])\n            else:\n                nb = OneVsRestClassifier(nb)\n                nb.fit(X[train], y[train])\n\n            predictions = nb.predict(X[test])\n            accuracy += sklearn.metrics.accuracy_score(predictions, y[test])\n        return accuracy / 10\n\n    def _calculate_sparse(self, X, y, categorical):\n        return np.NaN\n\n# Cart learner instead of C5.0\n@metafeatures.define(\"LandmarkDecisionTree\")\nclass LandmarkDecisionTree(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        import sklearn.tree\n\n        if len(y.shape) == 1 or y.shape[1] == 1:\n            kf = sklearn.model_selection.StratifiedKFold(n_splits=10)\n        else:\n            kf = sklearn.model_selection.KFold(n_splits=10)\n\n        accuracy = 0.\n        for train, test in kf.split(X, y):\n            random_state = sklearn.utils.check_random_state(42)\n            tree = sklearn.tree.DecisionTreeClassifier(random_state=random_state)\n\n            if len(y.shape) == 1 or y.shape[1] == 1:\n                tree.fit(X[train], y[train])\n            else:\n                tree = OneVsRestClassifier(tree)\n                tree.fit(X[train], y[train])\n\n            predictions = tree.predict(X[test])\n            accuracy += sklearn.metrics.accuracy_score(predictions, y[test])\n        return accuracy / 10\n\n    def _calculate_sparse(self, X, y, categorical):\n        return np.NaN\n\n\"\"\"If there is a dataset which has OneHotEncoded features it can happend that\na node learner splits at one of the attribute encodings. This should be fine\nas the dataset is later on used encoded.\"\"\"\n\n# TODO: use the same tree, this has then to be computed only once and hence\n#  saves a lot of time...\n@metafeatures.define(\"LandmarkDecisionNodeLearner\")\nclass LandmarkDecisionNodeLearner(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        import sklearn.tree\n\n        if len(y.shape) == 1 or y.shape[1] == 1:\n            kf = sklearn.model_selection.StratifiedKFold(n_splits=10)\n        else:\n            kf = sklearn.model_selection.KFold(n_splits=10)\n\n        accuracy = 0.\n        for train, test in kf.split(X, y):\n            random_state = sklearn.utils.check_random_state(42)\n            node = sklearn.tree.DecisionTreeClassifier(\n                criterion=\"entropy\", max_depth=1, random_state=random_state,\n                min_samples_split=2, min_samples_leaf=1,  max_features=None)\n            if len(y.shape) == 1 or y.shape[1] == 1:\n                node.fit(X[train], y[train])\n            else:\n                node = OneVsRestClassifier(node)\n                node.fit(X[train], y[train])\n            predictions = node.predict(X[test])\n            accuracy += sklearn.metrics.accuracy_score(predictions, y[test])\n        return accuracy / 10\n\n    def _calculate_sparse(self, X, y, categorical):\n        return np.NaN\n\n@metafeatures.define(\"LandmarkRandomNodeLearner\")\nclass LandmarkRandomNodeLearner(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        import sklearn.tree\n\n        if len(y.shape) == 1 or y.shape[1] == 1:\n            kf = sklearn.model_selection.StratifiedKFold(n_splits=10)\n        else:\n            kf = sklearn.model_selection.KFold(n_splits=10)\n        accuracy = 0.\n\n        for train, test in kf.split(X, y):\n            random_state = sklearn.utils.check_random_state(42)\n            node = sklearn.tree.DecisionTreeClassifier(\n                criterion=\"entropy\", max_depth=1, random_state=random_state,\n                min_samples_split=2, min_samples_leaf=1, max_features=1)\n            node.fit(X[train], y[train])\n            predictions = node.predict(X[test])\n            accuracy += sklearn.metrics.accuracy_score(predictions, y[test])\n        return accuracy / 10\n\n    def _calculate_sparse(self, X, y, categorical):\n        return np.NaN\n\n\"\"\"\nThis is wrong...\n@metafeatures.define(\"landmark_worst_node_learner\")\ndef landmark_worst_node_learner(X, y):\n    # TODO: this takes more than 10 minutes on some datasets (eg mfeat-pixels)\n    # which has 240*6 = 1440 discrete attributes...\n    # TODO: calculate information gain instead of using the worst test result\n    import sklearn.tree\n    performances = []\n    for attribute_idx in range(X.shape[1]):\n        kf = sklearn.model_selection.StratifiedKFold(y, n_folds=10)\n        accuracy = 0.\n        for train, test in kf:\n            node = sklearn.tree.DecisionTreeClassifier(criterion=\"entropy\",\n                max_features=None, max_depth=1, min_samples_split=1,\n                min_samples_leaf=1)\n            node.fit(X[train][:,attribute_idx].reshape((-1, 1)), y[train],\n                     check_input=False)\n            predictions = node.predict(X[test][:,attribute_idx].reshape((-1, 1)))\n            accuracy += sklearn.metrics.accuracy_score(predictions, y[test])\n        performances.append(1 - (accuracy / 10))\n    return max(performances)\n\"\"\"\n\n# Replace the Elite 1NN with a normal 1NN, this slightly changes the\n# intuition behind this landmark, but Elite 1NN is used nowhere else...\n@metafeatures.define(\"Landmark1NN\")\nclass Landmark1NN(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        import sklearn.neighbors\n\n        if len(y.shape) == 1 or y.shape[1] == 1:\n            kf = sklearn.model_selection.StratifiedKFold(n_splits=10)\n        else:\n            kf = sklearn.model_selection.KFold(n_splits=10)\n\n        accuracy = 0.\n        for train, test in kf.split(X, y):\n            kNN = sklearn.neighbors.KNeighborsClassifier(n_neighbors=1)\n            if len(y.shape) == 1 or y.shape[1] == 1:\n                kNN.fit(X[train], y[train])\n            else:\n                kNN = OneVsRestClassifier(kNN)\n                kNN.fit(X[train], y[train])\n            predictions = kNN.predict(X[test])\n            accuracy += sklearn.metrics.accuracy_score(predictions, y[test])\n        return accuracy / 10\n\n################################################################################\n# Bardenet 2013 - Collaborative Hyperparameter Tuning\n# K number of classes (\"number_of_classes\")\n# log(d), log(number of attributes)\n# log(n/d), log(number of training instances/number of attributes)\n# p, how many principal components to keep in order to retain 95% of the\n#     dataset variance\n# skewness of a dataset projected onto one principal component...\n# kurtosis of a dataset projected onto one principal component\n\n@helper_functions.define(\"PCA\")\nclass PCA(HelperFunction):\n    def _calculate(self, X, y, categorical):\n        import sklearn.decomposition\n        pca = sklearn.decomposition.PCA(copy=True)\n        rs = np.random.RandomState(42)\n        indices = np.arange(X.shape[0])\n        for i in range(10):\n            try:\n                rs.shuffle(indices)\n                pca.fit(X[indices])\n                return pca\n            except LinAlgError as e:\n                pass\n        self.logger.warning(\"Failed to compute a Principle Component Analysis\")\n        return None\n\n    def _calculate_sparse(self, X, y, categorical):\n        import sklearn.decomposition\n        rs = np.random.RandomState(42)\n        indices = np.arange(X.shape[0])\n        # This is expensive, but necessary with scikit-learn 0.15\n        Xt = X.astype(np.float64)\n        for i in range(10):\n            try:\n                rs.shuffle(indices)\n                truncated_svd = sklearn.decomposition.TruncatedSVD(\n                    n_components=X.shape[1]-1, random_state=i,\n                    algorithm=\"randomized\")\n                truncated_svd.fit(Xt[indices])\n                return truncated_svd\n            except LinAlgError as e:\n                pass\n        self.logger.warning(\"Failed to compute a Truncated SVD\")\n        return None\n\n\n# Maybe define some more...\n@metafeatures.define(\"PCAFractionOfComponentsFor95PercentVariance\", dependency=\"PCA\")\nclass PCAFractionOfComponentsFor95PercentVariance(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        pca_ = helper_functions.get_value(\"PCA\")\n        if pca_ is None:\n            return np.NaN\n        sum_ = 0.\n        idx = 0\n        while sum_ < 0.95 and idx < len(pca_.explained_variance_ratio_):\n            sum_ += pca_.explained_variance_ratio_[idx]\n            idx += 1\n        return float(idx)/float(X.shape[1])\n\n# Kurtosis of first PC\n@metafeatures.define(\"PCAKurtosisFirstPC\", dependency=\"PCA\")\nclass PCAKurtosisFirstPC(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        pca_ = helper_functions.get_value(\"PCA\")\n        if pca_ is None:\n            return np.NaN\n        components = pca_.components_\n        pca_.components_ = components[:1]\n        transformed = pca_.transform(X)\n        pca_.components_ = components\n\n        kurtosis = scipy.stats.kurtosis(transformed)\n        return kurtosis[0]\n\n# Skewness of first PC\n@metafeatures.define(\"PCASkewnessFirstPC\", dependency=\"PCA\")\nclass PCASkewnessFirstPC(MetaFeature):\n    def _calculate(self, X, y, categorical):\n        pca_ = helper_functions.get_value(\"PCA\")\n        if pca_ is None:\n            return np.NaN\n        components = pca_.components_\n        pca_.components_ = components[:1]\n        transformed = pca_.transform(X)\n        pca_.components_ = components\n\n        skewness = scipy.stats.skew(transformed)\n        return skewness[0]\n\n\ndef calculate_all_metafeatures_encoded_labels(X, y, categorical, dataset_name,\n        calculate=None, dont_calculate=None):\n    \"\"\"Calculate only metafeatures for which a 1HotEncoded feature matrix is\n    necessery.\"\"\"\n\n    calculate = set()\n    calculate.update(npy_metafeatures)\n\n    return calculate_all_metafeatures(X, y, categorical, dataset_name,\n                                      calculate=calculate,\n                                      dont_calculate=dont_calculate)\n\n\ndef calculate_all_metafeatures_with_labels(X, y, categorical, dataset_name,\n                                           calculate=None, dont_calculate=None):\n    if dont_calculate is None:\n        dont_calculate = set()\n    else:\n        dont_calculate = copy.deepcopy(dont_calculate)\n    dont_calculate.update(npy_metafeatures)\n    return calculate_all_metafeatures(X, y, categorical, dataset_name,\n                                      calculate=calculate,\n                                      dont_calculate=dont_calculate)\n\n\ndef calculate_all_metafeatures(X, y, categorical, dataset_name,\n        calculate=None, dont_calculate=None, densify_threshold=1000):\n    logger = get_logger(__name__)\n\n    \"\"\"Calculate all metafeatures.\"\"\"\n    helper_functions.clear()\n    metafeatures.clear()\n    mf_ = dict()\n\n    visited = set()\n    to_visit = deque()\n    to_visit.extend(metafeatures)\n    print(\"X\")\n    print(X)\n    print(\"y\")\n    print(y)\n    print(\"categoricals\")\n    print(categorical)\n    X_transformed = None\n    y_transformed = None\n\n    # TODO calculate the numpy metafeatures after all others to consume less\n    # memory\n    while len(to_visit) > 0:\n        name = to_visit.pop()\n        if calculate is not None and name not in calculate:\n            continue\n        if dont_calculate is not None and name in dont_calculate:\n            continue\n\n        if name in npy_metafeatures:\n            if X_transformed is None:\n                # TODO make sure this is done as efficient as possible (no copy for\n                # sparse matrices because of wrong sparse format)\n                sparse = scipy.sparse.issparse(X)\n                if any(categorical):\n                    ohe = OneHotEncoder(categorical_features=categorical, sparse=True)\n                    X_transformed = ohe.fit_transform(X)\n                else:\n                    X_transformed = X\n                imputer = Imputer(strategy='mean', copy=False)\n                X_transformed = imputer.fit_transform(X_transformed)\n                center = not scipy.sparse.isspmatrix(X_transformed)\n                standard_scaler = StandardScaler(copy=False, with_mean=center)\n                X_transformed = standard_scaler.fit_transform(X_transformed)\n                categorical_transformed = [False] * X_transformed.shape[1]\n\n                # Densify the transformed matrix\n                if not sparse and scipy.sparse.issparse(X_transformed):\n                    bytes_per_float = X_transformed.dtype.itemsize\n                    num_elements = X_transformed.shape[0] * X_transformed.shape[1]\n                    megabytes_required = num_elements * bytes_per_float / 1000 / 1000\n                    if megabytes_required < densify_threshold:\n                        X_transformed = X_transformed.todense()\n\n                # This is not only important for datasets which are somehow\n                # sorted in a strange way, but also prevents lda from failing in\n                # some cases.\n                # Because this is advanced indexing, a copy of the data is returned!!!\n                X_transformed = check_array(X_transformed,\n                                            force_all_finite=True,\n                                            accept_sparse='csr')\n                rs = np.random.RandomState(42)\n                indices = np.arange(X_transformed.shape[0])\n                rs.shuffle(indices)\n                # TODO Shuffle inplace\n                X_transformed = X_transformed[indices]\n                y_transformed = y[indices]\n\n            X_ = X_transformed\n            y_ = y_transformed\n            categorical_ = categorical_transformed\n        else:\n            X_ = X\n            y_ = y\n            categorical_ = categorical\n\n        dependency = metafeatures.get_dependency(name)\n        if dependency is not None:\n            is_metafeature = dependency in metafeatures\n            is_helper_function = dependency in helper_functions\n\n            if is_metafeature and is_helper_function:\n                raise ValueError(dependency)\n            elif not is_metafeature and not is_helper_function:\n                raise NotImplementedError()\n            elif is_metafeature and not metafeatures.is_calculated(dependency):\n                to_visit.appendleft(name)\n                continue\n            elif is_helper_function and not helper_functions.is_calculated(\n                    dependency):\n                logger.info(\"%s: Going to calculate: %s\", dataset_name,\n                            dependency)\n                value = helper_functions[dependency](X_, y_, categorical_)\n                helper_functions.set_value(dependency, value)\n                mf_[dependency] = value\n\n        logger.info(\"%s: Going to calculate: %s\", dataset_name,\n                    name)\n\n        value = metafeatures[name](X_, y_, categorical_)\n        metafeatures.set_value(name, value)\n        mf_[name] = value\n        visited.add(name)\n\n    mf_ = DatasetMetafeatures(dataset_name, mf_)\n    return mf_\n\n\nnpy_metafeatures = set([\"LandmarkLDA\",\n                        \"LandmarkNaiveBayes\",\n                        \"LandmarkDecisionTree\",\n                        \"LandmarkDecisionNodeLearner\",\n                        \"LandmarkRandomNodeLearner\",\n                        \"LandmarkWorstNodeLearner\",\n                        \"Landmark1NN\",\n                        \"PCAFractionOfComponentsFor95PercentVariance\",\n                        \"PCAKurtosisFirstPC\",\n                        \"PCASkewnessFirstPC\",\n                        \"Skewnesses\",\n                        \"SkewnessMin\",\n                        \"SkewnessMax\",\n                        \"SkewnessMean\",\n                        \"SkewnessSTD\",\n                        \"Kurtosisses\",\n                        \"KurtosisMin\",\n                        \"KurtosisMax\",\n                        \"KurtosisMean\",\n                        \"KurtosisSTD\"])\n\nsubsets = dict()\n# All implemented metafeatures\nsubsets[\"all\"] = set(metafeatures.functions.keys())\n\n# Metafeatures used by Pfahringer et al. (2000) in the first experiment\nsubsets[\"pfahringer_2000_experiment1\"] = set([\"number_of_features\",\n                                             \"number_of_numeric_features\",\n                                             \"number_of_categorical_features\",\n                                             \"number_of_classes\",\n                                             \"class_probability_max\",\n                                             \"landmark_lda\",\n                                             \"landmark_naive_bayes\",\n                                             \"landmark_decision_tree\"])\n\n# Metafeatures used by Pfahringer et al. (2000) in the second experiment\n# worst node learner not implemented yet\n\"\"\"\npfahringer_2000_experiment2 = set([\"landmark_decision_node_learner\",\n                                   \"landmark_random_node_learner\",\n                                   \"landmark_worst_node_learner\",\n                                   \"landmark_1NN\"])\n\"\"\"\n\n# Metafeatures used by Yogatama and Mann (2014)\nsubsets[\"yogotama_2014\"] = set([\"log_number_of_features\",\n                               \"log_number_of_instances\",\n                               \"number_of_classes\"])\n\n# Metafeatures used by Bardenet et al. (2013) for the AdaBoost.MH experiment\nsubsets[\"bardenet_2013_boost\"] = set([\"number_of_classes\",\n                                     \"log_number_of_features\",\n                                     \"log_inverse_dataset_ratio\",\n                                     \"pca_95percent\"])\n\n# Metafeatures used by Bardenet et al. (2013) for the Neural Net experiment\nsubsets[\"bardenet_2013_nn\"] = set([\"number_of_classes\",\n                                  \"log_number_of_features\",\n                                  \"log_inverse_dataset_ratio\",\n                                  \"pca_kurtosis_first_pc\",\n                                  \"pca_skewness_first_pc\"])\n\n\n"
  },
  {
    "path": "server/atm_server/recommender/predict_dataset.py",
    "content": "import atm_server.recommender.metafeatures as metafeatures\nimport atm_server.recommender.encoder as encoder\nimport pandas as pd\nimport math\nimport numpy as np\nimport os\nclass Recommender:\n    # Read Datasets.\n    def __init__(self,saved_meta_path):\n        self.feature_list = ['NumberOfInstancesWithMissingValues', 'ClassProbabilitySTD',  'NumberOfInstances', 'LogNumberOfFeatures', 'RatioNumericalToNominal', 'NumberOfMissingValues', \n                    'DatasetRatio', 'LogDatasetRatio', 'NumberOfNumericFeatures', \n                    'NumberOfFeaturesWithMissingValues', 'LogNumberOfInstances',\n                    'SymbolsSum', 'KurtosisMax', 'ClassProbabilityMin', 'KurtosisMin',\n                    'KurtosisSTD',   'NumberOfFeatures',  'SkewnessSTD',  'PercentageOfInstancesWithMissingValues',\n                    'SkewnessMean', 'SymbolsMin', 'ClassProbabilityMean', 'SkewnessMax', \n                    'PercentageOfFeaturesWithMissingValues', 'NumberOfCategoricalFeatures',\n                    'PercentageOfMissingValues', 'RatioNominalToNumerical', 'ClassEntropy',\n                    'InverseDatasetRatio', 'SymbolsSTD',   'ClassProbabilityMax', 'SymbolsMax',\n                    'KurtosisMean', 'SkewnessMin', 'NumberOfClasses', 'SymbolsMean']\n        self.features = set(self.feature_list)\n        self.column_title =  [\"dataset_name\"] + self.feature_list\n        self.pre_meta_path = './server/recommender_dataset/data_meta_first.csv' \n        self.pre_PMA_path = './server/recommender_dataset/dataset_method_PMA.csv'\n        self.saved_meta_path = saved_meta_path\n        if not os.path.exists(self.saved_meta_path):\n            os.makedirs(self.saved_meta_path)\n\n    def getSavedDataMetaPath(self,dataset_name):\n        return self.saved_meta_path + \"/data_meta_\"+str(dataset_name)+\".csv\"\n\n    def getSavedResultPath(self,dataset_name):\n        return self.saved_meta_path + \"/data_result_\"+str(dataset_name)+\".csv\"\n\n    def calculate_dataset(self,path_to_dataset,dataset_name):\n        '''\n        calculate the train dataset meta information.\n        '''\n        # Read Train Dataset\n        dataset_train_path = path_to_dataset\n        dataset = pd.read_csv(dataset_train_path)\n        num_col = dataset.shape[1]\n\n        # Dataset Feature Title\n        #dataset_feature = dataset.columns.values\n        #dataset_feature = dataset_feature.tolist()\n        #dataset_feature.remove('class')\n\n        encode = encoder.DataEncoder()\n        X,y = encode.fit_transform(dataset)\n        #X = dataset[dataset_feature]\n        #y = dataset[['class']]\n        #X = X.values\n        #y = y.values\n        #categoricals = [type(X[0,j]) is str for j in range(num_col-1)]\n        categoricals = [False] * (X.shape[1])\n        result = metafeatures.calculate_all_metafeatures(X,y,categoricals,dataset_name,self.features)\n        result_array = []\n        result_array.append(dataset_name)\n        for name in self.feature_list:\n            data = str(result.metafeature_values[name].value)\n            result_array.append(data)\n        df2 = pd.DataFrame([result_array], columns=self.column_title)\n        df2.to_csv(self.getSavedDataMetaPath(dataset_name))\n        \n\n\n    def calculate_l1_dataset(self,dataset_name):\n        '''\n        According to the meta information, predict the result of methods ranking.\n        '''\n        # l1 - distance\n        def L1(v1,v2):\n            if len(v1)!=len(v2):\n                print(\"l1 distance calculated error\")\n                return -1\n            return sum([abs(v1[i]-v2[i]) for i in range(len(v1))])\n        # Read Pre computed meta information\n        df3 = pd.read_csv(self.pre_meta_path)\n        df4 = pd.read_csv(self.getSavedDataMetaPath(dataset_name))\n        num = df3.shape[0]\n        this_feature = df4.loc[0,self.feature_list].tolist()\n        min_value = 0\n        min_index = -1\n        value_index = []\n        # Calculate L1 distance\n        for i in range(num):\n            index = i\n            row_feature = df3.loc[i,self.feature_list].tolist()\n            value = L1(this_feature,row_feature)\n            value_index+=[{\"index\":index,\"value\":value}]\n            if min_index == -1 or min_value>value:\n                min_value = value\n                min_index = i\n        value_index.sort(key = lambda a: a[\"value\"])  \n        # Use Knn methods   \n        k = 10\n        index_list = [value_index[i][\"index\"] for i in range(k)]\n        # Fetch the corresponding datasets\n        result_name = df3.loc[index_list,\"dataset_name\"]\n        df5 = pd.read_csv(self.pre_PMA_path)\n        title = ['method','name','PMA']\n        title2 = ['value']\n        df6 = pd.DataFrame([],columns=title+title2)\n        # name column is replaced by the l1 distance\n        base_value = value_index[0][\"value\"]\n        # Construct the PMA datasets\n        for i in range(k):\n            cor_name = result_name.at[index_list[i]]\n            cor_value = base_value / value_index[i][\"value\"]\n            result = df5.loc[df5['name'] == cor_name]\n            result = result.sort_values(by=['PMA'],ascending=False)\n            result = result[title]\n            length = len(result)\n            df7 = pd.DataFrame([cor_value]*length,columns=title2)\n            df7.index = result.index\n            df8 = result.join(df7)\n            df6 = pd.concat([df6,df8])\n        # Calculate Weighted Average\n        # df6.to_csv(\"./data_result_\"+dataset_name+\".csv\")\n        result2 = df6.groupby(df6.method).apply(lambda x: np.average(x.PMA, weights=x.value))\n        result2 = result2.sort_values(ascending=False)\n        # print(df6)\n        \n        result2.to_csv(self.getSavedResultPath(dataset_name))\n\n    def predict_dataset(self,predict_dataset_path,datasetID):\n        result_path = self.getSavedResultPath(str(datasetID))\n        computed = os.path.exists(result_path)\n        if not computed:\n            self.calculate_dataset(predict_dataset_path,datasetID)\n            self.calculate_l1_dataset(datasetID)\n            computed = os.path.exists(result_path)\n            if not computed:\n                raise ValueError(\"Fail to compute predict dataset\")\n        df9 = pd.Series.from_csv(result_path)\n        #print(df9)\n        result3 = df9.index.tolist()\n        result3 = [str1[len('classify_'):len(str1)] for str1 in result3]\n        result3 = [str1  for str1 in result3 if not str1 == 'dbn']\n        return result3\n\n\n"
  },
  {
    "path": "server/atm_server/server.py",
    "content": "import os\nimport sys\nsys.path.append(os.path.dirname(os.path.dirname(__file__)))\nimport argparse\ntry:\n    import simplejson as json\nexcept ImportError:\n    import json\nfrom flask import Flask\nfrom flask_cors import CORS\n\nfrom atm.config import (add_arguments_aws_s3, add_arguments_sql,\n                        add_arguments_datarun, add_arguments_logging,\n                        load_config, initialize_logging)\n\nfrom atm_server import SERVER_ROOT, db\nfrom atm_server.config import Config, ProductionConfig, DevelopmentConfig\nfrom atm_server.api import api\nfrom atm_server.atmvis import vis\n\n\ndef create_app(config=None):\n    \"\"\"Create and configure an instance of the Flask application.\"\"\"\n    app = Flask(__name__)\n    CORS(app)\n\n    # Update configs\n    if app.config['ENV'] == 'production':\n        app.config.from_object(ProductionConfig)\n    elif app.config['ENV'] == 'development':\n        app.config.from_object(DevelopmentConfig)\n    else:\n        app.config.from_object(Config)\n\n    if config is None:\n        config = {}\n    config = {key: val for key, val in config.items() if val is not None}\n    if config.get('run_config', None) is not None:\n        config['RUN_CONFIG'] = config['run_config']\n    if config.get('sql_config', None) is not None:\n        config['SQL_CONFIG'] = config['sql_config']\n\n    # print(config)\n    app.config.update(config)\n\n    # Load ATM confs\n    sql_conf, run_conf, aws_conf, log_conf = load_config(**config)\n    # print(run_conf.selector)\n    # print(sql_conf)\n    app.config.update({'SQL_CONF': sql_conf, 'RUN_CONF': run_conf, 'AWS_CONF': aws_conf, 'LOG_CONF': log_conf})\n    app.config.update({'RUN_PER_PARTITION': config['run_per_partition']})\n\n    @app.route('/hello')\n    def hello():\n        return 'Hello, World!'\n\n    db.init_app(app)\n    app.register_blueprint(api, url_prefix='/api')\n    app.register_blueprint(vis, url_prefix='/')\n    return app\n\n\ndef add_arguments_server(parser):\n    parser.add_argument('--run-per-partition', default=False, action='store_true',\n                        help='if set, generate a new datarun for each hyperpartition')\n\n    # API flags\n    parser.add_argument('--host', default='0.0.0.0', help='Port in which to run the API')\n    parser.add_argument('--port', default=7777, help='Port in which to run the API')\n    parser.add_argument('--debug', action=\"store_const\", default=False, const=True,\n                        help='If true, run Flask in debug mode')\n\n\ndef start_server():\n\n    # ATM flags\n    parser = argparse.ArgumentParser()\n    add_arguments_aws_s3(parser)\n    add_arguments_sql(parser)\n    add_arguments_datarun(parser)\n    add_arguments_logging(parser)\n    add_arguments_server(parser)\n\n    _args = parser.parse_args()\n\n    if _args.debug:\n        os.environ['FLASK_ENV'] = 'development'\n\n    app = create_app(vars(_args))\n\n    app.run(\n        debug=_args.debug,\n        host=_args.host,\n        port=int(_args.port)\n    )\n\n\nif __name__ == '__main__':\n    start_server()\n"
  },
  {
    "path": "server/atm_server/utils.py",
    "content": "import uuid\nimport decimal\nimport datetime\n\ntry:\n    import simplejson as json\nexcept ImportError:\n    import json\n\nimport flask\nfrom btb.hyper_parameter import HyperParameter\n\n\ndef nice_json_encoder(base_encoder):\n\n    class JSONEncoder(base_encoder):\n        \"\"\"\n        JSONEncoder subclass that knows how to encode date/time, decimal types, and UUIDs.\n        See: https://stackoverflow.com/questions/11875770/how-to-overcome-datetime-datetime-not-json-serializable\n        \"\"\"\n        def default(self, o):\n            # See \"Date Time String Format\" in the ECMA-262 specification.\n            if isinstance(o, datetime.datetime):\n                r = o.isoformat()\n                if o.microsecond:\n                    r = r[:23] + r[26:]\n                if r.endswith('+00:00'):\n                    r = r[:-6] + 'Z'\n                return r\n            elif isinstance(o, datetime.date):\n                return o.isoformat()\n            elif isinstance(o, datetime.time):\n                if o.utcoffset() is not None:\n                    raise ValueError(\"JSON can't represent timezone-aware times.\")\n                r = o.isoformat()\n                if o.microsecond:\n                    r = r[:12]\n                return r\n            elif isinstance(o, (decimal.Decimal, uuid.UUID)):\n                return str(o)\n            elif isinstance(o, bytes):\n                return str(o, encoding='utf-8')\n            elif isinstance(o, HyperParameter):\n                return {'type': o.type, 'range': o.range}\n            return super(JSONEncoder, self).default(o)\n\n    return JSONEncoder\n\n\nsysJSONEncoder = nice_json_encoder(json.JSONEncoder)\nflaskJSONEnCoder = nice_json_encoder(flask.json.JSONEncoder)\n\n"
  },
  {
    "path": "server/config/run.1.yaml",
    "content": "## Dataset arguments\ntrain_path: atm/data/test/pollution_1.csv\n# if test_path is not supplied, train_path is assumed to point to train/test data\ntest_path:\ndata_description: \"Example dataset description\"\nclass_column: class\n\n## Datarun arguments\ndataset_id:\nmethods:\n    - rf\n    - logreg\n    - dt\n# priority (higher number is more important)\npriority: 1\n# Should there be a classifier or walltime budget?\nbudget_type: classifier\n# If budget_type is classifier, how many classifiers to try?\nbudget: 100\n# How should ATM sample hyperparameters from a given frozen set?\ntuner: gp\n# r_minimum is the number of random runs performed in each hyperpartition before\n# allowing bayesian opt to select parameters.\nr_minimum: 2\n# gridding determines whether or not sample selection will happen on a grid.\ngridding: 0\n# How should ATM select a particular hyperpartition (frozen set) from the\n# set of all hyperpartitions?\nselector: bestk\n# k is number that xxx_k methods use. It is similar to r_minimum, except it\n# determines how much \"history\" ATM considers for certain hyperpartition\n# selection logic.\nk_window: 5\n# Which field to use for judgment of performance\n# options: f1, roc_auc, accuracy\nmetric: f1\n# Which data to use for computing judgment score\n# cv = Cross_Validated performance on training data\n# test = Performance on test data\nscore_target: cv\n"
  },
  {
    "path": "server/config/run.yaml",
    "content": "budget: 1000\nbudget_type: classifier\nclass_column: class\ndata_description: Example dataset description\ndataset_id: null\ngridding: 0\nk_window: 5\nmethods: [rf, knn, svm, dt, pa, logreg, bnb, mlp, ada, mnb, gp, gnb, sgd, et]\nmetric: f1\npriority: 1\nr_minimum: 2\nscore_target: cv\nselector: bestk\ntest_path: null\ntrain_path: atm/data/test/pollution_1.csv\ntuner: gp\n"
  },
  {
    "path": "server/config/sql.yaml",
    "content": "# SQL dialect\ndialect: sqlite\n# Name of the database\ndatabase: atm.db\n# Username to gain access to the database\nusername:\n# Password to gain access to the database\npassword:\n# Host name of the device hosting the database\nhost:\n# Port on host listening for database connections\nport:\n# Optional field for specifying login details\nquery:\n"
  },
  {
    "path": "server/recommender_dataset/data_meta_first.csv",
    "content": ",dataset_name,NumberOfInstancesWithMissingValues,ClassProbabilitySTD,NumberOfInstances,LogNumberOfFeatures,RatioNumericalToNominal,NumberOfMissingValues,DatasetRatio,LogDatasetRatio,NumberOfNumericFeatures,NumberOfFeaturesWithMissingValues,LogNumberOfInstances,SymbolsSum,KurtosisMax,ClassProbabilityMin,KurtosisMin,KurtosisSTD,NumberOfFeatures,SkewnessSTD,PercentageOfInstancesWithMissingValues,SkewnessMean,SymbolsMin,ClassProbabilityMean,SkewnessMax,PercentageOfFeaturesWithMissingValues,NumberOfCategoricalFeatures,PercentageOfMissingValues,RatioNominalToNumerical,ClassEntropy,InverseDatasetRatio,SymbolsSTD,ClassProbabilityMax,SymbolsMax,KurtosisMean,SkewnessMin,NumberOfClasses,SymbolsMean\n0,2dplanes_1,0.0,0.0010337456635245434,28537.0,2.302585092994046,0.0,0.0,0.00035042225882188035,-7.956371676884557,10,0.0,10.258956769878603,0.0,-1.4908971222541552,0.49896625433647546,-1.9994747139170819,0.14931849461627333,10.0,0.010497885377016626,0.0,-0.005936204634653333,0,0.5,0.011442587567135874,0.0,0,0.0,0.0,0.9999969165831208,2853.7,0,0.5010337456635245,0,-1.5518856197501467,-0.022919120465625893,2.0,0\n1,AP_Endometrium_Prostate_1,0.0,0.038461538461538436,91.0,9.299723933110869,0.0,0.0,120.16483516483517,4.788864426594018,10935,0.0,4.51085950651685,0.0,85.93335225584003,0.46153846153846156,-1.7062917036196577,12.65089680531472,10935.0,1.5756217581956777,0.0,1.8644958515293815,0,0.5,9.375164021447208,0.0,0,0.0,0.0,0.9957274520849256,0.008321902149062643,0,0.5384615384615384,0,7.226009248747241,-1.0288514888039386,2.0,0\n2,Amazon_employee_access_1,0.0,0.44166884645566307,22938.0,2.1972245773362196,0.0,0.0,0.0003923620193565263,-7.843325625588248,9,0.0,10.040550202924468,0.0,3.4763586382077145,0.058331153544336906,-1.817412408528041,1.934500194072665,9.0,0.6863239984367495,0.0,0.8932258734509249,0,0.5,1.9800630589849089,0.0,0,0.0,0.0,0.3207842883754384,2548.6666666666665,0,0.9416688464556631,0,0.5225269986651679,0.018510898540463474,2.0,0\n3,Australian_1,0.0,0.059006211180124196,483.0,2.6390573296152584,0.0,0.0,0.028985507246376812,-3.5409593240373143,14,0.0,6.180016653652572,0.0,178.5981141690388,0.4409937888198758,-1.9892548911735373,46.64624181497319,14.0,3.508895764673048,0.0,1.6789858146057135,0,0.5,12.319774538669648,0.0,0,0.0,0.0,0.9899303926829204,34.5,0,0.5590062111801242,0,19.28647438946926,-2.198043136248542,2.0,0\n4,BNG(breast-w)_1,0.0,0.15473943968645665,27556.0,2.1972245773362196,0.0,0.0,0.00032660763536072,-8.026750999376867,9,0.0,10.223975576713087,0.0,12.063564721908211,0.34526056031354335,-0.7299412408726429,3.7832021136567264,9.0,0.7706993150946566,0.0,1.4652810383612593,0,0.5,3.4812107352367434,0.0,0,0.0,0.0,0.9297639613390066,3061.777777777778,0,0.6547394396864566,0,1.5953348078679497,0.6003477981539309,2.0,0\n5,BNG(cmc)_1,0.0,0.08301500568193039,38707.0,2.1972245773362196,0.0,0.0,0.0002325160823623634,-8.366551163878071,9,0.0,10.563775741214291,0.0,7.952278680328373,0.22525641356860515,-1.3021416376140769,2.718417507181044,9.0,1.4285253429004698,0.0,-0.1409209992454264,0,0.3333333333333333,3.154723233554471,0.0,0,0.0,0.0,1.538510932160457,4300.777777777777,0,0.4270803730591366,0,0.7406433491701117,-1.9301091638101726,3.0,0\n6,\"BNG(cmc,nominal,55296)_1\",0.0,0.08307181673198961,38707.0,2.1972245773362196,0.0,0.0,0.0002325160823623634,-8.366551163878071,9,0.0,10.563775741214291,0.0,7.593209391762633,0.22636732373989202,-1.3083394411412705,2.905858584319702,9.0,1.5783418938180367,0.0,-0.027931589989352437,0,0.3333333333333333,3.097290653419959,0.0,0,0.0,0.0,1.538642521389121,4300.777777777777,0,0.4288888314775105,0,1.0993172229276695,-1.9301091638101726,3.0,0\n7,BNG(tic-tac-toe)_1,0.0,0.15444912178835823,27556.0,2.1972245773362196,0.0,0.0,0.00032660763536072,-8.026750999376867,9,0.0,10.223975576713087,0.0,-0.9882968418117666,0.34555087821164177,-1.4164913041167206,0.13248406425163145,9.0,0.11688831233308468,0.0,-0.3502159319683038,0,0.5,-0.22334828779099034,0.0,0,0.0,0.0,0.9300317241657566,3061.777777777778,0,0.6544491217883582,0,-1.2773428141179128,-0.5717081628785968,2.0,0\n8,BNG(vote)_1,0.0,0.11518256130790192,91750.0,2.772588722239781,0.0,0.0,0.00017438692098092643,-8.654234043677036,16,0.0,11.426822765916818,0.0,1.8358712456430268,0.3848174386920981,-1.9981173987138547,0.9035291968804419,16.0,0.5845867541728698,0.0,-0.16186283363412923,0,0.5,0.6552607835529388,0.0,0,0.0,0.0,0.9613734874991069,5734.375,0,0.6151825613079019,0,-1.6320587499335588,-1.9585380378340944,2.0,0\n9,CastMetal1_1,0.0,0.3728070175438597,228.0,3.6109179126442243,0.0,0.0,0.16228070175438597,-1.8184277163102163,37,0.0,5.429345628954441,0.0,77.78939900921483,0.12719298245614036,-1.1580207643647122,17.344227663825055,37.0,1.8035875123161964,0.0,3.6359267632296666,0,0.5,8.20224089310795,0.0,0,0.0,0.0,0.549689363520506,6.162162162162162,0,0.8728070175438597,0,21.006138116937475,-0.289029496018001,2.0,0\n10,Click_prediction_small_1,0.0,0.33406644494510607,27963.0,2.1972245773362196,0.0,0.0,0.000321853878339234,-8.041412909393047,9,0.0,10.238637486729267,0.0,26926.780531255077,0.16593355505489396,-1.0402857597470903,8458.326566615851,9.0,50.52275992586306,0.0,19.970743115522723,0,0.5,162.71009805005986,0.0,0,0.0,0.0,0.648317394549588,3107.0,0,0.8340664449451061,0,3003.0636870899853,-0.878782488816644,2.0,0\n11,CostaMadre1_1,0.0,0.38405797101449274,207.0,3.6109179126442243,0.0,0.0,0.178743961352657,-1.7218008806211447,37,0.0,5.332718793265369,0.0,37.53924963714146,0.11594202898550725,-1.1031187591497742,6.534350263122915,37.0,0.9612087384979368,0.0,2.2243229520195555,0,0.5,5.430376545618313,0.0,0,0.0,0.0,0.5175827525559072,5.594594594594595,0,0.8840579710144928,0,7.176602209120703,-0.5246674051981624,2.0,0\n12,CreditCardSubset_1,0.0,0.49819422150882825,9968.0,3.4011973816621555,0.0,0.0,0.003009630818619583,-5.805937859365079,30,0.0,9.207135241027235,0.0,508.5040191363674,0.0018057784911717496,-1.287787607306059,104.60701653471723,30.0,3.510553220122857,0.0,-0.18364801894853666,0,0.5,12.038706957974995,0.0,0,0.0,0.0,0.01905918842791648,332.26666666666665,0,0.9981942215088283,0,61.714975380832946,-8.205717563733007,2.0,0\n13,Engine1_1,0.0,0.18283582089552236,268.0,1.6094379124341003,0.0,0.0,0.018656716417910446,-3.9815490680767565,5,0.0,5.5909869805108565,0.0,3.013956676328303,0.31716417910447764,-1.1636337239814043,1.4698351821859015,5.0,0.6213030772607545,0.0,0.007807469411523571,0,0.5,0.9080652564159668,0.0,0,0.0,0.0,0.9012709069589501,53.6,0,0.6828358208955224,0,0.556880162993947,-0.9182972342642554,2.0,0\n14,MagicTelescope_1,0.0,0.14728856842421512,13314.0,2.302585092994046,0.0,0.0,0.0007510890791647889,-7.193986299166603,10,0.0,9.496571392160648,0.0,15.636314944636197,0.3527114315757849,-0.5415554552384401,5.0643705723125425,10.0,1.2640250100046921,0.0,0.6373080826462872,0,0.5,3.3092536885547084,0.0,0,0.0,0.0,0.9364663103246508,1331.4,0,0.6472885684242151,0,4.1247712738988795,-1.195759182080569,2.0,0\n15,MegaWatt1_1,0.0,0.3813559322033898,177.0,3.6109179126442243,0.0,0.0,0.20903954802259886,-1.5652318199296047,37,0.0,5.176149732573829,0.0,66.26603833698925,0.11864406779661017,-0.16292635105398245,14.287147215973441,37.0,1.6415781638844553,0.0,2.1109745109543048,0,0.5,8.115670356841138,0.0,0,0.0,0.0,0.5254506799086206,4.783783783783784,0,0.8813559322033898,0,7.965151721583984,-0.9883714950392125,2.0,0\n16,PhishingWebsites_1,0.0,0.05544068234685964,7738.0,3.4011973816621555,0.0,0.0,0.003876970793486689,-5.552701153598303,30,0.0,8.953898535260459,0.0,17.540710255329586,0.44455931765314033,-1.9896026563874722,3.600501560291705,30.0,1.6808421043414834,0.0,0.536377920839097,0,0.5,4.420487558553874,0.0,0,0.0,0.0,0.9911130022009889,257.93333333333334,0,0.5554406823468596,0,1.310826643700264,-2.2242871508804,2.0,0\n17,PieChart1_1,0.0,0.4148073022312373,493.0,3.6109179126442243,0.0,0.0,0.07505070993914807,-2.5895912613984655,37,0.0,6.20050917404269,0.0,205.32061752880617,0.08519269776876268,-1.242857891569231,47.37115781340255,37.0,3.0050177461326997,0.0,5.38759814388225,0,0.5,13.47494637890337,0.0,0,0.0,0.0,0.4202167656986322,13.324324324324325,0,0.9148073022312373,0,52.576442222292805,-0.05872431251944871,2.0,0\n18,PieChart2_1,0.0,0.4750479846449136,521.0,3.58351893845611,0.0,0.0,0.0690978886756238,-2.672231103297257,36,0.0,6.255750041753367,0.0,337.2816678475144,0.02495201535508637,-1.020367748138551,101.3389324633092,36.0,5.2293592303800756,0.0,8.054709889105464,0,0.5,16.96265173909478,0.0,0,0.0,0.0,0.1684072451650832,14.472222222222221,0,0.9750479846449136,0,116.73801656886326,-2.605115828513248,2.0,0\n19,PieChart3_1,0.0,0.36852589641434264,753.0,3.6109179126442243,0.0,0.0,0.049136786188579015,-3.013147315155669,37,0.0,6.6240652277998935,0.0,505.6720266628422,0.13147410358565736,-1.1393355691082712,149.46664296149692,37.0,6.365708001677705,0.0,8.859154105107878,0,0.5,21.38144234077916,0.0,0,0.0,0.0,0.5614671047866329,20.35135135135135,0,0.8685258964143426,0,151.84994601408908,0.058404241365646606,2.0,0\n20,PieChart4_1,0.0,0.38431372549019605,1020.0,3.6109179126442243,0.0,0.0,0.03627450980392157,-3.3166399936340922,37,0.0,6.927557906278317,0.0,745.0578480646034,0.11568627450980393,-1.5039896523089125,143.3517752701543,37.0,5.163267050123807,0.0,6.4713926789091065,0,0.5,25.681489524064915,0.0,0,0.0,0.0,0.5168327427401808,27.56756756756757,0,0.884313725490196,0,98.55948104946758,-0.43368233736055384,2.0,0\n21,PizzaCutter1_1,0.0,0.4285714285714286,462.0,3.6109179126442243,0.0,0.0,0.08008658008658008,-2.5246469784375143,37,0.0,6.135564891081739,0.0,224.58262172198002,0.07142857142857142,-1.1898154524888032,54.10056025583821,37.0,3.3616676103603367,0.0,5.64324651147868,0,0.5,14.041775325585295,0.0,0,0.0,0.0,0.3712323266408757,12.486486486486486,0,0.9285714285714286,0,57.360922629613164,-0.07914822688051203,2.0,0\n22,PizzaCutter3_1,0.0,0.38082191780821917,730.0,3.6109179126442243,0.0,0.0,0.050684931506849315,-2.9821266214982125,37,0.0,6.593044534142437,0.0,663.851283781747,0.11917808219178082,-1.170083488704756,187.16878462262397,37.0,7.359675483014349,0.0,9.599540094345127,0,0.5,25.357027847615818,0.0,0,0.0,0.0,0.526993664163668,19.72972972972973,0,0.8808219178082192,0,178.90950832102206,0.05296641174487213,2.0,0\n23,PopularKids_1,0.0,0.13642389686392667,334.0,2.302585092994046,0.0,0.0,0.029940119760479042,-3.508555899982655,10,0.0,5.811140992976701,0.0,7.930569430569431,0.20059880239520958,-1.9856058152506386,2.747926648960977,10.0,1.0086246312968137,0.0,-0.3560472923881394,0,0.3333333333333333,0.48637807522779763,0.0,0,0.0,0.0,1.4686087431584942,33.4,0,0.5209580838323353,0,-0.18289499259117709,-3.1512806016871013,3.0,0\n24,SPECTF_1,0.0,0.22540983606557374,244.0,3.784189633918261,0.0,0.0,0.18032786885245902,-1.7129785913749407,44,0.0,5.497168225293202,0.0,26.606884259117958,0.27459016393442626,1.109709195001975,5.083545248511864,44.0,0.717109777043096,0.0,-1.9290850449978516,0,0.5,-0.7223831019874147,0.0,0,0.0,0.0,0.8479743944261597,5.545454545454546,0,0.7254098360655737,0,6.288464520733967,-4.0330103607467995,2.0,0\n25,SPECT_1,0.0,0.27419354838709675,186.0,3.091042453358316,0.0,0.0,0.11827956989247312,-2.134704220354885,22,0.0,5.225746673713202,0.0,2.5952795031055915,0.22580645161290322,-2.0,1.1401686991964253,22.0,0.521251925722757,0.0,0.837222476236191,0,0.5,2.1436603049703544,0.0,0,0.0,0.0,0.7706290693639406,8.454545454545455,0,0.7741935483870968,0,-1.0273549552152579,0.0,2.0,0\n26,abalone_1,0.0,0.0076975709887102395,2923.0,2.0794415416798357,0.0,0.0,0.0027369141293191925,-5.90092422343141,8,0.0,7.980365765111246,0.0,97.80012074568742,0.4923024290112898,-1.562193024886999,32.38454943412699,8.0,1.3801166493165773,0.0,0.6614046255017282,0,0.5,4.061121859759742,0.0,0,0.0,0.0,0.999829026384034,365.375,0,0.5076975709887103,0,12.13268272815918,-0.6307731559930342,2.0,0\n27,abalone_2,0.0,0.009206766058587933,2923.0,2.0794415416798357,0.0,0.0,0.0027369141293191925,-5.90092422343141,8,0.0,7.980365765111246,0.0,98.39960829011423,0.3232979815258296,-1.523119264515024,32.5723378784128,8.0,1.4477554455143096,0.0,0.6492936227817654,0,0.3333333333333333,4.239280933354468,0.0,0,0.0,0.0,1.5844138169689583,365.375,0,0.34553540882654804,0,12.235573366885488,-0.6550123381224172,3.0,0\n28,acute-inflammations_1,0.0,0.01190476190476189,84.0,1.791759469228055,0.0,0.0,0.07142857142857142,-2.639057329615259,6,0.0,4.430816798843313,0.0,-0.6666666666666661,0.4880952380952381,-1.97948717948718,0.44171440730312356,6.0,0.5909818335260703,0.0,0.12438370921907216,0,0.5,1.1547005383792517,0.0,0,0.0,0.0,0.999591034189098,14.0,0,0.5119047619047619,0,-1.553976658027545,-0.7071067811865476,2.0,0\n29,acute-inflammations_2,0.0,0.10714285714285712,84.0,1.791759469228055,0.0,0.0,0.07142857142857142,-2.639057329615259,6,0.0,4.430816798843313,0.0,-0.4875000000000016,0.39285714285714285,-1.9977311401020983,0.4984723464070346,6.0,0.608886855320249,0.0,0.1350729132270969,0,0.5,1.2298373876248836,0.0,0,0.0,0.0,0.9666186325481027,14.0,0,0.6071428571428571,0,-1.5306897137193314,-0.6510180115869745,2.0,0\n30,ada_agnostic_1,0.0,0.25133103664265577,3193.0,3.871201010907891,0.0,0.0,0.015032884434700909,-4.197515181806891,48,0.0,8.068716192714781,0.0,3188.0003132832094,0.2486689633573442,-3.0,501.8120724523541,48.0,9.669532287872734,0.0,5.390717553346715,0,0.5,56.48008775916698,0.0,0,0.0,0.0,0.8091616573028033,66.52083333333333,0,0.7513310366426558,0,120.93093344611346,-1.984514083121559,2.0,0\n31,aids_1,0.0,0.042857142857142844,35.0,1.3862943611198906,0.0,0.0,0.11428571428571428,-2.169053700369523,4,0.0,3.5553480614894135,0.0,13.164102738750863,0.45714285714285713,-1.2878913894161323,5.872031527089072,4.0,1.3990358333662642,0.0,1.4741940837268226,0,0.5,3.454576744690682,0.0,0,0.0,0.0,0.9946937953613058,8.75,0,0.5428571428571428,0,3.4983540663571038,0.10113088251478443,2.0,0\n32,ailerons_1,0.0,0.07631168831168833,9625.0,3.6888794541139363,0.0,0.0,0.004155844155844156,-5.483239705042049,40,0.0,9.172119159155985,0.0,9620.000103906901,0.42368831168831167,-0.5900663061210825,2428.2846028223776,40.0,26.808924787138285,0.0,-10.246734877023552,0,0.5,2.3286733892193223,0.0,0,0.0,0.0,0.9831311564829096,240.625,0,0.5763116883116883,0,1021.3093613661491,-98.09179427407219,2.0,0\n33,analcatdata_apnea1_1,0.0,0.3855421686746988,332.0,1.0986122886681098,0.0,0.0,0.009036144578313253,-4.706522680248379,3,0.0,5.805134968916488,0.0,-1.1617511371523326,0.1144578313253012,-1.31193952385788,0.06227446404262105,3.0,0.04829557191031216,0.0,-0.01362612433170659,0,0.5,0.053659286017177094,0.0,0,0.0,0.0,0.5132173985374447,110.66666666666667,0,0.8855421686746988,0,-1.229141966902329,-0.05742749894918825,2.0,0\n34,analcatdata_apnea2_1,0.0,0.35843373493975905,332.0,1.0986122886681098,0.0,0.0,0.009036144578313253,-4.706522680248379,3,0.0,5.805134968916488,0.0,-1.1037855943951738,0.14156626506024098,-1.3512388849378711,0.11211484855449783,3.0,0.01519103113403813,0.0,0.006033299889971019,0,0.5,0.020351097641566413,0.0,0,0.0,0.0,0.5883260665616881,110.66666666666667,0,0.858433734939759,0,-1.2618940475959823,-0.014996490847249326,2.0,0\n35,analcatdata_apnea3_1,0.0,0.38571428571428573,315.0,1.0986122886681098,0.0,0.0,0.009523809523809525,-4.653960350157523,3,0.0,5.752572638825633,0.0,-1.2318868379474437,0.11428571428571428,-1.3217440633906963,0.03707406779198607,3.0,0.06212211085693732,0.0,0.015069790335320089,0,0.5,0.060909286912062745,0.0,0,0.0,0.0,0.5127091420308771,105.0,0,0.8857142857142857,0,-1.2806079657921903,-0.07275597001029839,2.0,0\n36,analcatdata_asbestos_1,0.0,0.19523319254555208,58.0,1.0986122886681098,0.0,0.0,0.05172413793103448,-2.9618307218783095,3,0.0,4.060443010546419,0.0,-1.335046566770297,0.06896551724137931,-1.9224242424242426,0.266924391306875,3.0,0.26121863828862907,0.0,-0.001276140741095222,0,0.3333333333333333,0.2785242495291164,0.0,0,0.0,0.0,1.2782911570016338,19.333333333333332,0,0.5344827586206896,0,-1.711640596528899,-0.3500700210070024,3.0,0\n37,analcatdata_authorship_1,0.0,0.12697716716430832,588.0,4.248495242049359,0.0,0.0,0.11904761904761904,-2.128231705849268,70,0.0,6.376726947898627,0.0,20.60871383600733,0.05952380952380952,-0.8378278461298385,3.118799961067859,70.0,0.6596934927991669,0.0,1.0785569698732385,0,0.25,3.9891726008454693,0.0,0,0.0,0.0,1.7766155920929458,8.4,0,0.37755102040816324,0,2.063936068343988,0.04566046783265818,4.0,0\n38,analcatdata_authorship_2,0.0,0.12585034013605442,588.0,4.248495242049359,0.0,0.0,0.11904761904761904,-2.128231705849268,70,0.0,6.376726947898627,0.0,22.79770827988384,0.3741496598639456,-0.7931683993834535,3.7739588232276713,70.0,0.6831873293375453,0.0,1.1066594516299941,0,0.5,3.7611510293209958,0.0,0,0.0,0.0,0.9538051053730892,8.4,0,0.6258503401360545,0,2.2753306196808976,-0.07812082014738145,2.0,0\n39,analcatdata_bankruptcy_1,0.0,0.014285714285714263,35.0,1.6094379124341003,0.0,0.0,0.14285714285714285,-1.9459101490553135,5,0.0,3.5553480614894135,0.0,3.9974477248435507,0.4857142857142857,0.8974346049502056,1.139562519877355,5.0,1.5990106573615999,0.0,-0.365609109495455,0,0.5,2.044236146549259,0.0,0,0.0,0.0,0.9994110647387552,7.0,0,0.5142857142857142,0,2.9280232592395308,-1.9285148845776328,2.0,0\n40,analcatdata_boxing1_1,0.0,0.1785714285714286,84.0,1.0986122886681098,0.0,0.0,0.03571428571428571,-3.332204510175204,3,0.0,4.430816798843313,0.0,-1.1000000000000005,0.32142857142857145,-1.2795784554899972,0.07976086279729427,3.0,0.45067818301569973,0.0,0.31134446805503274,0,0.5,0.9486832980505133,0.0,0,0.0,0.0,0.9059282160429994,28.0,0,0.6785714285714286,0,-1.2120047435857353,-0.011280803928594272,2.0,0\n41,analcatdata_boxing2_1,0.0,0.021739130434782594,92.0,1.0986122886681098,0.0,0.0,0.03260869565217391,-3.4231762883809305,3,0.0,4.5217885770490405,0.0,-1.1718483367803656,0.4782608695652174,-1.2767857142857146,0.048429212786544155,3.0,0.4231577861289121,0.0,0.25212960079048957,0,0.5,0.8504200642707611,0.0,0,0.0,0.0,0.9986359641585719,30.666666666666668,0,0.5217391304347826,0,-1.2083470570790793,-0.05842435233745699,2.0,0\n42,analcatdata_challenger_1,0.0,0.0625,16.0,1.3862943611198906,0.0,0.0,0.25,-1.3862943611198906,4,0.0,2.772588722239781,0.0,0.7750472589792068,0.4375,-3.0,1.4035401480553924,4.0,0.8040147242419795,0.0,0.03647074324984523,0,0.5,1.3598766134157052,0.0,0,0.0,0.0,0.9886994082884974,4.0,0,0.5625,0,-1.0024304357147884,-0.6566178059087813,2.0,0\n43,analcatdata_challenger_2,0.0,0.4375,96.0,0.6931471805599453,0.0,0.0,0.020833333333333332,-3.871201010907891,2,0.0,4.564348191467836,0.0,-0.2112863031706098,0.0625,-0.9604479468797993,0.37458082185459474,2.0,0.18703618164969826,0.0,-0.7519137335055516,0,0.5,-0.5648775518558533,0.0,0,0.0,0.0,0.3372900666170139,48.0,0,0.9375,0,-0.5858671250252045,-0.9389499151552498,2.0,0\n44,analcatdata_chlamydia_1,0.0,0.3142857142857143,70.0,1.0986122886681098,0.0,0.0,0.04285714285714286,-3.1498829533812494,3,0.0,4.248495242049359,0.0,-1.1996838247390427,0.18571428571428572,-1.970394736842105,0.3579520678647009,3.0,0.08393443294365671,0.0,0.053639351543582604,0,0.5,0.17206180040292135,0.0,0,0.0,0.0,0.692419486327474,23.333333333333332,0,0.8142857142857143,0,-1.4643527766786952,-0.012612913645646678,2.0,0\n45,analcatdata_creditscore_1,0.0,0.27142857142857146,70.0,1.791759469228055,0.0,0.0,0.08571428571428572,-2.456735772821304,6,0.0,4.248495242049359,0.0,18.37810945273632,0.22857142857142856,-1.5615942028985506,6.905915515522566,6.0,1.4052403503398878,0.0,2.2913863174479507,0,0.5,4.514211941495031,0.0,0,0.0,0.0,0.775512658133148,11.666666666666666,0,0.7714285714285715,0,6.904748217999149,0.5710162870331648,2.0,0\n46,analcatdata_cyyoung8092_1,0.0,0.21641791044776118,67.0,2.302585092994046,0.0,0.0,0.14925373134328357,-1.9021075263969205,10,0.0,4.204692619390966,0.0,0.4903210642653595,0.2835820895522388,-1.9919642857142856,0.820645844332051,10.0,0.42422992736196435,0.0,0.015587794346149726,0,0.5,0.7644056490566267,0.0,0,0.0,0.0,0.8602858652332408,6.7,0,0.7164179104477612,0,-1.1155146293582026,-0.9399508557041442,2.0,0\n47,analcatdata_cyyoung9302_1,0.0,0.296875,64.0,2.1972245773362196,0.0,0.0,0.140625,-1.9616585060234524,9,0.0,4.1588830833596715,0.0,0.7858840761687556,0.203125,-1.984313725490196,0.9043517139423927,9.0,0.42311216000633184,0.0,-0.1324989240149346,0,0.5,0.6674596132052022,0.0,0,0.0,0.0,0.7281342378690551,7.111111111111111,0,0.796875,0,-1.1703941061617238,-0.9925563120077051,2.0,0\n48,analcatdata_dmft_1,0.0,0.30789946140035906,557.0,1.3862943611198906,0.0,0.0,0.00718132854578097,-4.9362708788073935,4,0.0,6.322565239927284,0.0,-0.5481090185315702,0.19210053859964094,-1.9996776522770645,0.5425752495173175,4.0,0.4476033351092757,0.0,0.07305415655045741,0,0.5,0.6723369285198535,0.0,0,0.0,0.0,0.7058450010158138,139.25,0,0.8078994614003591,0,-1.152449129913942,-0.5714682779159492,2.0,0\n49,analcatdata_election2000_1,0.0,0.26086956521739135,46.0,2.6390573296152584,0.0,0.0,0.30434782608695654,-1.1895840668738362,14,0.0,3.828641396489095,0.0,41.01027528040912,0.2391304347826087,1.6650279046768368,13.95451720622189,14.0,1.7251085009679052,0.0,3.4226915313095363,0,0.5,6.557739689550151,0.0,0,0.0,0.0,0.7935912300117064,3.2857142857142856,0,0.7608695652173914,0,14.4783706195538,1.5930866952569953,2.0,0\n50,analcatdata_germangss_1,0.0,0.275,280.0,1.6094379124341003,0.0,0.0,0.017857142857142856,-4.02535169073515,5,0.0,5.634789603169249,0.0,-1.2836685495651143,0.225,-2.0,0.33787747640001425,5.0,0.03514986002869715,0.0,-0.014910404203365406,0,0.5,0.02857434446964215,0.0,0,0.0,0.0,0.7691928290130138,56.0,0,0.775,0,-1.5864653654958696,-0.07795605088944123,2.0,0\n51,analcatdata_germangss_2,0.0,0.037845566896712785,280.0,1.6094379124341003,0.0,0.0,0.017857142857142856,-4.02535169073515,5,0.0,5.634789603169249,0.0,-1.3090280734984456,0.0035714285714285713,-1.9981624215200857,0.3264803326034097,5.0,0.033341971838698505,0.0,-0.04217796270806061,0,0.016949152542372878,0.019990138482214335,0.0,0,0.0,0.0,4.387929346602815,56.0,0,0.25,0,-1.5976232159540718,-0.0714741689891865,59.0,0\n52,analcatdata_gviolence_1,0.0,0.009803921568627444,51.0,2.0794415416798357,0.0,0.0,0.1568627450980392,-1.8523840910444898,8,0.0,3.9318256327243257,0.0,4.080780029296875,0.49019607843137253,-0.9443888893928181,1.5508049019584955,8.0,0.9226835307747792,0.0,0.5571216889075169,0,0.5,2.1800157306698544,0.0,0,0.0,0.0,0.9997226475394071,6.375,0,0.5098039215686274,0,0.35683552881578,-1.3451528492543439,2.0,0\n53,analcatdata_japansolvent_1,0.0,0.0,36.0,2.0794415416798357,0.0,0.0,0.2222222222222222,-1.5040773967762742,8,0.0,3.58351893845611,0.0,13.29156710188121,0.027777777777777776,-2.0,5.477551097993075,8.0,1.8101279310711287,0.0,-1.3549827163377253,0,0.027777777777777776,1.3198361687018099,0.0,0,0.0,0.0,5.169925001442313,4.5,0,0.027777777777777776,0,5.445070767018398,-3.3442489718233257,36.0,0\n54,analcatdata_lawsuit_1,0.0,0.42934782608695654,184.0,1.3862943611198906,0.0,0.0,0.021739130434782608,-3.828641396489095,4,0.0,5.214935757608986,0.0,1.3830696798802506,0.07065217391304347,-1.558703922340286,1.0868989226092856,4.0,0.7425365265366469,0.0,0.0881581042241156,0,0.5,0.8651198304813753,0.0,0,0.0,0.0,0.36835273659330237,46.0,0,0.9293478260869565,0,-0.16185481514224714,-1.0093368567454408,2.0,0\n55,analcatdata_michiganacc_1,0.0,0.033333333333333326,75.0,1.0986122886681098,0.0,0.0,0.04,-3.2188758248682006,3,0.0,4.31748811353631,0.0,-0.7301657818231222,0.4666666666666667,-1.317154516397066,0.2432783629595193,3.0,0.20699830930543783,0.0,0.10493630252295742,0,0.5,0.36644058300096294,0.0,0,0.0,0.0,0.9967916319816367,25.0,0,0.5333333333333333,0,-1.0533114514829267,-0.1397635606056452,2.0,0\n56,analcatdata_neavote_1,0.0,0.41428571428571426,70.0,0.6931471805599453,0.0,0.0,0.02857142857142857,-3.5553480614894135,2,0.0,4.248495242049359,0.0,-1.8849346245693988,0.08571428571428572,-1.9846849217776856,0.04987514860414344,2.0,0.0017824820900996935,0.0,-0.026789621581686723,0,0.5,-0.02500713949158703,0.0,0,0.0,0.0,0.42200051688315315,35.0,0,0.9142857142857143,0,-1.934809773173542,-0.028572103671786416,2.0,0\n57,analcatdata_olympic2000_1,0.0,0.0,46.0,2.3978952727983707,0.0,0.0,0.2391304347826087,-1.4307461236907244,11,0.0,3.828641396489095,0.0,33.00185687713007,0.5,-0.954348763062336,9.474740717131624,11.0,1.6095698046274822,0.0,2.0780763121846415,0,0.5,5.659909696936502,0.0,0,0.0,0.0,1.0,4.181818181818182,0,0.5,0,6.701943388615737,0.07369131769322022,2.0,0\n58,analcatdata_seropositive_1,0.0,0.15217391304347827,92.0,1.0986122886681098,0.0,0.0,0.03260869565217391,-3.4231762883809305,3,0.0,4.5217885770490405,0.0,1.60831612421629,0.34782608695652173,-1.4912715847225897,1.3831214184479794,3.0,0.7303691232830489,0.0,0.510766072136637,0,0.5,1.5435320470125238,0.0,0,0.0,0.0,0.9321115676166747,30.666666666666668,0,0.6521739130434783,0,-0.3363094648368345,-0.019914300442261515,2.0,0\n59,analcatdata_supreme_1,0.0,0.2651622002820875,2836.0,1.9459101490553132,0.0,0.0,0.002468265162200282,-6.004239738596705,7,0.0,7.950149887652018,0.0,85.18748533651065,0.23483779971791255,-1.9956007298924827,30.31979570341984,7.0,3.044231093923752,0.0,2.7777142970111464,0,0.5,8.214884317624026,0.0,0,0.0,0.0,0.7863498099124508,405.14285714285717,0,0.7651622002820875,0,17.924261214805394,-0.17814738663603594,2.0,0\n60,analcatdata_vehicle_1,0.0,0.07575757575757577,33.0,1.3862943611198906,0.0,0.0,0.12121212121212122,-2.1102132003465894,4,0.0,3.4965075614664802,0.0,-1.118066384495434,0.42424242424242425,-1.9963235294117645,0.3802964992763667,4.0,0.12772964907796738,0.0,0.013110841019577851,0,0.5,0.23434508285556055,0.0,0,0.0,0.0,0.9833761901392238,8.25,0,0.5757575757575758,0,-1.7767592431826817,-0.06063390625908306,2.0,0\n61,analcatdata_vineyard_1,0.0,0.04434250764525993,327.0,1.0986122886681098,0.0,0.0,0.009174311926605505,-4.6913478822291435,3,0.0,5.7899601708972535,0.0,-1.1347212961721787,0.45565749235474007,-1.256684241332325,0.05461310302423749,3.0,0.01716860167127212,0.0,-0.010431202357011692,0,0.5,0.001974187641558913,0.0,0,0.0,0.0,0.9943191182782634,109.0,0,0.5443425076452599,0,-1.1798372239578476,-0.0347093240250574,2.0,0\n62,analcatdata_wildcat_1,0.0,0.26315789473684215,114.0,1.6094379124341003,0.0,0.0,0.043859649122807015,-3.126760535960395,5,0.0,4.736198448394496,0.0,9.130484993967553,0.23684210526315788,-1.9689826302729525,4.119664041724658,5.0,1.2915227908309306,0.0,0.5893198246094087,0,0.5,2.8406521543613548,0.0,0,0.0,0.0,0.7897492536625224,22.8,0,0.7631578947368421,0,1.2074213606882673,-0.48355411261924897,2.0,0\n63,ar1_1,0.0,0.4285714285714286,84.0,3.367295829986474,0.0,0.0,0.34523809523809523,-1.0635209688568397,29,0.0,4.430816798843313,0.0,30.236453918160024,0.07142857142857142,-1.047979697332302,7.720451076218934,29.0,1.1682209908941523,0.0,1.9743430528678134,0,0.5,5.260411255693442,0.0,0,0.0,0.0,0.3712323266408757,2.896551724137931,0,0.9285714285714286,0,6.2920666036729935,-0.041875518843220876,2.0,0\n64,ar3_1,0.0,0.34090909090909094,44.0,3.367295829986474,0.0,0.0,0.6590909090909091,-0.41689380393178715,29,0.0,3.784189633918261,0.0,22.285794485999897,0.1590909090909091,-0.5486844502159656,4.993073374717711,29.0,0.88803098042984,0.0,2.311334869181334,0,0.5,4.454846240962392,0.0,0,0.0,0.0,0.6321302781219706,1.5172413793103448,0,0.8409090909090909,0,6.546890792664743,-0.14411754487115144,2.0,0\n65,ar4_1,0.0,0.33783783783783783,74.0,3.367295829986474,0.0,0.0,0.3918918918918919,-0.9367692632176957,29,0.0,4.30406509320417,0.0,58.226243655862305,0.16216216216216217,0.021929523870140688,12.447333642305638,29.0,1.6966634390858726,0.0,3.0767809763407366,0,0.5,7.537086320947946,0.0,0,0.0,0.0,0.6394571324851642,2.5517241379310347,0,0.8378378378378378,0,14.355301022908483,-0.5853823207099865,2.0,0\n66,ar5_1,0.0,0.26,25.0,3.367295829986474,0.0,0.0,1.16,0.14842000511827322,29,0.0,3.2188758248682006,0.0,11.614020344613571,0.24,-1.1529489556045185,3.434120866258704,29.0,0.8929179210494644,0.0,1.899347378366137,0,0.5,3.40321634371263,0.0,0,0.0,0.0,0.7950402793845223,0.8620689655172413,0,0.76,0,4.532692575071946,-0.21835071229877914,2.0,0\n67,ar6_1,0.0,0.38571428571428573,70.0,3.367295829986474,0.0,0.0,0.4142857142857143,-0.8811994120628849,29,0.0,4.248495242049359,0.0,30.571059188055543,0.11428571428571428,-0.2402680691004191,10.937966932686827,29.0,1.6640701327404868,0.0,2.612348218309336,0,0.5,5.694832170968973,0.0,0,0.0,0.0,0.5127091420308771,2.413793103448276,0,0.8857142857142857,0,9.325825240069808,0.043885311642289544,2.0,0\n68,arcene_1,0.0,0.07142857142857142,140.0,9.210340371976184,0.0,0.0,71.42857142857143,4.268697949366879,10000,0.0,4.941642422609304,0.0,135.00719424460473,0.42857142857142855,-3.0,22.151288357641555,10000.0,2.2691817790700903,0.0,2.2192514368047433,0,0.5,11.705007229583623,0.0,0,0.0,0.0,0.9852281360342515,0.014,0,0.5714285714285714,0,10.54649396330028,-1.9883833323941287,2.0,0\n69,arsenic-female-bladder_1,0.0,0.3670076726342711,391.0,1.3862943611198906,0.0,0.0,0.010230179028132993,-4.582413198865475,4,0.0,5.968707559985366,0.0,82.05723999774953,0.1329923273657289,-1.2522840082963163,36.06184334358501,4.0,3.6689303804838493,0.0,2.2389279137738303,0,0.5,8.58869257445163,0.0,0,0.0,0.0,0.5655879140680751,97.75,0,0.8670076726342711,0,19.596304999900156,-0.03390445372938339,2.0,0\n70,arsenic-female-lung_1,0.0,0.4718670076726343,391.0,1.3862943611198906,0.0,0.0,0.010230179028132993,-4.582413198865475,4,0.0,5.968707559985366,0.0,81.33606610761288,0.028132992327365727,-1.2108765282978216,35.711191994288164,4.0,3.6452099493114765,0.0,2.2674206857637085,0,0.5,8.571854030713888,0.0,0,0.0,0.0,0.1849407078680417,97.75,0,0.9718670076726342,0,19.48261811190661,-0.026831158718278795,2.0,0\n71,arsenic-male-bladder_1,0.0,0.4616368286445013,391.0,1.3862943611198906,0.0,0.0,0.010230179028132993,-4.582413198865475,4,0.0,5.968707559985366,0.0,110.01170716904598,0.03836317135549872,-1.190323952481511,48.120332896304326,4.0,4.2755450707439655,0.0,2.618420231247708,0,0.5,10.01546464656388,0.0,0,0.0,0.0,0.23473639023594714,97.75,0,0.9616368286445013,0,26.66492101179846,-0.05257239256483474,2.0,0\n72,arsenic-male-lung_1,0.0,0.46930946291560105,391.0,1.3862943611198906,0.0,0.0,0.010230179028132993,-4.582413198865475,4,0.0,5.968707559985366,0.0,79.82439795253939,0.030690537084398978,-1.227268971828163,35.07828132334703,4.0,3.612706271785095,0.0,2.208030542327921,0,0.5,8.458891143954801,0.0,0,0.0,0.0,0.19784313368715373,97.75,0,0.969309462915601,0,19.067093994211227,-0.039452051937391604,2.0,0\n73,autoPrice_1,0.0,0.13963963963963966,111.0,2.70805020110221,0.0,0.0,0.13513513513513514,-2.001480000210124,15,0.0,4.709530201312334,0.0,8.695143471670002,0.36036036036036034,-0.8434610576566381,2.218472264080105,15.0,0.9009112016746775,0.0,0.5642398588172154,0,0.5,3.209212604430618,0.0,0,0.0,0.0,0.9429819088696832,7.4,0,0.6396396396396397,0,0.8545971626848626,-1.1068554037370197,2.0,0\n74,autoUniv-au1-1000_1,0.0,0.2557142857142857,700.0,2.995732273553991,0.0,0.0,0.02857142857142857,-3.5553480614894135,20,0.0,6.551080335043404,0.0,-0.199467298017165,0.24428571428571427,-1.9998693834900727,0.48523976420954995,20.0,0.49432579736559173,0.0,0.154072642600677,0,0.5,1.3418392981213634,0.0,0,0.0,0.0,0.8020949267554601,35.0,0,0.7557142857142857,0,-1.731903626860916,-0.8654642612837827,2.0,0\n75,autoUniv-au4-2500_1,0.0,0.1775787775107775,1750.0,4.605170185988092,0.0,0.0,0.05714285714285714,-2.8622008809294686,100,0.0,7.4673710669175595,0.0,0.3686844721127125,0.08228571428571428,-1.9999947755033798,0.4772285892493878,100.0,0.3051241015754084,0.0,0.04438408051840358,0,0.3333333333333333,1.2871284960337983,0.0,0,0.0,0.0,1.3277938986694366,17.5,0,0.4645714285714286,0,-1.2823505184032284,-0.6698873308503766,3.0,0\n76,autoUniv-au7-700_1,0.0,0.015482730172436789,490.0,2.4849066497880004,0.0,0.0,0.024489795918367346,-3.709498741316672,12,0.0,6.194405391104672,0.0,0.15641025641025497,0.3122448979591837,-1.9997334266340108,0.5803097826142344,12.0,0.5994035028282648,0.0,0.240713487063663,0,0.3333333333333333,1.4684720822713162,0.0,0,0.0,0.0,1.5833937235310325,40.833333333333336,0,0.3489795918367347,0,-1.1535737234003114,-0.38455705606363016,3.0,0\n77,auto_price_1,0.0,0.13063063063063063,111.0,2.70805020110221,0.0,0.0,0.13513513513513514,-2.001480000210124,15,0.0,4.709530201312334,0.0,5.964299134399724,0.36936936936936937,-0.7254990358978626,1.5821096815041902,15.0,0.839675103984416,0.0,0.6105932132738652,0,0.5,2.7736091883433125,0.0,0,0.0,0.0,0.9501866467511052,7.4,0,0.6306306306306306,0,0.7504201694510201,-1.3170674552653534,2.0,0\n78,backache_1,0.0,0.3492063492063492,126.0,3.4339872044851463,0.0,0.0,0.24603174603174602,-1.4022947024663317,31,0.0,4.836281906951478,0.0,121.00800000000007,0.15079365079365079,-1.5486296949654108,30.901811428178107,31.0,2.9149313524602687,0.0,2.7739405984966683,0,0.5,11.09089716839897,0.0,0,0.0,0.0,0.6118228576241161,4.064516129032258,0,0.8492063492063492,0,14.676857668180327,-0.773087710182249,2.0,0\n79,badges2_1,0.0,0.23170731707317072,205.0,2.302585092994046,0.0,0.0,0.04878048780487805,-3.0204248861443626,10,0.0,5.3230099791384085,0.0,5.891624221844937,0.2682926829268293,-1.9884497899961815,2.1401657792781745,10.0,1.0340781746124026,0.0,0.9434915306572285,0,0.5,2.809203485304142,0.0,0,0.0,0.0,0.8390040613676978,20.5,0,0.7317073170731707,0,1.2395251410052548,-1.045915576870042,2.0,0\n80,balance-scale_1,0.0,0.18411535207203622,437.0,1.3862943611198906,0.0,0.0,0.009153318077803204,-4.693638833975699,4,0.0,6.07993319509559,0.0,-1.3067765998672385,0.07322654462242563,-1.3362142587217942,0.010822799715646652,4.0,0.032420926276728344,0.0,-0.006512474969530935,0,0.3333333333333333,0.028230554924493393,0.0,0,0.0,0.0,1.3042940210380745,109.25,0,0.47368421052631576,0,-1.3215705556965678,-0.04533215478516216,3.0,0\n81,balance-scale_2,0.0,0.03775743707093823,437.0,1.3862943611198906,0.0,0.0,0.009153318077803204,-4.693638833975699,4,0.0,6.07993319509559,0.0,-1.2587736093105049,0.4622425629290618,-1.370068973824317,0.04232725049806363,4.0,0.03125594773962898,0.0,-0.014535479301173073,0,0.5,0.031712708453355436,0.0,0,0.0,0.0,0.9958826000300322,109.25,0,0.5377574370709383,0,-1.32133234744742,-0.044130724720592644,2.0,0\n82,balloon_1,0.0,0.26,1400.0,0.0,0.0,0.0,0.0007142857142857143,-7.24422751560335,1,0.0,7.24422751560335,0.0,18.523283621980045,0.24,18.523283621980045,0.0,1.0,0.0,0.0,-3.068663605564721,0,0.5,-3.068663605564721,0.0,0,0.0,0.0,0.7950402793845223,1400.0,0,0.76,0,18.523283621980045,-3.068663605564721,2.0,0\n83,banana_1,0.0,0.05417789757412397,3710.0,0.6931471805599453,0.0,0.0,0.0005390835579514825,-7.5256399750415355,2,0.0,8.21878715560148,0.0,-0.6061826686409,0.445822102425876,-1.0725779563276079,0.23319764384335395,2.0,0.08451118752878096,0.0,0.09569469639926352,0,0.5,0.18020588392804449,0.0,0,0.0,0.0,0.991514023030564,1855.0,0,0.554177897574124,0,-0.8393803124842539,0.011183508870482549,2.0,0\n84,bank-marketing_1,0.0,0.38495575221238937,3164.0,2.772588722239781,0.0,0.0,0.0050568900126422255,-5.2870036066477635,16,0.0,8.059592328887545,0.0,107.40098854806638,0.11504424778761062,-1.9254418525899009,29.079683356815952,16.0,2.7591319355935333,0.0,1.9535607299902542,0,0.5,7.606764315904754,0.0,0,0.0,0.0,0.5149459065452171,197.75,0,0.8849557522123894,0,15.691183006180879,-1.9469456854469394,2.0,0\n85,bank-marketing_2,0.0,0.3807469902360413,31647.0,2.772588722239781,0.0,0.0,0.0005055771479129143,-7.589809914110138,16,0.0,10.36239863634992,0.0,5034.351110202719,0.11925300976395867,-1.9535968791017988,1215.2965627988688,16.0,11.505040511749408,0.0,4.6731114070143045,0,0.5,48.01714626625748,0.0,0,0.0,0.0,0.5272098464424503,1977.9375,0,0.8807469902360413,0,328.9921764535719,-1.9861920312229644,2.0,0\n86,bank32nh_1,0.0,0.19584931984652945,5734.0,3.4657359027997265,0.0,0.0,0.0055807464248343215,-5.188432743643588,32,0.0,8.654168646443315,0.0,9.564595871551308,0.3041506801534705,-1.30985933529072,3.424146455564268,32.0,0.8975624875312203,0.0,0.6171478380082351,0,0.5,2.2887175704278357,0.0,0,0.0,0.0,0.8863056352574936,179.1875,0,0.6958493198465294,0,0.9631615992860807,-0.05127837789874927,2.0,0\n87,bank8FM_1,0.0,0.09330310429019884,5734.0,2.0794415416798357,0.0,0.0,0.0013951866062085804,-6.574727104763479,8,0.0,8.654168646443315,0.0,6.217545746093959,0.40669689570980116,-1.3801234897563368,2.984101669393241,8.0,0.8991104308295103,0.0,0.45459815997218556,0,0.5,2.058064054747668,0.0,0,0.0,0.0,0.9747334761588367,716.75,0,0.5933031042901988,0,0.5656837969539185,-0.3839549992106498,2.0,0\n88,banknote-authentication_1,0.0,0.06458333333333333,960.0,1.3862943611198906,0.0,0.0,0.004166666666666667,-5.480638923341991,4,0.0,6.866933284461882,0.0,1.2842958481786724,0.4354166666666667,-0.7336389903126683,0.7915336589198619,4.0,0.7601326749517497,0.0,-0.11900464866027602,0,0.5,1.0890172375870963,0.0,0,0.0,0.0,0.9879313272505941,240.0,0,0.5645833333333333,0,0.12431762428847193,-0.9939789294043929,2.0,0\n89,baskball_1,0.0,0.007462686567164201,67.0,1.3862943611198906,0.0,0.0,0.05970149253731343,-2.8183982582710754,4,0.0,4.204692619390966,0.0,3.534230202476504,0.4925373134328358,-1.377088063577521,1.8397287579716208,4.0,0.776275211216421,0.0,-0.05288383912977815,0,0.5,0.5438345207982964,0.0,0,0.0,0.0,0.9998393017810485,16.75,0,0.5074626865671642,0,0.5096896163056875,-1.3521585621611576,2.0,0\n90,blogger_1,0.0,0.14285714285714288,70.0,1.6094379124341003,0.0,0.0,0.07142857142857142,-2.639057329615259,5,0.0,4.248495242049359,0.0,2.925318761384333,0.35714285714285715,-1.8183195189432186,1.7747569753158492,5.0,0.9506852988632274,0.0,-0.5189574224833432,0,0.5,0.3235228191272518,0.0,0,0.0,0.0,0.940285958670631,14.0,0,0.6428571428571429,0,-0.5569738687408959,-2.219305918836863,2.0,0\n91,blood-transfusion-service-center_1,0.0,0.2590822179732314,523.0,1.3862943611198906,0.0,0.0,0.0076481835564053535,-4.873287102945032,4,0.0,6.259581464064923,0.0,13.77656078972539,0.24091778202676864,-0.34609212497513253,5.829756904681626,4.0,0.9653694409426473,0.0,2.2414982235113143,0,0.5,3.0787913398736735,0.0,0,0.0,0.0,0.7965631904979094,130.75,0,0.7590822179732314,0,9.567176906203393,0.7246782205607518,2.0,0\n92,bodyfat_1,0.0,0.03409090909090909,176.0,2.6390573296152584,0.0,0.0,0.07954545454545454,-2.531426665422893,14,0.0,5.170483995038151,0.0,54.39563733558356,0.4659090909090909,-0.749210727103192,14.198458798282939,14.0,1.6499145844284537,0.0,-0.06938913421927544,0,0.5,2.4148373760639283,0.0,0,0.0,0.0,0.9966440252487702,12.571428571428571,0,0.5340909090909091,0,4.671639843390887,-5.620813199033517,2.0,0\n93,bolts_1,0.0,0.1785714285714286,28.0,1.9459101490553132,0.0,0.0,0.25,-1.3862943611198906,7,0.0,3.332204510175204,0.0,0.20380252541668398,0.32142857142857145,-1.727272727272727,0.8078826993999869,7.0,0.6418447763057834,0.0,0.07201284344334143,0,0.5,1.3432042830006266,0.0,0,0.0,0.0,0.9059282160429994,4.0,0,0.6785714285714286,0,-1.1137366879056527,-1.0271892319279081,2.0,0\n94,boston_1,0.0,0.096045197740113,354.0,2.5649493574615367,0.0,0.0,0.03672316384180791,-3.3043475556722375,13,0.0,5.869296913133774,0.0,38.173733310064634,0.403954802259887,-1.3642619113522008,10.285586480357152,13.0,1.9280545827695843,0.0,0.7869120349426242,0,0.5,5.368308307519576,0.0,0,0.0,0.0,0.97321704732445,27.23076923076923,0,0.596045197740113,0,4.237390994222576,-2.78253483075655,2.0,0\n95,boston_corrected_1,0.0,0.06779661016949154,354.0,2.995732273553991,0.0,0.0,0.05649717514124294,-2.8735646395797834,20,0.0,5.869296913133774,0.0,32.36463920642464,0.4322033898305085,-1.3330703115319507,7.4642945877546945,20.0,1.5806647436834067,0.0,0.591700524900283,0,0.5,5.078735197616076,0.0,0,0.0,0.0,0.9866967086735613,17.7,0,0.5677966101694916,0,2.5646518099983995,-2.6691492358233515,2.0,0\n96,breast-tissue_1,0.0,0.14818724459095478,74.0,2.1972245773362196,0.0,0.0,0.12162162162162163,-2.10684051586795,9,0.0,4.30406509320417,0.0,-1.0425316564139957,0.12162162162162163,-1.3018970660403404,0.0733903459139545,9.0,0.09565278925123963,0.0,0.0369570685815275,0,0.25,0.25550351467910076,0.0,0,0.0,0.0,1.7729851284680602,8.222222222222221,0,0.5,0,-1.15506193068805,-0.07582538588314557,4.0,0\n97,cal_housing_1,0.0,0.09440753045404207,14448.0,2.0794415416798357,0.0,0.0,0.0005537098560354374,-7.498869733976931,8,0.0,9.578311275656766,0.0,43.340721867564255,0.4055924695459579,-1.3194187130944228,16.203038438846207,8.0,1.7503043456030671,0.0,2.1180137181256278,0,0.5,4.163538762786948,0.0,0,0.0,0.0,0.9741281203359621,1806.0,0,0.594407530454042,0,15.231276635281437,-0.3112878712340937,2.0,0\n98,car_1,0.0,0.27064996841383515,1209.0,1.791759469228055,0.0,0.0,0.004962779156327543,-5.305789381386738,6,0.0,7.097548850614793,0.0,-1.3394784260511554,0.034739454094292806,-1.5110837438423643,0.07478963260350564,6.0,0.024400532399319743,0.0,0.012638252422491702,0,0.24999999999999997,0.04542010245172763,0.0,0,0.0,0.0,1.2050915969934577,201.5,0,0.7005789909015715,0,-1.4254348453064705,-0.025249066853449523,4.0,0\n99,car_2,0.0,0.19313482216708022,1209.0,1.791759469228055,0.0,0.0,0.004962779156327543,-5.305789381386738,6,0.0,7.097548850614793,0.0,-1.350345549556015,0.3068651778329198,-1.5198233656351754,0.0762965783213237,6.0,0.02647177423406024,0.0,-0.0053000342130274415,0,0.5,0.04214711855223684,0.0,0,0.0,0.0,0.8895216424283009,201.5,0,0.6931348221670802,0,-1.434724549050072,-0.045593049690846287,2.0,0\n100,cardiotocography_1,0.0,0.3148581871521311,1488.0,3.5553480614894135,0.0,0.0,0.023521505376344086,-3.7498401539036235,35,0.0,7.305188215393037,0.0,292.60337154416715,0.0846774193548387,-1.3525001215600023,50.897615823313856,35.0,3.372324906424809,0.0,2.344959733254342,0,0.3333333333333333,17.164013852947313,0.0,0,0.0,0.0,0.9778261335025397,42.51428571428571,0,0.7775537634408602,0,16.935886353830835,-0.9071943071100114,3.0,0\n101,chatfield_4_1,0.0,0.09146341463414634,164.0,2.4849066497880004,0.0,0.0,0.07317073170731707,-2.6149597780361984,12,0.0,5.099866427824199,0.0,2.121036990668471,0.40853658536585363,-1.13798138904853,0.786656187326829,12.0,0.3245201147808631,0.0,0.9473264914188532,0,0.5,1.3637081130534867,0.0,0,0.0,0.0,0.9757256542959977,13.666666666666666,0,0.5914634146341463,0,0.5656503087802806,-0.02416101087228221,2.0,0\n102,chscase_adopt_1,0.0,0.24074074074074073,27.0,0.6931471805599453,0.0,0.0,0.07407407407407407,-2.6026896854443837,2,0.0,3.295836866004329,0.0,20.01933959469918,0.25925925925925924,8.738289201608694,5.6405251965452425,2.0,0.7394343967890458,0.0,3.859399537549026,0,0.5,4.598833934338072,0.0,0,0.0,0.0,0.8256265261578954,13.5,0,0.7407407407407407,0,14.378814398153937,3.11996514075998,2.0,0\n103,chscase_census2_1,0.0,0.0035714285714285587,280.0,1.9459101490553132,0.0,0.0,0.025,-3.6888794541139363,7,0.0,5.634789603169249,0.0,13.31780341231189,0.49642857142857144,0.38027921145458743,4.718353872049483,7.0,0.8317326024301734,0.0,1.2523457801007631,0,0.5,2.705172302596283,0.0,0,0.0,0.0,0.9999631962421186,40.0,0,0.5035714285714286,0,4.4168505108347444,0.3975037758496161,2.0,0\n104,chscase_census3_1,0.0,0.0464285714285714,280.0,1.9459101490553132,0.0,0.0,0.025,-3.6888794541139363,7,0.0,5.634789603169249,0.0,1.3351419847197041,0.45357142857142857,-0.2884847006457196,0.4842807023251912,7.0,0.1926255505319475,0.0,-0.06635536554185345,0,0.5,0.18674301541620517,0.0,0,0.0,0.0,0.9937712485448208,40.0,0,0.5464285714285714,0,0.23673837063440262,-0.44733371912641834,2.0,0\n105,chscase_census4_1,0.0,0.014285714285714263,280.0,1.9459101490553132,0.0,0.0,0.025,-3.6888794541139363,7,0.0,5.634789603169249,0.0,2.01332638354208,0.4857142857142857,-0.22055442614637144,0.6550490389518615,7.0,0.27763468263067587,0.0,0.6422558958779648,0,0.5,1.2013559990472453,0.0,0,0.0,0.0,0.9994110647387552,40.0,0,0.5142857142857142,0,0.5380344522615222,0.289806462574684,2.0,0\n106,chscase_census5_1,0.0,0.017857142857142877,280.0,1.9459101490553132,0.0,0.0,0.025,-3.6888794541139363,7,0.0,5.634789603169249,0.0,8.677089427728685,0.48214285714285715,-0.4359110871386962,3.0546722610719077,7.0,0.6414266953283833,0.0,-0.15159029233503937,0,0.5,0.41597607065722253,0.0,0,0.0,0.0,0.9990797181805819,40.0,0,0.5178571428571429,0,1.2130007848179543,-1.6789838492354665,2.0,0\n107,chscase_census6_1,0.0,0.09285714285714286,280.0,1.791759469228055,0.0,0.0,0.02142857142857143,-3.8430301339411947,6,0.0,5.634789603169249,0.0,45.00281429627726,0.40714285714285714,2.871178769347294,15.553953748012688,6.0,1.4929376927167795,0.0,3.6729093521120215,0,0.5,5.798436322791513,0.0,0,0.0,0.0,0.9749758483079306,46.666666666666664,0,0.5928571428571429,0,21.734224193474986,1.6356093561367329,2.0,0\n108,chscase_funds_1,0.0,0.003875968992248069,129.0,0.6931471805599453,0.0,0.0,0.015503875968992248,-4.1666652238017265,2,0.0,4.859812404361672,0.0,0.8002064120328374,0.49612403100775193,-1.234861934292453,1.017534173162645,2.0,0.4519299067142525,0.0,0.248273881299495,0,0.5,0.7002037880137475,0.0,0,0.0,0.0,0.9999566519593042,64.5,0,0.5038759689922481,0,-0.21732776112980778,-0.20365602541475752,2.0,0\n109,chscase_geyser1_1,0.0,0.12580645161290324,155.0,0.6931471805599453,0.0,0.0,0.012903225806451613,-4.350277936359301,2,0.0,5.043425116919247,0.0,-1.159136069641384,0.3741935483870968,-1.6528382064813907,0.24685106842000337,2.0,0.3111700701841685,0.0,-0.31209566154783547,0,0.5,-0.0009255913636669372,0.0,0,0.0,0.0,0.9538376735997177,77.5,0,0.6258064516129033,0,-1.4059871380613873,-0.623265731732004,2.0,0\n110,chscase_health_1,0.0,0.07142857142857142,35.0,1.0986122886681098,0.0,0.0,0.08571428571428572,-2.456735772821304,3,0.0,3.5553480614894135,0.0,0.36216869012743036,0.42857142857142855,-1.39013652240058,0.7364104607564301,3.0,0.13418825681857305,0.0,-0.06193826469735519,0,0.5,0.053938299513361584,0.0,0,0.0,0.0,0.9852281360342515,11.666666666666666,0,0.5714285714285714,0,-0.6375519279142159,-0.2500272241042578,2.0,0\n111,chscase_vine1_1,0.0,0.02777777777777779,36.0,2.1972245773362196,0.0,0.0,0.25,-1.3862943611198906,9,0.0,3.58351893845611,0.0,0.3072131662194386,0.4722222222222222,-1.2911110213968942,0.5144598896412155,9.0,0.40550421697568345,0.0,0.044013024726863845,0,0.5,0.6585983304547002,0.0,0,0.0,0.0,0.997772472089982,4.0,0,0.5277777777777778,0,-0.6136050542207132,-0.7399766080815269,2.0,0\n112,chscase_vine2_1,0.0,0.06269113149847094,327.0,0.6931471805599453,0.0,0.0,0.0061162079510703364,-5.096812990337308,2,0.0,5.7899601708972535,0.0,-1.148811972157225,0.43730886850152906,-1.2549331665528456,0.05306059719781031,2.0,0.020000166375214314,0.0,-0.05145457480390103,0,0.5,-0.03145440842868672,0.0,0,0.0,0.0,0.9886300026424248,163.5,0,0.5626911314984709,0,-1.2018725693550354,-0.07145474117911535,2.0,0\n113,climate-model-simulation-crashes_1,0.0,0.417989417989418,378.0,2.995732273553991,0.0,0.0,0.05291005291005291,-2.9391619220655967,20,0.0,5.934894195619588,0.0,-1.1223145418455691,0.082010582010582,-1.5337503190939261,0.08190194052489919,20.0,0.0479888515806842,0.0,0.010158324684134783,0,0.5,0.09848035444742205,0.0,0,0.0,0.0,0.4092242801294069,18.9,0,0.917989417989418,0,-1.2096593881138367,-0.07258148631015722,2.0,0\n114,cloud_1,0.0,0.20666666666666667,75.0,1.9459101490553132,0.0,0.0,0.09333333333333334,-2.371577964480997,7,0.0,4.31748811353631,0.0,1.4245299591264633,0.29333333333333333,-1.9992887624466569,1.027340819237458,7.0,0.37910485750896644,0.0,0.602571534834282,0,0.5,1.0397722486849597,0.0,0,0.0,0.0,0.8729882944709463,10.714285714285714,0,0.7066666666666667,0,-0.18182178860842615,0.02666903735313304,2.0,0\n115,cm1_req_1,0.0,0.3225806451612903,62.0,2.0794415416798357,0.0,0.0,0.12903225806451613,-2.0476928433652555,8,0.0,4.127134385045092,0.0,3.984415584415588,0.1774193548387097,-3.0,2.4907499414157446,8.0,0.8305801273510537,0.0,1.5324936737113986,0,0.5,2.446306518900603,0.0,0,0.0,0.0,0.6743988870714471,7.75,0,0.8225806451612904,0,1.5704716981512927,0.0,2.0,0\n116,cmc_1,0.0,0.08049982003825934,1031.0,2.1972245773362196,0.0,0.0,0.008729388942774006,-4.74105990668074,9,0.0,6.93828448401696,0.0,8.299795517528992,0.2318137730358875,-1.3073937040155343,2.8241427741007112,9.0,1.4662575864695553,0.0,-0.1287686239561071,0,0.3333333333333333,3.2093294498273295,0.0,0,0.0,0.0,1.5418519078630386,114.55555555555556,0,0.42870999030067897,0,0.9557186195119106,-1.9148410323316747,3.0,0\n117,cmc_2,0.0,0.07225994180407369,1031.0,2.1972245773362196,0.0,0.0,0.008729388942774006,-4.74105990668074,9,0.0,6.93828448401696,0.0,8.645370625516671,0.4277400581959263,-1.2880091640607487,2.9301447725132777,9.0,1.4490583099690488,0.0,-0.12718930679282245,0,0.5,3.262724417648029,0.0,0,0.0,0.0,0.9848810499598671,114.55555555555556,0,0.5722599418040737,0,0.8302135088216566,-1.9251757230228006,2.0,0\n118,collins_1,0.0,0.33999999999999997,350.0,3.091042453358316,0.0,0.0,0.06285714285714286,-2.7668907011251433,22,0.0,5.857933154483459,0.0,35.196898236943255,0.16,-3.0,7.520233812661067,22.0,1.0747672246133992,0.0,0.994713456934977,0,0.5,4.870632441412998,0.0,0,0.0,0.0,0.6343095546405662,15.909090909090908,0,0.84,0,2.7013536906891926,-0.03583059057097137,2.0,0\n119,confidence_1,0.0,0.36,50.0,1.0986122886681098,0.0,0.0,0.06,-2.8134107167600364,3,0.0,3.912023005428146,0.0,-0.5798589104351137,0.14,-1.9285249158812845,0.5536953414187102,3.0,0.27722638780752523,0.0,0.325126543536375,0,0.5,0.7027442532296428,0.0,0,0.0,0.0,0.584238811642856,16.666666666666668,0,0.86,0,-1.2127882172618156,0.0450195280307184,2.0,0\n120,cpu_1,0.0,0.29452054794520544,146.0,1.9459101490553132,0.0,0.0,0.04794520547945205,-3.0376964726530233,7,0.0,4.983606621708336,0.0,32.54533191083227,0.2054794520547945,-0.7468057890118636,10.253969838118774,7.0,1.5305727551341584,0.0,2.96594204415447,0,0.5,4.864560377324958,0.0,0,0.0,0.0,0.7327525499549905,20.857142857142858,0,0.7945205479452054,0,13.803328720236479,-0.2465667471996444,2.0,0\n121,cpu_act_1,0.0,0.20317404952912455,5734.0,3.044522437723423,0.0,0.0,0.0036623648412975234,-5.609646208719893,21,0.0,8.654168646443315,0.0,516.6141938522732,0.29682595047087545,1.033229871956042,134.43453231956224,21.0,4.86582747263611,0.0,5.247376448994201,0,0.5,19.710375896869355,0.0,0,0.0,0.0,0.8773762888112995,273.04761904761904,0,0.7031740495291245,0,76.14027002003667,-0.7809078112441841,2.0,0\n122,cpu_small_1,0.0,0.19131496337635157,5734.0,2.4849066497880004,0.0,0.0,0.0020927799093128706,-6.169261996655315,12,0.0,8.654168646443315,0.0,175.9596893935877,0.30868503662364843,0.810944044344664,61.24103962831677,12.0,3.495087227146296,0.0,4.475634351603603,0,0.5,11.815114572083806,0.0,0,0.0,0.0,0.8916497233450273,477.8333333333333,0,0.6913149633763516,0,52.79399681191547,-0.7774001810441488,2.0,0\n123,credit-g_1,0.0,0.19428571428571428,700.0,2.995732273553991,0.0,0.0,0.02857142857142857,-3.5553480614894135,20,0.0,6.551080335043404,0.0,17.626982978928577,0.3057142857142857,-1.9097131790710873,4.380620474136882,20.0,1.3619998132243571,0.0,0.6981126013935002,0,0.5,4.430235092963868,0.0,0,0.0,0.0,0.8881642377719646,35.0,0,0.6942857142857143,0,1.3869083023848732,-1.6996177417194842,2.0,0\n124,datatrieve_1,0.0,0.44505494505494503,91.0,2.0794415416798357,0.0,0.0,0.08791208791208792,-2.431417964837014,8,0.0,4.51085950651685,0.0,6.51810543776816,0.054945054945054944,-1.916666666666667,2.7093617058252444,8.0,0.5384870362892304,0.0,1.5038265447939714,0,0.5,2.017525151963091,0.0,0,0.0,0.0,0.3070428887831223,11.375,0,0.945054945054945,0,3.160172405453472,0.2886751345948127,2.0,0\n125,dbworld-bodies_1,0.0,0.0,44.0,8.455743229100015,0.0,0.0,106.86363636363636,4.671553595181754,4702,0.0,3.784189633918261,0.0,39.02325581395349,0.5,-3.0,17.690821029679384,4702.0,2.4891218463885547,0.0,4.41490578402536,0,0.5,6.404939953969398,0.0,0,0.0,0.0,1.0,0.009357720119098255,0,0.5,0,23.526763353221153,-2.846049894151541,2.0,0\n126,dbworld-subjects-stemmed_1,0.0,0.04545454545454544,44.0,5.43372200355424,0.0,0.0,5.204545454545454,1.6495323696359785,229,0.0,3.784189633918261,0.0,39.02325581395349,0.45454545454545453,-3.0,18.695626500695294,229.0,2.7565426675101485,0.0,4.074154337915662,0,0.5,6.404939953969398,0.0,0,0.0,0.0,0.9940302114769566,0.19213973799126638,0,0.5454545454545454,0,21.922151876655278,0.0,2.0,0\n127,dbworld-subjects_1,0.0,0.04545454545454544,44.0,5.488937726156687,0.0,0.0,5.5,1.7047480922384253,242,0.0,3.784189633918261,0.0,39.02325581395349,0.45454545454545453,-3.0,18.595919995817834,242.0,2.734153258108569,0.0,4.338017985190121,0,0.5,6.404939953969398,0.0,0,0.0,0.0,0.9940302114769566,0.18181818181818182,0,0.5454545454545454,0,24.041927962956166,0.0,2.0,0\n128,delta_ailerons_1,0.0,0.038276553106212446,4990.0,1.6094379124341003,0.0,0.0,0.001002004008016032,-6.905753276311464,5,0.0,8.515191188745565,0.0,1.283971045075167,0.4617234468937876,-1.0966942873822785,0.9308651278465313,5.0,0.30973846270864025,0.0,0.07741954845342522,0,0.5,0.6098843829654939,0.0,0,0.0,0.0,0.9957684921033407,998.0,0,0.5382765531062125,0,0.4657234161062993,-0.23291432259826142,2.0,0\n129,delta_elevators_1,0.0,0.0006755742381023833,6661.0,1.791759469228055,0.0,0.0,0.0009007656508031827,-7.012265433185124,6,0.0,8.804024902413179,0.0,3.966164819570703,0.4993244257618976,-0.532894996748225,1.541961737344833,6.0,0.13714182023206092,0.0,-0.024666185746975416,0,0.5,0.16454024226056502,0.0,0,0.0,0.0,0.9999986831059757,1110.1666666666667,0,0.5006755742381024,0,0.5972677251712234,-0.2227056791737276,2.0,0\n130,desharnais_1,0.0,0.1689889234116475,56.0,2.3978952727983707,0.0,0.0,0.19642857142857142,-1.6274564179367788,11,0.0,4.02535169073515,0.0,2.3868914338272775,0.14285714285714285,-0.959915654481859,1.228283727482484,11.0,0.7641940067204299,0.0,0.6214303947082035,0,0.3333333333333333,1.6162219965870561,0.0,0,0.0,0.0,1.3954450305710164,5.090909090909091,0,0.5535714285714286,0,0.5274378653016836,-0.49241842961129745,3.0,0\n131,diabetes_1,0.0,0.14432029795158285,537.0,2.0794415416798357,0.0,0.0,0.0148975791433892,-4.206556552829029,8,0.0,6.285998094508865,0.0,7.6380188618029745,0.35567970204841715,-0.26034324825088806,2.8896794560162538,8.0,1.269654413322346,0.0,0.5387483970301968,0,0.5,2.318976797222772,0.0,0,0.0,0.0,0.9390384773948453,67.125,0,0.6443202979515829,0,2.8854337470123697,-1.9404486851629412,2.0,0\n132,diabetes_numeric_1,0.0,0.09999999999999998,30.0,0.6931471805599453,0.0,0.0,0.06666666666666667,-2.70805020110221,2,0.0,3.4011973816621555,0.0,-0.12347991070279907,0.4,-0.13109967443365678,0.0038098818654288547,2.0,0.06747044262296731,0.0,-0.8197664016686398,0,0.5,-0.7522959590456725,0.0,0,0.0,0.0,0.9709505944546688,15.0,0,0.6,0,-0.12728979256822792,-0.8872368442916071,2.0,0\n133,diggle_table_a1_1,0.0,0.015151515151515138,33.0,1.3862943611198906,0.0,0.0,0.12121212121212122,-2.1102132003465894,4,0.0,3.4965075614664802,0.0,0.9981828259025352,0.48484848484848486,-1.1841077356006966,0.8485932570842515,4.0,0.3667310946259819,0.0,-0.21275945069118798,0,0.5,0.13941899184818116,0.0,0,0.0,0.0,0.9993375041688846,8.25,0,0.5151515151515151,0,-0.4354189323706676,-0.787364420748687,2.0,0\n134,diggle_table_a2_1,0.0,0.04838709677419353,217.0,2.0794415416798357,0.0,0.0,0.03686635944700461,-3.3004558118606235,8,0.0,5.37989735354046,0.0,0.6389375046245531,0.45161290322580644,-1.3835370141126035,0.618436428773639,8.0,0.31346326138235714,0.0,-0.02504709720656323,0,0.5,0.7024735600666515,0.0,0,0.0,0.0,0.9932338197397066,27.125,0,0.5483870967741935,0,-0.9088791577311752,-0.4007320390449831,2.0,0\n135,disclosure_x_bias_1,0.0,0.0010799136069114257,463.0,1.0986122886681098,0.0,0.0,0.0064794816414686825,-5.039114765418124,3,0.0,6.137727054086234,0.0,0.1763814504426655,0.49892008639308855,-0.009361730497206011,0.07838448117943289,3.0,0.3752670502447578,0.0,0.1571096033946905,0,0.5,0.43881717811173354,0.0,0,0.0,0.0,0.9999966350168109,154.33333333333334,0,0.5010799136069114,0,0.0975462177414892,-0.37325499287596325,2.0,0\n136,disclosure_x_noise_1,0.0,0.0032397408207343326,463.0,1.0986122886681098,0.0,0.0,0.0064794816414686825,-5.039114765418124,3,0.0,6.137727054086234,0.0,0.2157633505716552,0.49676025917926564,-0.14093536096959447,0.16067856447228915,3.0,0.2545953921551847,0.0,-0.0010555217908911618,0,0.5,0.1955438338579064,0.0,0,0.0,0.0,0.9999697149629285,154.33333333333334,0,0.5032397408207343,0,-0.010606517890653292,-0.3605825729490136,2.0,0\n137,disclosure_x_tampered_1,0.0,0.0075593952483801186,463.0,1.0986122886681098,0.0,0.0,0.0064794816414686825,-5.039114765418124,3,0.0,6.137727054086234,0.0,-0.0664341858462989,0.4924406047516199,-0.29602348679516055,0.09605306444559575,3.0,0.12515763159214227,0.0,0.0700134187332691,0,0.5,0.16903155207111983,0.0,0,0.0,0.0,0.9998351096698779,154.33333333333334,0,0.5075593952483801,0,-0.16637987444301006,-0.10655156504047798,2.0,0\n138,disclosure_z_1,0.0,0.03779697624190062,463.0,1.0986122886681098,0.0,0.0,0.0064794816414686825,-5.039114765418124,3,0.0,6.137727054086234,0.0,0.27297514723892924,0.46220302375809935,-0.12897228027736318,0.17047124392596388,3.0,0.3618026011494252,0.0,0.14074543836507336,0,0.5,0.43415310354975034,0.0,0,0.0,0.0,0.9958739638762244,154.33333333333334,0,0.5377969762419006,0,0.039340376717123725,-0.3689813133465577,2.0,0\n139,dresses-sales_1,0.0,0.060000000000000026,350.0,2.4849066497880004,0.0,0.0,0.03428571428571429,-3.373026504695459,12,0.0,5.857933154483459,0.0,4.766628425773518,0.44,-1.4982732027160819,1.7558104274657091,12.0,1.046154170124348,0.0,0.1922524556804109,0,0.5,2.3973890369636286,0.0,0,0.0,0.0,0.9895875212220555,29.166666666666668,0,0.56,0,-0.1746049215381328,-1.2324169822308881,2.0,0\n140,ecoli_1,0.0,0.07021276595744683,235.0,1.9459101490553132,0.0,0.0,0.029787234042553193,-3.5136753650888455,7,0.0,5.459585514144159,0.0,230.00427350427344,0.4297872340425532,-1.0182297341233606,79.63305468547159,7.0,5.227081546438852,0.0,3.1136199730268523,0,0.5,15.231686495732287,0.0,0,0.0,0.0,0.9857283879297964,33.57142857142857,0,0.5702127659574469,0,36.07895809012989,-0.09406759839825735,2.0,0\n141,eeg-eye-state_1,0.0,0.05121113866107188,10486.0,2.6390573296152584,0.0,0.0,0.0013351134846461949,-6.618738983517219,14,0.0,9.257796313132479,0.0,10480.76710307334,0.4487888613389281,41.57100201268008,3729.2108995167264,14.0,46.55598667988161,0.0,36.57544203734283,0,0.5,102.38481619066837,0.0,0,0.0,0.0,0.9924195454230477,749.0,0,0.5512111386610719,0,4259.112289763916,-45.72405095805483,2.0,0\n142,electricity_1,0.0,0.0753830632448452,31718.0,2.0794415416798357,0.0,0.0,0.0002522227126552746,-8.285198080378711,8,0.0,10.364639622058545,0.0,7518.262589947748,0.42461693675515483,-1.314661543503337,2479.428992438434,8.0,26.92368944644668,0.0,11.510509081804956,0,0.5,82.30054852710225,0.0,0,0.0,0.0,0.983540775906757,3964.75,0,0.5753830632448452,0,959.8591629776118,-0.17172040094241914,2.0,0\n143,elevators_1,0.0,0.19067906016008263,11619.0,2.8903717578961645,0.0,0.0,0.001549186676994578,-6.470025210286697,18,0.0,9.360396968182862,0.0,11614.000086073329,0.3093209398399174,-0.5560945813597429,3126.7674663960406,18.0,30.96383887753151,0.0,10.274058038291633,0,0.5,107.77754908176993,0.0,0,0.0,0.0,0.8923880444245715,645.5,0,0.6906790601600826,0,1086.6078651542364,-1.7340391919424774,2.0,0\n144,elusage_1,0.0,0.07894736842105265,38.0,0.6931471805599453,0.0,0.0,0.05263157894736842,-2.9444389791664407,2,0.0,3.6375861597263857,0.0,-1.2009368775219442,0.42105263157894735,-1.4023525383780817,0.10070783042806875,2.0,0.0009106373982701952,0.0,-0.028306673788668586,0,0.5,-0.02739603639039839,0.0,0,0.0,0.0,0.9819407868640977,19.0,0,0.5789473684210527,0,-1.3016447079500129,-0.02921731118693878,2.0,0\n145,eye_movements_1,0.0,0.05312685370491274,7655.0,3.295836866004329,0.0,0.0,0.003527106466361855,-5.647277442087455,27,0.0,8.943114308091785,0.0,99.49830946625053,0.26244284781188765,-1.8496464066547291,29.777871217262916,27.0,2.642325489716896,0.0,2.7177300452261384,0,0.3333333333333333,9.283977355806709,0.0,0,0.0,0.0,1.5661489009272556,283.51851851851853,0,0.39033311561071193,0,20.6048216131528,-1.512301253562623,3.0,0\n146,fertility_1,0.0,0.4,70.0,2.1972245773362196,0.0,0.0,0.12857142857142856,-2.05127066471314,9,0.0,4.248495242049359,0.0,5.111111111111109,0.1,-2.0,2.0771428251724733,9.0,1.0293467047400138,0.0,-0.1392636437809697,0,0.5,0.7616332075660487,0.0,0,0.0,0.0,0.46899559358928117,7.777777777777778,0,0.9,0,-0.09791952107467601,-2.6666666666666647,2.0,0\n147,fl2000_1,0.0,0.06521739130434781,46.0,2.70805020110221,0.0,0.0,0.32608695652173914,-1.120591195386885,15,0.0,3.828641396489095,0.0,37.62797285433069,0.43478260869565216,-0.5038961038961061,10.086228871910219,15.0,1.3281101237633317,0.0,3.1027319520669985,0,0.5,6.178120009029945,0.0,0,0.0,0.0,0.9876925088958033,3.066666666666667,0,0.5652173913043478,0,11.304234243049732,1.2231532594503,2.0,0\n148,flags_1,0.0,0.15925925925925924,135.0,3.332204510175204,0.0,0.0,0.2074074074074074,-1.5730702682632256,28,0.0,4.90527477843843,0.0,64.34307358515669,0.34074074074074073,-1.99802371541502,16.384625774188684,28.0,2.1006871975870416,0.0,1.6729259840654944,0,0.5,7.41908781875053,0.0,0,0.0,0.0,0.9255257797572608,4.821428571428571,0,0.6592592592592592,0,6.681831854096532,-1.2856576654593335,2.0,0\n149,fri_c0_1000_10_1,0.0,0.021428571428571436,700.0,2.302585092994046,0.0,0.0,0.014285714285714285,-4.248495242049359,10,0.0,6.551080335043404,0.0,-1.1127858729508298,0.4785714285714286,-1.2720670291437337,0.042911536472800355,10.0,0.052352542456162214,0.0,-0.056167846854188054,0,0.5,0.029895121654359005,0.0,0,0.0,0.0,0.998674670095595,70.0,0,0.5214285714285715,0,-1.195603659037294,-0.1759372077425791,2.0,0\n150,fri_c0_1000_25_1,0.0,0.0014285714285714457,700.0,3.2188758248682006,0.0,0.0,0.03571428571428571,-3.332204510175204,25,0.0,6.551080335043404,0.0,-1.101524646970124,0.49857142857142855,-1.2479169939230752,0.041656443901964255,25.0,0.05036495279044171,0.0,-0.007644372656691555,0,0.5,0.10270252807063557,0.0,0,0.0,0.0,0.9999941114408012,28.0,0,0.5014285714285714,0,-1.1998367411426234,-0.12209348316787906,2.0,0\n151,fri_c0_1000_50_1,0.0,0.020000000000000018,700.0,3.912023005428146,0.0,0.0,0.07142857142857142,-2.639057329615259,50,0.0,6.551080335043404,0.0,-1.1064279547456801,0.48,-1.2903853531218854,0.042633065430479976,50.0,0.05301575836093203,0.0,-0.01240867252450504,0,0.5,0.15770331439945778,0.0,0,0.0,0.0,0.9988455359952018,14.0,0,0.52,0,-1.2001372150887095,-0.11969315489797003,2.0,0\n152,fri_c0_1000_5_1,0.0,0.008571428571428563,700.0,1.6094379124341003,0.0,0.0,0.007142857142857143,-4.941642422609305,5,0.0,6.551080335043404,0.0,-1.166989454500946,0.49142857142857144,-1.221970767512595,0.017601132480307206,5.0,0.048232089630971586,0.0,0.042350035122439164,0,0.5,0.10085487281498824,0.0,0,0.0,0.0,0.9997880017729585,140.0,0,0.5085714285714286,0,-1.1933502646254355,-0.046236897931477165,2.0,0\n153,fri_c0_100_10_1,0.0,0.07142857142857142,70.0,2.302585092994046,0.0,0.0,0.14285714285714285,-1.9459101490553135,10,0.0,4.248495242049359,0.0,-0.9034569381756987,0.42857142857142855,-1.3596396708402718,0.14048647637974968,10.0,0.1836285653629677,0.0,-0.0806706576326995,0,0.5,0.19027183250491705,0.0,0,0.0,0.0,0.9852281360342515,7.0,0,0.5714285714285714,0,-1.177344238761389,-0.3834332573992652,2.0,0\n154,fri_c0_100_25_1,0.0,0.014285714285714263,70.0,3.2188758248682006,0.0,0.0,0.35714285714285715,-1.0296194171811581,25,0.0,4.248495242049359,0.0,-0.7093731201733426,0.4857142857142857,-1.3343265696428874,0.13654748413748885,25.0,0.16004260214081578,0.0,-0.018699963309589937,0,0.5,0.27376528927396554,0.0,0,0.0,0.0,0.9994110647387552,2.8,0,0.5142857142857142,0,-1.144304479165979,-0.31526285140681,2.0,0\n155,fri_c0_100_50_1,0.0,0.014285714285714263,70.0,3.912023005428146,0.0,0.0,0.7142857142857143,-0.3364722366212129,50,0.0,4.248495242049359,0.0,-0.7327588741581543,0.4857142857142857,-1.4633700753517613,0.14117653159187196,50.0,0.1633611175103125,0.0,0.010841989567447982,0,0.5,0.4046455556014225,0.0,0,0.0,0.0,0.9994110647387552,1.4,0,0.5142857142857142,0,-1.1664187468297906,-0.40370374551871235,2.0,0\n156,fri_c0_100_5_1,0.0,0.014285714285714263,70.0,1.6094379124341003,0.0,0.0,0.07142857142857142,-2.639057329615259,5,0.0,4.248495242049359,0.0,-0.7198575651909205,0.4857142857142857,-1.3540240046487688,0.21847649185002857,5.0,0.17412822068081743,0.0,0.059521518067945436,0,0.5,0.3706694728789516,0.0,0,0.0,0.0,0.9994110647387552,14.0,0,0.5142857142857142,0,-1.0236868090981488,-0.16630074147468166,2.0,0\n157,fri_c0_250_10_1,0.0,0.014285714285714263,175.0,2.302585092994046,0.0,0.0,0.05714285714285714,-2.8622008809294686,10,0.0,5.1647859739235145,0.0,-1.0350555765303875,0.4857142857142857,-1.2257602905367815,0.05332006619067617,10.0,0.10509712900055364,0.0,-0.018702887898860165,0,0.5,0.2274744258513126,0.0,0,0.0,0.0,0.9994110647387552,17.5,0,0.5142857142857142,0,-1.1271878021920925,-0.18038702551392008,2.0,0\n158,fri_c0_250_25_1,0.0,0.008571428571428563,175.0,3.2188758248682006,0.0,0.0,0.14285714285714285,-1.9459101490553135,25,0.0,5.1647859739235145,0.0,-1.0231504561593339,0.49142857142857144,-1.3930097827035601,0.10230852523088485,25.0,0.1373467066323846,0.0,-0.022598899924027173,0,0.5,0.3251821328200972,0.0,0,0.0,0.0,0.9997880017729585,7.0,0,0.5085714285714286,0,-1.1909589100066298,-0.23702608962087363,2.0,0\n159,fri_c0_250_50_1,0.0,0.031428571428571445,175.0,3.912023005428146,0.0,0.0,0.2857142857142857,-1.252762968495368,50,0.0,5.1647859739235145,0.0,-0.9440318566177588,0.4685714285714286,-1.3777252400772588,0.09410489441998203,50.0,0.09363457404420057,0.0,0.003126902972774034,0,0.5,0.16332249332590376,0.0,0,0.0,0.0,0.9971480614795872,3.5,0,0.5314285714285715,0,-1.1815948482739704,-0.2433319733129668,2.0,0\n160,fri_c0_250_5_1,0.0,0.020000000000000018,175.0,1.6094379124341003,0.0,0.0,0.02857142857142857,-3.5553480614894135,5,0.0,5.1647859739235145,0.0,-1.1073124390807045,0.48,-1.2043194730136098,0.03709544405934347,5.0,0.024980008982091993,0.0,-0.08819909415838072,0,0.5,-0.04361537384639427,0.0,0,0.0,0.0,0.9988455359952018,35.0,0,0.52,0,-1.1624569364055666,-0.11588816857388007,2.0,0\n161,fri_c0_500_10_1,0.0,0.0057142857142856995,350.0,2.302585092994046,0.0,0.0,0.02857142857142857,-3.5553480614894135,10,0.0,5.857933154483459,0.0,-1.0874254726755095,0.4942857142857143,-1.2737987458197442,0.048094898156998765,10.0,0.06006085981393204,0.0,-0.01327903987667767,0,0.5,0.089167167846035,0.0,0,0.0,0.0,0.9999057811299177,35.0,0,0.5057142857142857,0,-1.1851653373880087,-0.0991075996847258,2.0,0\n162,fri_c0_500_25_1,0.0,0.008571428571428563,350.0,3.2188758248682006,0.0,0.0,0.07142857142857142,-2.639057329615259,25,0.0,5.857933154483459,0.0,-1.0204221059555405,0.49142857142857144,-1.2873664041219264,0.060815914761296705,25.0,0.0738843132481244,0.0,0.022905490357892,0,0.5,0.1824705843094611,0.0,0,0.0,0.0,0.9997880017729585,14.0,0,0.5085714285714286,0,-1.179597699307755,-0.18893296335934687,2.0,0\n163,fri_c0_500_50_1,0.0,0.020000000000000018,350.0,3.912023005428146,0.0,0.0,0.14285714285714285,-1.9459101490553135,50,0.0,5.857933154483459,0.0,-1.002518901933153,0.48,-1.3325483690593711,0.0724590034474614,50.0,0.07785950412058273,0.0,0.011584491250114936,0,0.5,0.21842056488753414,0.0,0,0.0,0.0,0.9988455359952018,7.0,0,0.52,0,-1.187928617752452,-0.19414239235963326,2.0,0\n164,fri_c0_500_5_1,0.0,0.0028571428571428636,350.0,1.6094379124341003,0.0,0.0,0.014285714285714285,-4.248495242049359,5,0.0,5.857933154483459,0.0,-1.1373617287056903,0.49714285714285716,-1.2606974174768428,0.04512854878479401,5.0,0.05561319043228135,0.0,0.02899082489863507,0,0.5,0.13640184057264704,0.0,0,0.0,0.0,0.999976445667063,70.0,0,0.5028571428571429,0,-1.2061433103216899,-0.020812810566664633,2.0,0\n165,fri_c1_1000_10_1,0.0,0.05428571428571427,700.0,2.302585092994046,0.0,0.0,0.014285714285714285,-4.248495242049359,10,0.0,6.551080335043404,0.0,-0.7190278208702447,0.44571428571428573,-1.2727799213659117,0.1509295454736741,10.0,0.05255637079292321,0.0,-0.007993815246649584,0,0.5,0.07985211975028983,0.0,0,0.0,0.0,0.9914801474700047,70.0,0,0.5542857142857143,0,-1.151503336281517,-0.07286130216862666,2.0,0\n166,fri_c1_1000_25_1,0.0,0.042857142857142844,700.0,3.2188758248682006,0.0,0.0,0.03571428571428571,-3.332204510175204,25,0.0,6.551080335043404,0.0,-0.7828617452305751,0.45714285714285713,-1.2582101088633844,0.08732119384069105,25.0,0.051069178795404596,0.0,0.0020603224962902063,0,0.5,0.09528260884208635,0.0,0,0.0,0.0,0.9946937953613058,28.0,0,0.5428571428571428,0,-1.180951860610745,-0.13363246923741642,2.0,0\n167,fri_c1_1000_50_1,0.0,0.04000000000000001,700.0,3.912023005428146,0.0,0.0,0.07142857142857142,-2.639057329615259,50,0.0,6.551080335043404,0.0,-0.780782495337669,0.46,-1.2770772817013754,0.07619380143484131,50.0,0.05679057531161003,0.0,0.007135628678532569,0,0.5,0.12378889406804493,0.0,0,0.0,0.0,0.9953784388202258,14.0,0,0.54,0,-1.1818237739876822,-0.11660807742535977,2.0,0\n168,fri_c1_1000_5_1,0.0,0.042857142857142844,700.0,1.6094379124341003,0.0,0.0,0.007142857142857143,-4.941642422609305,5,0.0,6.551080335043404,0.0,-0.7403816505159351,0.45714285714285713,-1.207322355247225,0.1787218153569979,5.0,0.058746587677865426,0.0,-0.024084721589678015,0,0.5,0.08622457101977436,0.0,0,0.0,0.0,0.9946937953613058,140.0,0,0.5428571428571428,0,-1.0958750516390459,-0.08078758382279651,2.0,0\n169,fri_c1_100_10_1,0.0,0.05714285714285716,70.0,2.302585092994046,0.0,0.0,0.14285714285714285,-1.9459101490553135,10,0.0,4.248495242049359,0.0,-0.6529316838350891,0.44285714285714284,-1.434357916424763,0.18610216327040988,10.0,0.1358140795387962,0.0,-0.12311121827906046,0,0.5,0.13495634932040687,0.0,0,0.0,0.0,0.9905577004075262,7.0,0,0.5571428571428572,0,-1.1044866816710024,-0.3391819124871322,2.0,0\n170,fri_c1_100_25_1,0.0,0.014285714285714263,70.0,3.2188758248682006,0.0,0.0,0.35714285714285715,-1.0296194171811581,25,0.0,4.248495242049359,0.0,-0.7015100626103479,0.4857142857142857,-1.3332886447050825,0.13513592689166093,25.0,0.17730871199653542,0.0,-0.07561348447588942,0,0.5,0.34220431677376517,0.0,0,0.0,0.0,0.9994110647387552,2.8,0,0.5142857142857142,0,-1.0806178577488046,-0.513342838745998,2.0,0\n171,fri_c1_100_50_1,0.0,0.05714285714285716,70.0,3.912023005428146,0.0,0.0,0.7142857142857143,-0.3364722366212129,50,0.0,4.248495242049359,0.0,-0.846497206999786,0.44285714285714284,-1.5066196838698933,0.15418161365304087,50.0,0.170186298861004,0.0,0.005767504783193771,0,0.5,0.3153759955744276,0.0,0,0.0,0.0,0.9905577004075262,1.4,0,0.5571428571428572,0,-1.1475030755232927,-0.405025109490885,2.0,0\n172,fri_c1_100_5_1,0.0,0.014285714285714263,70.0,1.6094379124341003,0.0,0.0,0.07142857142857142,-2.639057329615259,5,0.0,4.248495242049359,0.0,-0.6619218273477547,0.4857142857142857,-1.1962703236738066,0.1894510327201321,5.0,0.25374375182612857,0.0,0.09091147268067888,0,0.5,0.3082281204362966,0.0,0,0.0,0.0,0.9994110647387552,14.0,0,0.5142857142857142,0,-0.981281489687954,-0.3906430017819606,2.0,0\n173,fri_c1_250_10_1,0.0,0.05428571428571427,175.0,2.302585092994046,0.0,0.0,0.05714285714285714,-2.8622008809294686,10,0.0,5.1647859739235145,0.0,-0.8879169148196375,0.44571428571428573,-1.3587913839685548,0.11919832638075117,10.0,0.09752815406347887,0.0,-0.010660246546124744,0,0.5,0.19412326575232913,0.0,0,0.0,0.0,0.9914801474700047,17.5,0,0.5542857142857143,0,-1.1725665841044624,-0.16871168422607039,2.0,0\n174,fri_c1_250_25_1,0.0,0.10571428571428573,175.0,3.2188758248682006,0.0,0.0,0.14285714285714285,-1.9459101490553135,25,0.0,5.1647859739235145,0.0,-0.7609359765222292,0.3942857142857143,-1.3225461656315352,0.11555984416964227,25.0,0.10628083525025114,0.0,0.04272546540497004,0,0.5,0.23894754362382242,0.0,0,0.0,0.0,0.9675096506815131,7.0,0,0.6057142857142858,0,-1.180783168566649,-0.1617517296669763,2.0,0\n175,fri_c1_250_50_1,0.0,0.008571428571428563,175.0,3.912023005428146,0.0,0.0,0.2857142857142857,-1.252762968495368,50,0.0,5.1647859739235145,0.0,-0.7656259165857264,0.49142857142857144,-1.3700254021976732,0.09725248599842931,50.0,0.08743834569243268,0.0,-0.015154820649020007,0,0.5,0.16459435871425213,0.0,0,0.0,0.0,0.9997880017729585,3.5,0,0.5085714285714286,0,-1.1860678269813465,-0.20504340283204125,2.0,0\n176,fri_c1_250_5_1,0.0,0.020000000000000018,175.0,1.6094379124341003,0.0,0.0,0.02857142857142857,-3.5553480614894135,5,0.0,5.1647859739235145,0.0,-0.6678602302360659,0.48,-1.187472923293893,0.1937504665946226,5.0,0.0979629299570346,0.0,-0.10582482310256294,0,0.5,0.025811371887066465,0.0,0,0.0,0.0,0.9988455359952018,35.0,0,0.52,0,-1.0335422518050688,-0.2336289864669476,2.0,0\n177,fri_c1_500_10_1,0.0,0.05428571428571427,350.0,2.302585092994046,0.0,0.0,0.02857142857142857,-3.5553480614894135,10,0.0,5.857933154483459,0.0,-0.7635134072636256,0.44571428571428573,-1.2611723799209575,0.13637472485430158,10.0,0.05122592374739967,0.0,-0.03764024568011472,0,0.5,0.020062457813303004,0.0,0,0.0,0.0,0.9914801474700047,35.0,0,0.5542857142857143,0,-1.1360429656108875,-0.1581639298297686,2.0,0\n178,fri_c1_500_25_1,0.0,0.02857142857142858,350.0,3.2188758248682006,0.0,0.0,0.07142857142857142,-2.639057329615259,25,0.0,5.857933154483459,0.0,-0.6457037581060527,0.4714285714285714,-1.282358083452167,0.1202634121682005,25.0,0.08690363395314389,0.0,0.009533824967156247,0,0.5,0.14528630155181227,0.0,0,0.0,0.0,0.9976432959863937,14.0,0,0.5285714285714286,0,-1.1892002968009698,-0.19725796077331892,2.0,0\n179,fri_c1_500_50_1,0.0,0.008571428571428563,350.0,3.912023005428146,0.0,0.0,0.14285714285714285,-1.9459101490553135,50,0.0,5.857933154483459,0.0,-0.9322964868401891,0.49142857142857144,-1.3628088409358623,0.06867243004909629,50.0,0.09396981638534413,0.0,-0.0080265910557736,0,0.5,0.21269600801331542,0.0,0,0.0,0.0,0.9997880017729585,7.0,0,0.5085714285714286,0,-1.1694591697652532,-0.17133006984808738,2.0,0\n180,fri_c1_500_5_1,0.0,0.014285714285714263,350.0,1.6094379124341003,0.0,0.0,0.014285714285714285,-4.248495242049359,5,0.0,5.857933154483459,0.0,-0.8635950875288181,0.4857142857142857,-1.2216674979113125,0.12881804156159632,5.0,0.08234328042581468,0.0,-0.0028003558003061257,0,0.5,0.16071790126058447,0.0,0,0.0,0.0,0.9994110647387552,70.0,0,0.5142857142857142,0,-1.0970656461214796,-0.05701640773429875,2.0,0\n181,fri_c2_1000_10_1,0.0,0.061428571428571416,700.0,2.302585092994046,0.0,0.0,0.014285714285714285,-4.248495242049359,10,0.0,6.551080335043404,0.0,0.0857379567442611,0.43857142857142856,-1.245027866261953,0.3860236877778354,10.0,0.2194365670492653,0.0,0.0689430984975363,0,0.5,0.6871482589445057,0.0,0,0.0,0.0,0.9890845119519327,70.0,0,0.5614285714285714,0,-1.0171369308433775,-0.10965804499036746,2.0,0\n182,fri_c2_1000_25_1,0.0,0.05428571428571427,700.0,3.2188758248682006,0.0,0.0,0.03571428571428571,-3.332204510175204,25,0.0,6.551080335043404,0.0,-0.2078130384364596,0.44571428571428573,-1.2700728824252852,0.21338264067583643,25.0,0.1428610577055952,0.0,0.02766855546312344,0,0.5,0.6620244286727267,0.0,0,0.0,0.0,0.9914801474700047,28.0,0,0.5542857142857143,0,-1.147268015347972,-0.13606229313194165,2.0,0\n183,fri_c2_1000_50_1,0.0,0.09571428571428572,700.0,3.912023005428146,0.0,0.0,0.07142857142857142,-2.639057329615259,50,0.0,6.551080335043404,0.0,0.15270352635324214,0.4042857142857143,-1.276795969769162,0.1996564749001033,50.0,0.11908856094546756,0.0,0.026035990611821207,0,0.5,0.7453215052704487,0.0,0,0.0,0.0,0.9734024363354039,14.0,0,0.5957142857142858,0,-1.156393774505009,-0.1260539990302556,2.0,0\n184,fri_c2_1000_5_1,0.0,0.0785714285714286,700.0,1.6094379124341003,0.0,0.0,0.007142857142857143,-4.941642422609305,5,0.0,6.551080335043404,0.0,0.23177099449304217,0.42142857142857143,-1.2061281251751272,0.5404290482724872,5.0,0.27427576842822626,0.0,0.11225557302540559,0,0.5,0.651613576477489,0.0,0,0.0,0.0,0.9821130873306577,140.0,0,0.5785714285714286,0,-0.8149755906880458,-0.08723381377880393,2.0,0\n185,fri_c2_100_10_1,0.0,0.042857142857142844,70.0,2.302585092994046,0.0,0.0,0.14285714285714285,-1.9459101490553135,10,0.0,4.248495242049359,0.0,0.7635333014813082,0.45714285714285713,-1.476676722825488,0.6461046526846391,10.0,0.26034927374984146,0.0,0.1482763728688268,0,0.5,0.8468503975982686,0.0,0,0.0,0.0,0.9946937953613058,7.0,0,0.5428571428571428,0,-0.9590579302182732,-0.1378922808798306,2.0,0\n186,fri_c2_100_25_1,0.0,0.07142857142857142,70.0,3.2188758248682006,0.0,0.0,0.35714285714285715,-1.0296194171811581,25,0.0,4.248495242049359,0.0,-0.3511084305174932,0.42857142857142855,-1.422442032938732,0.23065868490982744,25.0,0.1898738487454913,0.0,0.025127518257849698,0,0.5,0.645157483647583,0.0,0,0.0,0.0,0.9852281360342515,2.8,0,0.5714285714285714,0,-1.1202341377629148,-0.4143966357441696,2.0,0\n187,fri_c2_100_50_1,0.0,0.07142857142857142,70.0,3.912023005428146,0.0,0.0,0.7142857142857143,-0.3364722366212129,50,0.0,4.248495242049359,0.0,-0.04332182826562336,0.42857142857142855,-1.464071287885187,0.21989203831708798,50.0,0.22094694866282166,0.0,-0.024128119620003097,0,0.5,0.7066417400470643,0.0,0,0.0,0.0,0.9852281360342515,1.4,0,0.5714285714285714,0,-1.1359055968538647,-0.3956569144225764,2.0,0\n188,fri_c2_100_5_1,0.0,0.08571428571428572,70.0,1.6094379124341003,0.0,0.0,0.07142857142857142,-2.639057329615259,5,0.0,4.248495242049359,0.0,0.2797514405185533,0.4142857142857143,-1.189139509922792,0.5680602990472076,5.0,0.3476303107403512,0.0,0.16363960837005997,0,0.5,0.8426967626578326,0.0,0,0.0,0.0,0.9786961448300948,14.0,0,0.5857142857142857,0,-0.8547910530388872,-0.07364117052877533,2.0,0\n189,fri_c2_250_10_1,0.0,0.15142857142857144,175.0,2.302585092994046,0.0,0.0,0.05714285714285714,-2.8622008809294686,10,0.0,5.1647859739235145,0.0,0.24175162085622492,0.3485714285714286,-1.3018370942677209,0.46247039864209977,10.0,0.2602322854631667,0.0,0.0771792727933732,0,0.5,0.7940301800341024,0.0,0,0.0,0.0,0.9327857449402339,17.5,0,0.6514285714285715,0,-1.0294154322956817,-0.1551163436679297,2.0,0\n190,fri_c2_250_25_1,0.0,0.06571428571428573,175.0,3.2188758248682006,0.0,0.0,0.14285714285714285,-1.9459101490553135,25,0.0,5.1647859739235145,0.0,0.13279562284406365,0.4342857142857143,-1.3353682526059818,0.2857309987272862,25.0,0.19025796281404883,0.0,0.037353113931653886,0,0.5,0.810343590750597,0.0,0,0.0,0.0,0.9875037037775067,7.0,0,0.5657142857142857,0,-1.128424700137928,-0.25331220008134553,2.0,0\n191,fri_c2_250_50_1,0.0,0.037142857142857144,175.0,3.912023005428146,0.0,0.0,0.2857142857142857,-1.252762968495368,50,0.0,5.1647859739235145,0.0,-0.19790495180435075,0.46285714285714286,-1.3824351191671587,0.1769223863414625,50.0,0.1556803906124412,0.0,0.0062789623644123336,0,0.5,0.745958155818666,0.0,0,0.0,0.0,0.9960156701674574,3.5,0,0.5371428571428571,0,-1.1558849701745155,-0.24526827941391302,2.0,0\n192,fri_c2_250_5_1,0.0,0.0942857142857143,175.0,1.6094379124341003,0.0,0.0,0.02857142857142857,-3.5553480614894135,5,0.0,5.1647859739235145,0.0,-0.46585518078131694,0.4057142857142857,-1.2999555009783696,0.3058230082118275,5.0,0.26199387591470097,0.0,0.09981476173298261,0,0.5,0.6189689893964124,0.0,0,0.0,0.0,0.9741952479951516,35.0,0,0.5942857142857143,0,-1.0165564146379187,-0.09073052043666857,2.0,0\n193,fri_c2_500_10_1,0.0,0.08571428571428572,350.0,2.302585092994046,0.0,0.0,0.02857142857142857,-3.5553480614894135,10,0.0,5.857933154483459,0.0,0.556373547585685,0.4142857142857143,-1.34640842392195,0.5438593018326223,10.0,0.24805013568663703,0.0,0.12338654855560935,0,0.5,0.8357512205508335,0.0,0,0.0,0.0,0.9786961448300948,35.0,0,0.5857142857142857,0,-1.0093439158606388,-0.11536509213138232,2.0,0\n194,fri_c2_500_25_1,0.0,0.08857142857142855,350.0,3.2188758248682006,0.0,0.0,0.07142857142857142,-2.639057329615259,25,0.0,5.857933154483459,0.0,0.5043845790229051,0.4114285714285714,-1.3043511784176098,0.3386115856700393,25.0,0.19792982781129423,0.0,0.03392075770323264,0,0.5,0.935732574763442,0.0,0,0.0,0.0,0.9772445152396546,14.0,0,0.5885714285714285,0,-1.1019610003934828,-0.13309835777687828,2.0,0\n195,fri_c2_500_50_1,0.0,0.11142857142857143,350.0,3.912023005428146,0.0,0.0,0.14285714285714285,-1.9459101490553135,50,0.0,5.857933154483459,0.0,0.3515328537952169,0.38857142857142857,-1.298419262735276,0.2339959903429719,50.0,0.13657343706251515,0.0,0.026188112906948544,0,0.5,0.827665364036049,0.0,0,0.0,0.0,0.963871450404067,7.0,0,0.6114285714285714,0,-1.1600616227742433,-0.16641531777023513,2.0,0\n196,fri_c2_500_5_1,0.0,0.11142857142857143,350.0,1.6094379124341003,0.0,0.0,0.014285714285714285,-4.248495242049359,5,0.0,5.857933154483459,0.0,-0.23553685589791407,0.38857142857142857,-1.27034160180961,0.3815510688283906,5.0,0.24006532290325633,0.0,0.14174350525189278,0,0.5,0.6079712781078438,0.0,0,0.0,0.0,0.963871450404067,70.0,0,0.6114285714285714,0,-0.9559729881584538,-0.08461707857241262,2.0,0\n197,fri_c3_1000_10_1,0.0,0.060000000000000026,700.0,2.302585092994046,0.0,0.0,0.014285714285714285,-4.248495242049359,10,0.0,6.551080335043404,0.0,1.8793748348979182,0.44,-1.2884077640694958,0.9590635119238482,10.0,0.4600384364172015,0.0,0.23661368333321237,0,0.5,1.4279892935203211,0.0,0,0.0,0.0,0.9895875212220555,70.0,0,0.56,0,-0.716055671086979,-0.06076263882065163,2.0,0\n198,fri_c3_1000_25_1,0.0,0.06428571428571428,700.0,3.2188758248682006,0.0,0.0,0.03571428571428571,-3.332204510175204,25,0.0,6.551080335043404,0.0,2.044539112099799,0.4357142857142857,-1.276792667821582,0.6762848410579153,25.0,0.30854097281681986,0.0,0.06466335043909271,0,0.5,1.3920620139341353,0.0,0,0.0,0.0,0.988042611964058,28.0,0,0.5642857142857143,0,-0.9890234752885825,-0.14130936624244403,2.0,0\n199,fri_c3_1000_50_1,0.0,0.06285714285714283,700.0,3.912023005428146,0.0,0.0,0.07142857142857142,-2.639057329615259,50,0.0,6.551080335043404,0.0,1.9829856770521213,0.43714285714285717,-1.336096053334925,0.47819975903083745,50.0,0.22001274558962078,0.0,0.0457882053033141,0,0.5,1.3866942983079373,0.0,0,0.0,0.0,0.9885695450755236,14.0,0,0.5628571428571428,0,-1.098052160122284,-0.11794380130848754,2.0,0\n200,fri_c3_1000_5_1,0.0,0.061428571428571416,700.0,1.6094379124341003,0.0,0.0,0.007142857142857143,-4.941642422609305,5,0.0,6.551080335043404,0.0,1.4105571872735059,0.43857142857142856,-1.184938512032419,0.9867348445601488,5.0,0.5432411912324355,0.0,0.41308139789458026,0,0.5,1.320573452845307,0.0,0,0.0,0.0,0.9890845119519327,140.0,0,0.5614285714285714,0,-0.3057300747027097,-0.0782534694939474,2.0,0\n201,fri_c3_100_10_1,0.0,0.08571428571428572,70.0,2.302585092994046,0.0,0.0,0.14285714285714285,-1.9459101490553135,10,0.0,4.248495242049359,0.0,0.16121408902301448,0.4142857142857143,-1.5729287208072362,0.49091722395552223,10.0,0.3855753385955595,0.0,0.14404989745896893,0,0.5,1.0782938963076916,0.0,0,0.0,0.0,0.9786961448300948,7.0,0,0.5857142857142857,0,-0.8882729549147257,-0.132217949814039,2.0,0\n202,fri_c3_100_25_1,0.0,0.042857142857142844,70.0,3.2188758248682006,0.0,0.0,0.35714285714285715,-1.0296194171811581,25,0.0,4.248495242049359,0.0,0.5625490240114805,0.45714285714285713,-1.3816848389505976,0.4029348761958265,25.0,0.3067949667209573,0.0,0.08570817843426407,0,0.5,1.189480233788142,0.0,0,0.0,0.0,0.9946937953613058,2.8,0,0.5428571428571428,0,-1.0122759107848613,-0.20793020181918645,2.0,0\n203,fri_c3_100_50_1,0.0,0.18571428571428572,70.0,3.912023005428146,0.0,0.0,0.7142857142857143,-0.3364722366212129,50,0.0,4.248495242049359,0.0,0.3291693599863206,0.3142857142857143,-1.4400683143822735,0.2963275178661686,50.0,0.23539357430671629,0.0,0.001576199075993128,0,0.5,1.0746149954343676,0.0,0,0.0,0.0,0.8980587934501658,1.4,0,0.6857142857142857,0,-1.0918055975144536,-0.33226830487944786,2.0,0\n204,fri_c3_100_5_1,0.0,0.09999999999999998,70.0,1.6094379124341003,0.0,0.0,0.07142857142857142,-2.639057329615259,5,0.0,4.248495242049359,0.0,0.3543739087263158,0.4,-1.2159790407683733,0.6168930315168933,5.0,0.5551495054836384,0.0,0.3625741214820438,0,0.5,1.169616604921489,0.0,0,0.0,0.0,0.9709505944546688,14.0,0,0.6,0,-0.4744903701393553,-0.13841658682172392,2.0,0\n205,fri_c3_250_10_1,0.0,0.060000000000000026,175.0,2.302585092994046,0.0,0.0,0.05714285714285714,-2.8622008809294686,10,0.0,5.1647859739235145,0.0,3.0046337187964403,0.44,-1.2358689485550618,1.291597202753349,10.0,0.5378121972158099,0.0,0.1980862598106597,0,0.5,1.5841700901516933,0.0,0,0.0,0.0,0.9895875212220555,17.5,0,0.56,0,-0.5395582527261424,-0.33871113596585456,2.0,0\n206,fri_c3_250_25_1,0.0,0.042857142857142844,175.0,3.2188758248682006,0.0,0.0,0.14285714285714285,-1.9459101490553135,25,0.0,5.1647859739235145,0.0,0.658905209384586,0.45714285714285713,-1.3083398339577637,0.41017500397356216,25.0,0.26558531504530464,0.0,0.10754878120490784,0,0.5,1.117734381912197,0.0,0,0.0,0.0,0.9946937953613058,7.0,0,0.5428571428571428,0,-1.055301885376756,-0.16978551897838487,2.0,0\n207,fri_c3_250_50_1,0.0,0.05428571428571427,175.0,3.912023005428146,0.0,0.0,0.2857142857142857,-1.252762968495368,50,0.0,5.1647859739235145,0.0,1.5290937109837852,0.44571428571428573,-1.3642690270252116,0.42269521749240424,50.0,0.2164076691930404,0.0,0.0601397007384809,0,0.5,1.2720296483061442,0.0,0,0.0,0.0,0.9914801474700047,3.5,0,0.5542857142857143,0,-1.1164891621324289,-0.14659510846675528,2.0,0\n208,fri_c3_250_5_1,0.0,0.060000000000000026,175.0,1.6094379124341003,0.0,0.0,0.02857142857142857,-3.5553480614894135,5,0.0,5.1647859739235145,0.0,1.6300088786506493,0.44,-1.2022575397797544,1.0542144699601823,5.0,0.4930624787149248,0.0,0.43740801443948013,0,0.5,1.2845696089482246,0.0,0,0.0,0.0,0.9895875212220555,35.0,0,0.56,0,-0.2283066574327063,0.06158596206373391,2.0,0\n209,fri_c3_500_10_1,0.0,0.07142857142857142,350.0,2.302585092994046,0.0,0.0,0.02857142857142857,-3.5553480614894135,10,0.0,5.857933154483459,0.0,2.164717946406535,0.42857142857142855,-1.3012438578320253,1.0492373772898416,10.0,0.5069966602611365,0.0,0.20809793918747013,0,0.5,1.4754474896162908,0.0,0,0.0,0.0,0.9852281360342515,35.0,0,0.5714285714285714,0,-0.6531527095814322,-0.22487027191890172,2.0,0\n210,fri_c3_500_25_1,0.0,0.06571428571428573,350.0,3.2188758248682006,0.0,0.0,0.07142857142857142,-2.639057329615259,25,0.0,5.857933154483459,0.0,2.3747342152566207,0.4342857142857143,-1.3393314022098908,0.7545706774568248,25.0,0.34443393682945944,0.0,0.10538969726067521,0,0.5,1.5592166069201514,0.0,0,0.0,0.0,0.9875037037775067,14.0,0,0.5657142857142857,0,-0.9670056103554276,-0.12828855861490962,2.0,0\n211,fri_c3_500_50_1,0.0,0.07428571428571429,350.0,3.912023005428146,0.0,0.0,0.14285714285714285,-1.9459101490553135,50,0.0,5.857933154483459,0.0,3.3690433841995295,0.4257142857142857,-1.2970826157986617,0.7023211134668215,50.0,0.28049924268798915,0.0,0.08322764936424233,0,0.5,1.7278880595704842,0.0,0,0.0,0.0,0.9840182561871095,7.0,0,0.5742857142857143,0,-1.0601086370720347,-0.09624523710086444,2.0,0\n212,fri_c3_500_5_1,0.0,0.04000000000000001,350.0,1.6094379124341003,0.0,0.0,0.014285714285714285,-4.248495242049359,5,0.0,5.857933154483459,0.0,2.195744095218319,0.46,-1.2228676828597989,1.2759914893998594,5.0,0.5817525684028321,0.0,0.45068537392628905,0,0.5,1.455044634384317,0.0,0,0.0,0.0,0.9953784388202258,70.0,0,0.54,0,-0.12678819319667517,-0.02738748934891922,2.0,0\n213,fri_c4_1000_100_1,0.0,0.07571428571428573,700.0,4.605170185988092,0.0,0.0,0.14285714285714285,-1.9459101490553135,100,0.0,6.551080335043404,0.0,2.1208322050838664,0.42428571428571427,-1.3047606842150792,0.37602348556945026,100.0,0.18804614489360783,0.0,0.029981433117256744,0,0.5,1.507074438069638,0.0,0,0.0,0.0,0.9833952570114742,7.0,0,0.5757142857142857,0,-1.134684081493618,-0.10376307287422784,2.0,0\n214,fri_c4_1000_10_1,0.0,0.04571428571428571,700.0,2.302585092994046,0.0,0.0,0.014285714285714285,-4.248495242049359,10,0.0,6.551080335043404,0.0,1.9671637304359342,0.4542857142857143,-1.265546478087548,1.0117218437419995,10.0,0.4936754058340537,0.0,0.3068549322201094,0,0.5,1.456624588335038,0.0,0,0.0,0.0,0.9939616945607845,70.0,0,0.5457142857142857,0,-0.5813711724827643,-0.05576533666524967,2.0,0\n215,fri_c4_1000_25_1,0.0,0.04714285714285715,700.0,3.2188758248682006,0.0,0.0,0.03571428571428571,-3.332204510175204,25,0.0,6.551080335043404,0.0,1.5207522070712889,0.45285714285714285,-1.280753620982528,0.6115168227798702,25.0,0.327973290428261,0.0,0.10688223270544162,0,0.5,1.3747031775587688,0.0,0,0.0,0.0,0.9935778326445422,28.0,0,0.5471428571428572,0,-0.959515508846811,-0.11590487514839577,2.0,0\n216,fri_c4_1000_50_1,0.0,0.04571428571428571,700.0,3.912023005428146,0.0,0.0,0.07142857142857142,-2.639057329615259,50,0.0,6.551080335043404,0.0,1.4812501935239766,0.4542857142857143,-1.2904295063809732,0.44777225231665996,50.0,0.22589589062953655,0.0,0.044139089882927834,0,0.5,1.2539758432961052,0.0,0,0.0,0.0,0.9939616945607845,14.0,0,0.5457142857142857,0,-1.069243358405244,-0.08383231498250725,2.0,0\n217,fri_c4_100_100_1,0.0,0.02857142857142858,70.0,4.605170185988092,0.0,0.0,1.4285714285714286,0.3566749439387324,100,0.0,4.248495242049359,0.0,3.4876347533040164,0.4714285714285714,-1.5049317957758588,0.5489054826705316,100.0,0.26342113545993695,0.0,0.03852433979787548,0,0.5,1.7306226866723904,0.0,0,0.0,0.0,0.9976432959863937,0.7,0,0.5285714285714286,0,-1.0470863029601336,-0.44444685226234626,2.0,0\n218,fri_c4_100_10_1,0.0,0.014285714285714263,70.0,2.302585092994046,0.0,0.0,0.14285714285714285,-1.9459101490553135,10,0.0,4.248495242049359,0.0,1.2220075735337712,0.4857142857142857,-1.2747530559966187,0.7411652246154244,10.0,0.4900183512445461,0.0,0.21532114704553815,0,0.5,1.3185466583455359,0.0,0,0.0,0.0,0.9994110647387552,7.0,0,0.5142857142857142,0,-0.6856723983373213,-0.25973657437867315,2.0,0\n219,fri_c4_100_25_1,0.0,0.08571428571428572,70.0,3.2188758248682006,0.0,0.0,0.35714285714285715,-1.0296194171811581,25,0.0,4.248495242049359,0.0,2.251787407846199,0.4142857142857143,-1.360324059350503,0.7453432325565109,25.0,0.3737592984231007,0.0,0.15304024955257514,0,0.5,1.3397884695670823,0.0,0,0.0,0.0,0.9786961448300948,2.8,0,0.5857142857142857,0,-0.8836497866287328,-0.28472296480723147,2.0,0\n220,fri_c4_100_50_1,0.0,0.042857142857142844,70.0,3.912023005428146,0.0,0.0,0.7142857142857143,-0.3364722366212129,50,0.0,4.248495242049359,0.0,1.9724262378189614,0.45714285714285713,-1.3804706464259586,0.5306560026950611,50.0,0.29358772800624006,0.0,0.11460442685005744,0,0.5,1.5236804263624073,0.0,0,0.0,0.0,0.9946937953613058,1.4,0,0.5428571428571428,0,-0.9838683305294034,-0.3128771385996296,2.0,0\n221,fri_c4_250_100_1,0.0,0.08857142857142855,175.0,4.605170185988092,0.0,0.0,0.5714285714285714,-0.5596157879354228,100,0.0,5.1647859739235145,0.0,2.539011492135983,0.4114285714285714,-1.362625952346225,0.43130008678915477,100.0,0.2277398829286276,0.0,0.03639034477157417,0,0.5,1.6588077841284254,0.0,0,0.0,0.0,0.9772445152396546,1.75,0,0.5885714285714285,0,-1.1219167740274962,-0.21577858994090324,2.0,0\n222,fri_c4_250_10_1,0.0,0.05428571428571427,175.0,2.302585092994046,0.0,0.0,0.05714285714285714,-2.8622008809294686,10,0.0,5.1647859739235145,0.0,2.646957727629249,0.44571428571428573,-1.2274679067496785,1.1929397399306536,10.0,0.5290842334013995,0.0,0.3551661505678921,0,0.5,1.5584533244175691,0.0,0,0.0,0.0,0.9914801474700047,17.5,0,0.5542857142857143,0,-0.3930752946542497,-0.18899603540416646,2.0,0\n223,fri_c4_250_25_1,0.0,0.037142857142857144,175.0,3.2188758248682006,0.0,0.0,0.14285714285714285,-1.9459101490553135,25,0.0,5.1647859739235145,0.0,1.8888548308472854,0.46285714285714286,-1.3557762101936428,0.6531090124545685,25.0,0.29449918882697546,0.0,0.12357536621730925,0,0.5,1.3104308980405968,0.0,0,0.0,0.0,0.9960156701674574,7.0,0,0.5371428571428571,0,-0.9836844150951835,-0.2577898134942847,2.0,0\n224,fri_c4_250_50_1,0.0,0.08285714285714285,175.0,3.912023005428146,0.0,0.0,0.2857142857142857,-1.252762968495368,50,0.0,5.1647859739235145,0.0,2.351544811750922,0.41714285714285715,-1.3617999103004053,0.5473084839997631,50.0,0.2806750080069874,0.0,0.06322216736125831,0,0.5,1.5419663632573954,0.0,0,0.0,0.0,0.9800992393789929,3.5,0,0.5828571428571429,0,-1.0499332882340484,-0.20312574093181532,2.0,0\n225,fri_c4_500_100_1,0.0,0.09142857142857141,350.0,4.605170185988092,0.0,0.0,0.2857142857142857,-1.252762968495368,100,0.0,5.857933154483459,0.0,1.434700590195412,0.4085714285714286,-1.3401041090372958,0.3544356586740062,100.0,0.17346591983507378,0.0,0.03145420739146226,0,0.5,1.0993363207699074,0.0,0,0.0,0.0,0.9757442507989859,3.5,0,0.5914285714285714,0,-1.1287319864011807,-0.17437743853695828,2.0,0\n226,fri_c4_500_10_1,0.0,0.05428571428571427,350.0,2.302585092994046,0.0,0.0,0.02857142857142857,-3.5553480614894135,10,0.0,5.857933154483459,0.0,3.288625260524202,0.44571428571428573,-1.2581698690591852,1.3685342487168504,10.0,0.549001071141471,0.0,0.2984289721195208,0,0.5,1.63774504070873,0.0,0,0.0,0.0,0.9914801474700047,35.0,0,0.5542857142857143,0,-0.37995166915697187,-0.17562648673356765,2.0,0\n227,fri_c4_500_25_1,0.0,0.07428571428571429,350.0,3.2188758248682006,0.0,0.0,0.07142857142857142,-2.639057329615259,25,0.0,5.857933154483459,0.0,1.5096392471048823,0.4257142857142857,-1.334526112182667,0.6117652516289366,25.0,0.3116905094702124,0.0,0.12558490414573362,0,0.5,1.3462695000090938,0.0,0,0.0,0.0,0.9840182561871095,14.0,0,0.5742857142857143,0,-0.9680774744693368,-0.16698930829897282,2.0,0\n228,fri_c4_500_50_1,0.0,0.0057142857142856995,350.0,3.912023005428146,0.0,0.0,0.14285714285714285,-1.9459101490553135,50,0.0,5.857933154483459,0.0,1.0351211702111627,0.4942857142857143,-1.3136612466484114,0.3929714413307277,50.0,0.2282441798605328,0.0,0.054725492428614915,0,0.5,1.2346120712222326,0.0,0,0.0,0.0,0.9999057811299177,7.0,0,0.5057142857142857,0,-1.0897291677387826,-0.1701850083426734,2.0,0\n229,fried_1,0.0,0.0018046746329326568,28537.0,2.302585092994046,0.0,0.0,0.00035042225882188035,-7.956371676884557,10,0.0,10.258956769878603,0.0,-1.183003588368125,0.49819532536706734,-1.2089875330188713,0.007827127780700943,10.0,0.007157164615111861,0.0,-0.00019016232759022853,0,0.5,0.014424004741805573,0.0,0,0.0,0.0,0.999990602695377,2853.7,0,0.5018046746329327,0,-1.1968752973161811,-0.011285345907719109,2.0,0\n230,fruitfly_1,0.0,0.10919540229885058,87.0,1.3862943611198906,0.0,0.0,0.04597701149425287,-3.079613757534693,4,0.0,4.465908118654584,0.0,-0.44660338688476164,0.39080459770114945,-1.6995512286547263,0.5801589455274289,4.0,0.28958559416329815,0.0,-0.09750156529652196,0,0.5,0.13449542975473078,0.0,0,0.0,0.0,0.9653168212008997,21.75,0,0.6091954022988506,0,-1.1238534115224297,-0.5745993993267527,2.0,0\n231,glass_1,0.0,0.1174496644295302,149.0,2.1972245773362196,0.0,0.0,0.06040268456375839,-2.8067217286092396,9,0.0,5.003946305945459,0.0,13.372712146027702,0.3825503355704698,0.3406547838623397,3.4472224949888317,9.0,1.4127548840781412,0.0,0.9634771210798547,0,0.5,3.5934856688296533,0.0,0,0.0,0.0,0.9598233475451451,16.555555555555557,0,0.6174496644295302,0,4.306319307588958,-1.3907043334096034,2.0,0\n232,grub-damage_1,0.0,0.07829414132077668,108.0,2.0794415416798357,0.0,0.0,0.07407407407407407,-2.6026896854443837,8,0.0,4.68213122712422,0.0,2.421195134356976,0.12962962962962962,-1.4922801395041942,1.1694329211539545,8.0,0.6417307872887541,0.0,0.4212437098012402,0,0.25,2.003729530791662,0.0,0,0.0,0.0,1.92299618984181,13.5,0,0.3425925925925926,0,-0.5524408140200562,-0.18619618087390905,4.0,0\n233,grub-damage_2,0.0,0.20370370370370372,108.0,2.0794415416798357,0.0,0.0,0.07407407407407407,-2.6026896854443837,8,0.0,4.68213122712422,0.0,1.4201183431952682,0.2962962962962963,-1.3859414975606867,0.8528654288597901,8.0,0.5560753635203998,0.0,0.4148882194116387,0,0.5,1.7737272421486578,0.0,0,0.0,0.0,0.876716288999464,13.5,0,0.7037037037037037,0,-0.7434946817081652,-0.12217223212883807,2.0,0\n234,haberman_1,0.0,0.22897196261682243,214.0,1.0986122886681098,0.0,0.0,0.014018691588785047,-4.267363726353742,3,0.0,5.365976015021851,0.0,10.392978670165151,0.27102803738317754,-1.1773182896761143,5.303919179037583,3.0,1.271343154928492,0.0,1.0229653484283636,0,0.5,2.8188712905768347,0.0,0,0.0,0.0,0.8429359403268015,71.33333333333333,0,0.7289719626168224,0,2.902017084819811,0.0507728219125908,2.0,0\n235,hayes-roth_1,0.0,0.07608695652173914,92.0,1.3862943611198906,0.0,0.0,0.043478260869565216,-3.1354942159291497,4,0.0,4.5217885770490405,0.0,-0.37086777694025397,0.42391304347826086,-1.5625,0.4852294718114344,4.0,0.3163975397395733,0.0,0.5449846150219166,0,0.5,0.7667267854987394,0.0,0,0.0,0.0,0.9832307535844343,23.0,0,0.5760869565217391,0,-0.7269570310051136,1.9308226515220116e-17,2.0,0\n236,hayes-roth_2,0.0,0.09230989535280253,112.0,1.3862943611198906,0.0,0.0,0.03571428571428571,-3.332204510175204,4,0.0,4.718498871295094,0.0,-0.5863363549127714,0.20535714285714285,-1.3109357240054438,0.29653798403174375,4.0,0.07223906951509854,0.0,0.5661450110237138,0,0.3333333333333333,0.6221804858699449,0.0,0,0.0,0.0,1.5253465937105668,28.0,0,0.41964285714285715,0,-0.8078757864432101,0.4423839805715998,3.0,0\n237,heart-statlog_1,0.0,0.03968253968253968,189.0,2.5649493574615367,0.0,0.0,0.06878306878306878,-2.676797657598106,13,0.0,5.241747015059643,0.0,1.824291283436497,0.4603174603174603,-1.9946808510638294,1.2513734671335168,13.0,0.7857911473970168,0.0,0.3303206776652771,0,0.5,1.9231462189106538,0.0,0,0.0,0.0,0.9954515828457716,14.538461538461538,0,0.5396825396825397,0,-0.25815645144310906,-1.0265467457172102,2.0,0\n238,hill-valley_1,0.0,0.01297169811320753,848.0,4.605170185988092,0.0,0.0,0.1179245283018868,-2.1377104498038118,100,0.0,6.742880635791903,0.0,12.816268977081473,0.48702830188679247,8.765013699524275,0.7693817318156572,100.0,0.07651011892486044,0.0,3.0381103896623314,0,0.5,3.279642521638757,0.0,0,0.0,0.0,0.9995144354990123,8.48,0,0.5129716981132075,0,10.012488404644255,2.9069255413706627,2.0,0\n239,hill-valley_2,0.0,0.0011792452830188538,848.0,4.605170185988092,0.0,0.0,0.1179245283018868,-2.1377104498038118,100,0.0,6.742880635791903,0.0,15.074727625421929,0.4988207547169811,11.746173223408032,0.7008211659686141,100.0,0.058952235219638556,0.0,3.374895555042339,0,0.5,3.61175339980795,0.0,0,0.0,0.0,0.9999959875167476,8.48,0,0.5011792452830188,0,12.255454472395177,3.3265340384275555,2.0,0\n240,house_16H_1,0.0,0.20159267619764232,15948.0,2.772588722239781,0.0,0.0,0.001003260596940055,-6.904499986261465,16,0.0,9.677088708501246,0.0,7980.1008917628715,0.2984073238023577,-1.099945106541179,1926.9329337174597,16.0,19.1254472526817,0.0,6.554347955167395,0,0.5,79.73700289148948,0.0,0,0.0,0.0,0.8793353018239567,996.75,0,0.7015926761976423,0,517.4815633480841,-6.034619641130786,2.0,0\n241,house_8L_1,0.0,0.20184349134687737,15948.0,2.0794415416798357,0.0,0.0,0.0005016302984700275,-7.597647166821409,8,0.0,9.677088708501246,0.0,6298.809813137866,0.29815650865312265,-1.094039826594536,2072.1381231615924,8.0,22.686156965954684,0.0,11.03680146352561,0,0.5,69.90973452586923,0.0,0,0.0,0.0,0.8790257419889593,1993.5,0,0.7018434913468774,0,820.0764733105002,-0.28611071458264753,2.0,0\n242,houses_1,0.0,0.06879844961240311,14448.0,2.0794415416798357,0.0,0.0,0.0005537098560354374,-7.498869733976931,8,0.0,9.578311275656766,0.0,95.1525262240088,0.4312015503875969,-1.126889608029471,29.96884636995197,8.0,1.7740787322775775,0.0,2.4001223487546666,0,0.5,5.456835554940995,0.0,0,0.0,0.0,0.9862993698994906,1806.0,0,0.5687984496124031,0,20.962020722923544,0.07123864219969799,2.0,0\n243,housing_1,0.0,0.10451977401129942,354.0,2.5649493574615367,0.0,0.0,0.03672316384180791,-3.3043475556722375,13,0.0,5.869296913133774,0.0,32.79863821528298,0.3954802259887006,-1.2140678543238212,8.958640048473846,13.0,1.860154923989582,0.0,0.8416001913242319,0,0.5,4.932732916538556,0.0,0,0.0,0.0,0.9682452182690406,27.23076923076923,0,0.6045197740112994,0,3.9708653187553518,-3.0369158375654814,2.0,0\n244,humandevel_1,0.0,0.005494505494505475,91.0,0.0,0.0,0.0,0.01098901098901099,-4.51085950651685,1,0.0,4.51085950651685,0.0,-1.2656643953008255,0.4945054945054945,-1.2656643953008255,0.0,1.0,0.0,0.0,-0.27099747727652795,0,0.5,-0.27099747727652795,0.0,0,0.0,0.0,0.9999128895013563,91.0,0,0.5054945054945055,0,-1.2656643953008255,-0.27099747727652795,2.0,0\n245,hutsof99_child_witness_1,0.0,0.051724137931034475,29.0,2.70805020110221,0.0,0.0,0.5172413793103449,-0.6592456288842639,15,0.0,3.367295829986474,0.0,-0.1300453267232098,0.4482758620689655,-1.6461711381745785,0.4535096498870458,15.0,0.31847993675466774,0.0,-0.013652199855181757,0,0.5,0.8111157001566672,0.0,0,0.0,0.0,0.9922666387194963,1.9333333333333333,0,0.5517241379310345,0,-0.7194759601932418,-0.4381242378979974,2.0,0\n246,hutsof99_logis_1,0.0,0.03061224489795919,49.0,1.9459101490553132,0.0,0.0,0.14285714285714285,-1.9459101490553135,7,0.0,3.8918202981106265,0.0,-0.414307089095185,0.46938775510204084,-1.9849498327759199,0.6238505535644537,7.0,0.16515911239788303,0.0,0.1856588182796763,0,0.5,0.4584431733281787,0.0,0,0.0,0.0,0.9972943816462349,7.0,0,0.5306122448979592,0,-1.3299343523605474,-0.12267912301642946,2.0,0\n247,ilpd_1,0.0,0.2107843137254902,408.0,2.302585092994046,0.0,0.0,0.024509803921568627,-3.708682081410116,10,0.0,6.0112671744041615,0.0,123.60015518277253,0.28921568627450983,-0.5638621304308864,36.86743137659149,10.0,3.3965844134459116,0.0,2.7562386940060675,0,0.5,9.877052191925086,0.0,0,0.0,0.0,0.8677059401846615,40.8,0,0.7107843137254902,0,23.95711811923764,-1.2321049765014482,2.0,0\n248,ionosphere_1,0.0,0.16938775510204082,245.0,3.5263605246161616,0.0,0.0,0.13877551020408163,-1.9748976859285656,34,0.0,5.501258210544727,0.0,5.755777516647083,0.3306122448979592,-3.0,1.3736836881351033,34.0,0.6755141105153883,0.0,-0.5603539465059272,0,0.5,0.2069414678840334,0.0,0,0.0,0.0,0.9155506778147325,7.205882352941177,0,0.6693877551020408,0,0.32129635057637457,-2.784919660716819,2.0,0\n249,iris_1,0.0,0.02693740118805896,105.0,1.3862943611198906,0.0,0.0,0.0380952380952381,-3.2676659890376327,4,0.0,4.653960350157523,0.0,0.6045490982790183,0.29523809523809524,-1.2544966579938965,0.7569832999024804,4.0,0.32600204826354046,0.0,0.021042708887295973,0,0.3333333333333333,0.3986041219305524,0.0,0,0.0,0.0,1.5801537588229284,26.25,0,0.3523809523809524,0,-0.5831524494465501,-0.40641926345239915,3.0,0\n250,iris_2,0.0,0.15714285714285714,105.0,1.3862943611198906,0.0,0.0,0.0380952380952381,-3.2676659890376327,4,0.0,4.653960350157523,0.0,-0.0013120091497458297,0.34285714285714286,-1.4302995567038796,0.6125026058883742,4.0,0.2368962043205607,0.0,0.06638710378992912,0,0.5,0.3446772684181666,0.0,0,0.0,0.0,0.9275265884316759,26.25,0,0.6571428571428571,0,-0.8214482641913627,-0.23196047349537002,2.0,0\n251,jEdit_4.0_4.2_1,0.0,0.01308900523560208,191.0,2.0794415416798357,0.0,0.0,0.041884816753926704,-3.1728318863667937,8,0.0,5.25227342804663,0.0,84.70633227435209,0.4869109947643979,-1.3653957446006204,32.82397425267994,8.0,3.2718804848062115,0.0,4.2927412770001006,0,0.5,8.580077481257234,0.0,0,0.0,0.0,0.9995056125575429,23.875,0,0.5130890052356021,0,33.48525087642511,-0.2942303782835929,2.0,0\n252,jEdit_4.2_4.3_1,0.0,0.08139534883720931,258.0,2.0794415416798357,0.0,0.0,0.031007751937984496,-3.4735180432417816,8,0.0,5.552959584921617,0.0,114.52043130174363,0.4186046511627907,-1.2280261565737676,37.79142654107227,8.0,3.2208663289165247,0.0,4.137354389101524,0,0.5,9.670198406252133,0.0,0,0.0,0.0,0.9807983646944296,32.25,0,0.5813953488372093,0,33.7574661823801,-0.46736390285656154,2.0,0\n253,kc1-binary_1,0.0,0.06435643564356433,101.0,4.543294782270004,0.0,0.0,0.9306930693069307,-0.0718257345712555,94,0.0,4.61512051684126,0.0,45.520202020202014,0.43564356435643564,-3.0,8.262219741805428,94.0,1.3782972525558295,0.0,2.1694402315493013,0,0.5,6.893489828831406,0.0,0,0.0,0.0,0.9880162151534646,1.074468085106383,0,0.5643564356435643,0,7.689444437626125,-1.044787628959917,2.0,0\n254,kc1-top5_1,0.0,0.4306930693069307,101.0,4.543294782270004,0.0,0.0,0.9306930693069307,-0.0718257345712555,94,0.0,4.61512051684126,0.0,96.00999999999986,0.06930693069306931,-3.0,12.60014408977647,94.0,1.6290934052748787,0.0,2.1739907531697757,0,0.5,9.899999999999995,0.0,0,0.0,0.0,0.36333191332505077,1.074468085106383,0,0.9306930693069307,0,8.254135358027733,-1.0170437699572001,2.0,0\n255,kc1_1,0.0,0.34485094850948506,1476.0,3.044522437723423,0.0,0.0,0.014227642276422764,-4.252568567436995,21,0.0,7.297091005160418,0.0,122.02914189123256,0.15514905149051492,1.3212328097528703,37.471862159037876,21.0,2.195570788347597,0.0,4.282916849517294,0,0.5,9.438058750075548,0.0,0,0.0,0.0,0.6225771974480663,70.28571428571429,0,0.8448509485094851,0,35.46558962249508,1.1406316138898709,2.0,0\n256,kc2_1,0.0,0.29726027397260274,365.0,3.044522437723423,0.0,0.0,0.057534246575342465,-2.8553749158590684,21,0.0,5.8998973535824915,0.0,281.6550826833781,0.20273972602739726,0.2802985522236874,84.68662539634798,21.0,4.477311400401867,0.0,9.493844100719544,0,0.5,16.268220605355566,0.0,0,0.0,0.0,0.7273738213212073,17.38095238095238,0,0.7972602739726027,0,133.20816660797138,0.8063421456850859,2.0,0\n257,kc3_1,0.0,0.415625,320.0,3.6635616461296463,0.0,0.0,0.121875,-2.1047593496641257,39,0.0,5.768320995793772,0.0,88.79888924380137,0.084375,-1.6293778004748878,19.048462562206304,39.0,1.9997524805286322,0.0,2.9033667559330403,0,0.5,8.181029107202027,0.0,0,0.0,0.0,0.417410217061949,8.205128205128204,0,0.915625,0,15.706090807552647,-2.16528027461271,2.0,0\n258,kdd_JapaneseVowels_1,0.0,0.33505450372920254,6972.0,2.6390573296152584,0.0,0.0,0.002008032128514056,-6.210600077024653,14,0.0,8.849657406639912,0.0,3.7110377131693557,0.16494549627079746,-0.8543502568867423,1.0706176255852442,14.0,0.5011693129621105,0.0,0.10925765122270588,0,0.5,1.6861918499352262,0.0,0,0.0,0.0,0.646010559181732,498.0,0,0.8350545037292025,0,-0.048121121341256644,-0.38098671206049156,2.0,0\n259,kdd_synthetic_control_1,0.0,0.3404761904761905,420.0,4.0943445622221,0.0,0.0,0.14285714285714285,-1.9459101490553135,60,0.0,6.040254711277414,0.0,0.7198252320658014,0.1595238095238095,-1.2245041459377597,0.6270606847448403,60.0,0.29038453073706155,0.0,0.05382978966934714,0,0.5,0.9312490273245132,0.0,0,0.0,0.0,0.6331691378437478,7.0,0,0.8404761904761905,0,-0.5451633059132989,-0.6632798186600334,2.0,0\n260,kidney_1,0.0,0.009433962264150941,53.0,1.791759469228055,0.0,0.0,0.11320754716981132,-2.178532444324067,6,0.0,3.970291913552122,0.0,4.71658894705588,0.49056603773584906,-1.2692550618490757,2.09834971381097,6.0,1.105023794845053,0.0,0.2605058470306772,0,0.5,2.1327036399972488,0.0,0,0.0,0.0,0.9997431860710851,8.833333333333334,0,0.5094339622641509,0,0.07659352904688861,-1.1840283260644888,2.0,0\n261,kin8nm_1,0.0,0.011161492849668636,5734.0,2.0794415416798357,0.0,0.0,0.0013951866062085804,-6.574727104763479,8,0.0,8.654168646443315,0.0,-1.1738039986524254,0.48883850715033134,-1.2151805695590383,0.01361197116037771,8.0,0.023940212211102277,0.0,-0.0011837234810815895,0,0.5,0.04008333072303149,0.0,0,0.0,0.0,0.999640511352291,716.75,0,0.5111614928496686,0,-1.1896515881606375,-0.045617983100237354,2.0,0\n262,kr-vs-kp_1,0.0,0.019892713455520794,2237.0,3.58351893845611,0.0,0.0,0.016092981671881983,-4.12937202303402,36,0.0,7.71289096149013,0.0,367.83602271029383,0.4801072865444792,-3.0,67.8550126026656,36.0,4.196833973842271,0.0,-2.82706976120752,0,0.5,1.1444112928246957,0.0,0,0.0,0.0,0.9988578918817895,62.138888888888886,0,0.5198927134555208,0,23.68045814902719,-19.231121202631265,2.0,0\n263,letter_1,0.0,0.4581428571428572,14000.0,2.772588722239781,0.0,0.0,0.001142857142857143,-6.774223886357614,16,0.0,9.546812608597396,0.0,2.1055414336917817,0.04185714285714286,-0.4056502936438071,0.6682982357106094,16.0,0.45304531920145535,0.0,0.2882716308511092,0,0.5,1.1611983357153768,0.0,0,0.0,0.0,0.2507432692137407,875.0,0,0.9581428571428572,0,0.6916613466769167,-0.31079081336615083,2.0,0\n264,leukemia_1,0.0,0.18000000000000002,50.0,8.871926251117628,0.0,0.0,142.58,4.959903245689483,7129,0.0,3.912023005428146,0.0,45.00611262743157,0.32,-1.2887903419626663,5.274208628756714,7129.0,1.2657412449317154,0.0,0.7144265899955866,0,0.5,6.8555458732566175,0.0,0,0.0,0.0,0.9043814577244939,0.0070136063964090336,0,0.68,0,2.654115098682666,-6.78766327496484,2.0,0\n265,lowbwt_1,0.0,0.030303030303030276,132.0,2.1972245773362196,0.0,0.0,0.06818181818181818,-2.6855773452501515,9,0.0,4.882801922586371,0.0,13.913142857142859,0.4696969696969697,-1.8115384615384618,5.231463828225353,9.0,1.7366592887190733,0.0,0.8549803193930043,0,0.5,3.9891280823185977,0.0,0,0.0,0.0,0.9973487979180449,14.666666666666666,0,0.5303030303030303,0,2.582179857252875,-2.3211917272131477,2.0,0\n266,lsvt_1,0.0,0.1931818181818182,88.0,5.736572297479192,0.0,0.0,3.522727272727273,1.2592354830009855,310,0.0,4.477336814478207,0.0,83.01149425287356,0.3068181818181818,-3.0,21.373576879468917,310.0,3.613491696364211,0.0,1.7012342582908464,0,0.5,9.220167754182654,0.0,0,0.0,0.0,0.8894663896628687,0.2838709677419355,0,0.6931818181818182,0,16.97671204446059,-9.220167799605035,2.0,0\n267,lupus_1,0.0,0.05000000000000002,60.0,1.0986122886681098,0.0,0.0,0.05,-2.995732273553991,3,0.0,4.0943445622221,0.0,6.16122735162253,0.45,-0.9248620740432187,3.273025737171341,3.0,1.0971810036805565,0.0,1.1086845608142233,0,0.5,2.589192593659822,0.0,0,0.0,0.0,0.9927744539878083,20.0,0,0.55,0,1.5356115668893686,-0.033789800402263086,2.0,0\n268,lymph_1,0.0,0.242754851638759,103.0,2.8903717578961645,0.0,0.0,0.17475728155339806,-1.7443572303334711,18,0.0,4.634728988229636,0.0,21.409654302211163,0.019417475728155338,-1.9996229260935139,7.601400259643571,18.0,1.811564472706272,0.0,0.8817098579476514,0,0.25,4.773929622481255,0.0,0,0.0,0.0,1.2298756844834808,5.722222222222222,0,0.6019417475728155,0,2.5802448268678595,-1.2002136561932717,4.0,0\n269,lymph_2,0.0,0.024271844660194164,103.0,2.8903717578961645,0.0,0.0,0.17475728155339806,-1.7443572303334711,18,0.0,4.634728988229636,0.0,21.409654302211173,0.47572815533980584,-1.9966037735849058,6.475401880095852,18.0,1.7039241671964191,0.0,0.6949151745706074,0,0.5,4.7357629919150375,0.0,0,0.0,0.0,0.9982994837029029,5.722222222222222,0,0.5242718446601942,0,1.8769381731828594,-1.4699862127712342,2.0,0\n270,machine_cpu_1,0.0,0.23972602739726026,146.0,1.791759469228055,0.0,0.0,0.0410958904109589,-3.1918471524802814,6,0.0,4.983606621708336,0.0,23.71995440651332,0.2602739726027397,4.09136952307859,6.282883226587262,6.0,0.67442587780937,0.0,2.876518357291863,0,0.5,3.9789694858740874,0.0,0,0.0,0.0,0.8271595195340525,24.333333333333332,0,0.7397260273972602,0,11.149756713205411,1.779679025469357,2.0,0\n271,madelon_1,0.0,0.0027472527472527375,1820.0,6.214608098422191,0.0,0.0,0.27472527472527475,-1.2919836816486492,500,0.0,7.506591780070841,0.0,0.5993041923210174,0.49725274725274726,-0.9893290152342975,0.2032904193719007,500.0,0.06423412020576726,0.0,0.03380702446353594,0,0.5,0.1911719906349549,0.0,0,0.0,0.0,0.9999782227040811,3.64,0,0.5027472527472527,0,0.07754986705677709,-0.13110009679666146,2.0,0\n272,mammography_1,0.0,0.4747061829330608,7828.0,1.791759469228055,0.0,0.0,0.0007664793050587634,-7.1737028592879115,6,0.0,8.965462328515967,0.0,177.9991039991835,0.025293817066939193,-1.7987984941971595,70.81701173185043,6.0,3.4006816456927265,0.0,4.680004630640817,0,0.5,9.45674940755583,0.0,0,0.0,0.0,0.17021132778651205,1304.6666666666667,0,0.9747061829330608,0,67.85425194313788,0.20716415254081869,2.0,0\n273,mbagrade_1,0.0,0.0,42.0,0.6931471805599453,0.0,0.0,0.047619047619047616,-3.044522437723423,2,0.0,3.7376696182833684,0.0,2.166666666666667,0.5,-0.28455596345849754,1.2256113150625823,2.0,1.0353143146055501,0.0,1.0059271377137653,0,0.5,2.0412414523193156,0.0,0,0.0,0.0,1.0,21.0,0,0.5,0,0.9410553516040847,-0.0293871768917849,2.0,0\n274,mc1_1,0.0,0.4926048898279505,6626.0,3.6375861597263857,0.0,0.0,0.005734983398732267,-5.161170423133456,38,0.0,8.798756582859841,0.0,1773.4987006868223,0.007395110172049502,-1.9591760023856248,381.10590391268926,38.0,7.4158141676815,0.0,8.12462316827872,0,0.5,35.40017407553811,0.0,0,0.0,0.0,0.0629808997976809,174.3684210526316,0,0.9926048898279505,0,188.9416307259199,-2.002316034129035,2.0,0\n275,mc2_1,0.0,0.1607142857142857,112.0,3.6635616461296463,0.0,0.0,0.3482142857142857,-1.054937225165448,39,0.0,4.718498871295094,0.0,15.692247628073389,0.3392857142857143,-1.3352813552185943,4.618291185608547,39.0,1.2074938534085522,0.0,2.3316841212229797,0,0.5,3.709628904285545,0.0,0,0.0,0.0,0.9241335419915458,2.871794871794872,0,0.6607142857142857,0,7.40392333633277,-1.3498860267254742,2.0,0\n276,meta_batchincremental.arff_1,0.0,0.2700531082517514,51.0,4.127134385045092,0.0,0.0,1.2156862745098038,0.1953087523207657,62,0.0,3.9318256327243257,0.0,46.01999999999996,0.0392156862745098,-1.839329194162319,16.22301365609689,62.0,2.6490794474006454,0.0,1.561228490807244,0,0.25,6.92964645562816,0.0,0,0.0,0.0,1.239259292893842,0.8225806451612904,0,0.7058823529411765,0,8.958542885460599,-4.842898916875818,4.0,0\n277,meta_ensembles.arff_1,0.0,0.20109991663496093,51.0,4.127134385045092,0.0,0.0,1.2156862745098038,0.1953087523207657,62,0.0,3.9318256327243257,0.0,46.01999999999994,0.058823529411764705,-1.783105548599864,16.3980500524798,62.0,2.665702531583176,0.0,1.5628850645768326,0,0.25,6.929646455628157,0.0,0,0.0,0.0,1.5739889616503062,0.8225806451612904,0,0.5882352941176471,0,9.166131412041327,-5.334054320690652,4.0,0\n278,meta_instanceincremental.arff_1,0.0,0.2994211383152049,51.0,4.127134385045092,0.0,0.0,1.2156862745098038,0.1953087523207657,62,0.0,3.9318256327243257,0.0,46.01999999999994,0.0196078431372549,-1.7991610046980733,16.126403811479204,62.0,2.6749726835077072,0.0,1.456024839092626,0,0.25,6.929646455628157,0.0,0,0.0,0.0,1.0988939299246048,0.8225806451612904,0,0.7647058823529411,0,8.739718178794389,-5.265957073459941,4.0,0\n279,mfeat-factors_1,0.0,0.4007142857142857,1400.0,5.375278407684165,0.0,0.0,0.15428571428571428,-1.8689491079191851,216,0.0,7.24422751560335,0.0,1.8352340917280703,0.09928571428571428,-1.3858071890981933,0.5495636016561464,216.0,0.43327950948583405,0.0,0.03212938277718132,0,0.5,0.9005250037958276,0.0,0,0.0,0.0,0.46672726348771976,6.481481481481482,0,0.9007142857142857,0,-0.30239524149650454,-1.081986093597136,2.0,0\n280,mfeat-fourier_1,0.0,0.405,1400.0,4.330733340286331,0.0,0.0,0.054285714285714284,-2.9134941753170187,76,0.0,7.24422751560335,0.0,1.7879346269788519,0.095,-1.1256845181407138,0.6362480721066451,76.0,0.24608289650048823,0.0,0.5411236988372002,0,0.5,0.9488379825350912,0.0,0,0.0,0.0,0.4529425481872832,18.42105263157895,0,0.905,0,0.11345500088504856,-0.14051031479097562,2.0,0\n281,mfeat-karhunen_1,0.0,0.3985714285714286,1400.0,4.1588830833596715,0.0,0.0,0.045714285714285714,-3.0853444322436783,64,0.0,7.24422751560335,0.0,0.6563044162591418,0.10142857142857142,-0.9662353976503857,0.26590833100162764,64.0,0.1679298035886185,0.0,-0.0009366815435642578,0,0.5,0.43500828945328884,0.0,0,0.0,0.0,0.47350776952960694,21.875,0,0.8985714285714286,0,-0.03738781677928537,-0.40809546429117727,2.0,0\n282,mfeat-morphological_1,0.0,0.40214285714285714,1400.0,1.791759469228055,0.0,0.0,0.004285714285714286,-5.452468046375295,6,0.0,7.24422751560335,0.0,0.28176602838296727,0.09785714285714285,-1.0352695497547997,0.42760871722677485,6.0,0.31475327584867285,0.0,0.5364636223305125,0,0.5,0.9575238999970113,0.0,0,0.0,0.0,0.462165857468564,233.33333333333334,0,0.9021428571428571,0,-0.5275908723072614,-0.030494116350776673,2.0,0\n283,mfeat-pixel_1,0.0,0.4042857142857143,1400.0,5.480638923341991,0.0,0.0,0.17142857142857143,-1.7635885922613588,240,0.0,7.24422751560335,0.0,16.914017849127536,0.09571428571428571,-1.9111093347147927,1.8078955019127847,240.0,0.9545922538297629,0.0,-0.02914988264582923,0,0.5,4.178320856344846,0.0,0,0.0,0.0,0.4552610758768848,5.833333333333333,0,0.9042857142857142,0,-0.8468972722589488,-2.3513667670049103,2.0,0\n284,mfeat-zernike_1,0.0,0.4035714285714286,1400.0,3.8501476017100584,0.0,0.0,0.03357142857142857,-3.3940799138932913,47,0.0,7.24422751560335,0.0,5.0476479078972165,0.09642857142857143,-1.0154305712237661,1.5552574385561877,47.0,0.5056816949273172,0.0,0.7960371238192466,0,0.5,1.8793909822063464,0.0,0,0.0,0.0,0.4575710992447018,29.78723404255319,0,0.9035714285714286,0,0.8376873037547425,-0.0548963693244303,2.0,0\n285,molecular-biology_promoters_1,0.0,0.05405405405405406,74.0,4.04305126783455,0.0,0.0,0.7702702702702703,-0.2610138253696196,57,0.0,4.30406509320417,0.0,-0.2594547193877541,0.44594594594594594,-1.6919079867397522,0.2223809052909861,57.0,0.2904106107627476,0.0,-0.04031195502979225,0,0.5,0.4877268955945957,0.0,0,0.0,0.0,0.9915528503834039,1.2982456140350878,0,0.5540540540540541,0,-1.334629923729288,-0.6977711451232612,2.0,0\n286,molecular-biology_promoters_2,0.0,0.0,74.0,4.04305126783455,0.0,0.0,0.7702702702702703,-0.2610138253696196,57,0.0,4.30406509320417,0.0,-0.3404028171822966,0.5,-1.6768650677502113,0.22383117175180414,57.0,0.27389619854702285,0.0,-0.04636905394656838,0,0.5,0.5462185340565524,0.0,0,0.0,0.0,1.0,1.2982456140350878,0,0.5,0,-1.3262546612313937,-0.7266039457231962,2.0,0\n287,monks-problems-1_1,0.0,0.0012853470437017844,389.0,1.791759469228055,0.0,0.0,0.015424164524421594,-4.171819874390391,6,0.0,5.963579343618446,0.0,-1.3286228121519812,0.4987146529562982,-1.9997620809982026,0.2693513485510368,6.0,0.03057780424553295,0.0,0.0042983677888608655,0,0.5,0.041960043789764444,0.0,0,0.0,0.0,0.9999952329926782,64.83333333333333,0,0.5012853470437018,0,-1.626279031692234,-0.03636099586459679,2.0,0\n288,monks-problems-2_1,0.0,0.14285714285714288,420.0,1.791759469228055,0.0,0.0,0.014285714285714285,-4.248495242049359,6,0.0,6.040254711277414,0.0,-1.3205929223985111,0.35714285714285715,-1.9991835068381303,0.2654420524208676,6.0,0.06224173119000435,0.0,-0.0008742157306632197,0,0.5,0.0762458220444582,0.0,0,0.0,0.0,0.940285958670631,70.0,0,0.6428571428571429,0,-1.6325991811621543,-0.1142402719340527,2.0,0\n289,monks-problems-3_1,0.0,0.042635658914728675,387.0,1.791759469228055,0.0,0.0,0.015503875968992248,-4.1666652238017265,6,0.0,5.958424693029782,0.0,-1.3945356632893637,0.4573643410852713,-1.9967657436116757,0.2509765856450368,6.0,0.020812727871891614,0.0,0.048153887632342345,0,0.5,0.07757767474396739,0.0,0,0.0,0.0,0.9947485647372365,64.5,0,0.5426356589147286,0,-1.6485753144288393,0.009722596825253456,2.0,0\n290,mozilla4_1,0.0,0.17190515577612353,10881.0,1.6094379124341003,0.0,0.0,0.00045951658854884663,-7.685335515516912,5,0.0,9.294773427951013,0.0,50.414403982667565,0.32809484422387647,-1.919425302727112,20.548249861543084,5.0,2.17917086239657,0.0,1.4260789037454162,0,0.5,5.661514341969324,0.0,0,0.0,0.0,0.9129680311254507,2176.2,0,0.6719051557761235,0,9.340572630009174,-0.2838568253061536,2.0,0\n291,mu284_1,0.0,0.025252525252525276,198.0,2.302585092994046,0.0,0.0,0.050505050505050504,-2.9856819377004897,10,0.0,5.288267030694535,0.0,134.38764887088982,0.47474747474747475,-1.1892800880814636,51.54954966786912,10.0,4.098082585604873,0.0,4.46034710079364,0,0.5,10.823157752472174,0.0,0,0.0,0.0,0.9981592324817737,19.8,0,0.5252525252525253,0,45.65026580823226,0.05815696122392049,2.0,0\n292,musk_1,0.0,0.34647033347769596,4618.0,5.117993812416755,0.0,0.0,0.036162841056734514,-3.3197231774976856,167,0.0,8.43771698991444,0.0,52.74307008407921,0.15352966652230401,-1.6197841748039306,7.21093740343703,167.0,1.2666690640526177,0.0,0.47709536512566186,0,0.5,6.382712219161474,0.0,0,0.0,0.0,0.6186032603997856,27.652694610778443,0,0.846470333477696,0,1.7388493848100035,-1.4278419065805932,2.0,0\n293,mv_1,0.0,0.09424606651014475,28537.0,2.302585092994046,0.0,0.0,0.00035042225882188035,-7.956371676884557,10,0.0,10.258956769878603,0.0,-0.3236452413107038,0.4057539334898553,-1.208680281553522,0.3189350270220288,10.0,0.5336075061157078,0.0,0.3727409531945245,0,0.5,1.1756135011479563,0.0,0,0.0,0.0,0.9742170770288493,2853.7,0,0.5942460665101448,0,-0.9652898354726303,-0.3138005982226843,2.0,0\n294,mw1_1,0.0,0.4184397163120568,282.0,3.6109179126442243,0.0,0.0,0.13120567375886524,-2.030989158293889,37,0.0,5.641907070938114,0.0,49.32512918075913,0.08156028368794327,-1.4877987531208028,10.925793518026845,37.0,1.502807218795905,0.0,2.377473530119013,0,0.5,6.854482306832961,0.0,0,0.0,0.0,0.40765322651181213,7.621621621621622,0,0.9184397163120568,0,9.777619549901416,-1.3165782235987262,2.0,0\n295,newton_hema_1,0.0,0.020408163265306145,98.0,1.0986122886681098,0.0,0.0,0.030612244897959183,-3.4863551900024623,3,0.0,4.584967478670572,0.0,4.012577364739699,0.47959183673469385,-1.1504123003852542,2.3916273372598673,3.0,0.9430308665917072,0.0,0.927911473302789,0,0.5,2.2551383537592558,0.0,0,0.0,0.0,0.9987979209581141,32.666666666666664,0,0.5204081632653061,0,0.6319775307440954,0.15110603308159637,2.0,0\n296,no2_1,0.0,0.008571428571428563,350.0,1.9459101490553132,0.0,0.0,0.02,-3.912023005428146,7,0.0,5.857933154483459,0.0,4.320652339076929,0.49142857142857144,-1.2224565892054686,1.7788447051821104,7.0,0.5798968292383643,0.0,-0.11464013273714047,0,0.5,0.850381623170827,0.0,0,0.0,0.0,0.9997880017729585,50.0,0,0.5085714285714286,0,0.42230229357365406,-0.8579423580157934,2.0,0\n297,nursery_1,0.0,0.1304973423018531,9070.0,2.0794415416798357,0.0,0.0,0.0008820286659316428,-7.033286001429346,8,0.0,9.112727543109182,0.0,-1.3004025546126785,0.024366041896361632,-1.998905673958931,0.2026983086670123,8.0,0.013597212855866805,0.0,0.0014708106567087014,0,0.25,0.03308059916429636,0.0,0,0.0,0.0,1.7111124534853543,1133.75,0,0.33395810363836825,0,-1.5031804415402767,-0.010969274391713456,4.0,0\n298,nursery_2,0.0,0.16302910052910055,9072.0,2.0794415416798357,0.0,0.0,0.0008818342151675485,-7.033506484287697,8,0.0,9.112948025967533,0.0,-1.3034116617633162,0.3369708994708995,-2.0,0.20136743835609203,8.0,0.006808316424387247,0.0,-0.004571876283636183,0,0.5,0.003643919056279084,0.0,0,0.0,0.0,0.9218905261244321,1134.0,0,0.6630291005291006,0,-1.5046906551274077,-0.017185988969357077,2.0,0\n299,oil_spill_1,0.0,0.46183206106870234,655.0,3.8918202981106265,0.0,0.0,0.07480916030534351,-2.592814937524625,49,0.0,6.484635235635252,0.0,649.8290178100017,0.03816793893129771,-3.0,123.71022714986337,49.0,5.645402139726598,0.0,3.8365623294127373,0,0.5,25.52928424535514,0.0,0,0.0,0.0,0.23382826233572285,13.36734693877551,0,0.9618320610687023,0,54.42466481955461,-2.0681610609761476,2.0,0\n300,optdigits_1,0.0,0.39832231825114384,3934.0,4.1588830833596715,0.0,0.0,0.01626842907981698,-4.118528915589333,64,0.0,8.277411998949004,0.0,3929.000254258838,0.10167768174885612,-3.0,574.251353897145,64.0,11.805097565085143,0.0,5.458716463177696,0,0.5,62.69768938532615,0.0,0,0.0,0.0,0.4742912710341724,61.46875,0,0.8983223182511438,0,179.118973232369,-1.3231961172197888,2.0,0\n301,ozone-level-8hr_1,0.0,0.4368302312464749,1773.0,4.276666119016055,0.0,0.0,0.04060913705583756,-3.2037621870581527,72,0.0,7.480428306074208,0.0,83.4659282658856,0.0631697687535251,-0.9938330341003274,9.7545163004516,72.0,1.14667849966329,0.0,0.07723115380308013,0,0.5,7.658825927578556,0.0,0,0.0,0.0,0.3399012755822992,24.625,0,0.9368302312464749,0,1.5456062482182795,-1.2921472252382702,2.0,0\n302,page-blocks_1,0.0,0.3950665622552858,3831.0,2.302585092994046,0.0,0.0,0.0026102845210127902,-5.9482960517066035,10,0.0,8.25088114470065,0.0,3427.6753794469,0.10493343774471417,0.6584184350227944,1000.5194453136844,10.0,16.141813108352437,0.0,13.313385376251631,0,0.5,57.13529350738907,0.0,0,0.0,0.0,0.4844419286138514,383.1,0,0.8950665622552858,0,502.5727441647383,-0.8353149488844643,2.0,0\n303,parkinsons_1,0.0,0.25735294117647056,136.0,3.091042453358316,0.0,0.0,0.16176470588235295,-1.821612432377736,22,0.0,4.912654885736052,0.0,13.56809529687784,0.2426470588235294,-1.044802591054778,4.820449232275151,22.0,1.170585816365625,0.0,1.5850505490928184,0,0.5,3.41600695682763,0.0,0,0.0,0.0,0.7994146042010714,6.181818181818182,0,0.7573529411764706,0,4.4836345854699875,-0.5091532122871698,2.0,0\n304,pasture_1,0.0,0.018856180831641256,25.0,3.091042453358316,0.0,0.0,0.88,-0.12783337150988489,22,0.0,3.2188758248682006,0.0,7.989927522126296,0.32,-3.0,1.9666289569246425,22.0,0.7433728467064704,0.0,0.414039154880041,0,0.3333333333333333,2.7380337496771814,0.0,0,0.0,0.0,1.5826831892554925,1.1363636363636365,0,0.36,0,-0.12991362775611412,-1.178764429206379,3.0,0\n305,pasture_2,0.0,0.21999999999999997,25.0,3.091042453358316,0.0,0.0,0.88,-0.12783337150988489,22,0.0,3.2188758248682006,0.0,6.766695160974674,0.28,-3.0,1.7403361907625285,22.0,0.6463435755934588,0.0,0.39111050387382673,0,0.5,2.4378815903974957,0.0,0,0.0,0.0,0.8554508105601307,1.1363636363636365,0,0.72,0,-0.11342104072539604,-0.4089182294656068,2.0,0\n306,pc1_1,0.0,0.42654639175257736,776.0,3.044522437723423,0.0,0.0,0.027061855670103094,-3.6096300824597956,21,0.0,6.654152520183219,0.0,397.727258499711,0.07345360824742268,11.093963953152691,104.32850591205737,21.0,4.048528083277455,0.0,8.124476433258922,0,0.5,17.785223492535216,0.0,0,0.0,0.0,0.37868163811078054,36.95238095238095,0,0.9265463917525774,0,124.22421160265347,2.2811578975303095,2.0,0\n307,pc1_req_1,0.0,0.17410714285714288,224.0,2.0794415416798357,0.0,0.0,0.03571428571428571,-3.332204510175204,8,0.0,5.4116460518550396,0.0,219.004484304933,0.32589285714285715,-0.6551773051276863,80.28545157431722,8.0,5.154353253531152,0.0,4.566602665453811,0,0.5,14.866219570049848,0.0,0,0.0,0.0,0.9106749736811389,28.0,0,0.6741071428571429,0,48.445886315630695,0.8241026828769178,2.0,0\n308,pc2_1,0.0,0.49591002044989774,3912.0,3.58351893845611,0.0,0.0,0.009202453987730062,-4.688285092698598,36,0.0,8.271804031154709,0.0,2713.6706329722874,0.00408997955010225,-1.0140723511881296,800.8199935481059,36.0,14.765960519097383,0.0,19.110687256213225,0,0.5,48.11973936302481,0.0,0,0.0,0.0,0.03833714261255966,108.66666666666667,0,0.9959100204498977,0,789.9614114419118,-2.808497657410699,2.0,0\n309,pc3_1,0.0,0.4012797074954296,1094.0,3.6109179126442243,0.0,0.0,0.033820840950639856,-3.386678070337702,37,0.0,6.9975959829819265,0.0,426.29568289968313,0.09872029250457039,-1.473565511020173,108.39751560289079,37.0,4.365607310679609,0.0,5.8636119382246745,0,0.5,17.36696035471131,0.0,0,0.0,0.0,0.4649258409806046,29.56756756756757,0,0.9012797074954296,0,79.736018013758,-0.6171662115260906,2.0,0\n310,pc4_1,0.0,0.37745098039215685,1020.0,3.6109179126442243,0.0,0.0,0.03627450980392157,-3.3166399936340922,37,0.0,6.927557906278317,0.0,593.5694558413929,0.12254901960784313,-1.5323476772077587,128.4941228977832,37.0,5.064005168566484,0.0,6.727134294079157,0,0.5,22.81140112113079,0.0,0,0.0,0.0,0.5366438278799759,27.56756756756757,0,0.8774509803921569,0,104.19937126256768,-0.444571817232773,2.0,0\n311,pendigits_1,0.0,0.3973225890304133,7694.0,2.772588722239781,0.0,0.0,0.002079542500649857,-6.175607361072459,16,0.0,8.94819608331224,0.0,3.141789484599781,0.10267741096958669,-1.6844893582410592,1.127065068443893,16.0,0.6552271121985097,0.0,-0.043275786944438135,0,0.5,0.9514571607122402,0.0,0,0.0,0.0,0.47742577970440897,480.875,0,0.8973225890304133,0,-0.500775675784973,-1.499177062996981,2.0,0\n312,phoneme_1,0.0,0.2020095187731359,3782.0,1.6094379124341003,0.0,0.0,0.0013220518244315177,-6.6285703367843025,5,0.0,8.238008249218403,0.0,1.6970052312572816,0.2979904812268641,-0.8715745539978301,1.1172884599820894,5.0,0.4999659916246436,0.0,0.793558117113818,0,0.5,1.5302329443120244,0.0,0,0.0,0.0,0.8788205898839054,756.4,0,0.7020095187731359,0,0.3374385324615733,0.21919835837007506,2.0,0\n313,planning-relax_1,0.0,0.20866141732283464,127.0,2.4849066497880004,0.0,0.0,0.09448818897637795,-2.359280436670591,12,0.0,4.844187086458591,0.0,1.9878780544319161,0.29133858267716534,-0.4871133626845552,0.676312754793443,12.0,0.3244754851673808,0.0,-0.18164448617814818,0,0.5,0.4549997782547871,0.0,0,0.0,0.0,0.8704441104104189,10.583333333333334,0,0.7086614173228346,0,0.49596942362025936,-0.7355847031736159,2.0,0\n314,plasma_retinol_1,0.0,0.08181818181818182,220.0,2.5649493574615367,0.0,0.0,0.05909090909090909,-2.828678188890825,13,0.0,5.393627546352362,0.0,161.24637265147896,0.41818181818181815,-1.2698378430386017,42.87537459885385,13.0,3.121209822566745,0.0,2.465596388848186,0,0.5,12.030019418714017,0.0,0,0.0,0.0,0.980597440991727,16.923076923076923,0,0.5818181818181818,0,19.188224586173753,-0.7920984548300031,2.0,0\n315,pm10_1,0.0,0.0,350.0,1.9459101490553132,0.0,0.0,0.02,-3.912023005428146,7,0.0,5.857933154483459,0.0,5.430586588008548,0.5,-1.1969738294535919,2.086273389163182,7.0,0.5307076559647967,0.0,-0.07325302488376984,0,0.5,0.8304289260296351,0.0,0,0.0,0.0,1.0,50.0,0,0.5,0,0.5935643075941109,-0.8619705541321978,2.0,0\n316,pol_1,0.0,0.1661904761904762,10500.0,3.871201010907891,0.0,0.0,0.004571428571428572,-5.387929525237724,48,0.0,9.259130536145614,0.0,160.3986808278614,0.33380952380952383,-3.0,33.922316025796626,48.0,3.2348501290520253,0.0,2.586933818805498,0,0.5,12.118234123401429,0.0,0,0.0,0.0,0.9187712886368485,218.75,0,0.6661904761904762,0,17.472050668969178,0.0,2.0,0\n317,pollen_1,0.0,0.0016709988860007519,2693.0,1.6094379124341003,0.0,0.0,0.001856665428889714,-6.288973180377498,5,0.0,7.898411092811599,0.0,0.16344126978419915,0.49832900111399925,-0.2631885466197703,0.15545254463287903,5.0,0.10913717599804615,0.0,0.012926755803666212,0,0.5,0.13883863142760747,0.0,0,0.0,0.0,0.9999919432912575,538.6,0,0.5016709988860008,0,-0.08333541756274192,-0.14192628061109966,2.0,0\n318,pollution_1,0.0,0.047619047619047644,42.0,2.70805020110221,0.0,0.0,0.35714285714285715,-1.0296194171811581,15,0.0,3.7376696182833684,0.0,23.63638267883936,0.4523809523809524,-0.8297163553031237,7.463801169720235,15.0,1.5696633233201134,0.0,1.022964953263032,0,0.5,4.679894849436104,0.0,0,0.0,0.0,0.9934472383802027,2.8,0,0.5476190476190477,0,3.684163556143027,-0.5838569813044834,2.0,0\n319,prnn_cushings_1,0.0,0.16433554953054488,18.0,0.6931471805599453,0.0,0.0,0.1111111111111111,-2.1972245773362196,2,0.0,2.8903717578961645,0.0,7.899668252978067,0.05555555555555555,4.194293179876924,1.8526875365505715,2.0,0.30659694045485186,0.0,2.548846696575473,0,0.25,2.8554436370303247,0.0,0,0.0,0.0,1.6758220575766962,9.0,0,0.5,0,6.046980716427496,2.242249756120621,4.0,0\n320,prnn_fglass_1,0.0,0.1644295302013423,149.0,2.1972245773362196,0.0,0.0,0.06040268456375839,-2.8067217286092396,9,0.0,5.003946305945459,0.0,55.004251050277325,0.33557046979865773,-0.5500355296173902,16.2907689144388,9.0,2.061680866734924,0.0,1.6206277291403672,0,0.5,6.275544850243331,0.0,0,0.0,0.0,0.9205167427667414,16.555555555555557,0,0.6644295302013423,0,9.723164424033476,-1.0879360193419811,2.0,0\n321,prnn_synth_1,0.0,0.008571428571428563,175.0,0.6931471805599453,0.0,0.0,0.011428571428571429,-4.471638793363569,2,0.0,5.1647859739235145,0.0,-0.6900326480977714,0.49142857142857144,-1.2054193378394191,0.25769334487082385,2.0,0.040854307396444085,0.0,-0.16465628146745503,0,0.5,-0.12380197407101094,0.0,0,0.0,0.0,0.9997880017729585,87.5,0,0.5085714285714286,0,-0.9477259929685953,-0.2055105888638991,2.0,0\n322,prnn_viruses_1,0.0,0.2454229539058131,42.0,2.8903717578961645,0.0,0.0,0.42857142857142855,-0.8472978603872037,18,0.0,3.7376696182833684,0.0,2.9099245214521074,0.07142857142857142,-1.2645089285714286,1.2915719491412967,18.0,0.5976155620232312,0.0,0.6990175422902237,0,0.24999999999999997,1.6808750579976683,0.0,0,0.0,0.0,1.3895623555897163,2.3333333333333335,0,0.6666666666666666,0,0.32652637726740114,-0.23883928571428573,4.0,0\n323,puma32H_1,0.0,0.004359958144401821,5734.0,3.4657359027997265,0.0,0.0,0.0055807464248343215,-5.188432743643588,32,0.0,8.654168646443315,0.0,-1.1662911372194706,0.4956400418555982,-1.2248096994051418,0.014806040644750931,32.0,0.017374615610239744,0.0,-0.0038135595492778526,0,0.5,0.03109170015545803,0.0,0,0.0,0.0,0.9999451502466947,179.1875,0,0.5043599581444018,0,-1.19784431952504,-0.03889579673714288,2.0,0\n324,puma8NH_1,0.0,0.0012207882804324832,5734.0,2.0794415416798357,0.0,0.0,0.0013951866062085804,-6.574727104763479,8,0.0,8.654168646443315,0.0,-1.1809866749971076,0.4987792117195675,-1.2104470126518876,0.012096572851640399,8.0,0.01883530506349861,0.0,-0.006332618326373211,0,0.5,0.02268006120351298,0.0,0,0.0,0.0,0.9999956998295654,716.75,0,0.5012207882804325,0,-1.1938780404633604,-0.02891348894268039,2.0,0\n325,pwLinear_1,0.0,0.042857142857142844,140.0,2.302585092994046,0.0,0.0,0.07142857142857142,-2.639057329615259,10,0.0,4.941642422609304,0.0,-1.2845710021635077,0.45714285714285713,-1.9327661340527085,0.15724917616279976,10.0,0.1692551863632183,0.0,0.014302270617707304,0,0.5,0.26311804071413375,0.0,0,0.0,0.0,0.9946937953613058,14.0,0,0.5428571428571428,0,-1.5391661021415715,-0.25929494007267445,2.0,0\n326,pyrim_1,0.0,0.06862745098039214,51.0,3.295836866004329,0.0,0.0,0.5294117647058824,-0.6359887667199967,27,0.0,3.9318256327243257,0.0,46.019999999999946,0.43137254901960786,-3.0,10.98102866511425,27.0,1.6725082066721806,0.0,2.08906448211622,0,0.5,6.929646455628157,0.0,0,0.0,0.0,0.9863676072907089,1.8888888888888888,0,0.5686274509803921,0,6.4645111529181145,0.0,2.0,0\n327,qsar-biodeg_1,0.0,0.1680216802168022,738.0,3.713572066704308,0.0,0.0,0.05555555555555555,-2.890371757896165,41,0.0,6.6039438246004725,0.0,610.8249392945177,0.3319783197831978,-0.37398396227577546,101.03015679907246,41.0,4.494039706496783,0.0,3.7217734992998195,0,0.5,23.720537347514583,0.0,0,0.0,0.0,0.9169348564805312,18.0,0,0.6680216802168022,0,40.237168764243684,-2.0786191659144104,2.0,0\n328,quake_1,0.0,0.06036745406824148,1524.0,1.0986122886681098,0.0,0.0,0.001968503937007874,-6.230481447578482,3,0.0,7.329093736246592,0.0,11.731584276388645,0.43963254593175854,-0.8591054148491533,5.925640116002069,3.0,1.8204434059205794,0.0,0.8646579133571844,0,0.5,3.3902148687315927,0.0,0,0.0,0.0,0.9894592800805011,508.0,0,0.5603674540682415,0,3.3514972843401942,-0.8307784431552407,2.0,0\n329,quake_2,0.0,0.04002624671916011,1524.0,1.0986122886681098,0.0,0.0,0.001968503937007874,-6.230481447578482,3,0.0,7.329093736246592,0.0,10.71872529829394,0.4599737532808399,-0.8046054935283014,5.424341448751847,3.0,1.7820168785729873,0.0,0.80556644160208,0,0.5,3.269631881570427,0.0,0,0.0,0.0,0.9953723652830564,508.0,0,0.5400262467191601,0,3.0475720046703394,-0.8843553085452072,2.0,0\n330,qualitative-bankruptcy_1,0.0,0.07714285714285715,175.0,1.791759469228055,0.0,0.0,0.03428571428571429,-3.373026504695459,6,0.0,5.1647859739235145,0.0,-1.1377443111110699,0.4228571428571429,-1.4793373926933278,0.12860873748994242,6.0,0.10161661778726176,0.0,-0.0953987873097914,0,0.5,0.01816192839010379,0.0,0,0.0,0.0,0.9827602043210514,29.166666666666668,0,0.5771428571428572,0,-1.2610330257403726,-0.2654083145849646,2.0,0\n331,rabe_131_1,0.0,0.15714285714285714,35.0,1.6094379124341003,0.0,0.0,0.14285714285714285,-1.9459101490553135,5,0.0,3.5553480614894135,0.0,4.832317677268101,0.34285714285714286,-1.2377892020417924,2.388460967209852,5.0,0.7736636107320957,0.0,0.4480805540120265,0,0.5,1.78185817770902,0.0,0,0.0,0.0,0.9275265884316759,7.0,0,0.6571428571428571,0,0.6400729834301693,-0.3451990911354603,2.0,0\n332,rabe_148_1,0.0,0.021739130434782594,46.0,1.6094379124341003,0.0,0.0,0.10869565217391304,-2.2192034840549946,5,0.0,3.828641396489095,0.0,18.857681254530625,0.4782608695652174,2.769580945098774,5.606600442764128,5.0,2.635218758397902,0.0,-0.7145536221803768,0,0.5,2.886983405618126,0.0,0,0.0,0.0,0.9986359641585719,9.2,0,0.5217391304347826,0,8.716909191839656,-3.968179632968064,2.0,0\n333,rabe_166_1,0.0,0.0,28.0,0.0,0.0,0.0,0.03571428571428571,-3.332204510175204,1,0.0,3.332204510175204,0.0,-1.1792749879871447,0.5,-1.1792749879871447,0.0,1.0,0.0,0.0,-0.13531070530523512,0,0.5,-0.13531070530523512,0.0,0,0.0,0.0,1.0,28.0,0,0.5,0,-1.1792749879871447,-0.13531070530523512,2.0,0\n334,rabe_176_1,0.0,0.051020408163265286,49.0,1.0986122886681098,0.0,0.0,0.061224489795918366,-2.793208009442517,3,0.0,3.8918202981106265,0.0,-0.3679056774592402,0.4489795918367347,-0.4526027386892153,0.03586360397559003,3.0,0.08143528350045197,0.0,0.16885522926637972,0,0.5,0.2563352921454465,0.0,0,0.0,0.0,0.9924760039430819,16.333333333333332,0,0.5510204081632653,0,-0.40352370314199576,0.06024619870396505,2.0,0\n335,rabe_265_1,0.0,0.09999999999999998,35.0,1.791759469228055,0.0,0.0,0.17142857142857143,-1.7635885922613588,6,0.0,3.5553480614894135,0.0,10.056641736984997,0.4,-0.8466600736645331,4.552849134196356,6.0,1.525966115693405,0.0,-0.10282237676683526,0,0.5,2.647414077897519,0.0,0,0.0,0.0,0.9709505944546688,5.833333333333333,0,0.6,0,2.7911629172291836,-2.5286471818979854,2.0,0\n336,rabe_266_1,0.0,0.0357142857142857,84.0,0.6931471805599453,0.0,0.0,0.023809523809523808,-3.7376696182833684,2,0.0,4.430816798843313,0.0,-1.2260318231810674,0.4642857142857143,-1.3069700199781085,0.04046909839852053,2.0,0.034697719896136854,0.0,-0.08910739285173666,0,0.5,-0.0544096729555998,0.0,0,0.0,0.0,0.9963165195589622,42.0,0,0.5357142857142857,0,-1.266500921579588,-0.12380511274787351,2.0,0\n337,rabe_97_1,0.0,0.0,32.0,1.0986122886681098,0.0,0.0,0.09375,-2.367123614131617,3,0.0,3.4657359027997265,0.0,-0.7192636423405658,0.5,-1.9365079365079363,0.5071066285496222,3.0,0.2720939325586158,0.0,0.27386734371171045,0,0.5,0.6175188081909067,0.0,0,0.0,0.0,1.0,10.666666666666666,0,0.5,0,-1.2564370171985233,-0.04789309239526006,2.0,0\n338,ringnorm_1,0.0,0.006563706563706556,5180.0,2.995732273553991,0.0,0.0,0.003861003861003861,-5.556828061699537,20,0.0,8.55256033525353,0.0,1.6760707542569282,0.4934362934362934,1.2641222228745654,0.12531176639946415,20.0,0.05069691936665497,0.0,-0.2409207855052436,0,0.5,-0.12235489593796534,0.0,0,0.0,0.0,0.9998756873502928,259.0,0,0.5065637065637065,0,1.476172217105286,-0.3549668978438238,2.0,0\n339,rmftsa_ctoarrivals_1,0.0,0.10869565217391305,184.0,0.6931471805599453,0.0,0.0,0.010869565217391304,-4.5217885770490405,2,0.0,5.214935757608986,0.0,-1.1736933316404239,0.391304347826087,-1.2935857951425433,0.05994623175105973,2.0,0.05429435255121228,0.0,-0.025647703069173126,0,0.5,0.02864664948203915,0.0,0,0.0,0.0,0.9656361333706097,92.0,0,0.6086956521739131,0,-1.2336395633914836,-0.07994205562038541,2.0,0\n340,rmftsa_ladata_1,0.0,0.05211267605633804,355.0,2.302585092994046,0.0,0.0,0.028169014084507043,-3.56953269648137,10,0.0,5.872117789475416,0.0,14.817924345055232,0.447887323943662,-0.4762580231606437,4.3470148656643115,10.0,0.8547190465422869,0.0,0.850715651786237,0,0.5,3.031404442843002,0.0,0,0.0,0.0,0.992149807809528,35.5,0,0.5521126760563381,0,1.948306621443902,-0.5047903095129741,2.0,0\n341,rmftsa_sleepdata_1,0.0,0.020949720670391053,716.0,0.6931471805599453,0.0,0.0,0.002793296089385475,-5.8805329864007,2,0.0,6.573680166960646,0.0,-0.04950160433794082,0.4790502793296089,-1.6509952766803992,0.8007468361712292,2.0,0.379478342580032,0.0,0.4199045387674645,0,0.5,0.7993828813474965,0.0,0,0.0,0.0,0.9987332580568846,358.0,0,0.520949720670391,0,-0.85024844050917,0.04042619618743246,2.0,0\n342,rmftsa_sleepdata_2,0.0,0.10671798585104629,716.0,0.6931471805599453,0.0,0.0,0.002793296089385475,-5.8805329864007,2,0.0,6.573680166960646,0.0,-0.16106222653563806,0.09636871508379888,-0.9903493074428842,0.41464354045362306,2.0,0.29748765325671955,0.0,0.45636571981287277,0,0.25,0.7538533730695923,0.0,0,0.0,0.0,1.8561842713445909,358.0,0,0.39106145251396646,0,-0.5757057669892611,0.15887806655615325,4.0,0\n343,robot-failures-lp1_1,0.0,0.06696776491134505,61.0,4.499809670330265,0.0,0.0,1.4754098360655739,0.3889358061569539,90,0.0,4.110873864173311,0.0,36.73585442286764,0.19672131147540983,1.758881297422728,8.200067995815953,90.0,2.3176580355548575,0.0,0.38368014575970444,0,0.25,5.410327164513672,0.0,0,0.0,0.0,1.9512298857357377,0.6777777777777778,0,0.36065573770491804,0,11.894264451548278,-2.7411053487739356,4.0,0\n344,robot-failures-lp3_1,0.0,0.13799626353637262,32.0,4.499809670330265,0.0,0.0,2.8125,1.0340737675305385,90,0.0,3.4657359027997265,0.0,24.230403938516947,0.09375,-1.057882088401798,5.125696960206881,90.0,1.4912240842384468,0.0,0.054543299548767875,0,0.25,4.967740753095057,0.0,0,0.0,0.0,1.785374329980682,0.35555555555555557,0,0.46875,0,3.163485303845508,-4.746885110608203,4.0,0\n345,robot-failures-lp4_1,0.0,0.254412864462119,81.0,4.499809670330265,0.0,0.0,1.1111111111111112,0.10536051565782635,90,0.0,4.394449154672439,0.0,68.9765938703338,0.12345679012345678,4.164641862253787,14.02984535187404,90.0,4.511493162113452,0.0,-0.831788175663116,0,0.3333333333333333,8.185077452624396,0.0,0,0.0,0.0,1.1912757372274982,0.9,0,0.691358024691358,0,28.22708733561754,-6.701828677261402,3.0,0\n346,sa-heart_1,0.0,0.16253869969040247,323.0,2.1972245773362196,0.0,0.0,0.02786377708978328,-3.5804277458864373,9,0.0,5.777652323222656,0.0,7.424239997210165,0.33746130030959753,-1.8619308265905121,3.1505555759996233,9.0,1.0560777506218497,0.0,0.7394705514932756,0,0.5,2.4819437745369424,0.0,0,0.0,0.0,0.9223686008532735,35.888888888888886,0,0.6625386996904025,0,1.9011423026083654,-0.3725474294307595,2.0,0\n347,scene_1,0.0,0.3188836104513064,1684.0,5.700443573390687,0.0,0.0,0.17755344418052257,-1.7284836214115855,299,0.0,7.428927194802272,0.0,74.1401584560086,0.18111638954869358,-0.7679785561581332,13.215329944962427,299.0,1.8605397057551873,0.0,1.6865032695908055,0,0.5,7.3150629963470255,0.0,0,0.0,0.0,0.6825132084315357,5.632107023411371,0,0.8188836104513064,0,7.954540730169459,-0.914456830685346,2.0,0\n348,schlvote_1,0.0,0.1923076923076923,26.0,1.6094379124341003,0.0,0.0,0.19230769230769232,-1.6486586255873816,5,0.0,3.258096538021482,0.0,7.238354149838365,0.3076923076923077,-0.3666666666666676,2.646094434095694,5.0,1.2101354178937391,0.0,1.0002004461999887,0,0.5,2.314604454298415,0.0,0,0.0,0.0,0.8904916402194913,5.2,0,0.6923076923076923,0,2.7030197596097336,-1.278019300845387,2.0,0\n349,seeds_1,0.0,0.011108797019424833,147.0,1.9459101490553132,0.0,0.0,0.047619047619047616,-3.044522437723423,7,0.0,4.990432586778736,0.0,0.19325955675923367,0.3197278911564626,-1.073210166248936,0.4810963161786314,7.0,0.4093339004614654,0.0,0.2667618123532273,0,0.3333333333333333,0.5947636170134788,0.0,0,0.0,0.0,1.584161114693232,21.0,0,0.3469387755102041,0,-0.6604552768728139,-0.6797036695714229,3.0,0\n350,segment_1,0.0,0.35219542362399503,1617.0,2.9444389791664403,0.0,0.0,0.011750154607297465,-4.443888880410666,19,0.0,7.388327859577107,0.0,303.1287441843871,0.14780457637600494,-3.0,78.95276386694235,19.0,4.488481094366427,0.0,3.1246009281665565,0,0.5,16.35946653417949,0.0,0,0.0,0.0,0.604318876835497,85.10526315789474,0,0.852195423623995,0,33.717832632244075,-0.8543866255543867,2.0,0\n351,seismic-bumps_1,0.0,0.030925582079333023,147.0,1.9459101490553132,0.0,0.0,0.047619047619047616,-3.044522437723423,7,0.0,4.990432586778736,0.0,-0.14816210229368565,0.29931972789115646,-1.0176926253339074,0.32958080276710444,7.0,0.41675219670025276,0.0,0.34793338292394355,0,0.3333333333333333,0.6679727753812167,0.0,0,0.0,0.0,1.5788017632138283,21.0,0,0.3741496598639456,0,-0.6567388425566675,-0.6163409220473434,3.0,0\n352,sensory_1,0.0,0.08312655086848633,403.0,2.3978952727983707,0.0,0.0,0.02729528535980149,-3.6010412891483123,11,0.0,5.998936561946683,0.0,-1.2768734350077142,0.41687344913151364,-1.999778325123153,0.300229343071729,11.0,0.034423819871901844,0.0,-0.016067281025791743,0,0.5,0.054219581679927034,0.0,0,0.0,0.0,0.9799690075115738,36.63636363636363,0,0.5831265508684863,0,-1.6073939084257127,-0.054610917967329,2.0,0\n353,servo_1,0.0,0.3017241379310345,116.0,1.3862943611198906,0.0,0.0,0.034482758620689655,-3.367295829986474,4,0.0,4.7535901911063645,0.0,-0.9849675305853096,0.19827586206896552,-1.377926165163376,0.14424192243429232,4.0,0.19617402464139697,0.0,-0.24168279492340206,0,0.5,-0.00027409248016979453,0.0,0,0.0,0.0,0.7184663880382772,29.0,0,0.8017241379310345,0,-1.1601055794417439,-0.4439113471668877,2.0,0\n354,skin-segmentation_1,0.0,0.29206477827199645,171539.0,1.0986122886681098,0.0,0.0,1.7488734340295792e-05,-10.953953636315182,3,0.0,12.052565924983291,0.0,-0.6069578129421536,0.20793522172800355,-0.9202648829692031,0.13659881565472232,3.0,0.2374647697710751,0.0,-0.3335468344484236,0,0.5,-0.038633634906941355,0.0,0,0.0,0.0,0.7375174099060832,57179.666666666664,0,0.7920647782719965,0,-0.7975157460242456,-0.6201218329872608,2.0,0\n355,sleuth_case1102_1,0.0,0.021739130434782594,23.0,2.0794415416798357,0.0,0.0,0.34782608695652173,-1.0560526742493137,8,0.0,3.1354942159291497,0.0,2.470557851239664,0.4782608695652174,-1.9924242424242429,1.26360444651253,8.0,0.42431080902429535,0.0,0.5254734714275165,0,0.5,1.0891622972743424,0.0,0,0.0,0.0,0.9986359641585719,2.875,0,0.5217391304347826,0,-0.4141825087332355,-0.08703882797784895,2.0,0\n356,sleuth_case1201_1,0.0,0.07142857142857142,35.0,1.791759469228055,0.0,0.0,0.17142857142857143,-1.7635885922613588,6,0.0,3.5553480614894135,0.0,3.85491974529969,0.42857142857142855,-1.5156865945990485,1.7133281454517195,6.0,0.7467833540444194,0.0,-0.24250132753029807,0,0.5,0.34608701493709937,0.0,0,0.0,0.0,0.9852281360342515,5.833333333333333,0,0.5714285714285714,0,0.21042405018905294,-1.6447864968134902,2.0,0\n357,sleuth_case1202_1,0.0,0.09999999999999998,65.0,1.791759469228055,0.0,0.0,0.09230769230769231,-2.382627800667582,6,0.0,4.174387269895637,0.0,1.5707630770501808,0.4,-1.5338266384778003,1.1848690794545713,6.0,0.7042387655204854,0.0,0.05874621568689901,0,0.5,1.0611332464403163,0.0,0,0.0,0.0,0.9709505944546688,10.833333333333334,0,0.6,0,-0.1705318767642829,-0.828696929229279,2.0,0\n358,sleuth_case2002_1,0.0,0.0392156862745098,102.0,1.791759469228055,0.0,0.0,0.058823529411764705,-2.833213344056216,6,0.0,4.624972813284271,0.0,-0.24274710990166382,0.46078431372549017,-1.998461538461539,0.6415349737828331,6.0,0.7530903476449051,0.0,0.1482319931889103,0,0.5,1.185189995180235,0.0,0,0.0,0.0,0.9955580843959541,17.0,0,0.5392156862745098,0,-1.1146673690855875,-0.8919618050102919,2.0,0\n359,sleuth_ex1221_1,0.0,0.017241379310344834,29.0,2.1972245773362196,0.0,0.0,0.3103448275862069,-1.1700712526502546,9,0.0,3.367295829986474,0.0,20.605007291994237,0.4827586206896552,-1.5688056234284735,8.10207384942565,9.0,1.6383080841449098,0.0,2.0701384391493263,0,0.5,4.604599505630396,0.0,0,0.0,0.0,0.9991421039919088,3.2222222222222223,0,0.5172413793103449,0,6.620929786735868,-0.08588068006487853,2.0,0\n360,sleuth_ex1605_1,0.0,0.03488372093023254,43.0,1.6094379124341003,0.0,0.0,0.11627906976744186,-2.151762203259462,5,0.0,3.7612001156935624,0.0,0.8147385042896502,0.46511627906976744,-0.3335215984883697,0.43521198704682607,5.0,0.27068895730628084,0.0,-0.08763746331644431,0,0.5,0.33865593236526953,0.0,0,0.0,0.0,0.996485989886783,8.6,0,0.5348837209302325,0,0.037036169224684556,-0.3193575323315171,2.0,0\n361,sleuth_ex1714_1,0.0,0.15625,32.0,1.9459101490553132,0.0,0.0,0.21875,-1.5198257537444133,7,0.0,3.4657359027997265,0.0,3.9727170252985555,0.34375,-1.222768894322567,1.7588127216685137,7.0,0.7072111861579539,0.0,0.63840628916453,0,0.5,1.5869989620521092,0.0,0,0.0,0.0,0.9283620723948678,4.571428571428571,0,0.65625,0,0.5851062205834949,-0.6138070314684044,2.0,0\n362,sleuth_ex2015_1,0.0,0.07142857142857142,42.0,1.9459101490553132,0.0,0.0,0.16666666666666666,-1.791759469228055,7,0.0,3.7376696182833684,0.0,1.9487278460732398,0.42857142857142855,-1.9909090909090907,1.121661251968427,7.0,0.3359253293383643,0.0,-0.6499946647079619,0,0.5,-0.09534625892455928,0.0,0,0.0,0.0,0.9852281360342515,6.0,0,0.5714285714285714,0,0.12072413246707374,-1.184692664407917,2.0,0\n363,sleuth_ex2015_2,0.0,0.005189165408976993,42.0,1.9459101490553132,0.0,0.0,0.16666666666666666,-1.791759469228055,7,0.0,3.7376696182833684,0.0,1.7506259501087698,0.023809523809523808,-1.963386727688787,1.0550865740091846,7.0,0.4445753754377526,0.0,-0.6955559265777261,0,0.024999999999999998,0.19134594929397583,0.0,0,0.0,0.0,5.297079327540665,6.0,0,0.047619047619047616,0,0.2224544120478705,-1.2314629977637663,40.0,0\n364,sleuth_ex2016_1,0.0,0.05000000000000002,60.0,2.302585092994046,0.0,0.0,0.16666666666666666,-1.791759469228055,10,0.0,4.0943445622221,0.0,1.3630008147015769,0.45,-1.885714285714286,1.0082740979212965,10.0,0.5035949431388854,0.0,-0.15427413331790826,0,0.5,0.707106781186547,0.0,0,0.0,0.0,0.9927744539878083,6.0,0,0.55,0,-0.04177902147265615,-0.927499784642909,2.0,0\n365,sleuth_ex2016_2,0.0,0.01267358684338993,60.0,2.302585092994046,0.0,0.0,0.16666666666666666,-1.791759469228055,10,0.0,4.0943445622221,0.0,1.1143518972862818,0.016666666666666666,-1.8857142857142863,0.938723209516058,10.0,0.5927103104921873,0.0,-0.05805468104302245,0,0.023809523809523815,0.8728715609439696,0.0,0,0.0,0.0,5.2276424705724605,6.0,0,0.06666666666666667,0,-0.033170367009361004,-0.869814661091733,42.0,0\n366,socmob_1,0.0,0.2861557478368356,809.0,1.6094379124341003,0.0,0.0,0.006180469715698393,-5.086361004624392,5,0.0,6.695798917058491,0.0,86.32945383122062,0.2138442521631644,-1.9999938882777168,35.172135362050405,5.0,3.037225134391784,0.0,1.5134554096062256,0,0.5,7.587833464488812,0.0,0,0.0,0.0,0.7487669147513579,161.8,0,0.7861557478368356,0,15.98889251167986,-0.030381418107905657,2.0,0\n367,sonar_1,0.0,0.017241379310344834,145.0,4.0943445622221,0.0,0.0,0.41379310344827586,-0.8823891801984737,60,0.0,4.976733742420574,0.0,24.58524503459598,0.4827586206896552,-1.2056718869881824,4.002475541363014,60.0,0.9131283887860576,0.0,0.8688004222086934,0,0.5,3.815641033835383,0.0,0,0.0,0.0,0.9991421039919088,2.4166666666666665,0,0.5172413793103449,0,1.7342099318987103,-0.7978501878355272,2.0,0\n368,space_ga_1,0.0,0.007359705611775541,2174.0,1.791759469228055,0.0,0.0,0.0027598896044158236,-5.8925645984531,6,0.0,7.684324067681155,0.0,10.843836606933316,0.4926402943882245,0.22507356651234423,3.767926364190871,6.0,0.7239075218350847,0.0,0.035034657538355794,0,0.5,0.6323398630138203,0.0,0,0.0,0.0,0.9998437064326363,362.3333333333333,0,0.5073597056117756,0,2.4371495300090733,-1.207375517913561,2.0,0\n369,spambase_1,0.0,0.09968944099378885,3220.0,4.04305126783455,0.0,0.0,0.017701863354037266,-4.034085370703904,57,0.0,8.077136638538454,0.0,1035.8425004257879,0.40031055900621115,3.4588890014163747,227.30566757267144,57.0,6.273490459224144,0.0,9.775027500023063,0,0.5,29.18296181751491,0.0,0,0.0,0.0,0.9711319699703417,56.49122807017544,0,0.5996894409937888,0,174.2054808195947,1.4152746092189834,2.0,0\n370,spectrometer_1,0.0,0.408355795148248,371.0,4.61512051684126,0.0,0.0,0.2722371967654987,-1.3010815457661755,101,0.0,5.916202062607435,0.0,16.73111842984541,0.09164420485175202,-3.0,4.6478781117540695,101.0,1.7428743642239637,0.0,0.8807084290177171,0,0.5,3.7343861341086027,0.0,0,0.0,0.0,0.44193427726555307,3.6732673267326734,0,0.9083557951482479,0,5.338304693549944,-1.803921462691384,2.0,0\n371,splice_1,0.0,0.13578243145723798,2233.0,4.0943445622221,0.0,0.0,0.026869682042095836,-3.616756689618057,60,0.0,7.711101251840158,0.0,-0.7698044258857184,0.23331840573219884,-1.5929171499104287,0.126438651745386,60.0,0.185549950568434,0.0,0.07299297026689308,0,0.3333333333333333,0.8708446910494066,0.0,0,0.0,0.0,1.4727509388864488,37.21666666666667,0,0.5253022839229736,0,-1.319318078341143,-0.2498856515859969,3.0,0\n372,splice_2,0.0,0.020376175548589365,2233.0,4.0943445622221,0.0,0.0,0.026869682042095836,-3.616756689618057,60,0.0,7.711101251840158,0.0,-0.6771805857144444,0.47962382445141066,-1.590982281744756,0.13407592284384814,60.0,0.1874585950926562,0.0,0.07614046596513455,0,0.5,0.8387262524184357,0.0,0,0.0,0.0,0.9988016873210912,37.21666666666667,0,0.5203761755485894,0,-1.3164211884956543,-0.24907584045002312,2.0,0\n373,steel-plates-fault_1,0.0,0.13843888070692192,1358.0,3.4965075614664802,0.0,0.0,0.024300441826215022,-3.717260746652161,33,0.0,7.213768308118642,0.0,1207.3771532340756,0.36156111929307805,-1.8527071688188483,235.21715944009227,33.0,6.996049517403137,0.0,3.5453496117191845,0,0.5,33.835780121071544,0.0,0,0.0,0.0,0.9439714099871137,41.15151515151515,0,0.6384388807069219,0,75.58489277524912,-0.9159559198075043,2.0,0\n374,stock_1,0.0,0.023308270676691722,665.0,2.1972245773362196,0.0,0.0,0.013533834586466165,-4.302562463319635,9,0.0,6.499787040655854,0.0,-0.13961498643130366,0.4766917293233083,-1.2744843907910777,0.376935378066659,9.0,0.44181303875697453,0.0,-0.02295955797298725,0,0.5,0.7825281598218331,0.0,0,0.0,0.0,0.9984318700734398,73.88888888888889,0,0.5233082706766917,0,-0.798073412072467,-0.6205203063916733,2.0,0\n375,strikes_1,0.0,0.010297482837528626,437.0,1.791759469228055,0.0,0.0,0.013729977116704805,-4.288173725867535,6,0.0,6.07993319509559,0.0,53.71120672725785,0.4897025171624714,-1.254022224337143,20.040459119485767,6.0,2.114934398393546,0.0,1.3393235336140243,0,0.5,5.904157223417792,0.0,0,0.0,0.0,0.9996940169329248,72.83333333333333,0,0.5102974828375286,0,8.955429051407487,-0.21906486378848003,2.0,0\n376,sylva_prior_1,0.0,0.43866613735609367,10076.0,4.68213122712422,0.0,0.0,0.01071853910281858,-4.5357804103482815,108,0.0,9.2179116374725,0.0,10071.000099255585,0.06133386264390631,-3.0,1613.1430469118372,108.0,19.39983521253613,0.0,13.268956625644933,0,0.5,100.3643367897959,0.0,0,0.0,0.0,0.3327172560114526,93.29629629629629,0,0.9386661373560937,0,550.8084297470787,-1.174584250019592,2.0,0\n377,tae_1,0.0,0.05870870479018073,105.0,1.6094379124341003,0.0,0.0,0.047619047619047616,-3.044522437723423,5,0.0,4.653960350157523,0.0,0.15635362649949425,0.26666666666666666,-1.1193887906675208,0.47499844897594934,5.0,1.0240012451538054,0.0,-0.24001821898323517,0,0.3333333333333333,0.9479029553935576,0.0,0,0.0,0.0,1.5627306712631261,21.0,0,0.4095238095238095,0,-0.2691305039762861,-1.4275109504627732,3.0,0\n378,tae_2,0.0,0.12857142857142856,105.0,1.6094379124341003,0.0,0.0,0.047619047619047616,-3.044522437723423,5,0.0,4.653960350157523,0.0,1.3696524064171127,0.37142857142857144,-1.2381550371031145,0.9422349038209454,5.0,1.1169346642978002,0.0,-0.430281282664046,0,0.5,0.9102481242239866,0.0,0,0.0,0.0,0.9517626756348312,21.0,0,0.6285714285714286,0,-0.017237473668060454,-1.835661299482318,2.0,0\n379,teachingAssistant_1,0.0,0.015552315827194794,105.0,1.791759469228055,0.0,0.0,0.05714285714285714,-2.8622008809294686,6,0.0,4.653960350157523,0.0,2.6538461538461533,0.3142857142857143,-1.2291533747974321,1.3252278020553154,6.0,1.108122451593551,0.0,-0.3931245906495852,0,0.3333333333333333,0.966665399427692,0.0,0,0.0,0.0,1.5833913647120852,17.5,0,0.3523809523809524,0,-0.004715814747195735,-2.157277486520025,3.0,0\n380,tecator_1,0.0,0.10714285714285712,168.0,4.820281565605037,0.0,0.0,0.7380952380952381,-0.30368241379822203,124,0.0,5.123963979403259,0.0,10.31951469653578,0.39285714285714285,-0.08912970763979278,1.401661946811626,124.0,0.46090251990056774,0.0,0.5568792302341435,0,0.5,2.088490628114774,0.0,0,0.0,0.0,0.9666186325481027,1.3548387096774193,0,0.6071428571428571,0,0.7532840336907571,-1.3781117108941676,2.0,0\n381,thoracic-surgery_1,0.0,0.3480243161094225,329.0,2.772588722239781,0.0,0.0,0.0486322188449848,-3.0234690285255907,16,0.0,5.796057750765372,0.0,324.00304878048786,0.1519756838905775,-1.4208900922243837,83.35478781928178,16.0,5.023672660635038,0.0,3.6186711122325526,0,0.5,18.055554513237414,0.0,0,0.0,0.0,0.6147624500602276,20.5625,0,0.8480243161094225,0,37.20470086390491,-1.7839697611858456,2.0,0\n382,tic-tac-toe_1,0.0,0.1626865671641791,670.0,2.1972245773362196,0.0,0.0,0.013432835820895522,-4.3100531350487925,9,0.0,6.507277712385012,0.0,-1.0448226360464377,0.3373134328358209,-1.4245250247044012,0.11775651988679024,9.0,0.11360105945461774,0.0,-0.34958694446101,0,0.5,-0.1897100524515759,0.0,0,0.0,0.0,0.922224613456658,74.44444444444444,0,0.6626865671641791,0,-1.2826079335395348,-0.5717210801795078,2.0,0\n383,transplant_1,0.0,0.10439560439560439,91.0,1.0986122886681098,0.0,0.0,0.03296703296703297,-3.41224721784874,3,0.0,4.51085950651685,0.0,7.954873568234207,0.3956043956043956,-1.1801554774923046,3.736565666280365,3.0,1.0018287178023662,0.0,1.30894378200495,0,0.5,2.256701371034949,0.0,0,0.0,0.0,0.9683211863989214,30.333333333333332,0,0.6043956043956044,0,3.5513667190441454,-0.07697000857507547,2.0,0\n384,triazines_1,0.0,0.06153846153846154,130.0,4.0943445622221,0.0,0.0,0.46153846153846156,-0.7731898882334817,60,0.0,4.867534450455582,0.0,125.00775193798447,0.43846153846153846,-3.0,28.439502457932655,60.0,2.90647393574056,0.0,3.1863823480126503,0,0.5,11.269771600967994,0.0,0,0.0,0.0,0.9890453237543657,2.1666666666666665,0,0.5615384615384615,0,17.38272477252215,-0.09509658079260981,2.0,0\n385,tumors_C_1,0.0,0.19047619047619047,42.0,8.871926251117628,0.0,0.0,169.73809523809524,5.13425663283426,7129,0.0,3.7376696182833684,0.0,36.64730551301458,0.30952380952380953,-1.2730511404994578,4.376789632482924,7129.0,1.405711151905116,0.0,0.6118239772339054,0,0.5,6.199196291302237,0.0,0,0.0,0.0,0.8926230133850988,0.005891429372983589,0,0.6904761904761905,0,3.224144301363438,-5.888276259925494,2.0,0\n386,twonorm_1,0.0,0.000386100386100402,5180.0,2.995732273553991,0.0,0.0,0.003861003861003861,-5.556828061699537,20,0.0,8.55256033525353,0.0,0.09101327991180863,0.4996138996138996,-0.14279437815055163,0.06464355390050101,20.0,0.02990013062561377,0.0,0.009153083176878098,0,0.5,0.07869164561059613,0.0,0,0.0,0.0,0.9999995698647354,259.0,0,0.5003861003861004,0,-0.054944088953942184,-0.03232367878274952,2.0,0\n387,vehicle_1,0.0,0.020093542657720127,592.0,2.8903717578961645,0.0,0.0,0.030405405405405407,-3.493134876987841,18,0.0,6.3835066348840055,0.0,53.056585231311935,0.2195945945945946,-1.0883794164754896,14.070464237356251,18.0,1.6496052002339388,0.0,0.9831181874883632,0,0.25,6.467450847407796,0.0,0,0.0,0.0,1.9952855927104782,32.888888888888886,0,0.27533783783783783,0,4.9722891577088975,-0.2884336110842764,4.0,0\n388,vehicle_2,0.0,0.2466216216216216,592.0,2.8903717578961645,0.0,0.0,0.030405405405405407,-3.493134876987841,18,0.0,6.3835066348840055,0.0,50.25950755101645,0.2533783783783784,-0.9821849719498492,13.149401468857292,18.0,1.5930852159020779,0.0,1.057535697949906,0,0.5,6.440687377411231,0.0,0,0.0,0.0,0.8165889486941612,32.888888888888886,0,0.7466216216216216,0,4.728497177257213,-0.20851108081277703,2.0,0\n389,vertebra-column_1,0.0,0.17741935483870966,217.0,1.791759469228055,0.0,0.0,0.027649769585253458,-3.5881378843124043,6,0.0,5.37989735354046,0.0,43.878450667807016,0.3225806451612903,0.31443928448855774,15.905640456807305,6.0,1.6863005932467268,0.0,1.285275357840965,0,0.5,4.9829935716545855,0.0,0,0.0,0.0,0.9071657675730821,36.166666666666664,0,0.6774193548387096,0,8.411549619864948,-0.11626484767489365,2.0,0\n390,vertebra-column_2,0.0,0.12537799648179332,217.0,1.791759469228055,0.0,0.0,0.027649769585253458,-3.5881378843124043,6,0.0,5.37989735354046,0.0,41.32676879814853,0.1935483870967742,-0.4442343957416224,15.094505926215703,6.0,1.6236087241901307,0.0,1.241223480288526,0,0.3333333333333333,4.81120513432344,0.0,0,0.0,0.0,1.4830574179235887,36.166666666666664,0,0.4976958525345622,0,7.684318635244277,-0.03511218018907968,3.0,0\n391,veteran_1,0.0,0.21578947368421053,95.0,1.9459101490553132,0.0,0.0,0.07368421052631578,-2.6079667425452278,7,0.0,4.553876891600541,0.0,22.232257139061474,0.28421052631578947,-1.9781639928698749,8.168458096679608,7.0,1.915393463725473,0.0,0.24001357728910527,0,0.5,4.172818209213145,0.0,0,0.0,0.0,0.8611247055579297,13.571428571428571,0,0.7157894736842105,0,3.112125594678168,-2.76770784555492,2.0,0\n392,vineyard_1,0.0,0.02777777777777779,36.0,0.6931471805599453,0.0,0.0,0.05555555555555555,-2.890371757896165,2,0.0,3.58351893845611,0.0,1.095789673021084,0.4722222222222222,-0.4949262971811903,0.7953579851011372,2.0,0.6096577588350027,0.0,-0.30557096365516906,0,0.5,0.3040867951798336,0.0,0,0.0,0.0,0.997772472089982,18.0,0,0.5277777777777778,0,0.3004316879199469,-0.9152287224901717,2.0,0\n393,vinnie_1,0.0,0.018796992481203034,266.0,0.6931471805599453,0.0,0.0,0.007518796992481203,-4.890349128221754,2,0.0,5.583496308781699,0.0,-0.5012191775956705,0.48120300751879697,-1.2844025937077206,0.39159170805602506,2.0,0.14782423291574803,0.0,0.026638877088533935,0,0.5,0.17446311000428197,0.0,0,0.0,0.0,0.9989802737140192,133.0,0,0.518796992481203,0,-0.8928108856516955,-0.1211853558272141,2.0,0\n394,visualizing_environmental_1,0.0,0.03246753246753245,77.0,1.0986122886681098,0.0,0.0,0.03896103896103896,-3.245193133185574,3,0.0,4.343805421853684,0.0,1.4002159274133703,0.4675324675324675,-0.7622097472504268,0.9992298532868581,3.0,0.8231870650366289,0.0,0.1785281486065509,0,0.5,1.3192859218374788,0.0,0,0.0,0.0,0.9969562518473083,25.666666666666668,0,0.5324675324675324,0,-0.011989986350759837,-0.5929954450616708,2.0,0\n395,visualizing_ethanol_1,0.0,0.07377049180327869,61.0,0.6931471805599453,0.0,0.0,0.03278688524590164,-3.417726683613366,2,0.0,4.110873864173311,0.0,-1.2423361205830705,0.4262295081967213,-1.4129129983349624,0.08528843887594595,2.0,0.0990398461363571,0.0,0.31672192341059313,0,0.5,0.4157617695469502,0.0,0,0.0,0.0,0.9842399889605549,30.5,0,0.5737704918032787,0,-1.3276245594590166,0.21768207727423602,2.0,0\n396,visualizing_galaxy_1,0.0,0.044247787610619455,226.0,1.3862943611198906,0.0,0.0,0.017699115044247787,-4.034240638152395,4,0.0,5.420534999272286,0.0,-0.22334222970934592,0.4557522123893805,-0.9097984077441792,0.2728508716117229,4.0,0.25383820738129453,0.0,-0.09522684583859249,0,0.5,0.0873370408644061,0.0,0,0.0,0.0,0.9943433940231612,56.5,0,0.5442477876106194,0,-0.5861491794579528,-0.5288846233653606,2.0,0\n397,visualizing_hamster_1,0.0,0.049019607843137275,51.0,1.6094379124341003,0.0,0.0,0.09803921568627451,-2.322387720290225,5,0.0,3.9318256327243257,0.0,3.090008283417447,0.45098039215686275,-0.6383288901583932,1.3294939459551345,5.0,0.5746816977140553,0.0,0.6445552660050942,0,0.5,1.6909030499262712,0.0,0,0.0,0.0,0.9930554830121975,10.2,0,0.5490196078431373,0,0.5165872278245425,0.014604618909740925,2.0,0\n398,visualizing_livestock_1,0.0,0.34615384615384615,91.0,0.6931471805599453,0.0,0.0,0.02197802197802198,-3.817712325956905,2,0.0,4.51085950651685,0.0,-1.1961203732663974,0.15384615384615385,-1.386322780766717,0.09510120375015985,2.0,0.004156732842053253,0.0,0.037078270266074034,0,0.5,0.04123500310812729,0.0,0,0.0,0.0,0.6193821946787638,45.5,0,0.8461538461538461,0,-1.2912215770165574,0.032921537424020784,2.0,0\n399,visualizing_slope_1,0.0,0.06666666666666665,30.0,1.0986122886681098,0.0,0.0,0.1,-2.3025850929940455,3,0.0,3.4011973816621555,0.0,-0.6908407473308933,0.43333333333333335,-1.4378013163121939,0.30507458831610396,3.0,0.3705748936344584,0.0,0.20562845500986038,0,0.5,0.7274782107908366,0.0,0,0.0,0.0,0.9871377743721862,10.0,0,0.5666666666666667,0,-1.058043193787544,-0.09704869206191713,2.0,0\n400,visualizing_soil_1,0.0,0.050099206349206366,6048.0,1.3862943611198906,0.0,0.0,0.0006613756613756613,-7.321188556739479,4,0.0,8.70748291785937,0.0,-0.04690149199148186,0.44990079365079366,-1.272992650666337,0.4783088076164968,4.0,0.45039058678055005,0.0,0.49676043861215835,0,0.5,1.2054274185249307,0.0,0,0.0,0.0,0.9927457044082962,1512.0,0,0.5500992063492064,0,-0.7359144512015232,0.021695470483385115,2.0,0\n401,vowel_1,0.0,0.4206349206349206,693.0,2.4849066497880004,0.0,0.0,0.017316017316017316,-4.056123349401903,12,0.0,6.541029999189903,0.0,-0.04175786191300768,0.07936507936507936,-1.9799015586546347,0.5292615423666833,12.0,0.1447829828074493,0.0,0.0901715383935404,0,0.5,0.35998482942360505,0.0,0,0.0,0.0,0.3999380474390278,57.75,0,0.9206349206349206,0,-0.587557840951383,-0.1627446408479655,2.0,0\n402,wall-robot-navigation_1,0.0,0.1454771788689271,3819.0,3.1780538303479458,0.0,0.0,0.006284367635506678,-5.069690056877571,24,0.0,8.247743887225516,0.0,14.126870686654765,0.061272584446190104,-1.6066296394574235,4.564074981936518,24.0,1.0604163610149675,0.0,1.5269053557811352,0,0.25,3.801028052493401,0.0,0,0.0,0.0,1.7240591503540998,159.125,0,0.4050798638387012,0,2.3940313187954945,0.007049344149875565,4.0,0\n403,wall-robot-navigation_2,0.0,0.14917347554923077,3819.0,1.3862943611198906,0.0,0.0,0.0010473946059177796,-6.861449526105625,4,0.0,8.247743887225516,0.0,41.62395673979968,0.060487038491751764,0.4361544184234192,16.65404544655048,4.0,1.629647261853901,0.0,2.5748799171147336,0,0.25,5.256261750642692,0.0,0,0.0,0.0,1.7107123184207413,954.75,0,0.40062843676355064,0,13.047209519765097,0.9539687799545101,4.0,0\n404,wall-robot-navigation_3,0.0,0.14554950683379272,3819.0,0.6931471805599453,0.0,0.0,0.0005236973029588898,-7.554596706665571,2,0.0,8.247743887225516,0.0,39.53485033926278,0.06074888714323121,3.9860935219644755,17.774378408649156,2.0,1.6603624602333549,0.0,3.4336443118290183,0,0.25,5.094006772062373,0.0,0,0.0,0.0,1.7231379681226133,1909.5,0,0.39931919350615347,0,21.76047193061363,1.7732818515956634,4.0,0\n405,waveform-5000_1,0.0,0.00155328632669523,3500.0,3.6888794541139363,0.0,0.0,0.011428571428571429,-4.471638793363569,40,0.0,8.160518247477505,0.0,0.15431157205350354,0.33171428571428574,-0.6712460946832888,0.26788465182788046,40.0,0.11711077745852058,0.0,0.03463041148473607,0,0.3333333333333333,0.26397342221032255,0.0,0,0.0,0.0,1.5849468475773665,87.5,0,0.3354285714285714,0,-0.19379855147790584,-0.26256080079423744,3.0,0\n406,waveform-5000_2,0.0,0.15914285714285714,3500.0,3.6888794541139363,0.0,0.0,0.011428571428571429,-4.471638793363569,40,0.0,8.160518247477505,0.0,0.15211267187210398,0.34085714285714286,-0.6900933457798422,0.2586767985650036,40.0,0.12193681354437191,0.0,0.03555383777550162,0,0.5,0.2868799895986644,0.0,0,0.0,0.0,0.9256365710248203,87.5,0,0.6591428571428571,0,-0.18806054866843075,-0.2621021987583652,2.0,0\n407,wdbc_1,0.0,0.12060301507537688,398.0,3.4011973816621555,0.0,0.0,0.07537688442211055,-2.585254623622282,30,0.0,5.986452005284438,0.0,42.15644713247964,0.3793969849246231,-0.551816927310349,9.424019114122395,30.0,1.028314826631465,0.0,1.5783196911113342,0,0.5,4.866022057286755,0.0,0,0.0,0.0,0.9576150179318341,13.266666666666667,0,0.6206030150753769,0,6.033145824088632,0.4578018403613198,2.0,0\n408,white-clover_1,0.0,0.21346973944856626,44.0,3.4339872044851463,0.0,0.0,0.7045454545454546,-0.35020242943311486,31,0.0,3.784189633918261,0.0,32.86857755545317,0.06818181818181818,-1.4617716809870378,6.937553257732072,31.0,1.3275881296215675,0.0,0.9718827065461694,0,0.3333333333333333,5.7066223563603256,0.0,0,0.0,0.0,1.2419389116382147,1.4193548387096775,0,0.5909090909090909,0,2.57722675089895,-0.46911273641111034,3.0,0\n409,white-clover_2,0.0,0.09090909090909091,44.0,3.4339872044851463,0.0,0.0,0.7045454545454546,-0.35020242943311486,31,0.0,3.784189633918261,0.0,27.94985689321105,0.4090909090909091,-1.4285714285714284,7.595673124613732,31.0,1.4270912526470865,0.0,1.1256155186557935,0,0.5,5.149840785260788,0.0,0,0.0,0.0,0.976020648236615,1.4193548387096775,0,0.5909090909090909,0,3.3709162272507784,-0.44343964745492176,2.0,0\n410,wholesale-customers_1,0.0,0.2822290047934791,308.0,2.0794415416798357,0.0,0.0,0.025974025974025976,-3.6506582412937383,8,0.0,5.730099782973574,0.0,30.30487113809361,0.10064935064935066,-1.4625723441909413,11.36323692385761,8.0,1.8778978551512326,0.0,2.4613726699352676,0,0.3333333333333333,4.615198423719431,0.0,0,0.0,0.0,1.0976186218989168,38.5,0,0.7305194805194806,0,13.019192320324525,-1.343465180987647,3.0,0\n411,wilt_1,0.0,0.44626513138470625,3387.0,1.6094379124341003,0.0,0.0,0.0014762326542663124,-6.518261940383671,5,0.0,8.127699852817772,0.0,131.86103999877972,0.05373486861529377,0.11820453362086303,56.27864045548929,5.0,3.7280583863701677,0.0,3.580778173841175,0,0.5,8.27888055944382,0.0,0,0.0,0.0,0.3020553891371378,677.4,0,0.9462651313847062,0,52.01493841880115,-0.5688639839143177,2.0,0\n412,wind_1,0.0,0.03662247337535318,4601.0,2.6390573296152584,0.0,0.0,0.0030428167789610956,-5.79497162054021,14,0.0,8.434028950155469,0.0,1.0664434764497601,0.4633775266246468,-1.1981456733227562,0.6578748492804671,14.0,0.2808477806951665,0.0,0.4917661138934885,0,0.5,0.9149983720998993,0.0,0,0.0,0.0,0.9961266311219167,328.64285714285717,0,0.5366224733753532,0,-0.04557857435887439,-0.023640040906380902,2.0,0\n413,wind_correlations_1,0.0,0.016129032258064502,31.0,3.828641396489095,0.0,0.0,1.4838709677419355,0.39465419200394874,46,0.0,3.4339872044851463,0.0,10.776030067231819,0.4838709677419355,-0.8519662093158948,2.015162841044668,46.0,0.7009724325240335,0.0,0.126778289447902,0,0.5,2.78907099759667,0.0,0,0.0,0.0,0.9992492479956566,0.6739130434782609,0,0.5161290322580645,0,0.7276481223361055,-1.309935900149033,2.0,0\n414,wine_1,0.0,0.052814200818248655,124.0,2.5649493574615367,0.0,0.0,0.10483870967741936,-2.2553322081435,13,0.0,4.820281565605037,0.0,1.9813166040473673,0.2661290322580645,-1.0340002577358671,0.8046389471636812,13.0,0.4423039135786039,0.0,0.34136693453872663,0,0.3333333333333333,1.0594022296523848,0.0,0,0.0,0.0,1.5665905034741163,9.538461538461538,0,0.3951612903225806,0,-0.04116758728106502,-0.319648656139821,3.0,0\n415,wine_2,0.0,0.09677419354838712,124.0,2.5649493574615367,0.0,0.0,0.10483870967741936,-2.2553322081435,13,0.0,4.820281565605037,0.0,2.096193871636073,0.4032258064516129,-1.2668159324087294,0.9079839301580003,13.0,0.47146659810225905,0.0,0.32695306976013483,0,0.5,1.1898550899410651,0.0,0,0.0,0.0,0.9728063221185003,9.538461538461538,0,0.5967741935483871,0,-0.15781931888773332,-0.34753538197762357,2.0,0\n416,wisconsin_1,0.0,0.05555555555555558,135.0,3.4657359027997265,0.0,0.0,0.23703703703703705,-1.4395388756387029,32,0.0,4.90527477843843,0.0,27.136360242312588,0.4444444444444444,-0.684227321457247,4.808378744838451,32.0,0.842533004167168,0.0,1.0542911395265258,0,0.5,4.263320479528125,0.0,0,0.0,0.0,0.9910760598382222,4.21875,0,0.5555555555555556,0,2.423956645582273,-0.19073600950951736,2.0,0\n417,witmer_census_1980_1,0.0,0.042857142857142844,35.0,1.3862943611198906,0.0,0.0,0.11428571428571428,-2.169053700369523,4,0.0,3.5553480614894135,0.0,2.385809741577294,0.45714285714285713,-0.8653760764072063,1.3237003241167327,4.0,0.39527637168688107,0.0,-0.2532744615353235,0,0.5,0.11925761231001504,0.0,0,0.0,0.0,0.9946937953613058,8.75,0,0.5428571428571428,0,0.10705550657310015,-0.8590593382629029,2.0,0\n418,yeast_ml8_1,0.0,0.48521584861028977,1691.0,4.7535901911063645,0.0,0.0,0.06859846244825547,-2.6794851577922154,116,0.0,7.43307534889858,0.0,7.799651567944247,0.01478415138971023,-1.9142333367625706,1.8947972105506887,116.0,0.807184299040846,0.0,0.4351224544684267,0,0.5,3.1304395167363066,0.0,0,0.0,0.0,0.1110553272820291,14.577586206896552,0,0.9852158486102898,0,1.341910596322937,-1.1981022415234661,2.0,0\n419,zoo_1,0.0,0.1142857142857143,70.0,2.772588722239781,0.0,0.0,0.22857142857142856,-1.4759065198095778,16,0.0,4.248495242049359,0.0,3.8790322580645142,0.38571428571428573,-1.947063688999174,1.7889310617597967,16.0,1.2086932593481197,0.0,0.2752761379088625,0,0.5,2.4246715773614604,0.0,0,0.0,0.0,0.9619780596506257,4.375,0,0.6142857142857143,0,-0.38791195147677204,-2.041241452319315,2.0,0\n"
  },
  {
    "path": "server/recommender_dataset/dataset_method_PMA.csv",
    "content": "method,dataset_id,name,test_judgment_metric,max_test_judgment_metric,PMA\nclassify_svm,1,2dplanes_1,0.563809835,0.929072232,0.60685253\nclassify_sgd,1,2dplanes_1,0.840643275,0.929072232,0.904820148\nclassify_rf,1,2dplanes_1,0.905370417,0.929072232,0.974488727\nclassify_pa,1,2dplanes_1,0.766917293,0.929072232,0.825465735\nclassify_mlp,1,2dplanes_1,0.929072232,0.929072232,1\nclassify_logreg,1,2dplanes_1,0.840702211,0.929072232,0.904883583\nclassify_knn,1,2dplanes_1,0.916304615,0.929072232,0.98625767\nclassify_gnb,1,2dplanes_1,0.80968914,0.929072232,0.871502895\nclassify_et,1,2dplanes_1,0.828806983,0.929072232,0.892080244\nclassify_dt,1,2dplanes_1,0.890688259,0.929072232,0.958685696\nclassify_dbn,1,2dplanes_1,0.928372241,0.929072232,0.99924657\nclassify_svm,2,AP_Endometrium_Prostate_1,0.975609756,1,0.975609756\nclassify_sgd,2,AP_Endometrium_Prostate_1,1,1,1\nclassify_rf,2,AP_Endometrium_Prostate_1,0.975609756,1,0.975609756\nclassify_pa,2,AP_Endometrium_Prostate_1,1,1,1\nclassify_mnb,2,AP_Endometrium_Prostate_1,0.975609756,1,0.975609756\nclassify_mlp,2,AP_Endometrium_Prostate_1,1,1,1\nclassify_logreg,2,AP_Endometrium_Prostate_1,1,1,1\nclassify_knn,2,AP_Endometrium_Prostate_1,1,1,1\nclassify_gp,2,AP_Endometrium_Prostate_1,0.7,1,0.7\nclassify_et,2,AP_Endometrium_Prostate_1,0.95,1,0.95\nclassify_dt,2,AP_Endometrium_Prostate_1,0.95,1,0.95\nclassify_dbn,2,AP_Endometrium_Prostate_1,0.975609756,1,0.975609756\nclassify_bnb,2,AP_Endometrium_Prostate_1,0.975609756,1,0.975609756\nclassify_svm,3,Amazon_employee_access_1,0.972187238,0.97259623,0.999579484\nclassify_sgd,3,Amazon_employee_access_1,0.971491343,0.97259623,0.998863982\nclassify_rf,3,Amazon_employee_access_1,0.971542164,0.97259623,0.998916234\nclassify_pa,3,Amazon_employee_access_1,0.971491343,0.97259623,0.998863982\nclassify_mnb,3,Amazon_employee_access_1,0.693028665,0.97259623,0.712555369\nclassify_mlp,3,Amazon_employee_access_1,0.971596577,0.97259623,0.998972181\nclassify_logreg,3,Amazon_employee_access_1,0.945589581,0.97259623,0.972232414\nclassify_knn,3,Amazon_employee_access_1,0.97259623,0.97259623,1\nclassify_gnb,3,Amazon_employee_access_1,0.971491343,0.97259623,0.998863982\nclassify_et,3,Amazon_employee_access_1,0.971491343,0.97259623,0.998863982\nclassify_dt,3,Amazon_employee_access_1,0.972067039,0.97259623,0.999455899\nclassify_dbn,3,Amazon_employee_access_1,0.971491343,0.97259623,0.998863982\nclassify_bnb,3,Amazon_employee_access_1,0.738477815,0.97259623,0.759285089\nclassify_svm,4,Australian_1,0.849462366,0.9035533,0.940135315\nclassify_sgd,4,Australian_1,0.9035533,0.9035533,1\nclassify_rf,4,Australian_1,0.886597938,0.9035533,0.981234797\nclassify_pa,4,Australian_1,0.882978723,0.9035533,0.977229261\nclassify_mlp,4,Australian_1,0.893617021,0.9035533,0.989003108\nclassify_logreg,4,Australian_1,0.890052356,0.9035533,0.985057945\nclassify_knn,4,Australian_1,0.858757062,0.9035533,0.950422142\nclassify_gp,4,Australian_1,0.890052356,0.9035533,0.985057945\nclassify_gnb,4,Australian_1,0.770186335,0.9035533,0.852397236\nclassify_et,4,Australian_1,0.896907217,0.9035533,0.992644504\nclassify_dt,4,Australian_1,0.814479638,0.9035533,0.901418476\nclassify_dbn,4,Australian_1,0.884210526,0.9035533,0.978592549\nclassify_bnb,4,Australian_1,0.877777778,0.9035533,0.971473159\nclassify_svm,5,BNG(breast-w)_1,0.968472307,0.979254137,0.988989753\nclassify_sgd,5,BNG(breast-w)_1,0.972739608,0.979254137,0.993347458\nclassify_rf,5,BNG(breast-w)_1,0.94844358,0.979254137,0.96853671\nclassify_pa,5,BNG(breast-w)_1,0.970888097,0.979254137,0.991456723\nclassify_mlp,5,BNG(breast-w)_1,0.979254137,0.979254137,1\nclassify_logreg,5,BNG(breast-w)_1,0.962543659,0.979254137,0.982935504\nclassify_knn,5,BNG(breast-w)_1,0.977031366,0.979254137,0.997730139\nclassify_dt,5,BNG(breast-w)_1,0.967653984,0.979254137,0.988154094\nclassify_dbn,5,BNG(breast-w)_1,0.975232957,0.979254137,0.99589363\nclassify_svm,8,BNG(tic-tac-toe)_1,0,0.860345157,0\nclassify_sgd,8,BNG(tic-tac-toe)_1,0.790845323,0.860345157,0.919218661\nclassify_rf,8,BNG(tic-tac-toe)_1,0.802790642,0.860345157,0.933102994\nclassify_pa,8,BNG(tic-tac-toe)_1,0.622167345,0.860345157,0.723160164\nclassify_mlp,8,BNG(tic-tac-toe)_1,0.860345157,0.860345157,1\nclassify_logreg,8,BNG(tic-tac-toe)_1,0.661324397,0.860345157,0.768673354\nclassify_knn,8,BNG(tic-tac-toe)_1,0.84008953,0.860345157,0.976456394\nclassify_et,8,BNG(tic-tac-toe)_1,0.827233554,0.860345157,0.961513582\nclassify_dt,8,BNG(tic-tac-toe)_1,0.804931848,0.860345157,0.935591769\nclassify_dbn,8,BNG(tic-tac-toe)_1,0.857323153,0.860345157,0.996487451\nclassify_bnb,8,BNG(tic-tac-toe)_1,0.696586783,0.860345157,0.809659678\nclassify_sgd,9,BNG(vote)_1,0.952768624,0.967171388,0.985108365\nclassify_rf,9,BNG(vote)_1,0.95410112,0.967171388,0.98648609\nclassify_pa,9,BNG(vote)_1,0.953132071,0.967171388,0.985484148\nclassify_mnb,9,BNG(vote)_1,0.903213587,0.967171388,0.933871285\nclassify_mlp,9,BNG(vote)_1,0.967171388,0.967171388,1\nclassify_logreg,9,BNG(vote)_1,0.951964223,0.967171388,0.98427666\nclassify_knn,9,BNG(vote)_1,0.962288094,0.967171388,0.994950954\nclassify_gnb,9,BNG(vote)_1,0.918545314,0.967171388,0.949723416\nclassify_et,9,BNG(vote)_1,0.951348903,0.967171388,0.983640455\nclassify_dbn,9,BNG(vote)_1,0.966204082,0.967171388,0.998999861\nclassify_bnb,9,BNG(vote)_1,0.900239476,0.967171388,0.930796224\nclassify_svm,10,CastMetal1_1,0.266666667,0.444444444,0.6\nclassify_sgd,10,CastMetal1_1,0.258064516,0.444444444,0.580645161\nclassify_rf,10,CastMetal1_1,0,0.444444444,0\nclassify_pa,10,CastMetal1_1,0.387096774,0.444444444,0.870967742\nclassify_mnb,10,CastMetal1_1,0.206896552,0.444444444,0.465517241\nclassify_mlp,10,CastMetal1_1,0.333333333,0.444444444,0.75\nclassify_logreg,10,CastMetal1_1,0.333333333,0.444444444,0.75\nclassify_knn,10,CastMetal1_1,0.25,0.444444444,0.5625\nclassify_gp,10,CastMetal1_1,0,0.444444444,0\nclassify_gnb,10,CastMetal1_1,0.333333333,0.444444444,0.75\nclassify_et,10,CastMetal1_1,0,0.444444444,0\nclassify_dt,10,CastMetal1_1,0.222222222,0.444444444,0.5\nclassify_dbn,10,CastMetal1_1,0.444444444,0.444444444,1\nclassify_bnb,10,CastMetal1_1,0.275862069,0.444444444,0.620689655\nclassify_svm,11,Click_prediction_small_1,0,0.325453294,0\nclassify_sgd,11,Click_prediction_small_1,0.289323437,0.325453294,0.888986047\nclassify_rf,11,Click_prediction_small_1,0.029069767,0.325453294,0.089320858\nclassify_pa,11,Click_prediction_small_1,0.173003802,0.325453294,0.531577974\nclassify_mlp,11,Click_prediction_small_1,0.289323437,0.325453294,0.888986047\nclassify_logreg,11,Click_prediction_small_1,0.321424469,0.325453294,0.987620881\nclassify_knn,11,Click_prediction_small_1,0.233092089,0.325453294,0.716207497\nclassify_gnb,11,Click_prediction_small_1,0.075455334,0.325453294,0.23184689\nclassify_et,11,Click_prediction_small_1,0,0.325453294,0\nclassify_dt,11,Click_prediction_small_1,0.095902354,0.325453294,0.294673171\nclassify_dbn,11,Click_prediction_small_1,0.015625,0.325453294,0.048009961\nclassify_bnb,11,Click_prediction_small_1,0.325453294,0.325453294,1\nclassify_svm,12,CostaMadre1_1,0.237288136,0.545454545,0.435028249\nclassify_sgd,12,CostaMadre1_1,0.5,0.545454545,0.916666667\nclassify_rf,12,CostaMadre1_1,0.153846154,0.545454545,0.282051282\nclassify_mlp,12,CostaMadre1_1,0.545454545,0.545454545,1\nclassify_logreg,12,CostaMadre1_1,0.421052632,0.545454545,0.771929825\nclassify_knn,12,CostaMadre1_1,0.363636364,0.545454545,0.666666667\nclassify_gp,12,CostaMadre1_1,0,0.545454545,0\nclassify_gnb,12,CostaMadre1_1,0.384615385,0.545454545,0.705128205\nclassify_et,12,CostaMadre1_1,0.153846154,0.545454545,0.282051282\nclassify_dt,12,CostaMadre1_1,0.333333333,0.545454545,0.611111111\nclassify_dbn,12,CostaMadre1_1,0.315789474,0.545454545,0.578947368\nclassify_bnb,12,CostaMadre1_1,0.333333333,0.545454545,0.611111111\nclassify_sgd,13,CreditCardSubset_1,0,0.75,0\nclassify_rf,13,CreditCardSubset_1,0.571428571,0.75,0.761904762\nclassify_pa,13,CreditCardSubset_1,0.666666667,0.75,0.888888889\nclassify_mlp,13,CreditCardSubset_1,0.75,0.75,1\nclassify_logreg,13,CreditCardSubset_1,0.666666667,0.75,0.888888889\nclassify_knn,13,CreditCardSubset_1,0.75,0.75,1\nclassify_et,13,CreditCardSubset_1,0.75,0.75,1\nclassify_dt,13,CreditCardSubset_1,0.6,0.75,0.8\nclassify_dbn,13,CreditCardSubset_1,0.666666667,0.75,0.888888889\nclassify_bnb,13,CreditCardSubset_1,0.666666667,0.75,0.888888889\nclassify_svm,15,MagicTelescope_1,0.697283951,0.801044386,0.870468556\nclassify_sgd,15,MagicTelescope_1,0.700258398,0.801044386,0.874181768\nclassify_rf,15,MagicTelescope_1,0.503135374,0.801044386,0.628099245\nclassify_pa,15,MagicTelescope_1,0.666294643,0.801044386,0.831782426\nclassify_mlp,15,MagicTelescope_1,0.801044386,0.801044386,1\nclassify_logreg,15,MagicTelescope_1,0.699855002,0.801044386,0.873678181\nclassify_knn,15,MagicTelescope_1,0.754674221,0.801044386,0.942112864\nclassify_gnb,15,MagicTelescope_1,0.491803279,0.801044386,0.613952594\nclassify_et,15,MagicTelescope_1,0.098753595,0.801044386,0.123281053\nclassify_dbn,15,MagicTelescope_1,0.799134901,0.801044386,0.997616256\nclassify_bnb,15,MagicTelescope_1,0.62327791,0.801044386,0.778081615\nclassify_svm,16,MegaWatt1_1,0.095238095,0.4,0.238095238\nclassify_sgd,16,MegaWatt1_1,0.4,0.4,1\nclassify_rf,16,MegaWatt1_1,0.285714286,0.4,0.714285714\nclassify_pa,16,MegaWatt1_1,0,0.4,0\nclassify_mlp,16,MegaWatt1_1,0.375,0.4,0.9375\nclassify_logreg,16,MegaWatt1_1,0.210526316,0.4,0.526315789\nclassify_knn,16,MegaWatt1_1,0.315789474,0.4,0.789473684\nclassify_gp,16,MegaWatt1_1,0,0.4,0\nclassify_gnb,16,MegaWatt1_1,0.153846154,0.4,0.384615385\nclassify_dt,16,MegaWatt1_1,0.4,0.4,1\nclassify_dbn,16,MegaWatt1_1,0.285714286,0.4,0.714285714\nclassify_bnb,16,MegaWatt1_1,0.24,0.4,0.6\nclassify_svm,17,PhishingWebsites_1,0.905822377,0.97460572,0.929424441\nclassify_sgd,17,PhishingWebsites_1,0.910392365,0.97460572,0.934113504\nclassify_rf,17,PhishingWebsites_1,0.915433404,0.97460572,0.939285892\nclassify_pa,17,PhishingWebsites_1,0.814709236,0.97460572,0.835937261\nclassify_mnb,17,PhishingWebsites_1,0.847121821,0.97460572,0.869194386\nclassify_mlp,17,PhishingWebsites_1,0.97460572,0.97460572,1\nclassify_logreg,17,PhishingWebsites_1,0.90305158,0.97460572,0.926581448\nclassify_knn,17,PhishingWebsites_1,0.969551282,0.97460572,0.994813863\nclassify_gnb,17,PhishingWebsites_1,0.396722725,0.97460572,0.407059713\nclassify_et,17,PhishingWebsites_1,0.923748395,0.97460572,0.947817539\nclassify_dt,17,PhishingWebsites_1,0.876744736,0.97460572,0.899589155\nclassify_dbn,17,PhishingWebsites_1,0.952304823,0.97460572,0.977118031\nclassify_svm,18,PieChart1_1,0.305882353,0.484848485,0.630882353\nclassify_sgd,18,PieChart1_1,0.24,0.484848485,0.495\nclassify_rf,18,PieChart1_1,0.166666667,0.484848485,0.34375\nclassify_pa,18,PieChart1_1,0.333333333,0.484848485,0.6875\nclassify_mnb,18,PieChart1_1,0.071428571,0.484848485,0.147321429\nclassify_mlp,18,PieChart1_1,0.411764706,0.484848485,0.849264706\nclassify_logreg,18,PieChart1_1,0.37037037,0.484848485,0.763888889\nclassify_knn,18,PieChart1_1,0.484848485,0.484848485,1\nclassify_gp,18,PieChart1_1,0,0.484848485,0\nclassify_et,18,PieChart1_1,0.16,0.484848485,0.33\nclassify_dbn,18,PieChart1_1,0.275862069,0.484848485,0.568965517\nclassify_bnb,18,PieChart1_1,0.2,0.484848485,0.4125\nclassify_svm,19,PieChart2_1,0.052173913,0.363636364,0.143478261\nclassify_sgd,19,PieChart2_1,0.363636364,0.363636364,1\nclassify_rf,19,PieChart2_1,0,0.363636364,0\nclassify_pa,19,PieChart2_1,0,0.363636364,0\nclassify_mlp,19,PieChart2_1,0.2,0.363636364,0.55\nclassify_logreg,19,PieChart2_1,0.068181818,0.363636364,0.1875\nclassify_knn,19,PieChart2_1,0,0.363636364,0\nclassify_gp,19,PieChart2_1,0,0.363636364,0\nclassify_gnb,19,PieChart2_1,0.111111111,0.363636364,0.305555556\nclassify_et,19,PieChart2_1,0,0.363636364,0\nclassify_dt,19,PieChart2_1,0.142857143,0.363636364,0.392857143\nclassify_dbn,19,PieChart2_1,0,0.363636364,0\nclassify_bnb,19,PieChart2_1,0.074074074,0.363636364,0.203703704\nclassify_svm,20,PieChart3_1,0.434210526,0.44137931,0.983758224\nclassify_sgd,20,PieChart3_1,0.377952756,0.44137931,0.856299213\nclassify_rf,20,PieChart3_1,0,0.44137931,0\nclassify_pa,20,PieChart3_1,0.34,0.44137931,0.7703125\nclassify_mnb,20,PieChart3_1,0.246987952,0.44137931,0.559582078\nclassify_mlp,20,PieChart3_1,0.363636364,0.44137931,0.823863636\nclassify_logreg,20,PieChart3_1,0.44137931,0.44137931,1\nclassify_knn,20,PieChart3_1,0.384615385,0.44137931,0.871394231\nclassify_gp,20,PieChart3_1,0,0.44137931,0\nclassify_et,20,PieChart3_1,0,0.44137931,0\nclassify_dt,20,PieChart3_1,0.225,0.44137931,0.509765625\nclassify_dbn,20,PieChart3_1,0.216216216,0.44137931,0.489864865\nclassify_bnb,20,PieChart3_1,0.409090909,0.44137931,0.926846591\nclassify_sgd,21,PieChart4_1,0.565517241,0.627118644,0.901770736\nclassify_pa,21,PieChart4_1,0.519230769,0.627118644,0.827962578\nclassify_mlp,21,PieChart4_1,0.627118644,0.627118644,1\nclassify_logreg,21,PieChart4_1,0.386266094,0.627118644,0.615937826\nclassify_knn,21,PieChart4_1,0.54,0.627118644,0.861081081\nclassify_gp,21,PieChart4_1,0.033898305,0.627118644,0.054054054\nclassify_et,21,PieChart4_1,0.379746835,0.627118644,0.605542251\nclassify_dbn,21,PieChart4_1,0.543859649,0.627118644,0.867235657\nclassify_bnb,21,PieChart4_1,0.379746835,0.627118644,0.605542251\nclassify_svm,22,PizzaCutter1_1,0,0.580645161,0\nclassify_sgd,22,PizzaCutter1_1,0.470588235,0.580645161,0.810457516\nclassify_rf,22,PizzaCutter1_1,0,0.580645161,0\nclassify_pa,22,PizzaCutter1_1,0.222222222,0.580645161,0.382716049\nclassify_mnb,22,PizzaCutter1_1,0.129032258,0.580645161,0.222222222\nclassify_mlp,22,PizzaCutter1_1,0.580645161,0.580645161,1\nclassify_logreg,22,PizzaCutter1_1,0.43373494,0.580645161,0.746987952\nclassify_knn,22,PizzaCutter1_1,0.5,0.580645161,0.861111111\nclassify_gp,22,PizzaCutter1_1,0,0.580645161,0\nclassify_et,22,PizzaCutter1_1,0.190476191,0.580645161,0.328042328\nclassify_dt,22,PizzaCutter1_1,0.388888889,0.580645161,0.669753086\nclassify_dbn,22,PizzaCutter1_1,0.4,0.580645161,0.688888889\nclassify_bnb,22,PizzaCutter1_1,0.325581395,0.580645161,0.560723514\nclassify_svm,23,PizzaCutter3_1,0.395604396,0.470588235,0.840659341\nclassify_sgd,23,PizzaCutter3_1,0.405063291,0.470588235,0.860759494\nclassify_rf,23,PizzaCutter3_1,0,0.470588235,0\nclassify_mnb,23,PizzaCutter3_1,0.21875,0.470588235,0.46484375\nclassify_mlp,23,PizzaCutter3_1,0.470588235,0.470588235,1\nclassify_logreg,23,PizzaCutter3_1,0.397790055,0.470588235,0.845303867\nclassify_knn,23,PizzaCutter3_1,0.390804598,0.470588235,0.83045977\nclassify_gp,23,PizzaCutter3_1,0,0.470588235,0\nclassify_gnb,23,PizzaCutter3_1,0.239482201,0.470588235,0.508899676\nclassify_et,23,PizzaCutter3_1,0,0.470588235,0\nclassify_dbn,23,PizzaCutter3_1,0.25,0.470588235,0.53125\nclassify_bnb,23,PizzaCutter3_1,0.38,0.470588235,0.8075\nclassify_svm,24,PopularKids_1,0.134833572,0.422055039,0.319469168\nclassify_sgd,24,PopularKids_1,0.383715259,0.422055039,0.909159288\nclassify_rf,24,PopularKids_1,0.163666766,0.422055039,0.387785361\nclassify_pa,24,PopularKids_1,0.275272518,0.422055039,0.652219481\nclassify_mnb,24,PopularKids_1,0.353217266,0.422055039,0.836898587\nclassify_mlp,24,PopularKids_1,0.422055039,0.422055039,1\nclassify_logreg,24,PopularKids_1,0.364985116,0.422055039,0.864780852\nclassify_knn,24,PopularKids_1,0.318427521,0.422055039,0.754469185\nclassify_gp,24,PopularKids_1,0.106364502,0.422055039,0.252015714\nclassify_gnb,24,PopularKids_1,0.381888612,0.422055039,0.904831306\nclassify_et,24,PopularKids_1,0.259623631,0.422055039,0.615141646\nclassify_dbn,24,PopularKids_1,0.323699322,0.422055039,0.766959975\nclassify_svm,25,SPECTF_1,0.812030075,0.90647482,0.895810956\nclassify_sgd,25,SPECTF_1,0.851351351,0.90647482,0.939189189\nclassify_rf,25,SPECTF_1,0.873417722,0.90647482,0.963532248\nclassify_pa,25,SPECTF_1,0.861111111,0.90647482,0.949955908\nclassify_mnb,25,SPECTF_1,0.706896552,0.90647482,0.779830323\nclassify_mlp,25,SPECTF_1,0.897959184,0.90647482,0.990605766\nclassify_logreg,25,SPECTF_1,0.873239437,0.90647482,0.963335569\nclassify_knn,25,SPECTF_1,0.873239437,0.90647482,0.963335569\nclassify_gp,25,SPECTF_1,0.863309353,0.90647482,0.952380952\nclassify_gnb,25,SPECTF_1,0.842975207,0.90647482,0.929948839\nclassify_et,25,SPECTF_1,0.8,0.90647482,0.882539683\nclassify_dt,25,SPECTF_1,0.859259259,0.90647482,0.947912992\nclassify_dbn,25,SPECTF_1,0.90647482,0.90647482,1\nclassify_svm,26,SPECT_1,0.887218045,0.93129771,0.952668557\nclassify_sgd,26,SPECT_1,0.907692308,0.93129771,0.974653216\nclassify_pa,26,SPECT_1,0.899224806,0.93129771,0.965561062\nclassify_mlp,26,SPECT_1,0.93129771,0.93129771,1\nclassify_logreg,26,SPECT_1,0.68627451,0.93129771,0.736901318\nclassify_knn,26,SPECT_1,0.897637795,0.93129771,0.963856977\nclassify_gp,26,SPECT_1,0.903703704,0.93129771,0.97037037\nclassify_dt,26,SPECT_1,0.761061947,0.93129771,0.817205861\nclassify_dbn,26,SPECT_1,0.914728682,0.93129771,0.982208667\nclassify_bnb,26,SPECT_1,0.810344828,0.93129771,0.870124364\nclassify_svm,27,abalone_1,0.769470405,0.810621943,0.949234612\nclassify_sgd,27,abalone_1,0.810621943,0.810621943,1\nclassify_rf,27,abalone_1,0.766692852,0.810621943,0.945808164\nclassify_pa,27,abalone_1,0.747784045,0.810621943,0.922481869\nclassify_mnb,27,abalone_1,0.705882353,0.810621943,0.870791075\nclassify_mlp,27,abalone_1,0.805102764,0.810621943,0.993191427\nclassify_logreg,27,abalone_1,0.748246298,0.810621943,0.923052114\nclassify_knn,27,abalone_1,0.789432789,0.810621943,0.973860622\nclassify_et,27,abalone_1,0.775659824,0.810621943,0.956870007\nclassify_dt,27,abalone_1,0.78493845,0.810621943,0.968316313\nclassify_dbn,27,abalone_1,0.786604361,0.810621943,0.970371415\nclassify_svm,28,abalone_2,-0.069283033,0.516534316,-0.134130552\nclassify_sgd,28,abalone_2,-0.06525167,0.516534316,-0.126325914\nclassify_mlp,28,abalone_2,0.108739913,0.516534316,0.210518274\nclassify_logreg,28,abalone_2,-0.069283033,0.516534316,-0.134130552\nclassify_knn,28,abalone_2,0.516534316,0.516534316,1\nclassify_dbn,28,abalone_2,0.415988232,0.516534316,0.805344813\nclassify_bnb,28,abalone_2,0.30173476,0.516534316,0.584152399\nclassify_svm,29,acute-inflammations_1,1,1,1\nclassify_sgd,29,acute-inflammations_1,1,1,1\nclassify_rf,29,acute-inflammations_1,1,1,1\nclassify_pa,29,acute-inflammations_1,1,1,1\nclassify_mlp,29,acute-inflammations_1,1,1,1\nclassify_logreg,29,acute-inflammations_1,1,1,1\nclassify_knn,29,acute-inflammations_1,1,1,1\nclassify_gp,29,acute-inflammations_1,1,1,1\nclassify_et,29,acute-inflammations_1,1,1,1\nclassify_dt,29,acute-inflammations_1,1,1,1\nclassify_dbn,29,acute-inflammations_1,1,1,1\nclassify_bnb,29,acute-inflammations_1,0.933333333,1,0.933333333\nclassify_svm,30,acute-inflammations_2,1,1,1\nclassify_sgd,30,acute-inflammations_2,1,1,1\nclassify_rf,30,acute-inflammations_2,1,1,1\nclassify_pa,30,acute-inflammations_2,1,1,1\nclassify_mlp,30,acute-inflammations_2,1,1,1\nclassify_logreg,30,acute-inflammations_2,1,1,1\nclassify_knn,30,acute-inflammations_2,1,1,1\nclassify_gp,30,acute-inflammations_2,0.96969697,1,0.96969697\nclassify_et,30,acute-inflammations_2,1,1,1\nclassify_dbn,30,acute-inflammations_2,1,1,1\nclassify_svm,31,ada_agnostic_1,0.664206642,0.664206642,1\nclassify_sgd,31,ada_agnostic_1,0.620689655,0.664206642,0.934482759\nclassify_rf,31,ada_agnostic_1,0.629893238,0.664206642,0.948339264\nclassify_pa,31,ada_agnostic_1,0.534013605,0.664206642,0.80398715\nclassify_mnb,31,ada_agnostic_1,0.413127413,0.664206642,0.621986272\nclassify_mlp,31,ada_agnostic_1,0.626465662,0.664206642,0.943178857\nclassify_logreg,31,ada_agnostic_1,0,0.664206642,0\nclassify_knn,31,ada_agnostic_1,0.58419244,0.664206642,0.879534173\nclassify_gnb,31,ada_agnostic_1,0.549728752,0.664206642,0.827647177\nclassify_et,31,ada_agnostic_1,0.330232558,0.664206642,0.497183462\nclassify_dt,31,ada_agnostic_1,0.592465753,0.664206642,0.891990106\nclassify_dbn,31,ada_agnostic_1,0.619672131,0.664206642,0.93295082\nclassify_bnb,31,ada_agnostic_1,0.605988024,0.664206642,0.912348636\nclassify_svm,32,aids_1,0,0.75,0\nclassify_sgd,32,aids_1,0.666666667,0.75,0.888888889\nclassify_rf,32,aids_1,0.363636364,0.75,0.484848485\nclassify_pa,32,aids_1,0.25,0.75,0.333333333\nclassify_mnb,32,aids_1,0.5,0.75,0.666666667\nclassify_mlp,32,aids_1,0.636363636,0.75,0.848484849\nclassify_logreg,32,aids_1,0.75,0.75,1\nclassify_knn,32,aids_1,0.533333333,0.75,0.711111111\nclassify_gp,32,aids_1,0.636363636,0.75,0.848484849\nclassify_gnb,32,aids_1,0.444444444,0.75,0.592592593\nclassify_et,32,aids_1,0.461538462,0.75,0.615384615\nclassify_dbn,32,aids_1,0.636363636,0.75,0.848484849\nclassify_bnb,32,aids_1,0.444444444,0.75,0.592592593\nclassify_svm,33,ailerons_1,0.893187191,0.901052632,0.991270831\nclassify_sgd,33,ailerons_1,0.898503842,0.901052632,0.997171319\nclassify_rf,33,ailerons_1,0.862889984,0.901052632,0.957646594\nclassify_mlp,33,ailerons_1,0.901052632,0.901052632,1\nclassify_logreg,33,ailerons_1,0.892880051,0.901052632,0.990929963\nclassify_knn,33,ailerons_1,0.873077712,0.901052632,0.968953068\nclassify_et,33,ailerons_1,0.789363921,0.901052632,0.876046407\nclassify_dt,33,ailerons_1,0.785168196,0.901052632,0.871389937\nclassify_dbn,33,ailerons_1,0.881349127,0.901052632,0.978132792\nclassify_bnb,33,ailerons_1,0.778739612,0.901052632,0.864255411\nclassify_svm,34,analcatdata_apnea1_1,0.324324324,0.756756757,0.428571429\nclassify_sgd,34,analcatdata_apnea1_1,0,0.756756757,0\nclassify_rf,34,analcatdata_apnea1_1,0.722222222,0.756756757,0.954365079\nclassify_pa,34,analcatdata_apnea1_1,0,0.756756757,0\nclassify_mlp,34,analcatdata_apnea1_1,0.756756757,0.756756757,1\nclassify_logreg,34,analcatdata_apnea1_1,0.346666667,0.756756757,0.458095238\nclassify_knn,34,analcatdata_apnea1_1,0.682926829,0.756756757,0.902439024\nclassify_gp,34,analcatdata_apnea1_1,0,0.756756757,0\nclassify_et,34,analcatdata_apnea1_1,0,0.756756757,0\nclassify_dt,34,analcatdata_apnea1_1,0.540540541,0.756756757,0.714285714\nclassify_dbn,34,analcatdata_apnea1_1,0.16,0.756756757,0.211428571\nclassify_svm,35,analcatdata_apnea2_1,0.261904762,0.790697674,0.331232493\nclassify_sgd,35,analcatdata_apnea2_1,0.242424242,0.790697674,0.306595365\nclassify_rf,35,analcatdata_apnea2_1,0,0.790697674,0\nclassify_pa,35,analcatdata_apnea2_1,0,0.790697674,0\nclassify_mnb,35,analcatdata_apnea2_1,0,0.790697674,0\nclassify_mlp,35,analcatdata_apnea2_1,0.790697674,0.790697674,1\nclassify_logreg,35,analcatdata_apnea2_1,0.255813954,0.790697674,0.323529412\nclassify_knn,35,analcatdata_apnea2_1,0.685714286,0.790697674,0.867226891\nclassify_gp,35,analcatdata_apnea2_1,0,0.790697674,0\nclassify_dt,35,analcatdata_apnea2_1,0.628571429,0.790697674,0.794957983\nclassify_dbn,35,analcatdata_apnea2_1,0,0.790697674,0\nclassify_svm,36,analcatdata_apnea3_1,0.692307692,0.692307692,1\nclassify_sgd,36,analcatdata_apnea3_1,0.086956522,0.692307692,0.125603865\nclassify_rf,36,analcatdata_apnea3_1,0.235294118,0.692307692,0.339869281\nclassify_pa,36,analcatdata_apnea3_1,0,0.692307692,0\nclassify_mnb,36,analcatdata_apnea3_1,0.148148148,0.692307692,0.213991769\nclassify_mlp,36,analcatdata_apnea3_1,0.692307692,0.692307692,1\nclassify_logreg,36,analcatdata_apnea3_1,0.219178082,0.692307692,0.316590563\nclassify_knn,36,analcatdata_apnea3_1,0.608695652,0.692307692,0.879227053\nclassify_gp,36,analcatdata_apnea3_1,0,0.692307692,0\nclassify_gnb,36,analcatdata_apnea3_1,0,0.692307692,0\nclassify_et,36,analcatdata_apnea3_1,0,0.692307692,0\nclassify_dbn,36,analcatdata_apnea3_1,0.4,0.692307692,0.577777778\nclassify_svm,37,analcatdata_asbestos_1,-0.020454991,0.170262932,-0.120137663\nclassify_sgd,37,analcatdata_asbestos_1,0.167286562,0.170262932,0.982518978\nclassify_rf,37,analcatdata_asbestos_1,0.14809461,0.170262932,0.86979948\nclassify_pa,37,analcatdata_asbestos_1,0.151890314,0.170262932,0.892092672\nclassify_mlp,37,analcatdata_asbestos_1,0.170262932,0.170262932,1\nclassify_logreg,37,analcatdata_asbestos_1,0.16914458,0.170262932,0.993431617\nclassify_knn,37,analcatdata_asbestos_1,0.167286562,0.170262932,0.982518978\nclassify_gp,37,analcatdata_asbestos_1,0.118297826,0.170262932,0.694794951\nclassify_gnb,37,analcatdata_asbestos_1,0.167286562,0.170262932,0.982518978\nclassify_et,37,analcatdata_asbestos_1,0.15299244,0.170262932,0.898565754\nclassify_dbn,37,analcatdata_asbestos_1,0.1623247,0.170262932,0.953376628\nclassify_svm,38,analcatdata_authorship_1,0.994694754,1,0.994694754\nclassify_sgd,38,analcatdata_authorship_1,0.994694754,1,0.994694754\nclassify_pa,38,analcatdata_authorship_1,0.98058331,1,0.98058331\nclassify_mnb,38,analcatdata_authorship_1,0.957077512,1,0.957077512\nclassify_mlp,38,analcatdata_authorship_1,1,1,1\nclassify_logreg,38,analcatdata_authorship_1,0.994694754,1,0.994694754\nclassify_knn,38,analcatdata_authorship_1,1,1,1\nclassify_gp,38,analcatdata_authorship_1,0.969656323,1,0.969656323\nclassify_gnb,38,analcatdata_authorship_1,0.97362224,1,0.97362224\nclassify_et,38,analcatdata_authorship_1,0.278172767,1,0.278172767\nclassify_dbn,38,analcatdata_authorship_1,0.981462857,1,0.981462857\nclassify_svm,39,analcatdata_authorship_2,0.993548387,1,0.993548387\nclassify_sgd,39,analcatdata_authorship_2,0.996784566,1,0.996784566\nclassify_rf,39,analcatdata_authorship_2,0.977917981,1,0.977917981\nclassify_pa,39,analcatdata_authorship_2,0.993548387,1,0.993548387\nclassify_mnb,39,analcatdata_authorship_2,0.977198697,1,0.977198697\nclassify_mlp,39,analcatdata_authorship_2,0.996784566,1,0.996784566\nclassify_logreg,39,analcatdata_authorship_2,0.993548387,1,0.993548387\nclassify_knn,39,analcatdata_authorship_2,1,1,1\nclassify_gp,39,analcatdata_authorship_2,0.990415335,1,0.990415335\nclassify_gnb,39,analcatdata_authorship_2,0.987096774,1,0.987096774\nclassify_dt,39,analcatdata_authorship_2,0.884955752,1,0.884955752\nclassify_dbn,39,analcatdata_authorship_2,0.993548387,1,0.993548387\nclassify_bnb,39,analcatdata_authorship_2,0.984126984,1,0.984126984\nclassify_svm,40,analcatdata_bankruptcy_1,0.909090909,1,0.909090909\nclassify_sgd,40,analcatdata_bankruptcy_1,0.909090909,1,0.909090909\nclassify_rf,40,analcatdata_bankruptcy_1,0.769230769,1,0.769230769\nclassify_pa,40,analcatdata_bankruptcy_1,0.909090909,1,0.909090909\nclassify_mlp,40,analcatdata_bankruptcy_1,0.909090909,1,0.909090909\nclassify_logreg,40,analcatdata_bankruptcy_1,0.909090909,1,0.909090909\nclassify_knn,40,analcatdata_bankruptcy_1,1,1,1\nclassify_gp,40,analcatdata_bankruptcy_1,0.8,1,0.8\nclassify_gnb,40,analcatdata_bankruptcy_1,0.714285714,1,0.714285714\nclassify_dt,40,analcatdata_bankruptcy_1,0.8,1,0.8\nclassify_dbn,40,analcatdata_bankruptcy_1,0.909090909,1,0.909090909\nclassify_svm,41,analcatdata_boxing1_1,0.594594595,0.784313726,0.758108108\nclassify_sgd,41,analcatdata_boxing1_1,0.739130435,0.784313726,0.942391304\nclassify_rf,41,analcatdata_boxing1_1,0.769230769,0.784313726,0.980769231\nclassify_pa,41,analcatdata_boxing1_1,0.755555556,0.784313726,0.963333333\nclassify_mlp,41,analcatdata_boxing1_1,0.784313726,0.784313726,1\nclassify_logreg,41,analcatdata_boxing1_1,0.684210526,0.784313726,0.872368421\nclassify_knn,41,analcatdata_boxing1_1,0.784313726,0.784313726,1\nclassify_gp,41,analcatdata_boxing1_1,0.736842105,0.784313726,0.939473684\nclassify_gnb,41,analcatdata_boxing1_1,0.784313726,0.784313726,1\nclassify_et,41,analcatdata_boxing1_1,0.784313726,0.784313726,1\nclassify_dt,41,analcatdata_boxing1_1,0.76,0.784313726,0.969\nclassify_dbn,41,analcatdata_boxing1_1,0.736842105,0.784313726,0.939473684\nclassify_svm,42,analcatdata_boxing2_1,0.680851064,0.807692308,0.84295846\nclassify_sgd,42,analcatdata_boxing2_1,0.73015873,0.807692308,0.904006047\nclassify_rf,42,analcatdata_boxing2_1,0.791666667,0.807692308,0.98015873\nclassify_pa,42,analcatdata_boxing2_1,0.733333333,0.807692308,0.907936508\nclassify_mnb,42,analcatdata_boxing2_1,0.558139535,0.807692308,0.6910299\nclassify_mlp,42,analcatdata_boxing2_1,0.8,0.807692308,0.99047619\nclassify_logreg,42,analcatdata_boxing2_1,0.697674419,0.807692308,0.863787375\nclassify_knn,42,analcatdata_boxing2_1,0.769230769,0.807692308,0.952380952\nclassify_gp,42,analcatdata_boxing2_1,0.708333333,0.807692308,0.876984127\nclassify_gnb,42,analcatdata_boxing2_1,0.711111111,0.807692308,0.88042328\nclassify_et,42,analcatdata_boxing2_1,0.765957447,0.807692308,0.948328267\nclassify_dt,42,analcatdata_boxing2_1,0.634146341,0.807692308,0.785133566\nclassify_dbn,42,analcatdata_boxing2_1,0.807692308,0.807692308,1\nclassify_svm,44,analcatdata_challenger_2,0.25,0.571428571,0.4375\nclassify_sgd,44,analcatdata_challenger_2,0,0.571428571,0\nclassify_pa,44,analcatdata_challenger_2,0.333333333,0.571428571,0.583333333\nclassify_mnb,44,analcatdata_challenger_2,0,0.571428571,0\nclassify_mlp,44,analcatdata_challenger_2,0.571428571,0.571428571,1\nclassify_logreg,44,analcatdata_challenger_2,0.25,0.571428571,0.4375\nclassify_knn,44,analcatdata_challenger_2,0,0.571428571,0\nclassify_gp,44,analcatdata_challenger_2,0,0.571428571,0\nclassify_gnb,44,analcatdata_challenger_2,0,0.571428571,0\nclassify_dt,44,analcatdata_challenger_2,0,0.571428571,0\nclassify_dbn,44,analcatdata_challenger_2,0,0.571428571,0\nclassify_svm,45,analcatdata_chlamydia_1,0.923076923,1,0.923076923\nclassify_sgd,45,analcatdata_chlamydia_1,0.727272727,1,0.727272727\nclassify_rf,45,analcatdata_chlamydia_1,0.923076923,1,0.923076923\nclassify_mlp,45,analcatdata_chlamydia_1,1,1,1\nclassify_logreg,45,analcatdata_chlamydia_1,0.736842105,1,0.736842105\nclassify_knn,45,analcatdata_chlamydia_1,0.833333333,1,0.833333333\nclassify_gp,45,analcatdata_chlamydia_1,0,1,0\nclassify_gnb,45,analcatdata_chlamydia_1,0.444444444,1,0.444444444\nclassify_et,45,analcatdata_chlamydia_1,0.25,1,0.25\nclassify_dt,45,analcatdata_chlamydia_1,1,1,1\nclassify_dbn,45,analcatdata_chlamydia_1,1,1,1\nclassify_bnb,45,analcatdata_chlamydia_1,0,1,0\nclassify_svm,46,analcatdata_creditscore_1,0.947368421,1,0.947368421\nclassify_sgd,46,analcatdata_creditscore_1,0.923076923,1,0.923076923\nclassify_rf,46,analcatdata_creditscore_1,1,1,1\nclassify_pa,46,analcatdata_creditscore_1,0.878048781,1,0.878048781\nclassify_mlp,46,analcatdata_creditscore_1,0.947368421,1,0.947368421\nclassify_logreg,46,analcatdata_creditscore_1,0.947368421,1,0.947368421\nclassify_knn,46,analcatdata_creditscore_1,0.904761905,1,0.904761905\nclassify_gp,46,analcatdata_creditscore_1,0.947368421,1,0.947368421\nclassify_gnb,46,analcatdata_creditscore_1,1,1,1\nclassify_et,46,analcatdata_creditscore_1,0.85106383,1,0.85106383\nclassify_dt,46,analcatdata_creditscore_1,1,1,1\nclassify_dbn,46,analcatdata_creditscore_1,0.9,1,0.9\nclassify_svm,47,analcatdata_cyyoung8092_1,0.814814815,0.814814815,1\nclassify_sgd,47,analcatdata_cyyoung8092_1,0.761904762,0.814814815,0.935064935\nclassify_rf,47,analcatdata_cyyoung8092_1,0.470588235,0.814814815,0.577540107\nclassify_pa,47,analcatdata_cyyoung8092_1,0.636363636,0.814814815,0.780991736\nclassify_mnb,47,analcatdata_cyyoung8092_1,0.769230769,0.814814815,0.944055944\nclassify_mlp,47,analcatdata_cyyoung8092_1,0.769230769,0.814814815,0.944055944\nclassify_logreg,47,analcatdata_cyyoung8092_1,0.6875,0.814814815,0.84375\nclassify_knn,47,analcatdata_cyyoung8092_1,0.285714286,0.814814815,0.350649351\nclassify_gp,47,analcatdata_cyyoung8092_1,0.6,0.814814815,0.736363636\nclassify_gnb,47,analcatdata_cyyoung8092_1,0.769230769,0.814814815,0.944055944\nclassify_et,47,analcatdata_cyyoung8092_1,0,0.814814815,0\nclassify_dt,47,analcatdata_cyyoung8092_1,0.470588235,0.814814815,0.577540107\nclassify_dbn,47,analcatdata_cyyoung8092_1,0.421052632,0.814814815,0.516746412\nclassify_svm,48,analcatdata_cyyoung9302_1,0.714285714,0.8,0.892857143\nclassify_sgd,48,analcatdata_cyyoung9302_1,0.8,0.8,1\nclassify_rf,48,analcatdata_cyyoung9302_1,0.363636364,0.8,0.454545455\nclassify_pa,48,analcatdata_cyyoung9302_1,0.2,0.8,0.25\nclassify_mnb,48,analcatdata_cyyoung9302_1,0.56,0.8,0.7\nclassify_mlp,48,analcatdata_cyyoung9302_1,0.8,0.8,1\nclassify_logreg,48,analcatdata_cyyoung9302_1,0.777777778,0.8,0.972222222\nclassify_knn,48,analcatdata_cyyoung9302_1,0.666666667,0.8,0.833333333\nclassify_gp,48,analcatdata_cyyoung9302_1,0.363636364,0.8,0.454545455\nclassify_gnb,48,analcatdata_cyyoung9302_1,0.56,0.8,0.7\nclassify_et,48,analcatdata_cyyoung9302_1,0.5,0.8,0.625\nclassify_dbn,48,analcatdata_cyyoung9302_1,0.615384615,0.8,0.769230769\nclassify_bnb,48,analcatdata_cyyoung9302_1,0.631578947,0.8,0.789473684\nclassify_svm,49,analcatdata_dmft_1,0.641269841,0.894613583,0.7168121\nclassify_sgd,49,analcatdata_dmft_1,0.894613583,0.894613583,1\nclassify_pa,49,analcatdata_dmft_1,0.888888889,0.894613583,0.993600931\nclassify_mlp,49,analcatdata_dmft_1,0.890951276,0.894613583,0.995906269\nclassify_logreg,49,analcatdata_dmft_1,0.74351585,0.894613583,0.831102796\nclassify_knn,49,analcatdata_dmft_1,0.888888889,0.894613583,0.993600931\nclassify_gp,49,analcatdata_dmft_1,0.888888889,0.894613583,0.993600931\nclassify_et,49,analcatdata_dmft_1,0.888888889,0.894613583,0.993600931\nclassify_dbn,49,analcatdata_dmft_1,0.888888889,0.894613583,0.993600931\nclassify_bnb,49,analcatdata_dmft_1,0.888888889,0.894613583,0.993600931\nclassify_svm,50,analcatdata_election2000_1,0.8,1,0.8\nclassify_sgd,50,analcatdata_election2000_1,0.857142857,1,0.857142857\nclassify_rf,50,analcatdata_election2000_1,0.888888889,1,0.888888889\nclassify_pa,50,analcatdata_election2000_1,0.8,1,0.8\nclassify_mlp,50,analcatdata_election2000_1,0.888888889,1,0.888888889\nclassify_logreg,50,analcatdata_election2000_1,1,1,1\nclassify_knn,50,analcatdata_election2000_1,0.75,1,0.75\nclassify_gp,50,analcatdata_election2000_1,0.666666667,1,0.666666667\nclassify_gnb,50,analcatdata_election2000_1,0.888888889,1,0.888888889\nclassify_et,50,analcatdata_election2000_1,0.75,1,0.75\nclassify_dt,50,analcatdata_election2000_1,0.888888889,1,0.888888889\nclassify_dbn,50,analcatdata_election2000_1,0,1,0\nclassify_bnb,50,analcatdata_election2000_1,0.4,1,0.4\nclassify_svm,51,analcatdata_germangss_1,0,0.823529412,0\nclassify_sgd,51,analcatdata_germangss_1,0.367346939,0.823529412,0.44606414\nclassify_pa,51,analcatdata_germangss_1,0.235294118,0.823529412,0.285714286\nclassify_mnb,51,analcatdata_germangss_1,0.390243902,0.823529412,0.473867596\nclassify_mlp,51,analcatdata_germangss_1,0.823529412,0.823529412,1\nclassify_logreg,51,analcatdata_germangss_1,0.5,0.823529412,0.607142857\nclassify_knn,51,analcatdata_germangss_1,0.488888889,0.823529412,0.593650794\nclassify_gp,51,analcatdata_germangss_1,0.512820513,0.823529412,0.622710623\nclassify_gnb,51,analcatdata_germangss_1,0.25,0.823529412,0.303571429\nclassify_et,51,analcatdata_germangss_1,0.714285714,0.823529412,0.867346939\nclassify_dt,51,analcatdata_germangss_1,0.285714286,0.823529412,0.346938775\nclassify_dbn,51,analcatdata_germangss_1,0.647887324,0.823529412,0.786720322\nclassify_bnb,51,analcatdata_germangss_1,0.456521739,0.823529412,0.554347826\nclassify_svm,53,analcatdata_gviolence_1,0.647058824,1,0.647058824\nclassify_sgd,53,analcatdata_gviolence_1,1,1,1\nclassify_rf,53,analcatdata_gviolence_1,1,1,1\nclassify_mlp,53,analcatdata_gviolence_1,1,1,1\nclassify_logreg,53,analcatdata_gviolence_1,1,1,1\nclassify_knn,53,analcatdata_gviolence_1,1,1,1\nclassify_gp,53,analcatdata_gviolence_1,0.727272727,1,0.727272727\nclassify_et,53,analcatdata_gviolence_1,1,1,1\nclassify_dt,53,analcatdata_gviolence_1,1,1,1\nclassify_dbn,53,analcatdata_gviolence_1,0.952380952,1,0.952380952\nclassify_bnb,53,analcatdata_gviolence_1,0.842105263,1,0.842105263\nclassify_svm,55,analcatdata_lawsuit_1,0.769230769,0.833333333,0.923076923\nclassify_sgd,55,analcatdata_lawsuit_1,0.769230769,0.833333333,0.923076923\nclassify_rf,55,analcatdata_lawsuit_1,0.8,0.833333333,0.96\nclassify_pa,55,analcatdata_lawsuit_1,0.727272727,0.833333333,0.872727273\nclassify_mnb,55,analcatdata_lawsuit_1,0.307692308,0.833333333,0.369230769\nclassify_mlp,55,analcatdata_lawsuit_1,0.833333333,0.833333333,1\nclassify_logreg,55,analcatdata_lawsuit_1,0.243902439,0.833333333,0.292682927\nclassify_knn,55,analcatdata_lawsuit_1,0.8,0.833333333,0.96\nclassify_gp,55,analcatdata_lawsuit_1,0.285714286,0.833333333,0.342857143\nclassify_gnb,55,analcatdata_lawsuit_1,0.714285714,0.833333333,0.857142857\nclassify_et,55,analcatdata_lawsuit_1,0.727272727,0.833333333,0.872727273\nclassify_dt,55,analcatdata_lawsuit_1,0,0.833333333,0\nclassify_dbn,55,analcatdata_lawsuit_1,0.769230769,0.833333333,0.923076923\nclassify_svm,56,analcatdata_michiganacc_1,0.64,0.75,0.853333333\nclassify_sgd,56,analcatdata_michiganacc_1,0.695652174,0.75,0.927536232\nclassify_pa,56,analcatdata_michiganacc_1,0.72,0.75,0.96\nclassify_mnb,56,analcatdata_michiganacc_1,0.444444444,0.75,0.592592593\nclassify_mlp,56,analcatdata_michiganacc_1,0.714285714,0.75,0.952380952\nclassify_logreg,56,analcatdata_michiganacc_1,0.740740741,0.75,0.987654321\nclassify_knn,56,analcatdata_michiganacc_1,0.75,0.75,1\nclassify_gp,56,analcatdata_michiganacc_1,0.695652174,0.75,0.927536232\nclassify_et,56,analcatdata_michiganacc_1,0.636363636,0.75,0.848484849\nclassify_dt,56,analcatdata_michiganacc_1,0.518518519,0.75,0.691358025\nclassify_dbn,56,analcatdata_michiganacc_1,0.695652174,0.75,0.927536232\nclassify_svm,57,analcatdata_neavote_1,0.55,0.983050848,0.559482759\nclassify_sgd,57,analcatdata_neavote_1,0.983050848,0.983050848,1\nclassify_rf,57,analcatdata_neavote_1,0.983050848,0.983050848,1\nclassify_pa,57,analcatdata_neavote_1,0.55,0.983050848,0.559482759\nclassify_mnb,57,analcatdata_neavote_1,0.983050848,0.983050848,1\nclassify_mlp,57,analcatdata_neavote_1,0.983050848,0.983050848,1\nclassify_logreg,57,analcatdata_neavote_1,0.983050848,0.983050848,1\nclassify_knn,57,analcatdata_neavote_1,0.983050848,0.983050848,1\nclassify_gp,57,analcatdata_neavote_1,0.983050848,0.983050848,1\nclassify_et,57,analcatdata_neavote_1,0.983050848,0.983050848,1\nclassify_dt,57,analcatdata_neavote_1,0.983050848,0.983050848,1\nclassify_dbn,57,analcatdata_neavote_1,0.983050848,0.983050848,1\nclassify_bnb,57,analcatdata_neavote_1,0.55,0.983050848,0.559482759\nclassify_svm,58,analcatdata_olympic2000_1,0.1,1,0.1\nclassify_sgd,58,analcatdata_olympic2000_1,0.941176471,1,0.941176471\nclassify_rf,58,analcatdata_olympic2000_1,1,1,1\nclassify_pa,58,analcatdata_olympic2000_1,0.941176471,1,0.941176471\nclassify_mnb,58,analcatdata_olympic2000_1,0.6,1,0.6\nclassify_mlp,58,analcatdata_olympic2000_1,0.941176471,1,0.941176471\nclassify_logreg,58,analcatdata_olympic2000_1,0.666666667,1,0.666666667\nclassify_knn,58,analcatdata_olympic2000_1,0.933333333,1,0.933333333\nclassify_gp,58,analcatdata_olympic2000_1,0.666666667,1,0.666666667\nclassify_gnb,58,analcatdata_olympic2000_1,0.857142857,1,0.857142857\nclassify_et,58,analcatdata_olympic2000_1,0.933333333,1,0.933333333\nclassify_dbn,58,analcatdata_olympic2000_1,0.857142857,1,0.857142857\nclassify_svm,59,analcatdata_seropositive_1,1,1,1\nclassify_sgd,59,analcatdata_seropositive_1,1,1,1\nclassify_rf,59,analcatdata_seropositive_1,1,1,1\nclassify_pa,59,analcatdata_seropositive_1,1,1,1\nclassify_mlp,59,analcatdata_seropositive_1,1,1,1\nclassify_logreg,59,analcatdata_seropositive_1,1,1,1\nclassify_knn,59,analcatdata_seropositive_1,1,1,1\nclassify_gp,59,analcatdata_seropositive_1,0.923076923,1,0.923076923\nclassify_gnb,59,analcatdata_seropositive_1,0.962962963,1,0.962962963\nclassify_dt,59,analcatdata_seropositive_1,0.928571429,1,0.928571429\nclassify_dbn,59,analcatdata_seropositive_1,1,1,1\nclassify_bnb,59,analcatdata_seropositive_1,0.833333333,1,0.833333333\nclassify_svm,60,analcatdata_supreme_1,0.803571429,0.997292907,0.805752676\nclassify_sgd,60,analcatdata_supreme_1,0.990795885,0.997292907,0.993485342\nclassify_rf,60,analcatdata_supreme_1,0.997292907,0.997292907,1\nclassify_pa,60,analcatdata_supreme_1,0.981798125,0.997292907,0.984463158\nclassify_mnb,60,analcatdata_supreme_1,0.811320755,0.997292907,0.813523037\nclassify_mlp,60,analcatdata_supreme_1,0.994565217,0.997292907,0.997264906\nclassify_logreg,60,analcatdata_supreme_1,0.875609756,0.997292907,0.877986547\nclassify_knn,60,analcatdata_supreme_1,0.991869919,0.997292907,0.994562291\nclassify_et,60,analcatdata_supreme_1,0.997292907,0.997292907,1\nclassify_dbn,60,analcatdata_supreme_1,0.995656895,0.997292907,0.998359546\nclassify_bnb,60,analcatdata_supreme_1,0.862068966,0.997292907,0.864409001\nclassify_svm,61,analcatdata_vehicle_1,0.6,1,0.6\nclassify_sgd,61,analcatdata_vehicle_1,1,1,1\nclassify_rf,61,analcatdata_vehicle_1,0.75,1,0.75\nclassify_pa,61,analcatdata_vehicle_1,0.6,1,0.6\nclassify_mnb,61,analcatdata_vehicle_1,0.666666667,1,0.666666667\nclassify_mlp,61,analcatdata_vehicle_1,0.75,1,0.75\nclassify_logreg,61,analcatdata_vehicle_1,0.6,1,0.6\nclassify_knn,61,analcatdata_vehicle_1,0.75,1,0.75\nclassify_gp,61,analcatdata_vehicle_1,0.6,1,0.6\nclassify_et,61,analcatdata_vehicle_1,0.75,1,0.75\nclassify_bnb,61,analcatdata_vehicle_1,0.6,1,0.6\nclassify_svm,62,analcatdata_vineyard_1,0.676056338,0.863309353,0.783098592\nclassify_sgd,62,analcatdata_vineyard_1,0.676056338,0.863309353,0.783098592\nclassify_rf,62,analcatdata_vineyard_1,0.704918033,0.863309353,0.816530055\nclassify_pa,62,analcatdata_vineyard_1,0.144578313,0.863309353,0.16746988\nclassify_mnb,62,analcatdata_vineyard_1,0.054054054,0.863309353,0.062612613\nclassify_mlp,62,analcatdata_vineyard_1,0.863309353,0.863309353,1\nclassify_logreg,62,analcatdata_vineyard_1,0.545454545,0.863309353,0.631818182\nclassify_knn,62,analcatdata_vineyard_1,0.838235294,0.863309353,0.970955882\nclassify_gp,62,analcatdata_vineyard_1,0.578947368,0.863309353,0.670614035\nclassify_et,62,analcatdata_vineyard_1,0.524271845,0.863309353,0.607281553\nclassify_dt,62,analcatdata_vineyard_1,0.571428571,0.863309353,0.661904762\nclassify_dbn,62,analcatdata_vineyard_1,0.67768595,0.863309353,0.784986226\nclassify_bnb,62,analcatdata_vineyard_1,0.606060606,0.863309353,0.702020202\nclassify_svm,63,analcatdata_wildcat_1,0.780487805,0.780487805,1\nclassify_sgd,63,analcatdata_wildcat_1,0.76,0.780487805,0.97375\nclassify_rf,63,analcatdata_wildcat_1,0.5625,0.780487805,0.720703125\nclassify_pa,63,analcatdata_wildcat_1,0.4,0.780487805,0.5125\nclassify_mlp,63,analcatdata_wildcat_1,0.75,0.780487805,0.9609375\nclassify_logreg,63,analcatdata_wildcat_1,0.666666667,0.780487805,0.854166667\nclassify_knn,63,analcatdata_wildcat_1,0.5,0.780487805,0.640625\nclassify_gp,63,analcatdata_wildcat_1,0.580645161,0.780487805,0.743951613\nclassify_gnb,63,analcatdata_wildcat_1,0.769230769,0.780487805,0.985576923\nclassify_et,63,analcatdata_wildcat_1,0.4,0.780487805,0.5125\nclassify_dt,63,analcatdata_wildcat_1,0.5625,0.780487805,0.720703125\nclassify_dbn,63,analcatdata_wildcat_1,0.484848485,0.780487805,0.621212121\nclassify_svm,64,ar1_1,0.4,0.4,1\nclassify_sgd,64,ar1_1,0.222222222,0.4,0.555555555\nclassify_pa,64,ar1_1,0,0.4,0\nclassify_mnb,64,ar1_1,0.4,0.4,1\nclassify_mlp,64,ar1_1,0.333333333,0.4,0.833333333\nclassify_logreg,64,ar1_1,0.375,0.4,0.9375\nclassify_knn,64,ar1_1,0.4,0.4,1\nclassify_gp,64,ar1_1,0,0.4,0\nclassify_gnb,64,ar1_1,0.25,0.4,0.625\nclassify_et,64,ar1_1,0,0.4,0\nclassify_dt,64,ar1_1,0.25,0.4,0.625\nclassify_dbn,64,ar1_1,0,0.4,0\nclassify_bnb,64,ar1_1,0.333333333,0.4,0.833333333\nclassify_svm,65,ar3_1,0.8,1,0.8\nclassify_sgd,65,ar3_1,0.8,1,0.8\nclassify_rf,65,ar3_1,0.666666667,1,0.666666667\nclassify_pa,65,ar3_1,0.333333333,1,0.333333333\nclassify_mnb,65,ar3_1,0.444444444,1,0.444444444\nclassify_mlp,65,ar3_1,1,1,1\nclassify_logreg,65,ar3_1,0.444444444,1,0.444444444\nclassify_knn,65,ar3_1,1,1,1\nclassify_gp,65,ar3_1,0.666666667,1,0.666666667\nclassify_et,65,ar3_1,0.666666667,1,0.666666667\nclassify_dbn,65,ar3_1,0.666666667,1,0.666666667\nclassify_svm,66,ar4_1,0.4,0.588235294,0.68\nclassify_sgd,66,ar4_1,0.571428571,0.588235294,0.971428571\nclassify_rf,66,ar4_1,0.4,0.588235294,0.68\nclassify_mnb,66,ar4_1,0,0.588235294,0\nclassify_mlp,66,ar4_1,0.571428571,0.588235294,0.971428571\nclassify_logreg,66,ar4_1,0.588235294,0.588235294,1\nclassify_knn,66,ar4_1,0.222222222,0.588235294,0.377777778\nclassify_gp,66,ar4_1,0,0.588235294,0\nclassify_et,66,ar4_1,0.222222222,0.588235294,0.377777778\nclassify_dt,66,ar4_1,0.285714286,0.588235294,0.485714286\nclassify_dbn,66,ar4_1,0.428571429,0.588235294,0.728571429\nclassify_bnb,66,ar4_1,0.285714286,0.588235294,0.485714286\nclassify_svm,67,ar5_1,0.5,0.666666667,0.75\nclassify_sgd,67,ar5_1,0.666666667,0.666666667,1\nclassify_rf,67,ar5_1,0.666666667,0.666666667,1\nclassify_pa,67,ar5_1,0.4,0.666666667,0.6\nclassify_mnb,67,ar5_1,0.5,0.666666667,0.75\nclassify_mlp,67,ar5_1,0.666666667,0.666666667,1\nclassify_logreg,67,ar5_1,0.333333333,0.666666667,0.5\nclassify_knn,67,ar5_1,0.666666667,0.666666667,1\nclassify_gp,67,ar5_1,0.666666667,0.666666667,1\nclassify_gnb,67,ar5_1,0.5,0.666666667,0.75\nclassify_et,67,ar5_1,0.666666667,0.666666667,1\nclassify_dt,67,ar5_1,0.5,0.666666667,0.75\nclassify_svm,68,ar6_1,0,0.666666667,0\nclassify_sgd,68,ar6_1,0.666666667,0.666666667,1\nclassify_pa,68,ar6_1,0.4,0.666666667,0.6\nclassify_mnb,68,ar6_1,0.285714286,0.666666667,0.428571429\nclassify_mlp,68,ar6_1,0.666666667,0.666666667,1\nclassify_logreg,68,ar6_1,0.333333333,0.666666667,0.5\nclassify_knn,68,ar6_1,0.444444444,0.666666667,0.666666667\nclassify_gp,68,ar6_1,0,0.666666667,0\nclassify_et,68,ar6_1,0.25,0.666666667,0.375\nclassify_dt,68,ar6_1,0.181818182,0.666666667,0.272727273\nclassify_dbn,68,ar6_1,0.5,0.666666667,0.75\nclassify_bnb,68,ar6_1,0.352941177,0.666666667,0.529411765\nclassify_svm,69,arcene_1,0.852459016,0.852459016,1\nclassify_sgd,69,arcene_1,0.84375,0.852459016,0.989783654\nclassify_rf,69,arcene_1,0.8,0.852459016,0.938461538\nclassify_pa,69,arcene_1,0.833333333,0.852459016,0.977564103\nclassify_mnb,69,arcene_1,0.655737705,0.852459016,0.769230769\nclassify_mlp,69,arcene_1,0.852459016,0.852459016,1\nclassify_logreg,69,arcene_1,0.813559322,0.852459016,0.954367666\nclassify_knn,69,arcene_1,0.830769231,0.852459016,0.974556213\nclassify_gp,69,arcene_1,0.771428571,0.852459016,0.904945055\nclassify_et,69,arcene_1,0.75,0.852459016,0.879807692\nclassify_dt,69,arcene_1,0.696969697,0.852459016,0.817599068\nclassify_dbn,69,arcene_1,0.681318681,0.852459016,0.799239222\nclassify_svm,70,arsenic-female-bladder_1,0,0.466666667,0\nclassify_sgd,70,arsenic-female-bladder_1,0.405063291,0.466666667,0.867992767\nclassify_rf,70,arsenic-female-bladder_1,0.285714286,0.466666667,0.612244898\nclassify_pa,70,arsenic-female-bladder_1,0.466666667,0.466666667,1\nclassify_mnb,70,arsenic-female-bladder_1,0.285714286,0.466666667,0.612244898\nclassify_mlp,70,arsenic-female-bladder_1,0.350877193,0.466666667,0.751879699\nclassify_logreg,70,arsenic-female-bladder_1,0.363636364,0.466666667,0.779220779\nclassify_knn,70,arsenic-female-bladder_1,0.230769231,0.466666667,0.494505495\nclassify_gp,70,arsenic-female-bladder_1,0,0.466666667,0\nclassify_gnb,70,arsenic-female-bladder_1,0.2,0.466666667,0.428571429\nclassify_et,70,arsenic-female-bladder_1,0.2,0.466666667,0.428571429\nclassify_dt,70,arsenic-female-bladder_1,0.341463415,0.466666667,0.731707317\nclassify_dbn,70,arsenic-female-bladder_1,0.2,0.466666667,0.428571429\nclassify_svm,71,arsenic-female-lung_1,0,0.666666667,0\nclassify_sgd,71,arsenic-female-lung_1,0.545454545,0.666666667,0.818181818\nclassify_rf,71,arsenic-female-lung_1,0.545454545,0.666666667,0.818181818\nclassify_pa,71,arsenic-female-lung_1,0.545454545,0.666666667,0.818181818\nclassify_mnb,71,arsenic-female-lung_1,0.4,0.666666667,0.6\nclassify_mlp,71,arsenic-female-lung_1,0.545454545,0.666666667,0.818181818\nclassify_logreg,71,arsenic-female-lung_1,0.142857143,0.666666667,0.214285714\nclassify_knn,71,arsenic-female-lung_1,0.545454545,0.666666667,0.818181818\nclassify_gp,71,arsenic-female-lung_1,0.545454545,0.666666667,0.818181818\nclassify_gnb,71,arsenic-female-lung_1,0.545454545,0.666666667,0.818181818\nclassify_et,71,arsenic-female-lung_1,0.4,0.666666667,0.6\nclassify_dt,71,arsenic-female-lung_1,0.666666667,0.666666667,1\nclassify_dbn,71,arsenic-female-lung_1,0.545454545,0.666666667,0.818181818\nclassify_bnb,71,arsenic-female-lung_1,0.545454545,0.666666667,0.818181818\nclassify_svm,72,arsenic-male-bladder_1,0,0.714285714,0\nclassify_sgd,72,arsenic-male-bladder_1,0.714285714,0.714285714,1\nclassify_rf,72,arsenic-male-bladder_1,0.714285714,0.714285714,1\nclassify_mnb,72,arsenic-male-bladder_1,0.434782609,0.714285714,0.608695652\nclassify_mlp,72,arsenic-male-bladder_1,0.714285714,0.714285714,1\nclassify_logreg,72,arsenic-male-bladder_1,0.615384615,0.714285714,0.861538462\nclassify_knn,72,arsenic-male-bladder_1,0.666666667,0.714285714,0.933333333\nclassify_gp,72,arsenic-male-bladder_1,0.615384615,0.714285714,0.861538462\nclassify_gnb,72,arsenic-male-bladder_1,0.714285714,0.714285714,1\nclassify_et,72,arsenic-male-bladder_1,0.5,0.714285714,0.7\nclassify_dt,72,arsenic-male-bladder_1,0.625,0.714285714,0.875\nclassify_dbn,72,arsenic-male-bladder_1,0.714285714,0.714285714,1\nclassify_bnb,72,arsenic-male-bladder_1,0.615384615,0.714285714,0.861538462\nclassify_svm,73,arsenic-male-lung_1,0.090909091,1,0.090909091\nclassify_sgd,73,arsenic-male-lung_1,0.933333333,1,0.933333333\nclassify_rf,73,arsenic-male-lung_1,1,1,1\nclassify_pa,73,arsenic-male-lung_1,0.933333333,1,0.933333333\nclassify_mlp,73,arsenic-male-lung_1,1,1,1\nclassify_logreg,73,arsenic-male-lung_1,1,1,1\nclassify_knn,73,arsenic-male-lung_1,0.933333333,1,0.933333333\nclassify_gp,73,arsenic-male-lung_1,0.933333333,1,0.933333333\nclassify_gnb,73,arsenic-male-lung_1,1,1,1\nclassify_et,73,arsenic-male-lung_1,0.933333333,1,0.933333333\nclassify_dt,73,arsenic-male-lung_1,1,1,1\nclassify_dbn,73,arsenic-male-lung_1,0.933333333,1,0.933333333\nclassify_bnb,73,arsenic-male-lung_1,0.933333333,1,0.933333333\nclassify_svm,74,autoPrice_1,0.944444444,1,0.944444444\nclassify_sgd,74,autoPrice_1,1,1,1\nclassify_rf,74,autoPrice_1,0.972972973,1,0.972972973\nclassify_pa,74,autoPrice_1,0.947368421,1,0.947368421\nclassify_mlp,74,autoPrice_1,1,1,1\nclassify_logreg,74,autoPrice_1,0.878048781,1,0.878048781\nclassify_knn,74,autoPrice_1,0.944444444,1,0.944444444\nclassify_gp,74,autoPrice_1,0.941176471,1,0.941176471\nclassify_et,74,autoPrice_1,0.941176471,1,0.941176471\nclassify_dt,74,autoPrice_1,0.972972973,1,0.972972973\nclassify_dbn,74,autoPrice_1,0.972972973,1,0.972972973\nclassify_svm,75,autoUniv-au1-1000_1,0.828125,0.844897959,0.980147947\nclassify_sgd,75,autoUniv-au1-1000_1,0.829568788,0.844897959,0.981856779\nclassify_pa,75,autoUniv-au1-1000_1,0.822134387,0.844897959,0.973057608\nclassify_mnb,75,autoUniv-au1-1000_1,0.76092545,0.844897959,0.900612247\nclassify_mlp,75,autoUniv-au1-1000_1,0.830578512,0.844897959,0.983051862\nclassify_logreg,75,autoUniv-au1-1000_1,0.55801105,0.844897959,0.660447861\nclassify_knn,75,autoUniv-au1-1000_1,0.844897959,0.844897959,1\nclassify_gp,75,autoUniv-au1-1000_1,0.828125,0.844897959,0.980147947\nclassify_gnb,75,autoUniv-au1-1000_1,0.82231405,0.844897959,0.973270252\nclassify_et,75,autoUniv-au1-1000_1,0.828125,0.844897959,0.980147947\nclassify_dt,75,autoUniv-au1-1000_1,0.818897638,0.844897959,0.969226673\nclassify_dbn,75,autoUniv-au1-1000_1,0.833333333,0.844897959,0.986312399\nclassify_bnb,75,autoUniv-au1-1000_1,0.816,0.844897959,0.965797101\nclassify_svm,76,autoUniv-au4-2500_1,0.093287461,0.203496349,0.458423266\nclassify_sgd,76,autoUniv-au4-2500_1,0.182320387,0.203496349,0.895939347\nclassify_pa,76,autoUniv-au4-2500_1,0.155941365,0.203496349,0.766310379\nclassify_mlp,76,autoUniv-au4-2500_1,0.186612541,0.203496349,0.917031396\nclassify_logreg,76,autoUniv-au4-2500_1,0.203496349,0.203496349,1\nclassify_knn,76,autoUniv-au4-2500_1,0.124040639,0.203496349,0.609547244\nclassify_gp,76,autoUniv-au4-2500_1,-0.017904493,0.203496349,-0.087984345\nclassify_dt,76,autoUniv-au4-2500_1,0.130005178,0.203496349,0.638857546\nclassify_dbn,76,autoUniv-au4-2500_1,0.14227015,0.203496349,0.699128757\nclassify_bnb,76,autoUniv-au4-2500_1,0.160753881,0.203496349,0.789959531\nclassify_svm,77,autoUniv-au7-700_1,0.276856324,0.407316672,0.679707812\nclassify_sgd,77,autoUniv-au7-700_1,0.344708971,0.407316672,0.84629232\nclassify_pa,77,autoUniv-au7-700_1,0.312857805,0.407316672,0.768094769\nclassify_mlp,77,autoUniv-au7-700_1,0.407316672,0.407316672,1\nclassify_logreg,77,autoUniv-au7-700_1,0.337953704,0.407316672,0.829707517\nclassify_knn,77,autoUniv-au7-700_1,0.397696919,0.407316672,0.976382619\nclassify_gp,77,autoUniv-au7-700_1,0.301032017,0.407316672,0.73906137\nclassify_gnb,77,autoUniv-au7-700_1,0.323466753,0.407316672,0.794140717\nclassify_dt,77,autoUniv-au7-700_1,0.23864418,0.407316672,0.585893476\nclassify_dbn,77,autoUniv-au7-700_1,0.380400867,0.407316672,0.933919217\nclassify_bnb,77,autoUniv-au7-700_1,0.286740586,0.407316672,0.703974587\nclassify_svm,78,auto_price_1,0.933333333,1,0.933333333\nclassify_sgd,78,auto_price_1,1,1,1\nclassify_pa,78,auto_price_1,0.933333333,1,0.933333333\nclassify_mlp,78,auto_price_1,0.967741936,1,0.967741936\nclassify_logreg,78,auto_price_1,0.933333333,1,0.933333333\nclassify_knn,78,auto_price_1,0.928571429,1,0.928571429\nclassify_gp,78,auto_price_1,0.888888889,1,0.888888889\nclassify_gnb,78,auto_price_1,0.903225807,1,0.903225807\nclassify_dt,78,auto_price_1,0.933333333,1,0.933333333\nclassify_dbn,78,auto_price_1,0.933333333,1,0.933333333\nclassify_bnb,78,auto_price_1,0.814814815,1,0.814814815\nclassify_svm,79,backache_1,0.4,0.571428571,0.7\nclassify_sgd,79,backache_1,0.571428571,0.571428571,1\nclassify_rf,79,backache_1,0,0.571428571,0\nclassify_pa,79,backache_1,0.375,0.571428571,0.65625\nclassify_mlp,79,backache_1,0.4,0.571428571,0.7\nclassify_logreg,79,backache_1,0.294117647,0.571428571,0.514705882\nclassify_knn,79,backache_1,0.285714286,0.571428571,0.5\nclassify_gp,79,backache_1,0,0.571428571,0\nclassify_et,79,backache_1,0,0.571428571,0\nclassify_dt,79,backache_1,0,0.571428571,0\nclassify_dbn,79,backache_1,0.25,0.571428571,0.4375\nclassify_bnb,79,backache_1,0.352941177,0.571428571,0.617647059\nclassify_svm,80,badges2_1,1,1,1\nclassify_sgd,80,badges2_1,1,1,1\nclassify_rf,80,badges2_1,0.941176471,1,0.941176471\nclassify_mlp,80,badges2_1,1,1,1\nclassify_logreg,80,badges2_1,1,1,1\nclassify_knn,80,badges2_1,1,1,1\nclassify_gp,80,badges2_1,0.934306569,1,0.934306569\nclassify_gnb,80,badges2_1,1,1,1\nclassify_et,80,badges2_1,1,1,1\nclassify_dt,80,badges2_1,1,1,1\nclassify_dbn,80,badges2_1,1,1,1\nclassify_bnb,80,badges2_1,1,1,1\nclassify_svm,81,balance-scale_1,0.974773027,0.974773027,1\nclassify_sgd,81,balance-scale_1,0.523139931,0.974773027,0.53667871\nclassify_rf,81,balance-scale_1,0.174765992,0.974773027,0.179288908\nclassify_pa,81,balance-scale_1,0.433812158,0.974773027,0.445039149\nclassify_mlp,81,balance-scale_1,0.947419293,0.974773027,0.971938356\nclassify_logreg,81,balance-scale_1,0.483283886,0.974773027,0.495791197\nclassify_knn,81,balance-scale_1,0.182237075,0.974773027,0.186953342\nclassify_gp,81,balance-scale_1,0.183297707,0.974773027,0.188041423\nclassify_gnb,81,balance-scale_1,0.181178513,0.974773027,0.185867385\nclassify_et,81,balance-scale_1,0.180213489,0.974773027,0.184877386\nclassify_dbn,81,balance-scale_1,0.902679428,0.974773027,0.926040629\nclassify_bnb,81,balance-scale_1,0.1089822,0.974773027,0.111802642\nclassify_svm,82,balance-scale_2,0,1,0\nclassify_sgd,82,balance-scale_2,0.956937799,1,0.956937799\nclassify_rf,82,balance-scale_2,0.890995261,1,0.890995261\nclassify_pa,82,balance-scale_2,0.956937799,1,0.956937799\nclassify_mlp,82,balance-scale_2,1,1,1\nclassify_logreg,82,balance-scale_2,0.900473934,1,0.900473934\nclassify_knn,82,balance-scale_2,0.965853658,1,0.965853658\nclassify_gp,82,balance-scale_2,0.980392157,1,0.980392157\nclassify_gnb,82,balance-scale_2,0.956937799,1,0.956937799\nclassify_et,82,balance-scale_2,0.957746479,1,0.957746479\nclassify_dt,82,balance-scale_2,0.797979798,1,0.797979798\nclassify_dbn,82,balance-scale_2,0.990196078,1,0.990196078\nclassify_bnb,82,balance-scale_2,0.788381743,1,0.788381743\nclassify_svm,83,balloon_1,0.877057115,0.908141962,0.965770938\nclassify_sgd,83,balloon_1,0.908141962,0.908141962,1\nclassify_rf,83,balloon_1,0.901840491,0.908141962,0.993061138\nclassify_pa,83,balloon_1,0.866141732,0.908141962,0.953751471\nclassify_mnb,83,balloon_1,0,0.908141962,0\nclassify_mlp,83,balloon_1,0.908141962,0.908141962,1\nclassify_logreg,83,balloon_1,0.816625917,0.908141962,0.899227159\nclassify_knn,83,balloon_1,0.901840491,0.908141962,0.993061138\nclassify_gp,83,balloon_1,0.908141962,0.908141962,1\nclassify_gnb,83,balloon_1,0.908141962,0.908141962,1\nclassify_et,83,balloon_1,0.901840491,0.908141962,0.993061138\nclassify_dt,83,balloon_1,0.901840491,0.908141962,0.993061138\nclassify_dbn,83,balloon_1,0.908141962,0.908141962,1\nclassify_svm,84,banana_1,0.619192358,0.892395983,0.693853816\nclassify_sgd,84,banana_1,0.619192358,0.892395983,0.693853816\nclassify_rf,84,banana_1,0.851282051,0.892395983,0.953928601\nclassify_pa,84,banana_1,0.141367323,0.892395983,0.158413222\nclassify_mlp,84,banana_1,0.88936474,0.892395983,0.996603253\nclassify_logreg,84,banana_1,0.551413882,0.892395983,0.617902694\nclassify_knn,84,banana_1,0.892395983,0.892395983,1\nclassify_gnb,84,banana_1,0.434463795,0.892395983,0.486850908\nclassify_et,84,banana_1,0.737024222,0.892395983,0.825893702\nclassify_dt,84,banana_1,0.854862119,0.892395983,0.957940349\nclassify_dbn,84,banana_1,0.88583815,0.892395983,0.992651432\nclassify_bnb,84,banana_1,0.633695652,0.892395983,0.7101059\nclassify_svm,85,bank-marketing_1,0.487179487,0.505535055,0.96369081\nclassify_sgd,85,bank-marketing_1,0.42074928,0.505535055,0.832285071\nclassify_rf,85,bank-marketing_1,0,0.505535055,0\nclassify_pa,85,bank-marketing_1,0.185365854,0.505535055,0.366672601\nclassify_mlp,85,bank-marketing_1,0.475903615,0.505535055,0.941385982\nclassify_logreg,85,bank-marketing_1,0.505535055,0.505535055,1\nclassify_knn,85,bank-marketing_1,0.384858044,0.505535055,0.76128854\nclassify_gp,85,bank-marketing_1,0.100917431,0.505535055,0.199624992\nclassify_gnb,85,bank-marketing_1,0.366047745,0.505535055,0.724079847\nclassify_et,85,bank-marketing_1,0,0.505535055,0\nclassify_dt,85,bank-marketing_1,0.410447761,0.505535055,0.811907615\nclassify_dbn,85,bank-marketing_1,0.312236287,0.505535055,0.617635283\nclassify_bnb,85,bank-marketing_1,0.261261261,0.505535055,0.516801473\nclassify_svm,86,bank-marketing_2,0,0.48766933,0\nclassify_sgd,86,bank-marketing_2,0.479087453,0.48766933,0.982402262\nclassify_rf,86,bank-marketing_2,0.003858521,0.48766933,0.007912166\nclassify_pa,86,bank-marketing_2,0.300940439,0.48766933,0.617099376\nclassify_mlp,86,bank-marketing_2,0.48766933,0.48766933,1\nclassify_logreg,86,bank-marketing_2,0.483627204,0.48766933,0.991711339\nclassify_knn,86,bank-marketing_2,0.427522227,0.48766933,0.876664167\nclassify_et,86,bank-marketing_2,0.014057508,0.48766933,0.028825901\nclassify_dt,86,bank-marketing_2,0.293421675,0.48766933,0.601681626\nclassify_dbn,86,bank-marketing_2,0.474539545,0.48766933,0.97307646\nclassify_bnb,86,bank-marketing_2,0.260421546,0.48766933,0.534012557\nclassify_svm,87,bank32nh_1,0.623926732,0.722002635,0.864161294\nclassify_sgd,87,bank32nh_1,0.697977821,0.722002635,0.966724756\nclassify_rf,87,bank32nh_1,0.618238022,0.722002635,0.856282223\nclassify_pa,87,bank32nh_1,0.623728814,0.722002635,0.863887171\nclassify_mlp,87,bank32nh_1,0.722002635,0.722002635,1\nclassify_logreg,87,bank32nh_1,0,0.722002635,0\nclassify_knn,87,bank32nh_1,0.446414182,0.722002635,0.618299935\nclassify_gnb,87,bank32nh_1,0.627692308,0.722002635,0.869376755\nclassify_et,87,bank32nh_1,0.268348624,0.722002635,0.371672638\nclassify_dt,87,bank32nh_1,0.608817355,0.722002635,0.843234256\nclassify_dbn,87,bank32nh_1,0.691758598,0.722002635,0.958110905\nclassify_bnb,87,bank32nh_1,0.558028617,0.722002635,0.77289\nclassify_svm,88,bank8FM_1,0.903092783,0.93556836,0.965287863\nclassify_sgd,88,bank8FM_1,0.918890633,0.93556836,0.982173695\nclassify_rf,88,bank8FM_1,0.875518672,0.93556836,0.935814751\nclassify_pa,88,bank8FM_1,0.894358974,0.93556836,0.955952566\nclassify_mlp,88,bank8FM_1,0.93556836,0.93556836,1\nclassify_logreg,88,bank8FM_1,0.92875715,0.93556836,0.992719709\nclassify_knn,88,bank8FM_1,0.859250851,0.93556836,0.918426582\nclassify_gnb,88,bank8FM_1,0.866344605,0.93556836,0.926008876\nclassify_et,88,bank8FM_1,0.889259878,0.93556836,0.950502299\nclassify_dbn,88,bank8FM_1,0.932432432,0.93556836,0.996648104\nclassify_bnb,88,bank8FM_1,0.758961681,0.93556836,0.811230599\nclassify_svm,89,banknote-authentication_1,0.98714653,1,0.98714653\nclassify_sgd,89,banknote-authentication_1,0.960422164,1,0.960422164\nclassify_rf,89,banknote-authentication_1,0.935828877,1,0.935828877\nclassify_pa,89,banknote-authentication_1,0.994764398,1,0.994764398\nclassify_mlp,89,banknote-authentication_1,1,1,1\nclassify_logreg,89,banknote-authentication_1,0.96969697,1,0.96969697\nclassify_knn,89,banknote-authentication_1,1,1,1\nclassify_gp,89,banknote-authentication_1,0.994818653,1,0.994818653\nclassify_gnb,89,banknote-authentication_1,0.795518207,1,0.795518207\nclassify_et,89,banknote-authentication_1,0.974093264,1,0.974093264\nclassify_dt,89,banknote-authentication_1,0.96875,1,0.96875\nclassify_dbn,89,banknote-authentication_1,1,1,1\nclassify_svm,90,baskball_1,0.25,0.838709677,0.298076923\nclassify_sgd,90,baskball_1,0.8,0.838709677,0.953846154\nclassify_rf,90,baskball_1,0.727272727,0.838709677,0.867132867\nclassify_pa,90,baskball_1,0.838709677,0.838709677,1\nclassify_mnb,90,baskball_1,0.827586207,0.838709677,0.986737401\nclassify_mlp,90,baskball_1,0.8,0.838709677,0.953846154\nclassify_logreg,90,baskball_1,0.740740741,0.838709677,0.883190883\nclassify_knn,90,baskball_1,0.709677419,0.838709677,0.846153846\nclassify_gp,90,baskball_1,0.740740741,0.838709677,0.883190883\nclassify_dbn,90,baskball_1,0.692307692,0.838709677,0.825443787\nclassify_bnb,90,baskball_1,0.592592593,0.838709677,0.706552707\nclassify_svm,91,blogger_1,0.684210526,0.80952381,0.845201238\nclassify_sgd,91,blogger_1,0.775510204,0.80952381,0.957983193\nclassify_rf,91,blogger_1,0.727272727,0.80952381,0.898395722\nclassify_pa,91,blogger_1,0.615384615,0.80952381,0.760180996\nclassify_mlp,91,blogger_1,0.8,0.80952381,0.988235294\nclassify_logreg,91,blogger_1,0.578947368,0.80952381,0.715170279\nclassify_knn,91,blogger_1,0.80952381,0.80952381,1\nclassify_gp,91,blogger_1,0.782608696,0.80952381,0.966751918\nclassify_gnb,91,blogger_1,0.634146341,0.80952381,0.783357245\nclassify_et,91,blogger_1,0.769230769,0.80952381,0.950226244\nclassify_dt,91,blogger_1,0.75,0.80952381,0.926470588\nclassify_dbn,91,blogger_1,0.775510204,0.80952381,0.957983193\nclassify_svm,92,blood-transfusion-service-center_1,0.47133758,0.58974359,0.799224592\nclassify_sgd,92,blood-transfusion-service-center_1,0.351648352,0.58974359,0.596273292\nclassify_rf,92,blood-transfusion-service-center_1,0.040816327,0.58974359,0.069210293\nclassify_pa,92,blood-transfusion-service-center_1,0.387096774,0.58974359,0.656381487\nclassify_mnb,92,blood-transfusion-service-center_1,0.534653465,0.58974359,0.906586311\nclassify_mlp,92,blood-transfusion-service-center_1,0.582278481,0.58974359,0.987341772\nclassify_logreg,92,blood-transfusion-service-center_1,0.469798658,0.58974359,0.796615115\nclassify_knn,92,blood-transfusion-service-center_1,0.5,0.58974359,0.847826087\nclassify_gp,92,blood-transfusion-service-center_1,0.266666667,0.58974359,0.452173913\nclassify_et,92,blood-transfusion-service-center_1,0.08,0.58974359,0.135652174\nclassify_dt,92,blood-transfusion-service-center_1,0.385542169,0.58974359,0.653745417\nclassify_dbn,92,blood-transfusion-service-center_1,0.58974359,0.58974359,1\nclassify_svm,93,bodyfat_1,0.906976744,0.989010989,0.917054264\nclassify_sgd,93,bodyfat_1,0.966292135,0.989010989,0.977028714\nclassify_rf,93,bodyfat_1,0.989010989,0.989010989,1\nclassify_mnb,93,bodyfat_1,0.784810127,0.989010989,0.793530239\nclassify_mlp,93,bodyfat_1,0.989010989,0.989010989,1\nclassify_logreg,93,bodyfat_1,0.989010989,0.989010989,1\nclassify_knn,93,bodyfat_1,0.909090909,0.989010989,0.919191919\nclassify_gp,93,bodyfat_1,0.780487805,0.989010989,0.789159892\nclassify_dt,93,bodyfat_1,0.989010989,0.989010989,1\nclassify_dbn,93,bodyfat_1,0.967032967,0.989010989,0.977777778\nclassify_svm,94,bolts_1,0.888888889,1,0.888888889\nclassify_sgd,94,bolts_1,1,1,1\nclassify_rf,94,bolts_1,1,1,1\nclassify_pa,94,bolts_1,1,1,1\nclassify_mlp,94,bolts_1,1,1,1\nclassify_logreg,94,bolts_1,1,1,1\nclassify_knn,94,bolts_1,0.857142857,1,0.857142857\nclassify_gp,94,bolts_1,1,1,1\nclassify_et,94,bolts_1,0.888888889,1,0.888888889\nclassify_dt,94,bolts_1,0.888888889,1,0.888888889\nclassify_bnb,94,bolts_1,0.888888889,1,0.888888889\nclassify_svm,95,boston_1,0.763157895,0.876923077,0.870267775\nclassify_sgd,95,boston_1,0.854700855,0.876923077,0.974658869\nclassify_rf,95,boston_1,0.833333333,0.876923077,0.950292398\nclassify_pa,95,boston_1,0.850746269,0.876923077,0.970149254\nclassify_mnb,95,boston_1,0.716049383,0.876923077,0.816547542\nclassify_mlp,95,boston_1,0.876923077,0.876923077,1\nclassify_logreg,95,boston_1,0.808823529,0.876923077,0.922342621\nclassify_knn,95,boston_1,0.846715329,0.876923077,0.965552568\nclassify_gp,95,boston_1,0.71641791,0.876923077,0.816967793\nclassify_et,95,boston_1,0.839694657,0.876923077,0.957546538\nclassify_dt,95,boston_1,0.754098361,0.876923077,0.859936727\nclassify_dbn,95,boston_1,0.875,0.876923077,0.997807018\nclassify_bnb,95,boston_1,0.686046512,0.876923077,0.782333741\nclassify_svm,96,boston_corrected_1,0.839160839,0.901408451,0.930944056\nclassify_sgd,96,boston_corrected_1,0.848920863,0.901408451,0.941771583\nclassify_rf,96,boston_corrected_1,0.818181818,0.901408451,0.907670455\nclassify_pa,96,boston_corrected_1,0.842105263,0.901408451,0.934210526\nclassify_mlp,96,boston_corrected_1,0.862745098,0.901408451,0.957107843\nclassify_logreg,96,boston_corrected_1,0.847682119,0.901408451,0.940397351\nclassify_knn,96,boston_corrected_1,0.901408451,0.901408451,1\nclassify_gp,96,boston_corrected_1,0.828125,0.901408451,0.918701172\nclassify_gnb,96,boston_corrected_1,0.794117647,0.901408451,0.880974265\nclassify_et,96,boston_corrected_1,0.8,0.901408451,0.8875\nclassify_dbn,96,boston_corrected_1,0.868965517,0.901408451,0.964008621\nclassify_svm,97,breast-tissue_1,-0.09982511,0.465680092,-0.214364135\nclassify_sgd,97,breast-tissue_1,0.36311445,0.465680092,0.779750856\nclassify_pa,97,breast-tissue_1,0.294664152,0.465680092,0.632760897\nclassify_mlp,97,breast-tissue_1,0.368493785,0.465680092,0.791302424\nclassify_logreg,97,breast-tissue_1,0.330569227,0.465680092,0.709863345\nclassify_knn,97,breast-tissue_1,0.41661378,0.465680092,0.894635153\nclassify_gp,97,breast-tissue_1,0.122168287,0.465680092,0.262343804\nclassify_et,97,breast-tissue_1,0.442670989,0.465680092,0.950590324\nclassify_dt,97,breast-tissue_1,0.351158556,0.465680092,0.754076805\nclassify_dbn,97,breast-tissue_1,0.465680092,0.465680092,1\nclassify_svm,98,cal_housing_1,0.812893664,0.848436247,0.958108128\nclassify_sgd,98,cal_housing_1,0.800491099,0.848436247,0.943489981\nclassify_rf,98,cal_housing_1,0.757401679,0.848436247,0.892703113\nclassify_mlp,98,cal_housing_1,0.848436247,0.848436247,1\nclassify_logreg,98,cal_housing_1,0.81545858,0.848436247,0.961131237\nclassify_knn,98,cal_housing_1,0.823600973,0.848436247,0.970728179\nclassify_et,98,cal_housing_1,0.408781695,0.848436247,0.481806024\nclassify_dt,98,cal_housing_1,0.804930542,0.848436247,0.948722482\nclassify_dbn,98,cal_housing_1,0.847274905,0.848436247,0.998631197\nclassify_svm,99,car_1,0.841340472,0.996704504,0.844122274\nclassify_sgd,99,car_1,0.480108569,0.996704504,0.481695997\nclassify_pa,99,car_1,0.208426754,0.996704504,0.209115895\nclassify_mlp,99,car_1,0.996704504,0.996704504,1\nclassify_logreg,99,car_1,0.190709227,0.996704504,0.191339786\nclassify_knn,99,car_1,0.83482666,0.996704504,0.837586925\nclassify_gp,99,car_1,-0.006059187,0.996704504,-0.006079221\nclassify_et,99,car_1,-0.033172434,0.996704504,-0.033282115\nclassify_dt,99,car_1,0.700000847,0.996704504,0.702315324\nclassify_dbn,99,car_1,0.873621013,0.996704504,0.876509547\nclassify_bnb,99,car_1,0.096450846,0.996704504,0.09676975\nclassify_svm,100,car_2,0.441441441,0.99661017,0.442942943\nclassify_sgd,100,car_2,0.746081505,0.99661017,0.748619197\nclassify_rf,100,car_2,0.942307692,0.99661017,0.94551282\nclassify_pa,100,car_2,0.746268657,0.99661017,0.748806985\nclassify_mnb,100,car_2,0.098159509,0.99661017,0.098493385\nclassify_mlp,100,car_2,0.993243243,0.99661017,0.996621622\nclassify_logreg,100,car_2,0.648,0.99661017,0.650204082\nclassify_knn,100,car_2,0.982817869,0.99661017,0.986160787\nclassify_gp,100,car_2,0.892857143,0.99661017,0.895894072\nclassify_et,100,car_2,0.684210526,0.99661017,0.686537773\nclassify_dbn,100,car_2,0.99661017,0.99661017,1\nclassify_svm,101,cardiotocography_1,0.972377236,0.985964711,0.986219105\nclassify_sgd,101,cardiotocography_1,0.976607852,0.985964711,0.990509945\nclassify_rf,101,cardiotocography_1,0.646808807,0.985964711,0.656016183\nclassify_mlp,101,cardiotocography_1,0.985964711,0.985964711,1\nclassify_logreg,101,cardiotocography_1,0.976607852,0.985964711,0.990509945\nclassify_knn,101,cardiotocography_1,0.984360544,0.985964711,0.998372997\nclassify_gp,101,cardiotocography_1,-0.121055372,0.985964711,-0.122778605\nclassify_gnb,101,cardiotocography_1,0.837314184,0.985964711,0.849233421\nclassify_et,101,cardiotocography_1,0.961530193,0.985964711,0.975217655\nclassify_dt,101,cardiotocography_1,0.485292545,0.985964711,0.492200724\nclassify_dbn,101,cardiotocography_1,0.985964711,0.985964711,1\nclassify_bnb,101,cardiotocography_1,0.815321921,0.985964711,0.826928095\nclassify_svm,102,chatfield_4_1,0.862068966,0.905660377,0.951867816\nclassify_sgd,102,chatfield_4_1,0.905660377,0.905660377,1\nclassify_rf,102,chatfield_4_1,0.877192983,0.905660377,0.968567251\nclassify_pa,102,chatfield_4_1,0.867924528,0.905660377,0.958333333\nclassify_mlp,102,chatfield_4_1,0.888888889,0.905660377,0.981481481\nclassify_logreg,102,chatfield_4_1,0.857142857,0.905660377,0.946428571\nclassify_knn,102,chatfield_4_1,0.846153846,0.905660377,0.934294872\nclassify_gp,102,chatfield_4_1,0.836363636,0.905660377,0.923484848\nclassify_gnb,102,chatfield_4_1,0.857142857,0.905660377,0.946428571\nclassify_et,102,chatfield_4_1,0.830188679,0.905660377,0.916666667\nclassify_dt,102,chatfield_4_1,0.811594203,0.905660377,0.896135266\nclassify_dbn,102,chatfield_4_1,0.867924528,0.905660377,0.958333333\nclassify_bnb,102,chatfield_4_1,0.723404255,0.905660377,0.798758865\nclassify_svm,103,chscase_adopt_1,0.857142857,0.857142857,1\nclassify_sgd,103,chscase_adopt_1,0.8,0.857142857,0.933333333\nclassify_rf,103,chscase_adopt_1,0.8,0.857142857,0.933333333\nclassify_pa,103,chscase_adopt_1,0.8,0.857142857,0.933333333\nclassify_mnb,103,chscase_adopt_1,0.545454545,0.857142857,0.636363636\nclassify_mlp,103,chscase_adopt_1,0.8,0.857142857,0.933333333\nclassify_logreg,103,chscase_adopt_1,0.8,0.857142857,0.933333333\nclassify_knn,103,chscase_adopt_1,0.8,0.857142857,0.933333333\nclassify_gp,103,chscase_adopt_1,0.8,0.857142857,0.933333333\nclassify_et,103,chscase_adopt_1,0,0.857142857,0\nclassify_dt,103,chscase_adopt_1,0.8,0.857142857,0.933333333\nclassify_bnb,103,chscase_adopt_1,0,0.857142857,0\nclassify_svm,104,chscase_census2_1,0.681318681,0.688888889,0.989010989\nclassify_sgd,104,chscase_census2_1,0.681318681,0.688888889,0.989010989\nclassify_rf,104,chscase_census2_1,0.487394958,0.688888889,0.70750881\nclassify_pa,104,chscase_census2_1,0.465517241,0.688888889,0.675750834\nclassify_mlp,104,chscase_census2_1,0.688888889,0.688888889,1\nclassify_logreg,104,chscase_census2_1,0.478632479,0.688888889,0.694789082\nclassify_knn,104,chscase_census2_1,0.620155039,0.688888889,0.900225056\nclassify_gp,104,chscase_census2_1,0.544,0.688888889,0.789677419\nclassify_gnb,104,chscase_census2_1,0.368932039,0.688888889,0.535546508\nclassify_dt,104,chscase_census2_1,0.48,0.688888889,0.696774194\nclassify_dbn,104,chscase_census2_1,0.681318681,0.688888889,0.989010989\nclassify_svm,105,chscase_census3_1,0,0.702702703,0\nclassify_sgd,105,chscase_census3_1,0.702702703,0.702702703,1\nclassify_pa,105,chscase_census3_1,0.557142857,0.702702703,0.792857143\nclassify_mnb,105,chscase_census3_1,0,0.702702703,0\nclassify_mlp,105,chscase_census3_1,0.702702703,0.702702703,1\nclassify_logreg,105,chscase_census3_1,0.598425197,0.702702703,0.851605088\nclassify_knn,105,chscase_census3_1,0.559322034,0.702702703,0.795958279\nclassify_gp,105,chscase_census3_1,0,0.702702703,0\nclassify_et,105,chscase_census3_1,0.082191781,0.702702703,0.116965227\nclassify_dt,105,chscase_census3_1,0.527131783,0.702702703,0.750149076\nclassify_dbn,105,chscase_census3_1,0.38,0.702702703,0.540769231\nclassify_bnb,105,chscase_census3_1,0.511627907,0.702702703,0.728085868\nclassify_svm,106,chscase_census4_1,0.651685393,0.679012346,0.959754852\nclassify_sgd,106,chscase_census4_1,0.651685393,0.679012346,0.959754852\nclassify_rf,106,chscase_census4_1,0.373831776,0.679012346,0.550552251\nclassify_mnb,106,chscase_census4_1,0.5,0.679012346,0.736363636\nclassify_mlp,106,chscase_census4_1,0.679012346,0.679012346,1\nclassify_logreg,106,chscase_census4_1,0.442622951,0.679012346,0.651862891\nclassify_knn,106,chscase_census4_1,0.517241379,0.679012346,0.761755486\nclassify_gp,106,chscase_census4_1,0.47706422,0.679012346,0.702585488\nclassify_gnb,106,chscase_census4_1,0.361904762,0.679012346,0.532987013\nclassify_et,106,chscase_census4_1,0.36,0.679012346,0.530181818\nclassify_dt,106,chscase_census4_1,0.3125,0.679012346,0.460227273\nclassify_dbn,106,chscase_census4_1,0.343434343,0.679012346,0.505785124\nclassify_bnb,106,chscase_census4_1,0.40776699,0.679012346,0.600529568\nclassify_svm,107,chscase_census5_1,0.651685393,0.654320988,0.995972016\nclassify_sgd,107,chscase_census5_1,0.651685393,0.654320988,0.995972016\nclassify_pa,107,chscase_census5_1,0.53125,0.654320988,0.811910377\nclassify_mlp,107,chscase_census5_1,0.651685393,0.654320988,0.995972016\nclassify_logreg,107,chscase_census5_1,0,0.654320988,0\nclassify_knn,107,chscase_census5_1,0.5,0.654320988,0.764150943\nclassify_gp,107,chscase_census5_1,0,0.654320988,0\nclassify_et,107,chscase_census5_1,0.412371134,0.654320988,0.630227582\nclassify_dbn,107,chscase_census5_1,0.654320988,0.654320988,1\nclassify_bnb,107,chscase_census5_1,0.366972477,0.654320988,0.560844729\nclassify_svm,108,chscase_census6_1,0.527607362,0.534161491,0.987730061\nclassify_sgd,108,chscase_census6_1,0.534161491,0.534161491,1\nclassify_rf,108,chscase_census6_1,0,0.534161491,0\nclassify_pa,108,chscase_census6_1,0.188679245,0.534161491,0.353225099\nclassify_mnb,108,chscase_census6_1,0.307692308,0.534161491,0.576028623\nclassify_mlp,108,chscase_census6_1,0.527607362,0.534161491,0.987730061\nclassify_logreg,108,chscase_census6_1,0.326530612,0.534161491,0.611295681\nclassify_knn,108,chscase_census6_1,0.404494382,0.534161491,0.75725111\nclassify_gp,108,chscase_census6_1,0.271186441,0.534161491,0.507686244\nclassify_et,108,chscase_census6_1,0.044444444,0.534161491,0.083204134\nclassify_dt,108,chscase_census6_1,0.277777778,0.534161491,0.52002584\nclassify_dbn,108,chscase_census6_1,0.440366973,0.534161491,0.824407937\nclassify_svm,109,chscase_funds_1,0,0.833333333,0\nclassify_sgd,109,chscase_funds_1,0.8,0.833333333,0.96\nclassify_rf,109,chscase_funds_1,0.805555556,0.833333333,0.966666667\nclassify_mnb,109,chscase_funds_1,0.666666667,0.833333333,0.8\nclassify_mlp,109,chscase_funds_1,0.833333333,0.833333333,1\nclassify_logreg,109,chscase_funds_1,0.78125,0.833333333,0.9375\nclassify_knn,109,chscase_funds_1,0.828571429,0.833333333,0.994285714\nclassify_gp,109,chscase_funds_1,0.697674419,0.833333333,0.837209302\nclassify_gnb,109,chscase_funds_1,0.764705882,0.833333333,0.917647059\nclassify_et,109,chscase_funds_1,0.8,0.833333333,0.96\nclassify_dt,109,chscase_funds_1,0.769230769,0.833333333,0.923076923\nclassify_dbn,109,chscase_funds_1,0.816901408,0.833333333,0.98028169\nclassify_bnb,109,chscase_funds_1,0.789473684,0.833333333,0.947368421\nclassify_svm,110,chscase_geyser1_1,0.814814815,0.897435897,0.907936508\nclassify_sgd,110,chscase_geyser1_1,0.897435897,0.897435897,1\nclassify_mnb,110,chscase_geyser1_1,0.722891566,0.897435897,0.805507745\nclassify_mlp,110,chscase_geyser1_1,0.897435897,0.897435897,1\nclassify_logreg,110,chscase_geyser1_1,0.596491228,0.897435897,0.664661654\nclassify_knn,110,chscase_geyser1_1,0.886075949,0.897435897,0.987341772\nclassify_gp,110,chscase_geyser1_1,0.886075949,0.897435897,0.987341772\nclassify_gnb,110,chscase_geyser1_1,0.883116883,0.897435897,0.984044527\nclassify_et,110,chscase_geyser1_1,0.888888889,0.897435897,0.990476191\nclassify_dt,110,chscase_geyser1_1,0.897435897,0.897435897,1\nclassify_dbn,110,chscase_geyser1_1,0.897435897,0.897435897,1\nclassify_svm,111,chscase_health_1,0.75,0.777777778,0.964285714\nclassify_sgd,111,chscase_health_1,0.75,0.777777778,0.964285714\nclassify_rf,111,chscase_health_1,0.666666667,0.777777778,0.857142857\nclassify_pa,111,chscase_health_1,0.52631579,0.777777778,0.676691729\nclassify_mlp,111,chscase_health_1,0.75,0.777777778,0.964285714\nclassify_logreg,111,chscase_health_1,0.588235294,0.777777778,0.756302521\nclassify_knn,111,chscase_health_1,0.666666667,0.777777778,0.857142857\nclassify_gp,111,chscase_health_1,0.777777778,0.777777778,1\nclassify_gnb,111,chscase_health_1,0.666666667,0.777777778,0.857142857\nclassify_dt,111,chscase_health_1,0.5,0.777777778,0.642857143\nclassify_dbn,111,chscase_health_1,0.363636364,0.777777778,0.467532467\nclassify_bnb,111,chscase_health_1,0.615384615,0.777777778,0.791208791\nclassify_svm,112,chscase_vine1_1,0.869565217,1,0.869565217\nclassify_sgd,112,chscase_vine1_1,1,1,1\nclassify_rf,112,chscase_vine1_1,0.947368421,1,0.947368421\nclassify_pa,112,chscase_vine1_1,0.818181818,1,0.818181818\nclassify_mnb,112,chscase_vine1_1,0.857142857,1,0.857142857\nclassify_mlp,112,chscase_vine1_1,1,1,1\nclassify_logreg,112,chscase_vine1_1,1,1,1\nclassify_knn,112,chscase_vine1_1,0.947368421,1,0.947368421\nclassify_gp,112,chscase_vine1_1,0.9,1,0.9\nclassify_gnb,112,chscase_vine1_1,0.9,1,0.9\nclassify_et,112,chscase_vine1_1,0.9,1,0.9\nclassify_dt,112,chscase_vine1_1,0.857142857,1,0.857142857\nclassify_dbn,112,chscase_vine1_1,0.9,1,0.9\nclassify_svm,113,chscase_vine2_1,0.657142857,0.884057971,0.743325527\nclassify_sgd,113,chscase_vine2_1,0.657142857,0.884057971,0.743325527\nclassify_rf,113,chscase_vine2_1,0.846153846,0.884057971,0.957124842\nclassify_mlp,113,chscase_vine2_1,0.852941177,0.884057971,0.964802314\nclassify_logreg,113,chscase_vine2_1,0.535947712,0.884057971,0.606235937\nclassify_knn,113,chscase_vine2_1,0.884057971,0.884057971,1\nclassify_gp,113,chscase_vine2_1,0.73015873,0.884057971,0.825917252\nclassify_gnb,113,chscase_vine2_1,0.746031746,0.884057971,0.843871975\nclassify_et,113,chscase_vine2_1,0.780487805,0.884057971,0.882846861\nclassify_dbn,113,chscase_vine2_1,0.823529412,0.884057971,0.931533269\nclassify_bnb,113,chscase_vine2_1,0.438095238,0.884057971,0.495550351\nclassify_svm,114,climate-model-simulation-crashes_1,0.951456311,0.951456311,1\nclassify_sgd,114,climate-model-simulation-crashes_1,0.951456311,0.951456311,1\nclassify_rf,114,climate-model-simulation-crashes_1,0.951456311,0.951456311,1\nclassify_pa,114,climate-model-simulation-crashes_1,0.94,0.951456311,0.987959184\nclassify_mnb,114,climate-model-simulation-crashes_1,0.792156863,0.951456311,0.832573029\nclassify_mlp,114,climate-model-simulation-crashes_1,0.951456311,0.951456311,1\nclassify_logreg,114,climate-model-simulation-crashes_1,0.735042735,0.951456311,0.772544915\nclassify_knn,114,climate-model-simulation-crashes_1,0.951456311,0.951456311,1\nclassify_gp,114,climate-model-simulation-crashes_1,0.951456311,0.951456311,1\nclassify_gnb,114,climate-model-simulation-crashes_1,0.919860627,0.951456311,0.966792292\nclassify_et,114,climate-model-simulation-crashes_1,0.951456311,0.951456311,1\nclassify_dt,114,climate-model-simulation-crashes_1,0.95049505,0.951456311,0.998989695\nclassify_dbn,114,climate-model-simulation-crashes_1,0.948051948,0.951456311,0.996421945\nclassify_bnb,114,climate-model-simulation-crashes_1,0.93559322,0.951456311,0.983327568\nclassify_svm,115,cloud_1,0.666666667,0.936170213,0.712121212\nclassify_sgd,115,cloud_1,0.821428571,0.936170213,0.877435065\nclassify_rf,115,cloud_1,0.8,0.936170213,0.854545455\nclassify_pa,115,cloud_1,0.730769231,0.936170213,0.780594406\nclassify_mnb,115,cloud_1,0.651162791,0.936170213,0.695560254\nclassify_mlp,115,cloud_1,0.821428571,0.936170213,0.877435065\nclassify_logreg,115,cloud_1,0.634146341,0.936170213,0.677383592\nclassify_knn,115,cloud_1,0.821428571,0.936170213,0.877435065\nclassify_gp,115,cloud_1,0.936170213,0.936170213,1\nclassify_et,115,cloud_1,0.821428571,0.936170213,0.877435065\nclassify_dt,115,cloud_1,0.933333333,0.936170213,0.996969697\nclassify_dbn,115,cloud_1,0.821428571,0.936170213,0.877435065\nclassify_bnb,115,cloud_1,0.745098039,0.936170213,0.795900178\nclassify_svm,116,cm1_req_1,0.48,0.5625,0.853333333\nclassify_sgd,116,cm1_req_1,0.5,0.5625,0.888888889\nclassify_rf,116,cm1_req_1,0.333333333,0.5625,0.592592593\nclassify_mlp,116,cm1_req_1,0.5625,0.5625,1\nclassify_logreg,116,cm1_req_1,0.52631579,0.5625,0.935672515\nclassify_knn,116,cm1_req_1,0.3,0.5625,0.533333333\nclassify_gp,116,cm1_req_1,0,0.5625,0\nclassify_et,116,cm1_req_1,0.333333333,0.5625,0.592592593\nclassify_dt,116,cm1_req_1,0.533333333,0.5625,0.948148148\nclassify_dbn,116,cm1_req_1,0.533333333,0.5625,0.948148148\nclassify_svm,117,cmc_1,0.487058411,0.487928129,0.998217529\nclassify_sgd,117,cmc_1,0.410560576,0.487928129,0.841436579\nclassify_rf,117,cmc_1,0.449522968,0.487928129,0.921289307\nclassify_pa,117,cmc_1,0.431032339,0.487928129,0.883393092\nclassify_mnb,117,cmc_1,0.399451677,0.487928129,0.818669089\nclassify_mlp,117,cmc_1,0.487928129,0.487928129,1\nclassify_logreg,117,cmc_1,0.462330394,0.487928129,0.947537898\nclassify_knn,117,cmc_1,0.410729827,0.487928129,0.841783457\nclassify_gp,117,cmc_1,0.396112784,0.487928129,0.811826088\nclassify_et,117,cmc_1,-0.055179208,0.487928129,-0.113088803\nclassify_dt,117,cmc_1,0.388727689,0.487928129,0.796690468\nclassify_dbn,117,cmc_1,0.456721914,0.487928129,0.936043418\nclassify_svm,118,cmc_2,0.733524355,0.800724638,0.916075665\nclassify_sgd,118,cmc_2,0.757861635,0.800724638,0.946469734\nclassify_pa,118,cmc_2,0.754266212,0.800724638,0.941979522\nclassify_mnb,118,cmc_2,0.751269036,0.800724638,0.938236443\nclassify_mlp,118,cmc_2,0.794069193,0.800724638,0.991688223\nclassify_logreg,118,cmc_2,0.689922481,0.800724638,0.861622645\nclassify_knn,118,cmc_2,0.745644599,0.800724638,0.93121226\nclassify_gp,118,cmc_2,0.800724638,0.800724638,1\nclassify_et,118,cmc_2,0.74554295,0.800724638,0.931085313\nclassify_dt,118,cmc_2,0.744721689,0.800724638,0.930059666\nclassify_dbn,118,cmc_2,0.793536804,0.800724638,0.991023339\nclassify_bnb,118,cmc_2,0.690391459,0.800724638,0.862208338\nclassify_svm,119,collins_1,0.965250965,1,0.965250965\nclassify_sgd,119,collins_1,0.977272727,1,0.977272727\nclassify_rf,119,collins_1,1,1,1\nclassify_pa,119,collins_1,0.973782772,1,0.973782772\nclassify_mlp,119,collins_1,0.992366412,1,0.992366412\nclassify_logreg,119,collins_1,0.821428571,1,0.821428571\nclassify_knn,119,collins_1,0.981132075,1,0.981132075\nclassify_gp,119,collins_1,1,1,1\nclassify_et,119,collins_1,0.928571429,1,0.928571429\nclassify_dt,119,collins_1,1,1,1\nclassify_dbn,119,collins_1,0.988593156,1,0.988593156\nclassify_svm,120,confidence_1,0.733333333,1,0.733333333\nclassify_sgd,120,confidence_1,0.974358974,1,0.974358974\nclassify_rf,120,confidence_1,0.9,1,0.9\nclassify_pa,120,confidence_1,0.642857143,1,0.642857143\nclassify_mlp,120,confidence_1,1,1,1\nclassify_logreg,120,confidence_1,0.733333333,1,0.733333333\nclassify_knn,120,confidence_1,0.974358974,1,0.974358974\nclassify_gp,120,confidence_1,0.888888889,1,0.888888889\nclassify_gnb,120,confidence_1,0.823529412,1,0.823529412\nclassify_et,120,confidence_1,0.947368421,1,0.947368421\nclassify_dt,120,confidence_1,0.777777778,1,0.777777778\nclassify_dbn,120,confidence_1,0.926829268,1,0.926829268\nclassify_bnb,120,confidence_1,0.689655172,1,0.689655172\nclassify_svm,121,cpu_1,0.413793103,0.977777778,0.423197492\nclassify_sgd,121,cpu_1,0.977777778,0.977777778,1\nclassify_rf,121,cpu_1,0.977777778,0.977777778,1\nclassify_pa,121,cpu_1,0.977777778,0.977777778,1\nclassify_mlp,121,cpu_1,0.977777778,0.977777778,1\nclassify_logreg,121,cpu_1,0.977777778,0.977777778,1\nclassify_knn,121,cpu_1,0.954545455,0.977777778,0.976239669\nclassify_gp,121,cpu_1,0.878048781,0.977777778,0.898004435\nclassify_et,121,cpu_1,0.820512821,0.977777778,0.839160839\nclassify_dt,121,cpu_1,0.933333333,0.977777778,0.954545454\nclassify_dbn,121,cpu_1,0.956521739,0.977777778,0.97826087\nclassify_bnb,121,cpu_1,0.956521739,0.977777778,0.97826087\nclassify_svm,122,cpu_act_1,0,0.959354281,0\nclassify_sgd,122,cpu_act_1,0.95049505,0.959354281,0.990765423\nclassify_rf,122,cpu_act_1,0.937465103,0.959354281,0.977183426\nclassify_pa,122,cpu_act_1,0.941552777,0.959354281,0.981444286\nclassify_mnb,122,cpu_act_1,0.838595456,0.959354281,0.874124891\nclassify_mlp,122,cpu_act_1,0.959354281,0.959354281,1\nclassify_logreg,122,cpu_act_1,0.947650208,0.959354281,0.987800052\nclassify_knn,122,cpu_act_1,0.951100944,0.959354281,0.991396987\nclassify_gnb,122,cpu_act_1,0.919153868,0.959354281,0.958096385\nclassify_et,122,cpu_act_1,0.845188285,0.959354281,0.880997043\nclassify_dt,122,cpu_act_1,0.932911028,0.959354281,0.972436405\nclassify_dbn,122,cpu_act_1,0.955993052,0.959354281,0.996496363\nclassify_svm,123,cpu_small_1,0.933177022,0.949704973,0.982596752\nclassify_sgd,123,cpu_small_1,0.940651992,0.949704973,0.990467586\nclassify_rf,123,cpu_small_1,0.932498639,0.949704973,0.981882443\nclassify_pa,123,cpu_small_1,0.94084665,0.949704973,0.990672552\nclassify_mnb,123,cpu_small_1,0.852856319,0.949704973,0.898022378\nclassify_mlp,123,cpu_small_1,0.949704973,0.949704973,1\nclassify_logreg,123,cpu_small_1,0.931546752,0.949704973,0.980880145\nclassify_knn,123,cpu_small_1,0.949208993,0.949704973,0.999477753\nclassify_et,123,cpu_small_1,0.905208333,0.949704973,0.953146881\nclassify_dt,123,cpu_small_1,0.926072235,0.949704973,0.975115705\nclassify_dbn,123,cpu_small_1,0.944491406,0.949704973,0.99451033\nclassify_bnb,123,cpu_small_1,0.896715004,0.949704973,0.944203758\nclassify_svm,124,credit-g_1,0.605504587,0.61627907,0.982516877\nclassify_sgd,124,credit-g_1,0.576271186,0.61627907,0.935081548\nclassify_pa,124,credit-g_1,0.590361446,0.61627907,0.957944987\nclassify_mnb,124,credit-g_1,0.455026455,0.61627907,0.738344814\nclassify_mlp,124,credit-g_1,0.61627907,0.61627907,1\nclassify_logreg,124,credit-g_1,0.603448276,0.61627907,0.979180221\nclassify_knn,124,credit-g_1,0.45508982,0.61627907,0.738447633\nclassify_gp,124,credit-g_1,0.2875,0.61627907,0.466509434\nclassify_et,124,credit-g_1,0.330434783,0.61627907,0.536177194\nclassify_dt,124,credit-g_1,0.502994012,0.61627907,0.816178963\nclassify_dbn,124,credit-g_1,0.516853933,0.61627907,0.838668645\nclassify_svm,125,datatrieve_1,0.266666667,0.5,0.533333333\nclassify_sgd,125,datatrieve_1,0.5,0.5,1\nclassify_rf,125,datatrieve_1,0,0.5,0\nclassify_pa,125,datatrieve_1,0.181818182,0.5,0.363636364\nclassify_mlp,125,datatrieve_1,0.5,0.5,1\nclassify_logreg,125,datatrieve_1,0.4,0.5,0.8\nclassify_knn,125,datatrieve_1,0.25,0.5,0.5\nclassify_gp,125,datatrieve_1,0,0.5,0\nclassify_et,125,datatrieve_1,0,0.5,0\nclassify_dt,125,datatrieve_1,0.222222222,0.5,0.444444444\nclassify_dbn,125,datatrieve_1,0,0.5,0\nclassify_bnb,125,datatrieve_1,0,0.5,0\nclassify_svm,126,dbworld-bodies_1,0.615384615,1,0.615384615\nclassify_sgd,126,dbworld-bodies_1,1,1,1\nclassify_rf,126,dbworld-bodies_1,1,1,1\nclassify_pa,126,dbworld-bodies_1,1,1,1\nclassify_mnb,126,dbworld-bodies_1,1,1,1\nclassify_mlp,126,dbworld-bodies_1,1,1,1\nclassify_logreg,126,dbworld-bodies_1,1,1,1\nclassify_knn,126,dbworld-bodies_1,0.518518519,1,0.518518519\nclassify_gp,126,dbworld-bodies_1,0.6,1,0.6\nclassify_gnb,126,dbworld-bodies_1,0.933333333,1,0.933333333\nclassify_et,126,dbworld-bodies_1,1,1,1\nclassify_dt,126,dbworld-bodies_1,0.666666667,1,0.666666667\nclassify_dbn,126,dbworld-bodies_1,0.923076923,1,0.923076923\nclassify_bnb,126,dbworld-bodies_1,0.833333333,1,0.833333333\nclassify_svm,127,dbworld-subjects-stemmed_1,0,0.909090909,0\nclassify_sgd,127,dbworld-subjects-stemmed_1,0.909090909,0.909090909,1\nclassify_rf,127,dbworld-subjects-stemmed_1,0.555555556,0.909090909,0.611111111\nclassify_pa,127,dbworld-subjects-stemmed_1,0.666666667,0.909090909,0.733333333\nclassify_mnb,127,dbworld-subjects-stemmed_1,0.833333333,0.909090909,0.916666667\nclassify_mlp,127,dbworld-subjects-stemmed_1,0.833333333,0.909090909,0.916666667\nclassify_logreg,127,dbworld-subjects-stemmed_1,0.833333333,0.909090909,0.916666667\nclassify_knn,127,dbworld-subjects-stemmed_1,0.625,0.909090909,0.6875\nclassify_gp,127,dbworld-subjects-stemmed_1,0.625,0.909090909,0.6875\nclassify_gnb,127,dbworld-subjects-stemmed_1,0.909090909,0.909090909,1\nclassify_et,127,dbworld-subjects-stemmed_1,0.666666667,0.909090909,0.733333333\nclassify_dt,127,dbworld-subjects-stemmed_1,0.533333333,0.909090909,0.586666667\nclassify_dbn,127,dbworld-subjects-stemmed_1,0.727272727,0.909090909,0.8\nclassify_bnb,127,dbworld-subjects-stemmed_1,0.714285714,0.909090909,0.785714286\nclassify_svm,128,dbworld-subjects_1,0.857142857,0.947368421,0.904761905\nclassify_sgd,128,dbworld-subjects_1,0.947368421,0.947368421,1\nclassify_rf,128,dbworld-subjects_1,0.461538462,0.947368421,0.487179487\nclassify_pa,128,dbworld-subjects_1,0.782608696,0.947368421,0.826086957\nclassify_mlp,128,dbworld-subjects_1,0.9,0.947368421,0.95\nclassify_logreg,128,dbworld-subjects_1,0.782608696,0.947368421,0.826086957\nclassify_knn,128,dbworld-subjects_1,0.842105263,0.947368421,0.888888889\nclassify_gp,128,dbworld-subjects_1,0.842105263,0.947368421,0.888888889\nclassify_gnb,128,dbworld-subjects_1,0.782608696,0.947368421,0.826086957\nclassify_dt,128,dbworld-subjects_1,0.9,0.947368421,0.95\nclassify_dbn,128,dbworld-subjects_1,0.782608696,0.947368421,0.826086957\nclassify_svm,129,delta_ailerons_1,0.932135728,0.939303483,0.992369075\nclassify_sgd,129,delta_ailerons_1,0.931051837,0.939303483,0.991215144\nclassify_rf,129,delta_ailerons_1,0.933466733,0.939303483,0.993786088\nclassify_pa,129,delta_ailerons_1,0.931921331,0.939303483,0.992140824\nclassify_mlp,129,delta_ailerons_1,0.938957816,0.939303483,0.999631997\nclassify_logreg,129,delta_ailerons_1,0.934328358,0.939303483,0.99470339\nclassify_knn,129,delta_ailerons_1,0.938407611,0.939303483,0.999046239\nclassify_gnb,129,delta_ailerons_1,0.926221336,0.939303483,0.986072503\nclassify_et,129,delta_ailerons_1,0.934804413,0.939303483,0.995210207\nclassify_dbn,129,delta_ailerons_1,0.939303483,0.939303483,1\nclassify_sgd,130,delta_elevators_1,0.895927602,0.897150799,0.998636575\nclassify_rf,130,delta_elevators_1,0.88873338,0.897150799,0.990617609\nclassify_pa,130,delta_elevators_1,0.891910739,0.897150799,0.99415922\nclassify_mlp,130,delta_elevators_1,0.897150799,0.897150799,1\nclassify_logreg,130,delta_elevators_1,0.896697119,0.897150799,0.99949431\nclassify_knn,130,delta_elevators_1,0.888194444,0.897150799,0.99001689\nclassify_et,130,delta_elevators_1,0.884844242,0.897150799,0.986282622\nclassify_dt,130,delta_elevators_1,0.803751804,0.897150799,0.895893761\nclassify_dbn,130,delta_elevators_1,0.896077082,0.897150799,0.998803192\nclassify_bnb,130,delta_elevators_1,0.848756906,0.897150799,0.94605824\nclassify_svm,131,desharnais_1,0.338229195,0.498249807,0.678834573\nclassify_sgd,131,desharnais_1,0.381128144,0.498249807,0.764933851\nclassify_rf,131,desharnais_1,0.117122266,0.498249807,0.235067358\nclassify_pa,131,desharnais_1,0.421716227,0.498249807,0.846395165\nclassify_mlp,131,desharnais_1,0.498249807,0.498249807,1\nclassify_logreg,131,desharnais_1,0.46778339,0.498249807,0.938853128\nclassify_knn,131,desharnais_1,0.092628362,0.498249807,0.185907472\nclassify_gp,131,desharnais_1,-0.020454991,0.498249807,-0.041053685\nclassify_gnb,131,desharnais_1,0.104861884,0.498249807,0.210460462\nclassify_et,131,desharnais_1,0.112110334,0.498249807,0.225008285\nclassify_dt,131,desharnais_1,0.132042649,0.498249807,0.265012946\nclassify_dbn,131,desharnais_1,0.133518587,0.498249807,0.267975191\nclassify_bnb,131,desharnais_1,0.285463833,0.498249807,0.572933153\nclassify_svm,132,diabetes_1,0.488095238,0.733668342,0.665280496\nclassify_sgd,132,diabetes_1,0.726256983,0.733668342,0.989898217\nclassify_rf,132,diabetes_1,0.662337662,0.733668342,0.902775307\nclassify_mnb,132,diabetes_1,0.51497006,0.733668342,0.701911246\nclassify_mlp,132,diabetes_1,0.733668342,0.733668342,1\nclassify_logreg,132,diabetes_1,0.733333333,0.733668342,0.999543379\nclassify_knn,132,diabetes_1,0.671328671,0.733668342,0.915030175\nclassify_gp,132,diabetes_1,0.648648649,0.733668342,0.884116994\nclassify_et,132,diabetes_1,0.638297872,0.733668342,0.870008744\nclassify_dt,132,diabetes_1,0.56626506,0.733668342,0.771827034\nclassify_dbn,132,diabetes_1,0.694610778,0.733668342,0.946764006\nclassify_svm,133,diabetes_numeric_1,0.666666667,0.761904762,0.875\nclassify_sgd,133,diabetes_numeric_1,0.761904762,0.761904762,1\nclassify_rf,133,diabetes_numeric_1,0.666666667,0.761904762,0.875\nclassify_mlp,133,diabetes_numeric_1,0.761904762,0.761904762,1\nclassify_logreg,133,diabetes_numeric_1,0.761904762,0.761904762,1\nclassify_knn,133,diabetes_numeric_1,0.761904762,0.761904762,1\nclassify_gp,133,diabetes_numeric_1,0.761904762,0.761904762,1\nclassify_gnb,133,diabetes_numeric_1,0.666666667,0.761904762,0.875\nclassify_et,133,diabetes_numeric_1,0.705882353,0.761904762,0.926470588\nclassify_bnb,133,diabetes_numeric_1,0.666666667,0.761904762,0.875\nclassify_svm,134,diggle_table_a1_1,0.636363636,0.933333333,0.681818182\nclassify_sgd,134,diggle_table_a1_1,0.933333333,0.933333333,1\nclassify_pa,134,diggle_table_a1_1,0.823529412,0.933333333,0.882352941\nclassify_mlp,134,diggle_table_a1_1,0.933333333,0.933333333,1\nclassify_logreg,134,diggle_table_a1_1,0.769230769,0.933333333,0.824175824\nclassify_knn,134,diggle_table_a1_1,0.933333333,0.933333333,1\nclassify_gp,134,diggle_table_a1_1,0.823529412,0.933333333,0.882352941\nclassify_gnb,134,diggle_table_a1_1,0.857142857,0.933333333,0.918367347\nclassify_et,134,diggle_table_a1_1,0.933333333,0.933333333,1\nclassify_dt,134,diggle_table_a1_1,0.857142857,0.933333333,0.918367347\nclassify_bnb,134,diggle_table_a1_1,0.857142857,0.933333333,0.918367347\nclassify_svm,135,diggle_table_a2_1,0.97826087,0.989247312,0.98889414\nclassify_sgd,135,diggle_table_a2_1,0.989010989,0.989247312,0.999761108\nclassify_pa,135,diggle_table_a2_1,0.97826087,0.989247312,0.98889414\nclassify_mnb,135,diggle_table_a2_1,0.791666667,0.989247312,0.800271739\nclassify_mlp,135,diggle_table_a2_1,0.97826087,0.989247312,0.98889414\nclassify_logreg,135,diggle_table_a2_1,0.989010989,0.989247312,0.999761108\nclassify_knn,135,diggle_table_a2_1,0.978723404,0.989247312,0.989361702\nclassify_gp,135,diggle_table_a2_1,0.948453608,0.989247312,0.958762887\nclassify_et,135,diggle_table_a2_1,0.989247312,0.989247312,1\nclassify_dt,135,diggle_table_a2_1,0.989010989,0.989247312,0.999761108\nclassify_dbn,135,diggle_table_a2_1,0.97826087,0.989247312,0.98889414\nclassify_svm,136,disclosure_x_bias_1,0.636986301,0.64137931,0.993150685\nclassify_sgd,136,disclosure_x_bias_1,0.64137931,0.64137931,1\nclassify_rf,136,disclosure_x_bias_1,0.489130435,0.64137931,0.762622721\nclassify_pa,136,disclosure_x_bias_1,0.614107884,0.64137931,0.957480034\nclassify_mnb,136,disclosure_x_bias_1,0.472527473,0.64137931,0.736736382\nclassify_mlp,136,disclosure_x_bias_1,0.636986301,0.64137931,0.993150685\nclassify_logreg,136,disclosure_x_bias_1,0.507936508,0.64137931,0.791944018\nclassify_knn,136,disclosure_x_bias_1,0.516129032,0.64137931,0.804717308\nclassify_gp,136,disclosure_x_bias_1,0.45320197,0.64137931,0.706605223\nclassify_dt,136,disclosure_x_bias_1,0.504854369,0.64137931,0.787138532\nclassify_dbn,136,disclosure_x_bias_1,0.539215686,0.64137931,0.840712629\nclassify_svm,137,disclosure_x_noise_1,0.668896321,0.696864112,0.959866221\nclassify_sgd,137,disclosure_x_noise_1,0.675675676,0.696864112,0.969594595\nclassify_rf,137,disclosure_x_noise_1,0.56880734,0.696864112,0.816238532\nclassify_pa,137,disclosure_x_noise_1,0.677966102,0.696864112,0.972881356\nclassify_mlp,137,disclosure_x_noise_1,0.696864112,0.696864112,1\nclassify_logreg,137,disclosure_x_noise_1,0.568627451,0.696864112,0.815980392\nclassify_knn,137,disclosure_x_noise_1,0.575471698,0.696864112,0.825801887\nclassify_gp,137,disclosure_x_noise_1,0.623255814,0.696864112,0.894372093\nclassify_gnb,137,disclosure_x_noise_1,0.587719298,0.696864112,0.843377193\nclassify_et,137,disclosure_x_noise_1,0.56,0.696864112,0.8036\nclassify_dt,137,disclosure_x_noise_1,0.655052265,0.696864112,0.94\nclassify_dbn,137,disclosure_x_noise_1,0.668896321,0.696864112,0.959866221\nclassify_svm,138,disclosure_x_tampered_1,0,0.68013468,0\nclassify_sgd,138,disclosure_x_tampered_1,0.677740864,0.68013468,0.996480379\nclassify_rf,138,disclosure_x_tampered_1,0.551401869,0.68013468,0.81072453\nclassify_pa,138,disclosure_x_tampered_1,0.479591837,0.68013468,0.705142453\nclassify_mlp,138,disclosure_x_tampered_1,0.68013468,0.68013468,1\nclassify_logreg,138,disclosure_x_tampered_1,0.528846154,0.68013468,0.777560929\nclassify_knn,138,disclosure_x_tampered_1,0.623853211,0.68013468,0.917249523\nclassify_gp,138,disclosure_x_tampered_1,0.677740864,0.68013468,0.996480379\nclassify_et,138,disclosure_x_tampered_1,0.629787234,0.68013468,0.9259743\nclassify_dt,138,disclosure_x_tampered_1,0.604444444,0.68013468,0.888712871\nclassify_dbn,138,disclosure_x_tampered_1,0.677740864,0.68013468,0.996480379\nclassify_bnb,138,disclosure_x_tampered_1,0.575342466,0.68013468,0.845924319\nclassify_svm,139,disclosure_z_1,0.564814815,0.655405405,0.861779305\nclassify_sgd,139,disclosure_z_1,0.655405405,0.655405405,1\nclassify_rf,139,disclosure_z_1,0.461538462,0.655405405,0.704203013\nclassify_pa,139,disclosure_z_1,0.491017964,0.655405405,0.749182048\nclassify_mnb,139,disclosure_z_1,0.544444444,0.655405405,0.83069874\nclassify_mlp,139,disclosure_z_1,0.655405405,0.655405405,1\nclassify_logreg,139,disclosure_z_1,0.57,0.655405405,0.869690722\nclassify_knn,139,disclosure_z_1,0.57,0.655405405,0.869690722\nclassify_gp,139,disclosure_z_1,0.397260274,0.655405405,0.606129078\nclassify_et,139,disclosure_z_1,0.320610687,0.655405405,0.489179193\nclassify_dbn,139,disclosure_z_1,0.523809524,0.655405405,0.799214531\nclassify_bnb,139,disclosure_z_1,0.575757576,0.655405405,0.878475476\nclassify_svm,140,dresses-sales_1,0.54368932,0.54368932,1\nclassify_sgd,140,dresses-sales_1,0.54368932,0.54368932,1\nclassify_rf,140,dresses-sales_1,0.35443038,0.54368932,0.651898734\nclassify_pa,140,dresses-sales_1,0.36,0.54368932,0.662142857\nclassify_mlp,140,dresses-sales_1,0.54368932,0.54368932,1\nclassify_logreg,140,dresses-sales_1,0.442748092,0.54368932,0.81434024\nclassify_knn,140,dresses-sales_1,0.491803279,0.54368932,0.904566745\nclassify_gp,140,dresses-sales_1,0.446428571,0.54368932,0.821109694\nclassify_dt,140,dresses-sales_1,0.389380531,0.54368932,0.716182048\nclassify_dbn,140,dresses-sales_1,0.457627119,0.54368932,0.841707022\nclassify_bnb,140,dresses-sales_1,0.488188976,0.54368932,0.89791901\nclassify_svm,141,ecoli_1,0.983050848,0.991596639,0.991381787\nclassify_sgd,141,ecoli_1,0.983050848,0.991596639,0.991381787\nclassify_rf,141,ecoli_1,0.991596639,0.991596639,1\nclassify_pa,141,ecoli_1,0.948275862,0.991596639,0.956312098\nclassify_mnb,141,ecoli_1,0.929824561,0.991596639,0.937704431\nclassify_mlp,141,ecoli_1,0.991596639,0.991596639,1\nclassify_logreg,141,ecoli_1,0,0.991596639,0\nclassify_knn,141,ecoli_1,0.983050848,0.991596639,0.991381787\nclassify_gp,141,ecoli_1,0.991596639,0.991596639,1\nclassify_gnb,141,ecoli_1,0.264705882,0.991596639,0.266949153\nclassify_et,141,ecoli_1,0.983050848,0.991596639,0.991381787\nclassify_dt,141,ecoli_1,0.965517241,0.991596639,0.973699591\nclassify_dbn,141,ecoli_1,0.983050848,0.991596639,0.991381787\nclassify_bnb,141,ecoli_1,0.957983193,0.991596639,0.966101695\nclassify_svm,142,eeg-eye-state_1,0.338471217,0.914031621,0.370305808\nclassify_sgd,142,eeg-eye-state_1,0.633838384,0.914031621,0.693453453\nclassify_rf,142,eeg-eye-state_1,0.523700556,0.914031621,0.572956716\nclassify_mnb,142,eeg-eye-state_1,0.620615385,0.914031621,0.678986777\nclassify_mlp,142,eeg-eye-state_1,0.914031621,0.914031621,1\nclassify_logreg,142,eeg-eye-state_1,0.613258374,0.914031621,0.670937811\nclassify_knn,142,eeg-eye-state_1,0.909226191,0.914031621,0.9947426\nclassify_et,142,eeg-eye-state_1,0.420543357,0.914031621,0.460097164\nclassify_dt,142,eeg-eye-state_1,0.743776716,0.914031621,0.813731932\nclassify_dbn,142,eeg-eye-state_1,0.813223938,0.914031621,0.889710946\nclassify_bnb,142,eeg-eye-state_1,0.474260679,0.914031621,0.518866819\nclassify_svm,143,electricity_1,0.730659695,0.866428706,0.843300424\nclassify_sgd,143,electricity_1,0.80480173,0.866428706,0.928872421\nclassify_rf,143,electricity_1,0.822586227,0.866428706,0.949398631\nclassify_pa,143,electricity_1,0.704757947,0.866428706,0.813405584\nclassify_mnb,143,electricity_1,0.592145434,0.866428706,0.683432382\nclassify_mlp,143,electricity_1,0.85466295,0.866428706,0.986420399\nclassify_logreg,143,electricity_1,0.791569375,0.866428706,0.913600126\nclassify_knn,143,electricity_1,0.866428706,0.866428706,1\nclassify_et,143,electricity_1,0.798239094,0.866428706,0.92129807\nclassify_dt,143,electricity_1,0.809356292,0.866428706,0.934129129\nclassify_dbn,143,electricity_1,0.822291407,0.866428706,0.949058361\nclassify_bnb,143,electricity_1,0.748941548,0.866428706,0.864400664\nclassify_svm,144,elevators_1,0.82808399,0.840166783,0.985618578\nclassify_sgd,144,elevators_1,0.827077318,0.840166783,0.984420397\nclassify_rf,144,elevators_1,0.578580222,0.840166783,0.688649246\nclassify_mlp,144,elevators_1,0.840166783,0.840166783,1\nclassify_logreg,144,elevators_1,0.797810885,0.840166783,0.949586322\nclassify_knn,144,elevators_1,0.688358641,0.840166783,0.819311897\nclassify_gnb,144,elevators_1,0.383808096,0.840166783,0.456823697\nclassify_dt,144,elevators_1,0.66845947,0.840166783,0.795627111\nclassify_dbn,144,elevators_1,0.837452141,0.840166783,0.996768925\nclassify_bnb,144,elevators_1,0.585376629,0.840166783,0.696738602\nclassify_svm,145,elusage_1,0.933333333,1,0.933333333\nclassify_sgd,145,elusage_1,0.933333333,1,0.933333333\nclassify_mnb,145,elusage_1,0.266666667,1,0.266666667\nclassify_mlp,145,elusage_1,0.933333333,1,0.933333333\nclassify_logreg,145,elusage_1,1,1,1\nclassify_knn,145,elusage_1,0.933333333,1,0.933333333\nclassify_gp,145,elusage_1,0.933333333,1,0.933333333\nclassify_et,145,elusage_1,0.933333333,1,0.933333333\nclassify_dt,145,elusage_1,1,1,1\nclassify_dbn,145,elusage_1,0.933333333,1,0.933333333\nclassify_mlp,146,eye_movements_1,-0.072724519,-0.072724519,1\nclassify_svm,147,fertility_1,0.347826087,0.571428571,0.608695652\nclassify_sgd,147,fertility_1,0.285714286,0.571428571,0.5\nclassify_pa,147,fertility_1,0.285714286,0.571428571,0.5\nclassify_mlp,147,fertility_1,0.434782609,0.571428571,0.760869565\nclassify_logreg,147,fertility_1,0.380952381,0.571428571,0.666666667\nclassify_knn,147,fertility_1,0.571428571,0.571428571,1\nclassify_gp,147,fertility_1,0,0.571428571,0\nclassify_gnb,147,fertility_1,0.222222222,0.571428571,0.388888889\nclassify_dt,147,fertility_1,0.333333333,0.571428571,0.583333333\nclassify_dbn,147,fertility_1,0.285714286,0.571428571,0.5\nclassify_svm,148,fl2000_1,0.833333333,0.833333333,1\nclassify_sgd,148,fl2000_1,0.727272727,0.833333333,0.872727273\nclassify_rf,148,fl2000_1,0.6,0.833333333,0.72\nclassify_pa,148,fl2000_1,0.727272727,0.833333333,0.872727273\nclassify_mnb,148,fl2000_1,0.352941177,0.833333333,0.423529412\nclassify_mlp,148,fl2000_1,0.727272727,0.833333333,0.872727273\nclassify_logreg,148,fl2000_1,0.571428571,0.833333333,0.685714286\nclassify_knn,148,fl2000_1,0.571428571,0.833333333,0.685714286\nclassify_gp,148,fl2000_1,0.470588235,0.833333333,0.564705882\nclassify_gnb,148,fl2000_1,0.444444444,0.833333333,0.533333333\nclassify_et,148,fl2000_1,0.666666667,0.833333333,0.8\nclassify_dbn,148,fl2000_1,0.571428571,0.833333333,0.685714286\nclassify_bnb,148,fl2000_1,0.4,0.833333333,0.48\nclassify_svm,149,flags_1,0.666666667,0.790123457,0.84375\nclassify_sgd,149,flags_1,0.771428571,0.790123457,0.976339286\nclassify_rf,149,flags_1,0.746987952,0.790123457,0.945406626\nclassify_pa,149,flags_1,0.682926829,0.790123457,0.864329268\nclassify_mlp,149,flags_1,0.780487805,0.790123457,0.987804878\nclassify_logreg,149,flags_1,0.709677419,0.790123457,0.898185484\nclassify_knn,149,flags_1,0.790123457,0.790123457,1\nclassify_gp,149,flags_1,0.739130435,0.790123457,0.935461957\nclassify_et,149,flags_1,0.757894737,0.790123457,0.959210526\nclassify_dt,149,flags_1,0.742857143,0.790123457,0.940178571\nclassify_dbn,149,flags_1,0.757894737,0.790123457,0.959210526\nclassify_svm,150,fri_c0_1000_10_1,0.865051903,0.920962199,0.939291432\nclassify_sgd,150,fri_c0_1000_10_1,0.871972318,0.920962199,0.946805764\nclassify_rf,150,fri_c0_1000_10_1,0.875420875,0.920962199,0.950550279\nclassify_pa,150,fri_c0_1000_10_1,0.865979381,0.920962199,0.940298507\nclassify_mlp,150,fri_c0_1000_10_1,0.920962199,0.920962199,1\nclassify_logreg,150,fri_c0_1000_10_1,0.867383513,0.920962199,0.941823142\nclassify_knn,150,fri_c0_1000_10_1,0.823529412,0.920962199,0.894205443\nclassify_gp,150,fri_c0_1000_10_1,0.899653979,0.920962199,0.976863089\nclassify_dt,150,fri_c0_1000_10_1,0.749185668,0.920962199,0.813481453\nclassify_dbn,150,fri_c0_1000_10_1,0.90070922,0.920962199,0.978008892\nclassify_bnb,150,fri_c0_1000_10_1,0.692307692,0.920962199,0.751722158\nclassify_svm,151,fri_c0_1000_25_1,0.833333333,0.878980892,0.948067633\nclassify_sgd,151,fri_c0_1000_25_1,0.831746032,0.878980892,0.94626179\nclassify_pa,151,fri_c0_1000_25_1,0.760383387,0.878980892,0.865073853\nclassify_mlp,151,fri_c0_1000_25_1,0.878504673,0.878980892,0.999458215\nclassify_logreg,151,fri_c0_1000_25_1,0.830670927,0.878980892,0.945038663\nclassify_knn,151,fri_c0_1000_25_1,0.793939394,0.878980892,0.90324989\nclassify_gp,151,fri_c0_1000_25_1,0.836012862,0.878980892,0.951116082\nclassify_gnb,151,fri_c0_1000_25_1,0.869009585,0.878980892,0.988655832\nclassify_et,151,fri_c0_1000_25_1,0.878980892,0.878980892,1\nclassify_dt,151,fri_c0_1000_25_1,0.736842105,0.878980892,0.838291381\nclassify_dbn,151,fri_c0_1000_25_1,0.866242038,0.878980892,0.985507246\nclassify_bnb,151,fri_c0_1000_25_1,0.673267327,0.878980892,0.765963553\nclassify_svm,152,fri_c0_1000_50_1,0.797468354,0.834437086,0.955696202\nclassify_sgd,152,fri_c0_1000_50_1,0.825301205,0.834437086,0.989051444\nclassify_rf,152,fri_c0_1000_50_1,0.833876222,0.834437086,0.999327853\nclassify_pa,152,fri_c0_1000_50_1,0.75,0.834437086,0.898809524\nclassify_mlp,152,fri_c0_1000_50_1,0.829131653,0.834437086,0.993641901\nclassify_logreg,152,fri_c0_1000_50_1,0.796178344,0.834437086,0.954150238\nclassify_knn,152,fri_c0_1000_50_1,0.736156352,0.834437086,0.88221912\nclassify_gp,152,fri_c0_1000_50_1,0.782894737,0.834437086,0.938230994\nclassify_gnb,152,fri_c0_1000_50_1,0.834437086,0.834437086,1\nclassify_dt,152,fri_c0_1000_50_1,0.77170418,0.834437086,0.924820089\nclassify_dbn,152,fri_c0_1000_50_1,0.820189274,0.834437086,0.982925242\nclassify_bnb,152,fri_c0_1000_50_1,0.721311475,0.834437086,0.864428832\nclassify_svm,153,fri_c0_1000_5_1,0.85443038,0.916666667,0.932105869\nclassify_sgd,153,fri_c0_1000_5_1,0.851612903,0.916666667,0.929032258\nclassify_rf,153,fri_c0_1000_5_1,0.849840256,0.916666667,0.927098461\nclassify_pa,153,fri_c0_1000_5_1,0.844720497,0.916666667,0.921513269\nclassify_mlp,153,fri_c0_1000_5_1,0.916666667,0.916666667,1\nclassify_logreg,153,fri_c0_1000_5_1,0.853582555,0.916666667,0.931180969\nclassify_knn,153,fri_c0_1000_5_1,0.903225807,0.916666667,0.985337243\nclassify_gp,153,fri_c0_1000_5_1,0.892405063,0.916666667,0.973532796\nclassify_gnb,153,fri_c0_1000_5_1,0.882539683,0.916666667,0.962770563\nclassify_dt,153,fri_c0_1000_5_1,0.816199377,0.916666667,0.89039932\nclassify_dbn,153,fri_c0_1000_5_1,0.911949686,0.916666667,0.994854202\nclassify_svm,154,fri_c0_100_10_1,0.733333333,0.8,0.916666667\nclassify_sgd,154,fri_c0_100_10_1,0.75862069,0.8,0.948275862\nclassify_rf,154,fri_c0_100_10_1,0.56,0.8,0.7\nclassify_pa,154,fri_c0_100_10_1,0.75862069,0.8,0.948275862\nclassify_mlp,154,fri_c0_100_10_1,0.8,0.8,1\nclassify_logreg,154,fri_c0_100_10_1,0.733333333,0.8,0.916666667\nclassify_knn,154,fri_c0_100_10_1,0.642857143,0.8,0.803571429\nclassify_gp,154,fri_c0_100_10_1,0.64,0.8,0.8\nclassify_gnb,154,fri_c0_100_10_1,0.740740741,0.8,0.925925926\nclassify_et,154,fri_c0_100_10_1,0.666666667,0.8,0.833333333\nclassify_dt,154,fri_c0_100_10_1,0.689655172,0.8,0.862068965\nclassify_dbn,154,fri_c0_100_10_1,0.714285714,0.8,0.892857143\nclassify_bnb,154,fri_c0_100_10_1,0.5,0.8,0.625\nclassify_svm,155,fri_c0_100_25_1,0.777777778,0.8,0.972222222\nclassify_sgd,155,fri_c0_100_25_1,0.8,0.8,1\nclassify_rf,155,fri_c0_100_25_1,0.727272727,0.8,0.909090909\nclassify_pa,155,fri_c0_100_25_1,0.764705882,0.8,0.955882353\nclassify_mlp,155,fri_c0_100_25_1,0.8,0.8,1\nclassify_logreg,155,fri_c0_100_25_1,0.777777778,0.8,0.972222222\nclassify_knn,155,fri_c0_100_25_1,0.533333333,0.8,0.666666667\nclassify_gp,155,fri_c0_100_25_1,0.518518519,0.8,0.648148148\nclassify_dt,155,fri_c0_100_25_1,0.648648649,0.8,0.810810811\nclassify_dbn,155,fri_c0_100_25_1,0.8,0.8,1\nclassify_svm,156,fri_c0_100_50_1,0,0.727272727,0\nclassify_sgd,156,fri_c0_100_50_1,0.651162791,0.727272727,0.895348837\nclassify_pa,156,fri_c0_100_50_1,0.333333333,0.727272727,0.458333333\nclassify_mlp,156,fri_c0_100_50_1,0.727272727,0.727272727,1\nclassify_logreg,156,fri_c0_100_50_1,0.588235294,0.727272727,0.808823529\nclassify_knn,156,fri_c0_100_50_1,0.695652174,0.727272727,0.956521739\nclassify_gp,156,fri_c0_100_50_1,0.571428571,0.727272727,0.785714286\nclassify_gnb,156,fri_c0_100_50_1,0.580645161,0.727272727,0.798387097\nclassify_et,156,fri_c0_100_50_1,0.625,0.727272727,0.859375\nclassify_dt,156,fri_c0_100_50_1,0.551724138,0.727272727,0.75862069\nclassify_dbn,156,fri_c0_100_50_1,0.636363636,0.727272727,0.875\nclassify_bnb,156,fri_c0_100_50_1,0.545454545,0.727272727,0.75\nclassify_svm,157,fri_c0_100_5_1,0.904761905,0.930232558,0.972619048\nclassify_sgd,157,fri_c0_100_5_1,0.923076923,0.930232558,0.992307692\nclassify_rf,157,fri_c0_100_5_1,0.717948718,0.930232558,0.771794872\nclassify_pa,157,fri_c0_100_5_1,0.904761905,0.930232558,0.972619048\nclassify_mlp,157,fri_c0_100_5_1,0.926829268,0.930232558,0.996341463\nclassify_logreg,157,fri_c0_100_5_1,0.904761905,0.930232558,0.972619048\nclassify_knn,157,fri_c0_100_5_1,0.930232558,0.930232558,1\nclassify_gp,157,fri_c0_100_5_1,0.857142857,0.930232558,0.921428571\nclassify_gnb,157,fri_c0_100_5_1,0.9,0.930232558,0.9675\nclassify_et,157,fri_c0_100_5_1,0.857142857,0.930232558,0.921428571\nclassify_dt,157,fri_c0_100_5_1,0.717948718,0.930232558,0.771794872\nclassify_dbn,157,fri_c0_100_5_1,0.923076923,0.930232558,0.992307692\nclassify_bnb,157,fri_c0_100_5_1,0.761904762,0.930232558,0.819047619\nclassify_svm,158,fri_c0_250_10_1,0.820512821,0.876712329,0.935897436\nclassify_sgd,158,fri_c0_250_10_1,0.820512821,0.876712329,0.935897436\nclassify_rf,158,fri_c0_250_10_1,0.873239437,0.876712329,0.996038732\nclassify_pa,158,fri_c0_250_10_1,0.769230769,0.876712329,0.877403846\nclassify_mlp,158,fri_c0_250_10_1,0.842105263,0.876712329,0.960526316\nclassify_logreg,158,fri_c0_250_10_1,0.814814815,0.876712329,0.929398148\nclassify_knn,158,fri_c0_250_10_1,0.831168831,0.876712329,0.948051948\nclassify_gp,158,fri_c0_250_10_1,0.826666667,0.876712329,0.942916667\nclassify_gnb,158,fri_c0_250_10_1,0.837837838,0.876712329,0.955658784\nclassify_et,158,fri_c0_250_10_1,0.876712329,0.876712329,1\nclassify_dt,158,fri_c0_250_10_1,0.771428571,0.876712329,0.879910714\nclassify_dbn,158,fri_c0_250_10_1,0.842105263,0.876712329,0.960526316\nclassify_svm,159,fri_c0_250_25_1,0.623853211,0.828571429,0.752926289\nclassify_sgd,159,fri_c0_250_25_1,0.763157895,0.828571429,0.921052632\nclassify_rf,159,fri_c0_250_25_1,0.816901408,0.828571429,0.985915493\nclassify_pa,159,fri_c0_250_25_1,0.788732394,0.828571429,0.951918407\nclassify_mlp,159,fri_c0_250_25_1,0.828571429,0.828571429,1\nclassify_logreg,159,fri_c0_250_25_1,0.753623188,0.828571429,0.909545227\nclassify_knn,159,fri_c0_250_25_1,0.811594203,0.828571429,0.979510245\nclassify_gp,159,fri_c0_250_25_1,0.777777778,0.828571429,0.938697318\nclassify_gnb,159,fri_c0_250_25_1,0.811594203,0.828571429,0.979510245\nclassify_et,159,fri_c0_250_25_1,0.731182796,0.828571429,0.882461995\nclassify_dt,159,fri_c0_250_25_1,0.739726027,0.828571429,0.892772792\nclassify_dbn,159,fri_c0_250_25_1,0.823529412,0.828571429,0.993914807\nclassify_svm,160,fri_c0_250_50_1,0.64516129,0.864864865,0.745967742\nclassify_sgd,160,fri_c0_250_50_1,0.742857143,0.864864865,0.858928571\nclassify_rf,160,fri_c0_250_50_1,0.8,0.864864865,0.925\nclassify_pa,160,fri_c0_250_50_1,0.636363636,0.864864865,0.735795455\nclassify_mlp,160,fri_c0_250_50_1,0.738461539,0.864864865,0.853846154\nclassify_logreg,160,fri_c0_250_50_1,0.864864865,0.864864865,1\nclassify_knn,160,fri_c0_250_50_1,0.631578947,0.864864865,0.730263158\nclassify_gp,160,fri_c0_250_50_1,0.621621622,0.864864865,0.71875\nclassify_gnb,160,fri_c0_250_50_1,0.626865672,0.864864865,0.724813433\nclassify_et,160,fri_c0_250_50_1,0.633333333,0.864864865,0.732291667\nclassify_dt,160,fri_c0_250_50_1,0.75,0.864864865,0.8671875\nclassify_dbn,160,fri_c0_250_50_1,0.666666667,0.864864865,0.770833333\nclassify_svm,161,fri_c0_250_5_1,0,0.886075949,0\nclassify_sgd,161,fri_c0_250_5_1,0.780952381,0.886075949,0.881360544\nclassify_rf,161,fri_c0_250_5_1,0.857142857,0.886075949,0.967346939\nclassify_pa,161,fri_c0_250_5_1,0.775510204,0.886075949,0.875218659\nclassify_mlp,161,fri_c0_250_5_1,0.871794872,0.886075949,0.983882784\nclassify_logreg,161,fri_c0_250_5_1,0.839506173,0.886075949,0.947442681\nclassify_knn,161,fri_c0_250_5_1,0.886075949,0.886075949,1\nclassify_gp,161,fri_c0_250_5_1,0.860759494,0.886075949,0.971428571\nclassify_gnb,161,fri_c0_250_5_1,0.826666667,0.886075949,0.932952381\nclassify_et,161,fri_c0_250_5_1,0.857142857,0.886075949,0.967346939\nclassify_dt,161,fri_c0_250_5_1,0.72972973,0.886075949,0.823552123\nclassify_dbn,161,fri_c0_250_5_1,0.886075949,0.886075949,1\nclassify_bnb,161,fri_c0_250_5_1,0.734177215,0.886075949,0.828571429\nclassify_svm,162,fri_c0_500_10_1,0.863013699,0.933333333,0.924657534\nclassify_sgd,162,fri_c0_500_10_1,0.849315068,0.933333333,0.909980431\nclassify_rf,162,fri_c0_500_10_1,0.912751678,0.933333333,0.977948226\nclassify_mlp,162,fri_c0_500_10_1,0.933333333,0.933333333,1\nclassify_logreg,162,fri_c0_500_10_1,0.857142857,0.933333333,0.918367347\nclassify_knn,162,fri_c0_500_10_1,0.855263158,0.933333333,0.916353383\nclassify_gp,162,fri_c0_500_10_1,0.868421053,0.933333333,0.930451128\nclassify_gnb,162,fri_c0_500_10_1,0.915492958,0.933333333,0.980885312\nclassify_et,162,fri_c0_500_10_1,0.909090909,0.933333333,0.974025974\nclassify_dt,162,fri_c0_500_10_1,0.688,0.933333333,0.737142857\nclassify_dbn,162,fri_c0_500_10_1,0.92,0.933333333,0.985714286\nclassify_bnb,162,fri_c0_500_10_1,0.701986755,0.933333333,0.752128666\nclassify_svm,163,fri_c0_500_25_1,0.689956332,0.838709677,0.822640242\nclassify_sgd,163,fri_c0_500_25_1,0.830188679,0.838709677,0.989840348\nclassify_rf,163,fri_c0_500_25_1,0.593220339,0.838709677,0.707301173\nclassify_pa,163,fri_c0_500_25_1,0.767123288,0.838709677,0.914646997\nclassify_mlp,163,fri_c0_500_25_1,0.838709677,0.838709677,1\nclassify_logreg,163,fri_c0_500_25_1,0.830188679,0.838709677,0.989840348\nclassify_knn,163,fri_c0_500_25_1,0.729927007,0.838709677,0.870297586\nclassify_gp,163,fri_c0_500_25_1,0.76056338,0.838709677,0.906825569\nclassify_gnb,163,fri_c0_500_25_1,0.824324324,0.838709677,0.982848233\nclassify_dt,163,fri_c0_500_25_1,0.797385621,0.838709677,0.95072901\nclassify_dbn,163,fri_c0_500_25_1,0.828947368,0.838709677,0.988360324\nclassify_bnb,163,fri_c0_500_25_1,0.706666667,0.838709677,0.842564103\nclassify_svm,164,fri_c0_500_50_1,0.025974026,0.862745098,0.030106257\nclassify_sgd,164,fri_c0_500_50_1,0.844155844,0.862745098,0.978453365\nclassify_rf,164,fri_c0_500_50_1,0.777777778,0.862745098,0.901515152\nclassify_pa,164,fri_c0_500_50_1,0.847682119,0.862745098,0.982540638\nclassify_mlp,164,fri_c0_500_50_1,0.862745098,0.862745098,1\nclassify_logreg,164,fri_c0_500_50_1,0.746666667,0.862745098,0.865454546\nclassify_knn,164,fri_c0_500_50_1,0.754966887,0.862745098,0.875075256\nclassify_gp,164,fri_c0_500_50_1,0.831168831,0.862745098,0.963400236\nclassify_gnb,164,fri_c0_500_50_1,0.794701987,0.862745098,0.921131848\nclassify_et,164,fri_c0_500_50_1,0.813793103,0.862745098,0.943260188\nclassify_dt,164,fri_c0_500_50_1,0.616352201,0.862745098,0.714408233\nclassify_dbn,164,fri_c0_500_50_1,0.857142857,0.862745098,0.993506494\nclassify_svm,165,fri_c0_500_5_1,0.842105263,0.9125,0.922855083\nclassify_sgd,165,fri_c0_500_5_1,0.858823529,0.9125,0.941176471\nclassify_rf,165,fri_c0_500_5_1,0.817610063,0.9125,0.896011028\nclassify_pa,165,fri_c0_500_5_1,0.742138365,0.9125,0.813302318\nclassify_mlp,165,fri_c0_500_5_1,0.898734177,0.9125,0.984914167\nclassify_logreg,165,fri_c0_500_5_1,0.743589744,0.9125,0.81489287\nclassify_knn,165,fri_c0_500_5_1,0.9125,0.9125,1\nclassify_gp,165,fri_c0_500_5_1,0.87012987,0.9125,0.953566981\nclassify_gnb,165,fri_c0_500_5_1,0.807692308,0.9125,0.885142255\nclassify_et,165,fri_c0_500_5_1,0.8,0.9125,0.876712329\nclassify_dt,165,fri_c0_500_5_1,0.717241379,0.9125,0.78601795\nclassify_dbn,165,fri_c0_500_5_1,0.91025641,0.9125,0.997541272\nclassify_bnb,165,fri_c0_500_5_1,0.763157895,0.9125,0.836337419\nclassify_svm,166,fri_c1_1000_10_1,0.777464789,0.943820225,0.823742455\nclassify_sgd,166,fri_c1_1000_10_1,0.749445676,0.943820225,0.794055538\nclassify_rf,166,fri_c1_1000_10_1,0.898876405,0.943820225,0.952380952\nclassify_pa,166,fri_c1_1000_10_1,0.683760684,0.943820225,0.724460725\nclassify_mlp,166,fri_c1_1000_10_1,0.943820225,0.943820225,1\nclassify_logreg,166,fri_c1_1000_10_1,0.674698795,0.943820225,0.714859438\nclassify_knn,166,fri_c1_1000_10_1,0.83286119,0.943820225,0.882436261\nclassify_gp,166,fri_c1_1000_10_1,0.742857143,0.943820225,0.78707483\nclassify_dt,166,fri_c1_1000_10_1,0.849557522,0.943820225,0.900126422\nclassify_dbn,166,fri_c1_1000_10_1,0.934844193,0.943820225,0.99048968\nclassify_bnb,166,fri_c1_1000_10_1,0.765363129,0.943820225,0.810920458\nclassify_svm,167,fri_c1_1000_25_1,0.681564246,0.920821114,0.740170089\nclassify_sgd,167,fri_c1_1000_25_1,0.720879121,0.920821114,0.782865542\nclassify_rf,167,fri_c1_1000_25_1,0.920821114,0.920821114,1\nclassify_pa,167,fri_c1_1000_25_1,0.583850932,0.920821114,0.634054674\nclassify_mlp,167,fri_c1_1000_25_1,0.88115942,0.920821114,0.956927905\nclassify_logreg,167,fri_c1_1000_25_1,0.625386997,0.920821114,0.679162312\nclassify_knn,167,fri_c1_1000_25_1,0.744186047,0.920821114,0.808176566\nclassify_gp,167,fri_c1_1000_25_1,0.712446352,0.920821114,0.773707662\nclassify_gnb,167,fri_c1_1000_25_1,0.662824208,0.920821114,0.719818646\nclassify_dt,167,fri_c1_1000_25_1,0.908045977,0.920821114,0.986126364\nclassify_dbn,167,fri_c1_1000_25_1,0.685236769,0.920821114,0.744158402\nclassify_svm,168,fri_c1_1000_50_1,0.628571429,0.863768116,0.727708533\nclassify_sgd,168,fri_c1_1000_50_1,0.723809524,0.863768116,0.837967402\nclassify_rf,168,fri_c1_1000_50_1,0.863768116,0.863768116,1\nclassify_pa,168,fri_c1_1000_50_1,0.551282051,0.863768116,0.63822922\nclassify_mlp,168,fri_c1_1000_50_1,0.815476191,0.863768116,0.944091563\nclassify_logreg,168,fri_c1_1000_50_1,0.651612903,0.863768116,0.754384066\nclassify_knn,168,fri_c1_1000_50_1,0.704477612,0.863768116,0.815586497\nclassify_gp,168,fri_c1_1000_50_1,0.678362573,0.863768116,0.785352643\nclassify_dt,168,fri_c1_1000_50_1,0.834355828,0.863768116,0.965948862\nclassify_dbn,168,fri_c1_1000_50_1,0.724919094,0.863768116,0.839251971\nclassify_svm,169,fri_c1_1000_5_1,0.608391608,0.942598187,0.645441097\nclassify_sgd,169,fri_c1_1000_5_1,0.72386059,0.942598187,0.767941844\nclassify_pa,169,fri_c1_1000_5_1,0.72238806,0.942598187,0.76637964\nclassify_mlp,169,fri_c1_1000_5_1,0.942598187,0.942598187,1\nclassify_logreg,169,fri_c1_1000_5_1,0.68902439,0.942598187,0.730984209\nclassify_knn,169,fri_c1_1000_5_1,0.900302115,0.942598187,0.955128205\nclassify_gp,169,fri_c1_1000_5_1,0.929663609,0.942598187,0.986277739\nclassify_et,169,fri_c1_1000_5_1,0.826873385,0.942598187,0.877227854\nclassify_dt,169,fri_c1_1000_5_1,0.848137536,0.942598187,0.899786937\nclassify_dbn,169,fri_c1_1000_5_1,0.93373494,0.942598187,0.990597003\nclassify_bnb,169,fri_c1_1000_5_1,0.746438746,0.942598187,0.791894952\nclassify_svm,170,fri_c1_100_10_1,0.56,0.814814815,0.687272727\nclassify_sgd,170,fri_c1_100_10_1,0.666666667,0.814814815,0.818181818\nclassify_rf,170,fri_c1_100_10_1,0.714285714,0.814814815,0.876623377\nclassify_mlp,170,fri_c1_100_10_1,0.814814815,0.814814815,1\nclassify_logreg,170,fri_c1_100_10_1,0.64,0.814814815,0.785454545\nclassify_knn,170,fri_c1_100_10_1,0.666666667,0.814814815,0.818181818\nclassify_gp,170,fri_c1_100_10_1,0.714285714,0.814814815,0.876623377\nclassify_gnb,170,fri_c1_100_10_1,0.666666667,0.814814815,0.818181818\nclassify_et,170,fri_c1_100_10_1,0.785714286,0.814814815,0.964285714\nclassify_dt,170,fri_c1_100_10_1,0.666666667,0.814814815,0.818181818\nclassify_dbn,170,fri_c1_100_10_1,0.6875,0.814814815,0.84375\nclassify_svm,171,fri_c1_100_25_1,0.24,0.833333333,0.288\nclassify_sgd,171,fri_c1_100_25_1,0.777777778,0.833333333,0.933333333\nclassify_rf,171,fri_c1_100_25_1,0.833333333,0.833333333,1\nclassify_pa,171,fri_c1_100_25_1,0.75,0.833333333,0.9\nclassify_mlp,171,fri_c1_100_25_1,0.777777778,0.833333333,0.933333333\nclassify_logreg,171,fri_c1_100_25_1,0.684210526,0.833333333,0.821052632\nclassify_knn,171,fri_c1_100_25_1,0.647058824,0.833333333,0.776470588\nclassify_gp,171,fri_c1_100_25_1,0.723404255,0.833333333,0.868085106\nclassify_gnb,171,fri_c1_100_25_1,0.684210526,0.833333333,0.821052632\nclassify_et,171,fri_c1_100_25_1,0.820512821,0.833333333,0.984615385\nclassify_dt,171,fri_c1_100_25_1,0.8,0.833333333,0.96\nclassify_dbn,171,fri_c1_100_25_1,0.722222222,0.833333333,0.866666667\nclassify_svm,172,fri_c1_100_50_1,0.666666667,0.761904762,0.875\nclassify_sgd,172,fri_c1_100_50_1,0.723404255,0.761904762,0.949468085\nclassify_rf,172,fri_c1_100_50_1,0.714285714,0.761904762,0.9375\nclassify_pa,172,fri_c1_100_50_1,0.666666667,0.761904762,0.875\nclassify_mlp,172,fri_c1_100_50_1,0.736842105,0.761904762,0.967105263\nclassify_logreg,172,fri_c1_100_50_1,0.606060606,0.761904762,0.795454546\nclassify_knn,172,fri_c1_100_50_1,0.722222222,0.761904762,0.947916667\nclassify_gp,172,fri_c1_100_50_1,0.723404255,0.761904762,0.949468085\nclassify_gnb,172,fri_c1_100_50_1,0.611111111,0.761904762,0.802083333\nclassify_et,172,fri_c1_100_50_1,0.761904762,0.761904762,1\nclassify_dt,172,fri_c1_100_50_1,0.578947368,0.761904762,0.759868421\nclassify_dbn,172,fri_c1_100_50_1,0.723404255,0.761904762,0.949468085\nclassify_svm,173,fri_c1_100_5_1,0.823529412,0.976744186,0.843137255\nclassify_sgd,173,fri_c1_100_5_1,0.893617021,0.976744186,0.914893617\nclassify_pa,173,fri_c1_100_5_1,0.685714286,0.976744186,0.702040816\nclassify_mlp,173,fri_c1_100_5_1,0.976744186,0.976744186,1\nclassify_logreg,173,fri_c1_100_5_1,0.75,0.976744186,0.767857143\nclassify_knn,173,fri_c1_100_5_1,0.954545455,0.976744186,0.977272727\nclassify_gp,173,fri_c1_100_5_1,0.904761905,0.976744186,0.926303855\nclassify_gnb,173,fri_c1_100_5_1,0.736842105,0.976744186,0.754385965\nclassify_et,173,fri_c1_100_5_1,0.842105263,0.976744186,0.862155389\nclassify_dt,173,fri_c1_100_5_1,0.780487805,0.976744186,0.799070848\nclassify_dbn,173,fri_c1_100_5_1,0.926829268,0.976744186,0.948896632\nclassify_bnb,173,fri_c1_100_5_1,0.857142857,0.976744186,0.87755102\nclassify_svm,174,fri_c1_250_10_1,0.727272727,0.909090909,0.8\nclassify_sgd,174,fri_c1_250_10_1,0.771084337,0.909090909,0.848192771\nclassify_pa,174,fri_c1_250_10_1,0.752941177,0.909090909,0.828235294\nclassify_mlp,174,fri_c1_250_10_1,0.909090909,0.909090909,1\nclassify_logreg,174,fri_c1_250_10_1,0.734177215,0.909090909,0.807594937\nclassify_knn,174,fri_c1_250_10_1,0.814814815,0.909090909,0.896296296\nclassify_gp,174,fri_c1_250_10_1,0.764044944,0.909090909,0.840449438\nclassify_et,174,fri_c1_250_10_1,0.853658537,0.909090909,0.93902439\nclassify_dt,174,fri_c1_250_10_1,0.853333333,0.909090909,0.938666667\nclassify_dbn,174,fri_c1_250_10_1,0.729411765,0.909090909,0.802352941\nclassify_bnb,174,fri_c1_250_10_1,0.783783784,0.909090909,0.862162162\nclassify_svm,175,fri_c1_250_25_1,0.706896552,0.85106383,0.830603448\nclassify_sgd,175,fri_c1_250_25_1,0.727272727,0.85106383,0.854545455\nclassify_pa,175,fri_c1_250_25_1,0.642857143,0.85106383,0.755357143\nclassify_mlp,175,fri_c1_250_25_1,0.75862069,0.85106383,0.89137931\nclassify_logreg,175,fri_c1_250_25_1,0.651685393,0.85106383,0.765730337\nclassify_knn,175,fri_c1_250_25_1,0.739130435,0.85106383,0.868478261\nclassify_gp,175,fri_c1_250_25_1,0.714285714,0.85106383,0.839285714\nclassify_et,175,fri_c1_250_25_1,0.85106383,0.85106383,1\nclassify_dt,175,fri_c1_250_25_1,0.808510638,0.85106383,0.95\nclassify_dbn,175,fri_c1_250_25_1,0.719101124,0.85106383,0.84494382\nclassify_svm,176,fri_c1_250_50_1,0.714285714,0.917647059,0.778388278\nclassify_sgd,176,fri_c1_250_50_1,0.778947368,0.917647059,0.848852901\nclassify_rf,176,fri_c1_250_50_1,0.917647059,0.917647059,1\nclassify_mlp,176,fri_c1_250_50_1,0.75,0.917647059,0.817307692\nclassify_logreg,176,fri_c1_250_50_1,0.720930233,0.917647059,0.7856291\nclassify_knn,176,fri_c1_250_50_1,0.764044944,0.917647059,0.83261308\nclassify_gp,176,fri_c1_250_50_1,0.755102041,0.917647059,0.822867609\nclassify_et,176,fri_c1_250_50_1,0.906976744,0.917647059,0.988372093\nclassify_dt,176,fri_c1_250_50_1,0.866666667,0.917647059,0.944444445\nclassify_dbn,176,fri_c1_250_50_1,0.727272727,0.917647059,0.792540793\nclassify_sgd,177,fri_c1_250_5_1,0.732673267,0.951219512,0.770246255\nclassify_rf,177,fri_c1_250_5_1,0.951219512,0.951219512,1\nclassify_pa,177,fri_c1_250_5_1,0.666666667,0.951219512,0.700854701\nclassify_mlp,177,fri_c1_250_5_1,0.935064935,0.951219512,0.983016983\nclassify_logreg,177,fri_c1_250_5_1,0.729411765,0.951219512,0.766817496\nclassify_knn,177,fri_c1_250_5_1,0.864864865,0.951219512,0.909216909\nclassify_gp,177,fri_c1_250_5_1,0.821917808,0.951219512,0.864067439\nclassify_et,177,fri_c1_250_5_1,0.825,0.951219512,0.867307692\nclassify_dt,177,fri_c1_250_5_1,0.727272727,0.951219512,0.764568765\nclassify_dbn,177,fri_c1_250_5_1,0.871794872,0.951219512,0.916502301\nclassify_bnb,177,fri_c1_250_5_1,0.571428571,0.951219512,0.600732601\nclassify_svm,178,fri_c1_500_10_1,0.695652174,0.911392405,0.763285024\nclassify_sgd,178,fri_c1_500_10_1,0.695652174,0.911392405,0.763285024\nclassify_rf,178,fri_c1_500_10_1,0.871794872,0.911392405,0.956552707\nclassify_mlp,178,fri_c1_500_10_1,0.911392405,0.911392405,1\nclassify_logreg,178,fri_c1_500_10_1,0.67948718,0.911392405,0.745548433\nclassify_knn,178,fri_c1_500_10_1,0.835443038,0.911392405,0.916666667\nclassify_gp,178,fri_c1_500_10_1,0.696202532,0.911392405,0.763888889\nclassify_gnb,178,fri_c1_500_10_1,0.6875,0.911392405,0.754340278\nclassify_et,178,fri_c1_500_10_1,0.855345912,0.911392405,0.938504542\nclassify_dt,178,fri_c1_500_10_1,0.781065089,0.911392405,0.857001972\nclassify_dbn,178,fri_c1_500_10_1,0.881987578,0.911392405,0.96773637\nclassify_bnb,178,fri_c1_500_10_1,0.705882353,0.911392405,0.774509804\nclassify_svm,179,fri_c1_500_25_1,0.735751295,0.899408284,0.818039269\nclassify_sgd,179,fri_c1_500_25_1,0.739884393,0.899408284,0.822634621\nclassify_rf,179,fri_c1_500_25_1,0.899408284,0.899408284,1\nclassify_pa,179,fri_c1_500_25_1,0.706586826,0.899408284,0.785612985\nclassify_mlp,179,fri_c1_500_25_1,0.848484848,0.899408284,0.94338118\nclassify_logreg,179,fri_c1_500_25_1,0.695121951,0.899408284,0.772865854\nclassify_knn,179,fri_c1_500_25_1,0.77173913,0.899408284,0.858052059\nclassify_gp,179,fri_c1_500_25_1,0.710382514,0.899408284,0.78983319\nclassify_gnb,179,fri_c1_500_25_1,0.721893491,0.899408284,0.802631579\nclassify_dt,179,fri_c1_500_25_1,0.773006135,0.899408284,0.859460769\nclassify_dbn,179,fri_c1_500_25_1,0.717647059,0.899408284,0.797910217\nclassify_svm,180,fri_c1_500_50_1,0.712446352,0.797687861,0.893139267\nclassify_sgd,180,fri_c1_500_50_1,0.715083799,0.797687861,0.896445632\nclassify_pa,180,fri_c1_500_50_1,0.654761905,0.797687861,0.820824707\nclassify_mlp,180,fri_c1_500_50_1,0.712446352,0.797687861,0.893139267\nclassify_logreg,180,fri_c1_500_50_1,0.682926829,0.797687861,0.856132909\nclassify_knn,180,fri_c1_500_50_1,0.725,0.797687861,0.908876812\nclassify_gp,180,fri_c1_500_50_1,0.712446352,0.797687861,0.893139267\nclassify_dt,180,fri_c1_500_50_1,0.797687861,0.797687861,1\nclassify_dbn,180,fri_c1_500_50_1,0.712871287,0.797687861,0.893671976\nclassify_bnb,180,fri_c1_500_50_1,0.670731707,0.797687861,0.840844821\nclassify_svm,181,fri_c1_500_5_1,0.734177215,0.913294798,0.803877584\nclassify_sgd,181,fri_c1_500_5_1,0.747474748,0.913294798,0.81843754\nclassify_rf,181,fri_c1_500_5_1,0.866666667,0.913294798,0.948945148\nclassify_mlp,181,fri_c1_500_5_1,0.913294798,0.913294798,1\nclassify_logreg,181,fri_c1_500_5_1,0.717647059,0.913294798,0.785778109\nclassify_knn,181,fri_c1_500_5_1,0.839506173,0.913294798,0.919206126\nclassify_gp,181,fri_c1_500_5_1,0.857142857,0.913294798,0.938517179\nclassify_gnb,181,fri_c1_500_5_1,0.741176471,0.913294798,0.811541325\nclassify_et,181,fri_c1_500_5_1,0.845714286,0.913294798,0.926003617\nclassify_dt,181,fri_c1_500_5_1,0.843243243,0.913294798,0.923297981\nclassify_dbn,181,fri_c1_500_5_1,0.863905325,0.913294798,0.945921654\nclassify_svm,182,fri_c2_1000_10_1,0.818991098,0.937313433,0.873764388\nclassify_sgd,182,fri_c2_1000_10_1,0.733668342,0.937313433,0.782735333\nclassify_rf,182,fri_c2_1000_10_1,0.858725762,0.937313433,0.916156466\nclassify_pa,182,fri_c2_1000_10_1,0.733524355,0.937313433,0.782581717\nclassify_mlp,182,fri_c2_1000_10_1,0.937313433,0.937313433,1\nclassify_logreg,182,fri_c2_1000_10_1,0.628205128,0.937313433,0.670218847\nclassify_knn,182,fri_c2_1000_10_1,0.835294118,0.937313433,0.891157737\nclassify_gp,182,fri_c2_1000_10_1,0.780626781,0.937313433,0.832834304\nclassify_et,182,fri_c2_1000_10_1,0.725663717,0.937313433,0.774195367\nclassify_dt,182,fri_c2_1000_10_1,0.816326531,0.937313433,0.870921617\nclassify_dbn,182,fri_c2_1000_10_1,0.916167665,0.937313433,0.977440024\nclassify_bnb,182,fri_c2_1000_10_1,0.762666667,0.937313433,0.813673036\nclassify_svm,183,fri_c2_1000_25_1,0.72611465,0.925373134,0.784672283\nclassify_sgd,183,fri_c2_1000_25_1,0.743315508,0.925373134,0.803260307\nclassify_rf,183,fri_c2_1000_25_1,0.908554572,0.925373134,0.981825102\nclassify_pa,183,fri_c2_1000_25_1,0.758017493,0.925373134,0.819147936\nclassify_mlp,183,fri_c2_1000_25_1,0.925373134,0.925373134,1\nclassify_logreg,183,fri_c2_1000_25_1,0.771159875,0.925373134,0.833350187\nclassify_knn,183,fri_c2_1000_25_1,0.808022923,0.925373134,0.873186062\nclassify_gp,183,fri_c2_1000_25_1,0.776536313,0.925373134,0.839160209\nclassify_et,183,fri_c2_1000_25_1,0.72611465,0.925373134,0.784672283\nclassify_dt,183,fri_c2_1000_25_1,0.889534884,0.925373134,0.961271568\nclassify_dbn,183,fri_c2_1000_25_1,0.818443804,0.925373134,0.884447337\nclassify_svm,184,fri_c2_1000_50_1,0.760330579,0.899728997,0.845066215\nclassify_sgd,184,fri_c2_1000_50_1,0.760330579,0.899728997,0.845066215\nclassify_rf,184,fri_c2_1000_50_1,0.899728997,0.899728997,1\nclassify_pa,184,fri_c2_1000_50_1,0.743362832,0.899728997,0.826207485\nclassify_mlp,184,fri_c2_1000_50_1,0.861971831,0.899728997,0.958034957\nclassify_logreg,184,fri_c2_1000_50_1,0.717325228,0.899728997,0.7972681\nclassify_knn,184,fri_c2_1000_50_1,0.761643836,0.899728997,0.846525829\nclassify_gp,184,fri_c2_1000_50_1,0.752688172,0.899728997,0.836572095\nclassify_gnb,184,fri_c2_1000_50_1,0.755813953,0.899728997,0.840046231\nclassify_et,184,fri_c2_1000_50_1,0.824512535,0.899728997,0.91640098\nclassify_dt,184,fri_c2_1000_50_1,0.84180791,0.899728997,0.935623851\nclassify_dbn,184,fri_c2_1000_50_1,0.760330579,0.899728997,0.845066215\nclassify_sgd,185,fri_c2_1000_5_1,0.770780856,0.945355191,0.815334663\nclassify_rf,185,fri_c2_1000_5_1,0.872222222,0.945355191,0.922639692\nclassify_pa,185,fri_c2_1000_5_1,0.802259887,0.945355191,0.848633291\nclassify_mlp,185,fri_c2_1000_5_1,0.945355191,0.945355191,1\nclassify_logreg,185,fri_c2_1000_5_1,0.719764012,0.945355191,0.761368868\nclassify_knn,185,fri_c2_1000_5_1,0.91011236,0.945355191,0.96272001\nclassify_gp,185,fri_c2_1000_5_1,0.904494382,0.945355191,0.956777294\nclassify_et,185,fri_c2_1000_5_1,0.869806094,0.945355191,0.920083903\nclassify_dt,185,fri_c2_1000_5_1,0.863768116,0.945355191,0.913696909\nclassify_dbn,185,fri_c2_1000_5_1,0.941828255,0.945355191,0.996269194\nclassify_bnb,185,fri_c2_1000_5_1,0.809782609,0.945355191,0.856590852\nclassify_svm,186,fri_c2_100_10_1,0.695652174,0.823529412,0.844720497\nclassify_sgd,186,fri_c2_100_10_1,0.764705882,0.823529412,0.928571429\nclassify_rf,186,fri_c2_100_10_1,0.666666667,0.823529412,0.80952381\nclassify_pa,186,fri_c2_100_10_1,0.666666667,0.823529412,0.80952381\nclassify_mlp,186,fri_c2_100_10_1,0.823529412,0.823529412,1\nclassify_logreg,186,fri_c2_100_10_1,0.6875,0.823529412,0.834821429\nclassify_knn,186,fri_c2_100_10_1,0.777777778,0.823529412,0.944444444\nclassify_gp,186,fri_c2_100_10_1,0.722222222,0.823529412,0.876984127\nclassify_et,186,fri_c2_100_10_1,0.769230769,0.823529412,0.934065934\nclassify_dt,186,fri_c2_100_10_1,0.620689655,0.823529412,0.753694581\nclassify_dbn,186,fri_c2_100_10_1,0.717948718,0.823529412,0.871794872\nclassify_bnb,186,fri_c2_100_10_1,0.75,0.823529412,0.910714286\nclassify_svm,187,fri_c2_100_25_1,0.695652174,0.9375,0.742028985\nclassify_sgd,187,fri_c2_100_25_1,0.823529412,0.9375,0.878431373\nclassify_rf,187,fri_c2_100_25_1,0.9375,0.9375,1\nclassify_pa,187,fri_c2_100_25_1,0.823529412,0.9375,0.878431373\nclassify_mlp,187,fri_c2_100_25_1,0.823529412,0.9375,0.878431373\nclassify_logreg,187,fri_c2_100_25_1,0.848484848,0.9375,0.905050505\nclassify_knn,187,fri_c2_100_25_1,0.864864865,0.9375,0.922522523\nclassify_gp,187,fri_c2_100_25_1,0.744186047,0.9375,0.79379845\nclassify_gnb,187,fri_c2_100_25_1,0.857142857,0.9375,0.914285714\nclassify_et,187,fri_c2_100_25_1,0.9375,0.9375,1\nclassify_dt,187,fri_c2_100_25_1,0.875,0.9375,0.933333333\nclassify_dbn,187,fri_c2_100_25_1,0.833333333,0.9375,0.888888889\nclassify_svm,188,fri_c2_100_50_1,0.647058824,0.9,0.718954248\nclassify_sgd,188,fri_c2_100_50_1,0.84,0.9,0.933333333\nclassify_rf,188,fri_c2_100_50_1,0.9,0.9,1\nclassify_pa,188,fri_c2_100_50_1,0.516129032,0.9,0.573476703\nclassify_mlp,188,fri_c2_100_50_1,0.823529412,0.9,0.91503268\nclassify_logreg,188,fri_c2_100_50_1,0.64516129,0.9,0.716845878\nclassify_knn,188,fri_c2_100_50_1,0.80952381,0.9,0.899470899\nclassify_gp,188,fri_c2_100_50_1,0.808510638,0.9,0.898345154\nclassify_et,188,fri_c2_100_50_1,0.833333333,0.9,0.925925926\nclassify_dt,188,fri_c2_100_50_1,0.588235294,0.9,0.653594771\nclassify_dbn,188,fri_c2_100_50_1,0.780487805,0.9,0.867208672\nclassify_bnb,188,fri_c2_100_50_1,0.75,0.9,0.833333333\nclassify_svm,189,fri_c2_100_5_1,0.733333333,0.882352941,0.831111111\nclassify_sgd,189,fri_c2_100_5_1,0.736842105,0.882352941,0.835087719\nclassify_rf,189,fri_c2_100_5_1,0.736842105,0.882352941,0.835087719\nclassify_pa,189,fri_c2_100_5_1,0.666666667,0.882352941,0.755555556\nclassify_mlp,189,fri_c2_100_5_1,0.857142857,0.882352941,0.971428571\nclassify_logreg,189,fri_c2_100_5_1,0.642857143,0.882352941,0.728571429\nclassify_knn,189,fri_c2_100_5_1,0.882352941,0.882352941,1\nclassify_gp,189,fri_c2_100_5_1,0.810810811,0.882352941,0.918918919\nclassify_dt,189,fri_c2_100_5_1,0.789473684,0.882352941,0.894736842\nclassify_dbn,189,fri_c2_100_5_1,0.666666667,0.882352941,0.755555556\nclassify_svm,190,fri_c2_250_10_1,0,0.957446809,0\nclassify_sgd,190,fri_c2_250_10_1,0.85,0.957446809,0.887777778\nclassify_rf,190,fri_c2_250_10_1,0.9375,0.957446809,0.979166667\nclassify_pa,190,fri_c2_250_10_1,0.792079208,0.957446809,0.827282728\nclassify_mlp,190,fri_c2_250_10_1,0.956521739,0.957446809,0.999033816\nclassify_logreg,190,fri_c2_250_10_1,0.864197531,0.957446809,0.90260631\nclassify_knn,190,fri_c2_250_10_1,0.914893617,0.957446809,0.955555556\nclassify_gp,190,fri_c2_250_10_1,0.807692308,0.957446809,0.843589744\nclassify_gnb,190,fri_c2_250_10_1,0.906976744,0.957446809,0.947286822\nclassify_et,190,fri_c2_250_10_1,0.957446809,0.957446809,1\nclassify_dt,190,fri_c2_250_10_1,0.924731183,0.957446809,0.965830346\nclassify_dbn,190,fri_c2_250_10_1,0.911111111,0.957446809,0.951604938\nclassify_sgd,191,fri_c2_250_25_1,0.695652174,0.878048781,0.792270531\nclassify_rf,191,fri_c2_250_25_1,0.878048781,0.878048781,1\nclassify_pa,191,fri_c2_250_25_1,0.684210526,0.878048781,0.779239766\nclassify_mlp,191,fri_c2_250_25_1,0.759493671,0.878048781,0.864978903\nclassify_logreg,191,fri_c2_250_25_1,0.694444444,0.878048781,0.790895062\nclassify_knn,191,fri_c2_250_25_1,0.731707317,0.878048781,0.833333333\nclassify_gp,191,fri_c2_250_25_1,0.727272727,0.878048781,0.828282828\nclassify_gnb,191,fri_c2_250_25_1,0.701298701,0.878048781,0.798701299\nclassify_et,191,fri_c2_250_25_1,0.795180723,0.878048781,0.90562249\nclassify_dbn,191,fri_c2_250_25_1,0.716049383,0.878048781,0.815500686\nclassify_bnb,191,fri_c2_250_25_1,0.756097561,0.878048781,0.861111111\nclassify_svm,192,fri_c2_250_50_1,0.684210526,0.810126582,0.844572368\nclassify_sgd,192,fri_c2_250_50_1,0.770833333,0.810126582,0.951497396\nclassify_rf,192,fri_c2_250_50_1,0.790697674,0.810126582,0.976017442\nclassify_pa,192,fri_c2_250_50_1,0.692307692,0.810126582,0.854567308\nclassify_mlp,192,fri_c2_250_50_1,0.782608696,0.810126582,0.966032609\nclassify_logreg,192,fri_c2_250_50_1,0.717948718,0.810126582,0.886217949\nclassify_knn,192,fri_c2_250_50_1,0.734693878,0.810126582,0.906887755\nclassify_gp,192,fri_c2_250_50_1,0.747474748,0.810126582,0.922664141\nclassify_gnb,192,fri_c2_250_50_1,0.705882353,0.810126582,0.871323529\nclassify_et,192,fri_c2_250_50_1,0.771084337,0.810126582,0.951807229\nclassify_dt,192,fri_c2_250_50_1,0.810126582,0.810126582,1\nclassify_dbn,192,fri_c2_250_50_1,0.696428571,0.810126582,0.859654018\nclassify_bnb,192,fri_c2_250_50_1,0.756097561,0.810126582,0.933307927\nclassify_svm,193,fri_c2_250_5_1,0.790697674,0.936170213,0.844608879\nclassify_sgd,193,fri_c2_250_5_1,0.835164835,0.936170213,0.892107892\nclassify_rf,193,fri_c2_250_5_1,0.916666667,0.936170213,0.979166667\nclassify_pa,193,fri_c2_250_5_1,0.818181818,0.936170213,0.873966942\nclassify_mlp,193,fri_c2_250_5_1,0.936170213,0.936170213,1\nclassify_logreg,193,fri_c2_250_5_1,0.857142857,0.936170213,0.915584416\nclassify_knn,193,fri_c2_250_5_1,0.914893617,0.936170213,0.977272727\nclassify_gp,193,fri_c2_250_5_1,0.903225807,0.936170213,0.964809384\nclassify_gnb,193,fri_c2_250_5_1,0.857142857,0.936170213,0.915584416\nclassify_et,193,fri_c2_250_5_1,0.854166667,0.936170213,0.912405303\nclassify_dt,193,fri_c2_250_5_1,0.924731183,0.936170213,0.987781036\nclassify_dbn,193,fri_c2_250_5_1,0.905263158,0.936170213,0.966985646\nclassify_bnb,193,fri_c2_250_5_1,0.808080808,0.936170213,0.863177227\nclassify_svm,194,fri_c2_500_10_1,0.710526316,0.938271605,0.757271468\nclassify_sgd,194,fri_c2_500_10_1,0.761290323,0.938271605,0.811375212\nclassify_rf,194,fri_c2_500_10_1,0.862275449,0.938271605,0.919004097\nclassify_mlp,194,fri_c2_500_10_1,0.938271605,0.938271605,1\nclassify_logreg,194,fri_c2_500_10_1,0.812903226,0.938271605,0.866383701\nclassify_knn,194,fri_c2_500_10_1,0.843373494,0.938271605,0.898858592\nclassify_gp,194,fri_c2_500_10_1,0.833333333,0.938271605,0.888157895\nclassify_et,194,fri_c2_500_10_1,0.873563218,0.938271605,0.931034483\nclassify_dbn,194,fri_c2_500_10_1,0.902439024,0.938271605,0.961810013\nclassify_bnb,194,fri_c2_500_10_1,0.858895705,0.938271605,0.915402002\nclassify_svm,195,fri_c2_500_25_1,0.790322581,0.901960784,0.876227209\nclassify_sgd,195,fri_c2_500_25_1,0.790322581,0.901960784,0.876227209\nclassify_rf,195,fri_c2_500_25_1,0.901960784,0.901960784,1\nclassify_mlp,195,fri_c2_500_25_1,0.864583333,0.901960784,0.958559783\nclassify_logreg,195,fri_c2_500_25_1,0.708571429,0.901960784,0.785590062\nclassify_knn,195,fri_c2_500_25_1,0.812182741,0.901960784,0.900463474\nclassify_gp,195,fri_c2_500_25_1,0.755980861,0.901960784,0.838152694\nclassify_et,195,fri_c2_500_25_1,0.833333333,0.901960784,0.923913043\nclassify_dt,195,fri_c2_500_25_1,0.868292683,0.901960784,0.962672322\nclassify_dbn,195,fri_c2_500_25_1,0.818181818,0.901960784,0.907114625\nclassify_bnb,195,fri_c2_500_25_1,0.765714286,0.901960784,0.848944099\nclassify_sgd,196,fri_c2_500_50_1,0.746268657,0.82208589,0.90777456\nclassify_pa,196,fri_c2_500_50_1,0.773006135,0.82208589,0.940298507\nclassify_mlp,196,fri_c2_500_50_1,0.814371258,0.82208589,0.990615783\nclassify_logreg,196,fri_c2_500_50_1,0.708333333,0.82208589,0.861629353\nclassify_knn,196,fri_c2_500_50_1,0.768421053,0.82208589,0.934721131\nclassify_gp,196,fri_c2_500_50_1,0.744897959,0.82208589,0.906107219\nclassify_et,196,fri_c2_500_50_1,0.701298701,0.82208589,0.853072301\nclassify_dt,196,fri_c2_500_50_1,0.82208589,0.82208589,1\nclassify_dbn,196,fri_c2_500_50_1,0.745283019,0.82208589,0.906575613\nclassify_bnb,196,fri_c2_500_50_1,0.684210526,0.82208589,0.832285939\nclassify_svm,197,fri_c2_500_5_1,0.80952381,0.960784314,0.842565598\nclassify_sgd,197,fri_c2_500_5_1,0.824742268,0.960784314,0.858405218\nclassify_pa,197,fri_c2_500_5_1,0.842639594,0.960784314,0.877033047\nclassify_mlp,197,fri_c2_500_5_1,0.96039604,0.960784314,0.999595878\nclassify_logreg,197,fri_c2_500_5_1,0.827225131,0.960784314,0.860989422\nclassify_knn,197,fri_c2_500_5_1,0.921568628,0.960784314,0.959183674\nclassify_gp,197,fri_c2_500_5_1,0.905472637,0.960784314,0.942430704\nclassify_et,197,fri_c2_500_5_1,0.900473934,0.960784314,0.937227972\nclassify_dt,197,fri_c2_500_5_1,0.772486773,0.960784314,0.804016845\nclassify_dbn,197,fri_c2_500_5_1,0.960784314,0.960784314,1\nclassify_bnb,197,fri_c2_500_5_1,0.81443299,0.960784314,0.847675153\nclassify_svm,198,fri_c3_1000_10_1,0.828828829,0.947040498,0.875177809\nclassify_sgd,198,fri_c3_1000_10_1,0.70531401,0.947040498,0.744755912\nclassify_rf,198,fri_c3_1000_10_1,0.801120448,0.947040498,0.845919947\nclassify_mlp,198,fri_c3_1000_10_1,0.947040498,0.947040498,1\nclassify_logreg,198,fri_c3_1000_10_1,0.681818182,0.947040498,0.719946172\nclassify_knn,198,fri_c3_1000_10_1,0.838709677,0.947040498,0.885611205\nclassify_gp,198,fri_c3_1000_10_1,0.832335329,0.947040498,0.878880397\nclassify_gnb,198,fri_c3_1000_10_1,0.656534954,0.947040498,0.69324908\nclassify_et,198,fri_c3_1000_10_1,0.746341463,0.947040498,0.788077664\nclassify_dt,198,fri_c3_1000_10_1,0.807121662,0.947040498,0.852256755\nclassify_dbn,198,fri_c3_1000_10_1,0.849498328,0.947040498,0.897003169\nclassify_svm,199,fri_c3_1000_25_1,0.692810458,0.945121951,0.733038161\nclassify_sgd,199,fri_c3_1000_25_1,0.72,0.945121951,0.761806452\nclassify_rf,199,fri_c3_1000_25_1,0.805405405,0.945121951,0.852170881\nclassify_mlp,199,fri_c3_1000_25_1,0.945121951,0.945121951,1\nclassify_logreg,199,fri_c3_1000_25_1,0.684210526,0.945121951,0.723938879\nclassify_knn,199,fri_c3_1000_25_1,0.810495627,0.945121951,0.857556663\nclassify_gp,199,fri_c3_1000_25_1,0.730337079,0.945121951,0.772743748\nclassify_gnb,199,fri_c3_1000_25_1,0.684684685,0.945121951,0.72444057\nclassify_et,199,fri_c3_1000_25_1,0.920731707,0.945121951,0.974193548\nclassify_dt,199,fri_c3_1000_25_1,0.915360502,0.945121951,0.968510466\nclassify_dbn,199,fri_c3_1000_25_1,0.851963746,0.945121951,0.901432609\nclassify_svm,200,fri_c3_1000_50_1,0.713091922,0.883435583,0.80718044\nclassify_sgd,200,fri_c3_1000_50_1,0.735294118,0.883435583,0.832312091\nclassify_rf,200,fri_c3_1000_50_1,0.844192635,0.883435583,0.955579163\nclassify_mlp,200,fri_c3_1000_50_1,0.883435583,0.883435583,1\nclassify_logreg,200,fri_c3_1000_50_1,0.664473684,0.883435583,0.752147295\nclassify_knn,200,fri_c3_1000_50_1,0.735042735,0.883435583,0.83202754\nclassify_gp,200,fri_c3_1000_50_1,0.718662953,0.883435583,0.813486537\nclassify_et,200,fri_c3_1000_50_1,0.883190883,0.883435583,0.999723014\nclassify_dt,200,fri_c3_1000_50_1,0.857988166,0.883435583,0.971194938\nclassify_dbn,200,fri_c3_1000_50_1,0.688172043,0.883435583,0.778972521\nclassify_bnb,200,fri_c3_1000_50_1,0.682634731,0.883435583,0.772704591\nclassify_svm,201,fri_c3_1000_5_1,0,0.942528736,0\nclassify_sgd,201,fri_c3_1000_5_1,0.73245614,0.942528736,0.7771181\nclassify_rf,201,fri_c3_1000_5_1,0.911680912,0.942528736,0.967271211\nclassify_pa,201,fri_c3_1000_5_1,0.693989071,0.942528736,0.736305478\nclassify_mlp,201,fri_c3_1000_5_1,0.942528736,0.942528736,1\nclassify_logreg,201,fri_c3_1000_5_1,0.679127726,0.942528736,0.720537953\nclassify_knn,201,fri_c3_1000_5_1,0.912790698,0.942528736,0.968448667\nclassify_gp,201,fri_c3_1000_5_1,0.899135447,0.942528736,0.953960779\nclassify_gnb,201,fri_c3_1000_5_1,0.687150838,0.942528736,0.729050279\nclassify_et,201,fri_c3_1000_5_1,0.814249364,0.942528736,0.863898715\nclassify_dt,201,fri_c3_1000_5_1,0.777142857,0.942528736,0.824529617\nclassify_dbn,201,fri_c3_1000_5_1,0.935933148,0.942528736,0.993002242\nclassify_bnb,201,fri_c3_1000_5_1,0.731843575,0.942528736,0.776468184\nclassify_svm,202,fri_c3_100_10_1,0.775510204,0.894736842,0.866746699\nclassify_sgd,202,fri_c3_100_10_1,0.848484848,0.894736842,0.948306595\nclassify_rf,202,fri_c3_100_10_1,0.769230769,0.894736842,0.859728507\nclassify_pa,202,fri_c3_100_10_1,0.717948718,0.894736842,0.802413273\nclassify_mlp,202,fri_c3_100_10_1,0.894736842,0.894736842,1\nclassify_logreg,202,fri_c3_100_10_1,0.722222222,0.894736842,0.807189542\nclassify_knn,202,fri_c3_100_10_1,0.88372093,0.894736842,0.987688098\nclassify_gp,202,fri_c3_100_10_1,0.826086957,0.894736842,0.923273657\nclassify_et,202,fri_c3_100_10_1,0.820512821,0.894736842,0.917043741\nclassify_dt,202,fri_c3_100_10_1,0.777777778,0.894736842,0.869281046\nclassify_dbn,202,fri_c3_100_10_1,0.775510204,0.894736842,0.866746699\nclassify_bnb,202,fri_c3_100_10_1,0.516129032,0.894736842,0.576850095\nclassify_svm,203,fri_c3_100_25_1,0,0.823529412,0\nclassify_sgd,203,fri_c3_100_25_1,0.8,0.823529412,0.971428571\nclassify_rf,203,fri_c3_100_25_1,0.75,0.823529412,0.910714286\nclassify_pa,203,fri_c3_100_25_1,0.7,0.823529412,0.85\nclassify_mlp,203,fri_c3_100_25_1,0.777777778,0.823529412,0.944444444\nclassify_logreg,203,fri_c3_100_25_1,0.756756757,0.823529412,0.918918919\nclassify_knn,203,fri_c3_100_25_1,0.8,0.823529412,0.971428571\nclassify_gp,203,fri_c3_100_25_1,0.780487805,0.823529412,0.947735192\nclassify_gnb,203,fri_c3_100_25_1,0.631578947,0.823529412,0.766917293\nclassify_et,203,fri_c3_100_25_1,0.80952381,0.823529412,0.982993197\nclassify_dt,203,fri_c3_100_25_1,0.75862069,0.823529412,0.921182266\nclassify_dbn,203,fri_c3_100_25_1,0.823529412,0.823529412,1\nclassify_bnb,203,fri_c3_100_25_1,0.666666667,0.823529412,0.80952381\nclassify_svm,204,fri_c3_100_50_1,0.846153846,0.888888889,0.951923077\nclassify_sgd,204,fri_c3_100_50_1,0.846153846,0.888888889,0.951923077\nclassify_rf,204,fri_c3_100_50_1,0.888888889,0.888888889,1\nclassify_pa,204,fri_c3_100_50_1,0.564102564,0.888888889,0.634615385\nclassify_mlp,204,fri_c3_100_50_1,0.846153846,0.888888889,0.951923077\nclassify_logreg,204,fri_c3_100_50_1,0.666666667,0.888888889,0.75\nclassify_knn,204,fri_c3_100_50_1,0.816326531,0.888888889,0.918367347\nclassify_gp,204,fri_c3_100_50_1,0.846153846,0.888888889,0.951923077\nclassify_et,204,fri_c3_100_50_1,0.857142857,0.888888889,0.964285714\nclassify_dt,204,fri_c3_100_50_1,0.837209302,0.888888889,0.941860465\nclassify_dbn,204,fri_c3_100_50_1,0.846153846,0.888888889,0.951923077\nclassify_svm,205,fri_c3_100_5_1,0.689655172,0.857142857,0.804597701\nclassify_sgd,205,fri_c3_100_5_1,0.666666667,0.857142857,0.777777778\nclassify_rf,205,fri_c3_100_5_1,0.785714286,0.857142857,0.916666667\nclassify_pa,205,fri_c3_100_5_1,0.666666667,0.857142857,0.777777778\nclassify_mlp,205,fri_c3_100_5_1,0.857142857,0.857142857,1\nclassify_logreg,205,fri_c3_100_5_1,0.533333333,0.857142857,0.622222222\nclassify_knn,205,fri_c3_100_5_1,0.8,0.857142857,0.933333333\nclassify_gp,205,fri_c3_100_5_1,0.8,0.857142857,0.933333333\nclassify_gnb,205,fri_c3_100_5_1,0.516129032,0.857142857,0.602150538\nclassify_et,205,fri_c3_100_5_1,0.75862069,0.857142857,0.885057471\nclassify_dt,205,fri_c3_100_5_1,0.692307692,0.857142857,0.807692308\nclassify_dbn,205,fri_c3_100_5_1,0.6875,0.857142857,0.802083333\nclassify_bnb,205,fri_c3_100_5_1,0.434782609,0.857142857,0.507246377\nclassify_svm,206,fri_c3_250_10_1,0.692307692,0.933333333,0.741758242\nclassify_sgd,206,fri_c3_250_10_1,0.6875,0.933333333,0.736607143\nclassify_rf,206,fri_c3_250_10_1,0.916666667,0.933333333,0.982142857\nclassify_pa,206,fri_c3_250_10_1,0.666666667,0.933333333,0.714285714\nclassify_mlp,206,fri_c3_250_10_1,0.933333333,0.933333333,1\nclassify_logreg,206,fri_c3_250_10_1,0.676056338,0.933333333,0.724346076\nclassify_knn,206,fri_c3_250_10_1,0.845070423,0.933333333,0.905432596\nclassify_gp,206,fri_c3_250_10_1,0.725,0.933333333,0.776785714\nclassify_et,206,fri_c3_250_10_1,0.891891892,0.933333333,0.955598456\nclassify_dt,206,fri_c3_250_10_1,0.826666667,0.933333333,0.885714286\nclassify_dbn,206,fri_c3_250_10_1,0.75,0.933333333,0.803571429\nclassify_svm,207,fri_c3_250_25_1,0.739495798,0.826086957,0.895179124\nclassify_sgd,207,fri_c3_250_25_1,0.740740741,0.826086957,0.89668616\nclassify_rf,207,fri_c3_250_25_1,0.796116505,0.826086957,0.96371998\nclassify_pa,207,fri_c3_250_25_1,0.637362637,0.826086957,0.771544245\nclassify_mlp,207,fri_c3_250_25_1,0.747252747,0.826086957,0.904569115\nclassify_logreg,207,fri_c3_250_25_1,0.666666667,0.826086957,0.807017544\nclassify_knn,207,fri_c3_250_25_1,0.770833333,0.826086957,0.933114035\nclassify_gp,207,fri_c3_250_25_1,0.739495798,0.826086957,0.895179124\nclassify_et,207,fri_c3_250_25_1,0.811881188,0.826086957,0.982803544\nclassify_dt,207,fri_c3_250_25_1,0.826086957,0.826086957,1\nclassify_dbn,207,fri_c3_250_25_1,0.739495798,0.826086957,0.895179124\nclassify_bnb,207,fri_c3_250_25_1,0.782608696,0.826086957,0.947368421\nclassify_svm,208,fri_c3_250_50_1,0.75,0.846153846,0.886363636\nclassify_sgd,208,fri_c3_250_50_1,0.75,0.846153846,0.886363636\nclassify_mlp,208,fri_c3_250_50_1,0.75862069,0.846153846,0.896551724\nclassify_logreg,208,fri_c3_250_50_1,0.619047619,0.846153846,0.731601732\nclassify_knn,208,fri_c3_250_50_1,0.742268041,0.846153846,0.877225867\nclassify_gp,208,fri_c3_250_50_1,0.730434783,0.846153846,0.863241107\nclassify_gnb,208,fri_c3_250_50_1,0.625,0.846153846,0.738636364\nclassify_et,208,fri_c3_250_50_1,0.846153846,0.846153846,1\nclassify_dt,208,fri_c3_250_50_1,0.457831325,0.846153846,0.541073384\nclassify_dbn,208,fri_c3_250_50_1,0.666666667,0.846153846,0.787878788\nclassify_bnb,208,fri_c3_250_50_1,0.688888889,0.846153846,0.814141414\nclassify_svm,209,fri_c3_250_5_1,0.728813559,0.941176471,0.774364407\nclassify_sgd,209,fri_c3_250_5_1,0.785714286,0.941176471,0.834821429\nclassify_pa,209,fri_c3_250_5_1,0.738095238,0.941176471,0.78422619\nclassify_mlp,209,fri_c3_250_5_1,0.941176471,0.941176471,1\nclassify_logreg,209,fri_c3_250_5_1,0.759493671,0.941176471,0.806962025\nclassify_knn,209,fri_c3_250_5_1,0.941176471,0.941176471,1\nclassify_gp,209,fri_c3_250_5_1,0.906976744,0.941176471,0.963662791\nclassify_dt,209,fri_c3_250_5_1,0.875,0.941176471,0.9296875\nclassify_dbn,209,fri_c3_250_5_1,0.827586207,0.941176471,0.879310345\nclassify_bnb,209,fri_c3_250_5_1,0.791208791,0.941176471,0.840659341\nclassify_svm,210,fri_c3_500_10_1,0.706666667,0.939597315,0.752095238\nclassify_sgd,210,fri_c3_500_10_1,0.674157303,0.939597315,0.717495987\nclassify_pa,210,fri_c3_500_10_1,0.616352201,0.939597315,0.655974843\nclassify_mlp,210,fri_c3_500_10_1,0.939597315,0.939597315,1\nclassify_logreg,210,fri_c3_500_10_1,0.571428571,0.939597315,0.608163265\nclassify_knn,210,fri_c3_500_10_1,0.77631579,0.939597315,0.826221805\nclassify_gp,210,fri_c3_500_10_1,0.754966887,0.939597315,0.803500473\nclassify_gnb,210,fri_c3_500_10_1,0.617449664,0.939597315,0.657142857\nclassify_et,210,fri_c3_500_10_1,0.894736842,0.939597315,0.952255639\nclassify_dt,210,fri_c3_500_10_1,0.75177305,0.939597315,0.800101317\nclassify_dbn,210,fri_c3_500_10_1,0.795031056,0.939597315,0.846140195\nclassify_bnb,210,fri_c3_500_10_1,0.670807453,0.939597315,0.71393079\nclassify_svm,211,fri_c3_500_25_1,0.706896552,0.894117647,0.790607985\nclassify_sgd,211,fri_c3_500_25_1,0.733668342,0.894117647,0.820550119\nclassify_rf,211,fri_c3_500_25_1,0.894117647,0.894117647,1\nclassify_pa,211,fri_c3_500_25_1,0.682080925,0.894117647,0.762853666\nclassify_mlp,211,fri_c3_500_25_1,0.870588235,0.894117647,0.97368421\nclassify_logreg,211,fri_c3_500_25_1,0.644736842,0.894117647,0.721087258\nclassify_knn,211,fri_c3_500_25_1,0.735632184,0.894117647,0.822746521\nclassify_gp,211,fri_c3_500_25_1,0.706896552,0.894117647,0.790607985\nclassify_et,211,fri_c3_500_25_1,0.862275449,0.894117647,0.964387015\nclassify_dt,211,fri_c3_500_25_1,0.819875776,0.894117647,0.916966329\nclassify_dbn,211,fri_c3_500_25_1,0.732026144,0.894117647,0.81871345\nclassify_bnb,211,fri_c3_500_25_1,0.738636364,0.894117647,0.826106459\nclassify_svm,212,fri_c3_500_50_1,0.710059172,0.843930636,0.841371484\nclassify_sgd,212,fri_c3_500_50_1,0.733333333,0.843930636,0.868949772\nclassify_rf,212,fri_c3_500_50_1,0.843930636,0.843930636,1\nclassify_pa,212,fri_c3_500_50_1,0.710059172,0.843930636,0.841371484\nclassify_mlp,212,fri_c3_500_50_1,0.756756757,0.843930636,0.896704924\nclassify_logreg,212,fri_c3_500_50_1,0.662721894,0.843930636,0.785280052\nclassify_knn,212,fri_c3_500_50_1,0.715789474,0.843930636,0.8481615\nclassify_gp,212,fri_c3_500_50_1,0.701298701,0.843930636,0.830990927\nclassify_et,212,fri_c3_500_50_1,0.826086957,0.843930636,0.978856462\nclassify_dt,212,fri_c3_500_50_1,0.820512821,0.843930636,0.972251493\nclassify_dbn,212,fri_c3_500_50_1,0.720430108,0.843930636,0.853660333\nclassify_bnb,212,fri_c3_500_50_1,0.635761589,0.843930636,0.753333938\nclassify_svm,213,fri_c3_500_5_1,0.615384615,0.940397351,0.654387866\nclassify_sgd,213,fri_c3_500_5_1,0.660714286,0.940397351,0.702590543\nclassify_rf,213,fri_c3_500_5_1,0.8625,0.940397351,0.917165493\nclassify_pa,213,fri_c3_500_5_1,0.636363636,0.940397351,0.676696543\nclassify_mlp,213,fri_c3_500_5_1,0.940397351,0.940397351,1\nclassify_logreg,213,fri_c3_500_5_1,0.598639456,0.940397351,0.636581393\nclassify_knn,213,fri_c3_500_5_1,0.868421053,0.940397351,0.923461824\nclassify_gp,213,fri_c3_500_5_1,0.868421053,0.940397351,0.923461824\nclassify_gnb,213,fri_c3_500_5_1,0.603773585,0.940397351,0.642040925\nclassify_et,213,fri_c3_500_5_1,0.770186335,0.940397351,0.819000962\nclassify_dt,213,fri_c3_500_5_1,0.805194805,0.940397351,0.856228279\nclassify_dbn,213,fri_c3_500_5_1,0.928104575,0.940397351,0.986928105\nclassify_svm,214,fri_c4_1000_100_1,0.697674419,0.779156328,0.8954229\nclassify_sgd,214,fri_c4_1000_100_1,0.725806452,0.779156328,0.931528662\nclassify_mlp,214,fri_c4_1000_100_1,0.744047619,0.779156328,0.954940097\nclassify_logreg,214,fri_c4_1000_100_1,0.699421965,0.779156328,0.897665771\nclassify_knn,214,fri_c4_1000_100_1,0.655172414,0.779156328,0.840874149\nclassify_gp,214,fri_c4_1000_100_1,0.709382151,0.779156328,0.910449066\nclassify_et,214,fri_c4_1000_100_1,0.779156328,0.779156328,1\nclassify_dt,214,fri_c4_1000_100_1,0.676190476,0.779156328,0.86784956\nclassify_dbn,214,fri_c4_1000_100_1,0.693409742,0.779156328,0.889949446\nclassify_svm,215,fri_c4_1000_10_1,0.633093525,0.931677019,0.679520384\nclassify_sgd,215,fri_c4_1000_10_1,0.722955145,0.931677019,0.775971856\nclassify_rf,215,fri_c4_1000_10_1,0.777448071,0.931677019,0.83446093\nclassify_pa,215,fri_c4_1000_10_1,0.666666667,0.931677019,0.715555556\nclassify_mlp,215,fri_c4_1000_10_1,0.931677019,0.931677019,1\nclassify_logreg,215,fri_c4_1000_10_1,0.636986301,0.931677019,0.68369863\nclassify_knn,215,fri_c4_1000_10_1,0.797507788,0.931677019,0.855991693\nclassify_gp,215,fri_c4_1000_10_1,0.795031056,0.931677019,0.853333333\nclassify_et,215,fri_c4_1000_10_1,0.873846154,0.931677019,0.937928205\nclassify_dt,215,fri_c4_1000_10_1,0.791666667,0.931677019,0.849722222\nclassify_dbn,215,fri_c4_1000_10_1,0.9,0.931677019,0.966\nclassify_bnb,215,fri_c4_1000_10_1,0.71388102,0.931677019,0.766232295\nclassify_svm,216,fri_c4_1000_25_1,0.706896552,0.918429003,0.769680127\nclassify_sgd,216,fri_c4_1000_25_1,0.71,0.918429003,0.773059211\nclassify_rf,216,fri_c4_1000_25_1,0.918429003,0.918429003,1\nclassify_pa,216,fri_c4_1000_25_1,0.683195592,0.918429003,0.743874148\nclassify_mlp,216,fri_c4_1000_25_1,0.905775076,0.918429003,0.986222204\nclassify_logreg,216,fri_c4_1000_25_1,0.664615385,0.918429003,0.723643725\nclassify_knn,216,fri_c4_1000_25_1,0.764872521,0.918429003,0.832805278\nclassify_gp,216,fri_c4_1000_25_1,0.706552707,0.918429003,0.769305743\nclassify_gnb,216,fri_c4_1000_25_1,0.677115988,0.918429003,0.737254579\nclassify_et,216,fri_c4_1000_25_1,0.890804598,0.918429003,0.969922111\nclassify_dt,216,fri_c4_1000_25_1,0.857142857,0.918429003,0.933270677\nclassify_dbn,216,fri_c4_1000_25_1,0.760736196,0.918429003,0.828301582\nclassify_bnb,216,fri_c4_1000_25_1,0.717948718,0.918429003,0.7817139\nclassify_svm,217,fri_c4_1000_50_1,0.730077121,0.886904762,0.823174203\nclassify_sgd,217,fri_c4_1000_50_1,0.729064039,0.886904762,0.822031937\nclassify_rf,217,fri_c4_1000_50_1,0.886904762,0.886904762,1\nclassify_pa,217,fri_c4_1000_50_1,0.698412698,0.886904762,0.787472036\nclassify_mlp,217,fri_c4_1000_50_1,0.827794562,0.886904762,0.933352258\nclassify_logreg,217,fri_c4_1000_50_1,0.690322581,0.886904762,0.778350292\nclassify_knn,217,fri_c4_1000_50_1,0.753799392,0.886904762,0.849921462\nclassify_gp,217,fri_c4_1000_50_1,0.726342711,0.886904762,0.818963594\nclassify_gnb,217,fri_c4_1000_50_1,0.712250712,0.886904762,0.803074629\nclassify_et,217,fri_c4_1000_50_1,0.854111406,0.886904762,0.963024941\nclassify_dt,217,fri_c4_1000_50_1,0.847761194,0.886904762,0.95586497\nclassify_dbn,217,fri_c4_1000_50_1,0.693641619,0.886904762,0.782092563\nclassify_svm,218,fri_c4_100_100_1,0.516129032,0.722222222,0.714640199\nclassify_sgd,218,fri_c4_100_100_1,0.722222222,0.722222222,1\nclassify_rf,218,fri_c4_100_100_1,0.666666667,0.722222222,0.923076923\nclassify_pa,218,fri_c4_100_100_1,0.588235294,0.722222222,0.814479638\nclassify_mlp,218,fri_c4_100_100_1,0.5625,0.722222222,0.778846154\nclassify_logreg,218,fri_c4_100_100_1,0.588235294,0.722222222,0.814479638\nclassify_knn,218,fri_c4_100_100_1,0.615384615,0.722222222,0.852071006\nclassify_gp,218,fri_c4_100_100_1,0.4,0.722222222,0.553846154\nclassify_gnb,218,fri_c4_100_100_1,0.5625,0.722222222,0.778846154\nclassify_et,218,fri_c4_100_100_1,0.64516129,0.722222222,0.893300248\nclassify_dbn,218,fri_c4_100_100_1,0.625,0.722222222,0.865384615\nclassify_bnb,218,fri_c4_100_100_1,0.384615385,0.722222222,0.532544379\nclassify_svm,219,fri_c4_100_10_1,0,0.838709677,0\nclassify_sgd,219,fri_c4_100_10_1,0.75,0.838709677,0.894230769\nclassify_rf,219,fri_c4_100_10_1,0.75,0.838709677,0.894230769\nclassify_pa,219,fri_c4_100_10_1,0.75,0.838709677,0.894230769\nclassify_mlp,219,fri_c4_100_10_1,0.838709677,0.838709677,1\nclassify_logreg,219,fri_c4_100_10_1,0.75,0.838709677,0.894230769\nclassify_knn,219,fri_c4_100_10_1,0.709677419,0.838709677,0.846153846\nclassify_gp,219,fri_c4_100_10_1,0.709677419,0.838709677,0.846153846\nclassify_et,219,fri_c4_100_10_1,0.75,0.838709677,0.894230769\nclassify_dt,219,fri_c4_100_10_1,0.5625,0.838709677,0.670673077\nclassify_dbn,219,fri_c4_100_10_1,0.777777778,0.838709677,0.927350427\nclassify_bnb,219,fri_c4_100_10_1,0.625,0.838709677,0.745192308\nclassify_svm,220,fri_c4_100_25_1,0,0.787878788,0\nclassify_sgd,220,fri_c4_100_25_1,0.764705882,0.787878788,0.970588235\nclassify_rf,220,fri_c4_100_25_1,0.764705882,0.787878788,0.970588235\nclassify_pa,220,fri_c4_100_25_1,0.684210526,0.787878788,0.868421053\nclassify_mlp,220,fri_c4_100_25_1,0.787878788,0.787878788,1\nclassify_logreg,220,fri_c4_100_25_1,0.742857143,0.787878788,0.942857143\nclassify_knn,220,fri_c4_100_25_1,0.764705882,0.787878788,0.970588235\nclassify_gp,220,fri_c4_100_25_1,0.684210526,0.787878788,0.868421053\nclassify_gnb,220,fri_c4_100_25_1,0.75,0.787878788,0.951923077\nclassify_et,220,fri_c4_100_25_1,0.709677419,0.787878788,0.900744417\nclassify_dt,220,fri_c4_100_25_1,0.6875,0.787878788,0.872596154\nclassify_dbn,220,fri_c4_100_25_1,0.648648649,0.787878788,0.823284823\nclassify_svm,221,fri_c4_100_50_1,0.631578947,0.789473684,0.8\nclassify_sgd,221,fri_c4_100_50_1,0.75,0.789473684,0.95\nclassify_rf,221,fri_c4_100_50_1,0.789473684,0.789473684,1\nclassify_pa,221,fri_c4_100_50_1,0.631578947,0.789473684,0.8\nclassify_mlp,221,fri_c4_100_50_1,0.75,0.789473684,0.95\nclassify_logreg,221,fri_c4_100_50_1,0.555555556,0.789473684,0.703703704\nclassify_knn,221,fri_c4_100_50_1,0.789473684,0.789473684,1\nclassify_gp,221,fri_c4_100_50_1,0.634146341,0.789473684,0.803252033\nclassify_et,221,fri_c4_100_50_1,0.777777778,0.789473684,0.985185185\nclassify_dt,221,fri_c4_100_50_1,0.666666667,0.789473684,0.844444444\nclassify_dbn,221,fri_c4_100_50_1,0.75,0.789473684,0.95\nclassify_sgd,222,fri_c4_250_100_1,0.666666667,0.894736842,0.745098039\nclassify_rf,222,fri_c4_250_100_1,0.894736842,0.894736842,1\nclassify_pa,222,fri_c4_250_100_1,0.602409639,0.894736842,0.673281361\nclassify_mlp,222,fri_c4_250_100_1,0.696629214,0.894736842,0.778585592\nclassify_logreg,222,fri_c4_250_100_1,0,0.894736842,0\nclassify_knn,222,fri_c4_250_100_1,0.680851064,0.894736842,0.760951189\nclassify_gp,222,fri_c4_250_100_1,0.660714286,0.894736842,0.738445378\nclassify_et,222,fri_c4_250_100_1,0.765957447,0.894736842,0.856070088\nclassify_dt,222,fri_c4_250_100_1,0.657534247,0.894736842,0.734891217\nclassify_dbn,222,fri_c4_250_100_1,0.647619048,0.894736842,0.723809524\nclassify_bnb,222,fri_c4_250_100_1,0.659340659,0.894736842,0.736910149\nclassify_svm,223,fri_c4_250_10_1,0.555555556,0.84057971,0.66091954\nclassify_sgd,223,fri_c4_250_10_1,0.704545455,0.84057971,0.838166144\nclassify_rf,223,fri_c4_250_10_1,0.765432099,0.84057971,0.910600256\nclassify_pa,223,fri_c4_250_10_1,0.693333333,0.84057971,0.824827586\nclassify_mlp,223,fri_c4_250_10_1,0.84057971,0.84057971,1\nclassify_logreg,223,fri_c4_250_10_1,0.571428571,0.84057971,0.679802956\nclassify_knn,223,fri_c4_250_10_1,0.727272727,0.84057971,0.865203762\nclassify_gp,223,fri_c4_250_10_1,0.707317073,0.84057971,0.841463415\nclassify_gnb,223,fri_c4_250_10_1,0.621621622,0.84057971,0.739515377\nclassify_et,223,fri_c4_250_10_1,0.746987952,0.84057971,0.888658081\nclassify_dt,223,fri_c4_250_10_1,0.746268657,0.84057971,0.887802368\nclassify_dbn,223,fri_c4_250_10_1,0.657142857,0.84057971,0.781773399\nclassify_bnb,223,fri_c4_250_10_1,0.537313433,0.84057971,0.639217705\nclassify_sgd,224,fri_c4_250_25_1,0.717948718,0.853932584,0.840755735\nclassify_rf,224,fri_c4_250_25_1,0.853932584,0.853932584,1\nclassify_pa,224,fri_c4_250_25_1,0.674157303,0.853932584,0.789473684\nclassify_mlp,224,fri_c4_250_25_1,0.755555556,0.853932584,0.884795322\nclassify_knn,224,fri_c4_250_25_1,0.764044944,0.853932584,0.894736842\nclassify_gp,224,fri_c4_250_25_1,0.717948718,0.853932584,0.840755735\nclassify_gnb,224,fri_c4_250_25_1,0.698795181,0.853932584,0.818325935\nclassify_et,224,fri_c4_250_25_1,0.817204301,0.853932584,0.956989247\nclassify_dt,224,fri_c4_250_25_1,0.535211268,0.853932584,0.626760563\nclassify_dbn,224,fri_c4_250_25_1,0.725274725,0.853932584,0.849334876\nclassify_bnb,224,fri_c4_250_25_1,0.688172043,0.853932584,0.805885682\nclassify_svm,225,fri_c4_250_50_1,0.611111111,0.820512821,0.744791667\nclassify_sgd,225,fri_c4_250_50_1,0.611111111,0.820512821,0.744791667\nclassify_rf,225,fri_c4_250_50_1,0.773333333,0.820512821,0.9425\nclassify_pa,225,fri_c4_250_50_1,0.547945205,0.820512821,0.667808219\nclassify_mlp,225,fri_c4_250_50_1,0.631578947,0.820512821,0.769736842\nclassify_logreg,225,fri_c4_250_50_1,0.578947368,0.820512821,0.705592105\nclassify_knn,225,fri_c4_250_50_1,0.644444444,0.820512821,0.785416667\nclassify_gp,225,fri_c4_250_50_1,0.512195122,0.820512821,0.624237805\nclassify_gnb,225,fri_c4_250_50_1,0.597402597,0.820512821,0.728084416\nclassify_et,225,fri_c4_250_50_1,0.820512821,0.820512821,1\nclassify_dbn,225,fri_c4_250_50_1,0.615384615,0.820512821,0.75\nclassify_bnb,225,fri_c4_250_50_1,0.694444444,0.820512821,0.846354167\nclassify_svm,226,fri_c4_500_100_1,0.672566372,0.748538012,0.898506637\nclassify_sgd,226,fri_c4_500_100_1,0.707865168,0.748538012,0.945663624\nclassify_rf,226,fri_c4_500_100_1,0.713615024,0.748538012,0.95334507\nclassify_pa,226,fri_c4_500_100_1,0.650306749,0.748538012,0.868769172\nclassify_mlp,226,fri_c4_500_100_1,0.679012346,0.748538012,0.907118056\nclassify_logreg,226,fri_c4_500_100_1,0.679245283,0.748538012,0.907429245\nclassify_knn,226,fri_c4_500_100_1,0.660098522,0.748538012,0.881850369\nclassify_gp,226,fri_c4_500_100_1,0.672566372,0.748538012,0.898506637\nclassify_dt,226,fri_c4_500_100_1,0.748538012,0.748538012,1\nclassify_dbn,226,fri_c4_500_100_1,0.682352941,0.748538012,0.911580882\nclassify_bnb,226,fri_c4_500_100_1,0.655172414,0.748538012,0.875269397\nclassify_svm,227,fri_c4_500_10_1,0.765432099,0.945054945,0.809933965\nclassify_sgd,227,fri_c4_500_10_1,0.774509804,0.945054945,0.819539444\nclassify_rf,227,fri_c4_500_10_1,0.911111111,0.945054945,0.964082687\nclassify_pa,227,fri_c4_500_10_1,0.721311475,0.945054945,0.763248189\nclassify_mlp,227,fri_c4_500_10_1,0.945054945,0.945054945,1\nclassify_logreg,227,fri_c4_500_10_1,0.741935484,0.945054945,0.785071268\nclassify_knn,227,fri_c4_500_10_1,0.872093023,0.945054945,0.922796106\nclassify_gp,227,fri_c4_500_10_1,0.857142857,0.945054945,0.906976744\nclassify_et,227,fri_c4_500_10_1,0.830601093,0.945054945,0.878891854\nclassify_dt,227,fri_c4_500_10_1,0.849162011,0.945054945,0.898531896\nclassify_dbn,227,fri_c4_500_10_1,0.933333333,0.945054945,0.987596899\nclassify_svm,228,fri_c4_500_25_1,0.708571429,0.934782609,0.758006645\nclassify_sgd,228,fri_c4_500_25_1,0.760330579,0.934782609,0.813376898\nclassify_rf,228,fri_c4_500_25_1,0.934782609,0.934782609,1\nclassify_pa,228,fri_c4_500_25_1,0.72826087,0.934782609,0.779069767\nclassify_mlp,228,fri_c4_500_25_1,0.918918919,0.934782609,0.983029541\nclassify_logreg,228,fri_c4_500_25_1,0.726256983,0.934782609,0.776926075\nclassify_knn,228,fri_c4_500_25_1,0.837696335,0.934782609,0.896140265\nclassify_gp,228,fri_c4_500_25_1,0.753768844,0.934782609,0.806357368\nclassify_et,228,fri_c4_500_25_1,0.841584158,0.934782609,0.900299332\nclassify_dt,228,fri_c4_500_25_1,0.858757062,0.934782609,0.918670345\nclassify_dbn,228,fri_c4_500_25_1,0.760330579,0.934782609,0.813376898\nclassify_bnb,228,fri_c4_500_25_1,0.72631579,0.934782609,0.776988984\nclassify_svm,229,fri_c4_500_50_1,0.734177215,0.872727273,0.841244726\nclassify_sgd,229,fri_c4_500_50_1,0.734177215,0.872727273,0.841244726\nclassify_rf,229,fri_c4_500_50_1,0.872727273,0.872727273,1\nclassify_pa,229,fri_c4_500_50_1,0.630952381,0.872727273,0.72296627\nclassify_mlp,229,fri_c4_500_50_1,0.754491018,0.872727273,0.864520958\nclassify_logreg,229,fri_c4_500_50_1,0.627906977,0.872727273,0.719476744\nclassify_knn,229,fri_c4_500_50_1,0.666666667,0.872727273,0.763888889\nclassify_gp,229,fri_c4_500_50_1,0.662921348,0.872727273,0.759597378\nclassify_et,229,fri_c4_500_50_1,0.775757576,0.872727273,0.888888889\nclassify_dt,229,fri_c4_500_50_1,0.732919255,0.872727273,0.839803313\nclassify_dbn,229,fri_c4_500_50_1,0.607142857,0.872727273,0.695684524\nclassify_svm,230,fried_1,0.835262689,0.93825968,0.890225497\nclassify_sgd,230,fried_1,0.840648417,0.93825968,0.895965622\nclassify_rf,230,fried_1,0.858437879,0.93825968,0.914925684\nclassify_pa,230,fried_1,0.837163973,0.93825968,0.892251891\nclassify_mnb,230,fried_1,0.754875101,0.93825968,0.804548162\nclassify_mlp,230,fried_1,0.93825968,0.93825968,1\nclassify_logreg,230,fried_1,0.838777832,0.93825968,0.893971946\nclassify_knn,230,fried_1,0.89012495,0.93825968,0.948697859\nclassify_gnb,230,fried_1,0.866820125,0.93825968,0.923859507\nclassify_et,230,fried_1,0.831213307,0.93825968,0.885909653\nclassify_dt,230,fried_1,0.867365028,0.93825968,0.924440266\nclassify_dbn,230,fried_1,0.933765707,0.93825968,0.995210311\nclassify_bnb,230,fried_1,0.737106077,0.93825968,0.785609883\nclassify_svm,231,fruitfly_1,0.545454545,0.545454545,1\nclassify_sgd,231,fruitfly_1,0.538461539,0.545454545,0.987179487\nclassify_rf,231,fruitfly_1,0.307692308,0.545454545,0.564102564\nclassify_pa,231,fruitfly_1,0.523809524,0.545454545,0.96031746\nclassify_mlp,231,fruitfly_1,0.538461539,0.545454545,0.987179487\nclassify_logreg,231,fruitfly_1,0.545454545,0.545454545,1\nclassify_knn,231,fruitfly_1,0.4,0.545454545,0.733333333\nclassify_gp,231,fruitfly_1,0.190476191,0.545454545,0.349206349\nclassify_et,231,fruitfly_1,0.1,0.545454545,0.183333333\nclassify_dbn,231,fruitfly_1,0.16,0.545454545,0.293333333\nclassify_bnb,231,fruitfly_1,0.48,0.545454545,0.88\nclassify_svm,232,glass_1,0.737864078,0.86746988,0.850593312\nclassify_sgd,232,glass_1,0.747474748,0.86746988,0.861672278\nclassify_mnb,232,glass_1,0.444444444,0.86746988,0.512345679\nclassify_mlp,232,glass_1,0.829268293,0.86746988,0.95596206\nclassify_logreg,232,glass_1,0.676470588,0.86746988,0.779820261\nclassify_knn,232,glass_1,0.86746988,0.86746988,1\nclassify_gp,232,glass_1,0.853932584,0.86746988,0.984394507\nclassify_gnb,232,glass_1,0.610169492,0.86746988,0.70338983\nclassify_et,232,glass_1,0.745098039,0.86746988,0.858932462\nclassify_dt,232,glass_1,0.765432099,0.86746988,0.882373114\nclassify_dbn,232,glass_1,0.847058824,0.86746988,0.976470588\nclassify_bnb,232,glass_1,0.444444444,0.86746988,0.512345679\nclassify_svm,233,grub-damage_1,0.385753539,0.42586256,0.905816982\nclassify_sgd,233,grub-damage_1,0.42586256,0.42586256,1\nclassify_rf,233,grub-damage_1,0.205038192,0.42586256,0.481465644\nclassify_pa,233,grub-damage_1,0.137992573,0.42586256,0.324030768\nclassify_mnb,233,grub-damage_1,0.32785052,0.42586256,0.769850536\nclassify_mlp,233,grub-damage_1,0.359161886,0.42586256,0.843375116\nclassify_logreg,233,grub-damage_1,0.154213152,0.42586256,0.362119533\nclassify_knn,233,grub-damage_1,0.418063553,0.42586256,0.981686563\nclassify_gp,233,grub-damage_1,0.15330094,0.42586256,0.3599775\nclassify_et,233,grub-damage_1,0.292128592,0.42586256,0.685969181\nclassify_dbn,233,grub-damage_1,0.391955074,0.42586256,0.920379273\nclassify_bnb,233,grub-damage_1,0.316770621,0.42586256,0.743832989\nclassify_svm,234,grub-damage_2,0.806451613,0.852459016,0.946029777\nclassify_sgd,234,grub-damage_2,0.828571429,0.852459016,0.971978022\nclassify_mnb,234,grub-damage_2,0.782608696,0.852459016,0.918060201\nclassify_mlp,234,grub-damage_2,0.852459016,0.852459016,1\nclassify_logreg,234,grub-damage_2,0.724137931,0.852459016,0.849469496\nclassify_knn,234,grub-damage_2,0.84375,0.852459016,0.989783654\nclassify_gp,234,grub-damage_2,0.816901408,0.852459016,0.958288191\nclassify_dbn,234,grub-damage_2,0.84375,0.852459016,0.989783654\nclassify_bnb,234,grub-damage_2,0.692307692,0.852459016,0.812130177\nclassify_svm,235,haberman_1,0.45,0.507936508,0.8859375\nclassify_sgd,235,haberman_1,0.4,0.507936508,0.7875\nclassify_rf,235,haberman_1,0.153846154,0.507936508,0.302884615\nclassify_mlp,235,haberman_1,0.507936508,0.507936508,1\nclassify_logreg,235,haberman_1,0.458333333,0.507936508,0.90234375\nclassify_knn,235,haberman_1,0.421052632,0.507936508,0.828947369\nclassify_gp,235,haberman_1,0.352941177,0.507936508,0.694852941\nclassify_gnb,235,haberman_1,0.457142857,0.507936508,0.9\nclassify_et,235,haberman_1,0.083333333,0.507936508,0.1640625\nclassify_dt,235,haberman_1,0.444444444,0.507936508,0.875\nclassify_dbn,235,haberman_1,0.333333333,0.507936508,0.65625\nclassify_bnb,235,haberman_1,0.45,0.507936508,0.8859375\nclassify_svm,236,hayes-roth_1,0,0.896551724,0\nclassify_sgd,236,hayes-roth_1,0.861538462,0.896551724,0.960946746\nclassify_pa,236,hayes-roth_1,0.612244898,0.896551724,0.68288854\nclassify_mnb,236,hayes-roth_1,0.8125,0.896551724,0.90625\nclassify_mlp,236,hayes-roth_1,0.885245902,0.896551724,0.98738966\nclassify_logreg,236,hayes-roth_1,0.565217391,0.896551724,0.630434783\nclassify_knn,236,hayes-roth_1,0.896551724,0.896551724,1\nclassify_gp,236,hayes-roth_1,0.866666667,0.896551724,0.966666667\nclassify_gnb,236,hayes-roth_1,0.612244898,0.896551724,0.68288854\nclassify_et,236,hayes-roth_1,0.861538462,0.896551724,0.960946746\nclassify_dt,236,hayes-roth_1,0.777777778,0.896551724,0.867521368\nclassify_dbn,236,hayes-roth_1,0.842105263,0.896551724,0.939271255\nclassify_bnb,236,hayes-roth_1,0.612244898,0.896551724,0.68288854\nclassify_svm,237,hayes-roth_2,0.017815564,0.741064006,0.02404052\nclassify_sgd,237,hayes-roth_2,0.474798402,0.741064006,0.640698237\nclassify_pa,237,hayes-roth_2,0.52699319,0.741064006,0.711130464\nclassify_mlp,237,hayes-roth_2,0.741064006,0.741064006,1\nclassify_logreg,237,hayes-roth_2,0.481866393,0.741064006,0.650235863\nclassify_knn,237,hayes-roth_2,0.469672522,0.741064006,0.633781317\nclassify_gp,237,hayes-roth_2,0.647551309,0.741064006,0.873812928\nclassify_et,237,hayes-roth_2,0.686713142,0.741064006,0.92665834\nclassify_dbn,237,hayes-roth_2,0.475159876,0.741064006,0.641186013\nclassify_bnb,237,hayes-roth_2,0.319495902,0.741064006,0.431131319\nclassify_svm,238,heart-statlog_1,0.776470588,0.819277108,0.947750865\nclassify_sgd,238,heart-statlog_1,0.813186813,0.819277108,0.992566257\nclassify_mlp,238,heart-statlog_1,0.819277108,0.819277108,1\nclassify_logreg,238,heart-statlog_1,0.75862069,0.819277108,0.925963489\nclassify_knn,238,heart-statlog_1,0.790123457,0.819277108,0.964415396\nclassify_gp,238,heart-statlog_1,0.602409639,0.819277108,0.735294118\nclassify_et,238,heart-statlog_1,0.740740741,0.819277108,0.904139434\nclassify_dt,238,heart-statlog_1,0.605263158,0.819277108,0.73877709\nclassify_dbn,238,heart-statlog_1,0.818181818,0.819277108,0.998663102\nclassify_bnb,238,heart-statlog_1,0.744186047,0.819277108,0.908344733\nclassify_svm,239,hill-valley_1,0.597122302,0.866666667,0.688987272\nclassify_sgd,239,hill-valley_1,0.866666667,0.866666667,1\nclassify_rf,239,hill-valley_1,0.561403509,0.866666667,0.647773279\nclassify_pa,239,hill-valley_1,0.687242798,0.866666667,0.79297246\nclassify_mnb,239,hill-valley_1,0.757062147,0.866666667,0.873533246\nclassify_mlp,239,hill-valley_1,0.82,0.866666667,0.946153846\nclassify_logreg,239,hill-valley_1,0.32388664,0.866666667,0.373715353\nclassify_knn,239,hill-valley_1,0.562162162,0.866666667,0.648648649\nclassify_gp,239,hill-valley_1,0.545961003,0.866666667,0.629955003\nclassify_et,239,hill-valley_1,0.49704142,0.866666667,0.573509331\nclassify_dt,239,hill-valley_1,0.187793427,0.866666667,0.216684724\nclassify_dbn,239,hill-valley_1,0.639252336,0.866666667,0.73759885\nclassify_bnb,239,hill-valley_1,0.274336283,0.866666667,0.316541865\nclassify_svm,240,hill-valley_2,0.660377359,0.973958333,0.678034507\nclassify_sgd,240,hill-valley_2,0.860759494,0.973958333,0.883774453\nclassify_rf,240,hill-valley_2,0.635555556,0.973958333,0.65254902\nclassify_mlp,240,hill-valley_2,0.973958333,0.973958333,1\nclassify_logreg,240,hill-valley_2,0.720647773,0.973958333,0.73991643\nclassify_knn,240,hill-valley_2,0.582210243,0.973958333,0.597777361\nclassify_gp,240,hill-valley_2,0.67876588,0.973958333,0.696914701\nclassify_gnb,240,hill-valley_2,0.644135189,0.973958333,0.661358055\nclassify_dt,240,hill-valley_2,0.674033149,0.973958333,0.692055426\nclassify_dbn,240,hill-valley_2,0.67876588,0.973958333,0.696914701\nclassify_sgd,241,house_16H_1,0.699014011,0.812823164,0.859982887\nclassify_rf,241,house_16H_1,0.773673257,0.812823164,0.951834656\nclassify_mnb,241,house_16H_1,0.440566348,0.812823164,0.542019922\nclassify_mlp,241,house_16H_1,0.812823164,0.812823164,1\nclassify_logreg,241,house_16H_1,0.705367793,0.812823164,0.867799817\nclassify_knn,241,house_16H_1,0.765853659,0.812823164,0.942214361\nclassify_et,241,house_16H_1,0,0.812823164,0\nclassify_dt,241,house_16H_1,0.732922582,0.812823164,0.90169992\nclassify_dbn,241,house_16H_1,0.796514608,0.812823164,0.979935911\nclassify_bnb,241,house_16H_1,0.530999703,0.812823164,0.653278261\nclassify_svm,242,house_8L_1,0.755566312,0.796870926,0.948166494\nclassify_sgd,242,house_8L_1,0.563467492,0.796870926,0.707100076\nclassify_rf,242,house_8L_1,0.715846995,0.796870926,0.89832239\nclassify_pa,242,house_8L_1,0.731080704,0.796870926,0.917439299\nclassify_mnb,242,house_8L_1,0.451384417,0.796870926,0.566446086\nclassify_mlp,242,house_8L_1,0.796870926,0.796870926,1\nclassify_logreg,242,house_8L_1,0.742316785,0.796870926,0.931539552\nclassify_knn,242,house_8L_1,0.755328218,0.796870926,0.947867708\nclassify_gnb,242,house_8L_1,0.513125656,0.796870926,0.643925685\nclassify_dt,242,house_8L_1,0.77345775,0.796870926,0.97061861\nclassify_dbn,242,house_8L_1,0.783227848,0.796870926,0.982879188\nclassify_bnb,242,house_8L_1,0.650184712,0.796870926,0.815922241\nclassify_svm,243,houses_1,0.723298969,0.986320889,0.733330275\nclassify_sgd,243,houses_1,0.972529029,0.986320889,0.986016863\nclassify_rf,243,houses_1,0.97150838,0.986320889,0.984982059\nclassify_pa,243,houses_1,0.967805985,0.986320889,0.981228316\nclassify_mnb,243,houses_1,0.54562212,0.986320889,0.553189257\nclassify_mlp,243,houses_1,0.986320889,0.986320889,1\nclassify_logreg,243,houses_1,0.968639137,0.986320889,0.982073023\nclassify_knn,243,houses_1,0.974861525,0.986320889,0.988381708\nclassify_gnb,243,houses_1,0.959590211,0.986320889,0.972898598\nclassify_et,243,houses_1,0.971203821,0.986320889,0.984673276\nclassify_dbn,243,houses_1,0.977462792,0.986320889,0.991019052\nclassify_svm,244,housing_1,0.682170543,0.890756303,0.765832968\nclassify_sgd,244,housing_1,0.816666667,0.890756303,0.916823899\nclassify_rf,244,housing_1,0.890756303,0.890756303,1\nclassify_pa,244,housing_1,0.738461539,0.890756303,0.829027576\nclassify_mnb,244,housing_1,0.621621622,0.890756303,0.697858236\nclassify_mlp,244,housing_1,0.869565217,0.890756303,0.976210008\nclassify_logreg,244,housing_1,0.8,0.890756303,0.898113208\nclassify_knn,244,housing_1,0.842105263,0.890756303,0.945382324\nclassify_gp,244,housing_1,0.661417323,0.890756303,0.742534542\nclassify_gnb,244,housing_1,0.675675676,0.890756303,0.75854156\nclassify_et,244,housing_1,0.727272727,0.890756303,0.816466552\nclassify_dt,244,housing_1,0.87394958,0.890756303,0.981132075\nclassify_dbn,244,housing_1,0.879310345,0.890756303,0.987150293\nclassify_svm,245,humandevel_1,0,0.926829268,0\nclassify_sgd,245,humandevel_1,0.926829268,0.926829268,1\nclassify_rf,245,humandevel_1,0.904761905,0.926829268,0.976190476\nclassify_pa,245,humandevel_1,0.904761905,0.926829268,0.976190476\nclassify_mnb,245,humandevel_1,0,0.926829268,0\nclassify_mlp,245,humandevel_1,0.926829268,0.926829268,1\nclassify_logreg,245,humandevel_1,0.926829268,0.926829268,1\nclassify_knn,245,humandevel_1,0.926829268,0.926829268,1\nclassify_gp,245,humandevel_1,0.926829268,0.926829268,1\nclassify_gnb,245,humandevel_1,0.926829268,0.926829268,1\nclassify_et,245,humandevel_1,0.926829268,0.926829268,1\nclassify_dt,245,humandevel_1,0.9,0.926829268,0.971052632\nclassify_dbn,245,humandevel_1,0.926829268,0.926829268,1\nclassify_bnb,245,humandevel_1,0.926829268,0.926829268,1\nclassify_svm,246,hutsof99_child_witness_1,0.75,0.888888889,0.84375\nclassify_sgd,246,hutsof99_child_witness_1,0.8,0.888888889,0.9\nclassify_rf,246,hutsof99_child_witness_1,0.888888889,0.888888889,1\nclassify_pa,246,hutsof99_child_witness_1,0.75,0.888888889,0.84375\nclassify_mnb,246,hutsof99_child_witness_1,0.285714286,0.888888889,0.321428571\nclassify_mlp,246,hutsof99_child_witness_1,0.888888889,0.888888889,1\nclassify_logreg,246,hutsof99_child_witness_1,0.888888889,0.888888889,1\nclassify_knn,246,hutsof99_child_witness_1,0.888888889,0.888888889,1\nclassify_gp,246,hutsof99_child_witness_1,0.666666667,0.888888889,0.75\nclassify_gnb,246,hutsof99_child_witness_1,0.888888889,0.888888889,1\nclassify_et,246,hutsof99_child_witness_1,0.888888889,0.888888889,1\nclassify_dt,246,hutsof99_child_witness_1,0.666666667,0.888888889,0.75\nclassify_bnb,246,hutsof99_child_witness_1,0.666666667,0.888888889,0.75\nclassify_svm,247,hutsof99_logis_1,0.5,0.75,0.666666667\nclassify_sgd,247,hutsof99_logis_1,0.6,0.75,0.8\nclassify_rf,247,hutsof99_logis_1,0.52631579,0.75,0.701754386\nclassify_mnb,247,hutsof99_logis_1,0.52631579,0.75,0.701754386\nclassify_mlp,247,hutsof99_logis_1,0.75,0.75,1\nclassify_logreg,247,hutsof99_logis_1,0.52631579,0.75,0.701754386\nclassify_knn,247,hutsof99_logis_1,0.588235294,0.75,0.784313725\nclassify_gp,247,hutsof99_logis_1,0.5,0.75,0.666666667\nclassify_gnb,247,hutsof99_logis_1,0.555555556,0.75,0.740740741\nclassify_et,247,hutsof99_logis_1,0.555555556,0.75,0.740740741\nclassify_dt,247,hutsof99_logis_1,0.666666667,0.75,0.888888889\nclassify_dbn,247,hutsof99_logis_1,0.555555556,0.75,0.740740741\nclassify_svm,248,ilpd_1,0.484848485,0.658227848,0.736596737\nclassify_sgd,248,ilpd_1,0.622754491,0.658227848,0.946107784\nclassify_rf,248,ilpd_1,0.325,0.658227848,0.49375\nclassify_pa,248,ilpd_1,0.614285714,0.658227848,0.933241758\nclassify_mnb,248,ilpd_1,0.516483517,0.658227848,0.78465765\nclassify_mlp,248,ilpd_1,0.646706587,0.658227848,0.982496545\nclassify_logreg,248,ilpd_1,0.658227848,0.658227848,1\nclassify_knn,248,ilpd_1,0.495412844,0.658227848,0.752646436\nclassify_gp,248,ilpd_1,0.486486487,0.658227848,0.739085239\nclassify_gnb,248,ilpd_1,0.586206897,0.658227848,0.890583554\nclassify_dt,248,ilpd_1,0.144927536,0.658227848,0.220178372\nclassify_dbn,248,ilpd_1,0.447058824,0.658227848,0.67918552\nclassify_svm,249,ionosphere_1,0.822580645,0.96,0.856854839\nclassify_sgd,249,ionosphere_1,0.897058824,0.96,0.934436274\nclassify_mlp,249,ionosphere_1,0.921875,0.96,0.960286458\nclassify_logreg,249,ionosphere_1,0.827067669,0.96,0.861528822\nclassify_knn,249,ionosphere_1,0.938461538,0.96,0.977564103\nclassify_gp,249,ionosphere_1,0.871428571,0.96,0.907738095\nclassify_gnb,249,ionosphere_1,0.910447761,0.96,0.948383085\nclassify_et,249,ionosphere_1,0.945736434,0.96,0.985142119\nclassify_dt,249,ionosphere_1,0.96,0.96,1\nclassify_dbn,249,ionosphere_1,0.923076923,0.96,0.961538462\nclassify_svm,250,iris_1,0.243058258,0.957849215,0.253754196\nclassify_sgd,250,iris_1,0.872418272,0.957849215,0.910809611\nclassify_rf,250,iris_1,0.915510757,0.957849215,0.95579841\nclassify_mlp,250,iris_1,0.957849215,0.957849215,1\nclassify_logreg,250,iris_1,0.746532272,0.957849215,0.779383916\nclassify_knn,250,iris_1,0.915510757,0.957849215,0.95579841\nclassify_gp,250,iris_1,0.957849215,0.957849215,1\nclassify_et,250,iris_1,0.873547646,0.957849215,0.911988684\nclassify_dbn,250,iris_1,0.915510757,0.957849215,0.95579841\nclassify_svm,251,iris_2,1,1,1\nclassify_sgd,251,iris_2,1,1,1\nclassify_rf,251,iris_2,1,1,1\nclassify_pa,251,iris_2,1,1,1\nclassify_mnb,251,iris_2,1,1,1\nclassify_mlp,251,iris_2,1,1,1\nclassify_logreg,251,iris_2,1,1,1\nclassify_knn,251,iris_2,1,1,1\nclassify_gp,251,iris_2,1,1,1\nclassify_gnb,251,iris_2,1,1,1\nclassify_et,251,iris_2,1,1,1\nclassify_dt,251,iris_2,1,1,1\nclassify_dbn,251,iris_2,1,1,1\nclassify_svm,252,jEdit_4.0_4.2_1,0.774193548,0.845360825,0.915814319\nclassify_sgd,252,jEdit_4.0_4.2_1,0.819277108,0.845360825,0.969144872\nclassify_rf,252,jEdit_4.0_4.2_1,0.804597701,0.845360825,0.951780207\nclassify_pa,252,jEdit_4.0_4.2_1,0.716981132,0.845360825,0.848136217\nclassify_mlp,252,jEdit_4.0_4.2_1,0.845360825,0.845360825,1\nclassify_logreg,252,jEdit_4.0_4.2_1,0.783505155,0.845360825,0.926829268\nclassify_knn,252,jEdit_4.0_4.2_1,0.786516854,0.845360825,0.930391888\nclassify_gp,252,jEdit_4.0_4.2_1,0.813186813,0.845360825,0.961940499\nclassify_et,252,jEdit_4.0_4.2_1,0.772277228,0.845360825,0.913547452\nclassify_dbn,252,jEdit_4.0_4.2_1,0.804878049,0.845360825,0.952111838\nclassify_svm,253,jEdit_4.2_4.3_1,0.578947368,0.713178295,0.811784897\nclassify_sgd,253,jEdit_4.2_4.3_1,0.678571429,0.713178295,0.951475155\nclassify_rf,253,jEdit_4.2_4.3_1,0.536082474,0.713178295,0.751680861\nclassify_pa,253,jEdit_4.2_4.3_1,0.574257426,0.713178295,0.805208782\nclassify_mnb,253,jEdit_4.2_4.3_1,0.536082474,0.713178295,0.751680861\nclassify_mlp,253,jEdit_4.2_4.3_1,0.713178295,0.713178295,1\nclassify_logreg,253,jEdit_4.2_4.3_1,0.632478633,0.713178295,0.886845039\nclassify_knn,253,jEdit_4.2_4.3_1,0.628571429,0.713178295,0.88136646\nclassify_gp,253,jEdit_4.2_4.3_1,0.678899083,0.713178295,0.951934583\nclassify_gnb,253,jEdit_4.2_4.3_1,0.709219858,0.713178295,0.994449584\nclassify_dt,253,jEdit_4.2_4.3_1,0.647619048,0.713178295,0.908074534\nclassify_dbn,253,jEdit_4.2_4.3_1,0.631578947,0.713178295,0.885583524\nclassify_bnb,253,jEdit_4.2_4.3_1,0.661654135,0.713178295,0.927754168\nclassify_svm,254,kc1-binary_1,0.734693878,0.892857143,0.822857143\nclassify_sgd,254,kc1-binary_1,0.807692308,0.892857143,0.904615385\nclassify_rf,254,kc1-binary_1,0.830188679,0.892857143,0.929811321\nclassify_pa,254,kc1-binary_1,0.814814815,0.892857143,0.912592593\nclassify_mlp,254,kc1-binary_1,0.872727273,0.892857143,0.977454545\nclassify_logreg,254,kc1-binary_1,0.892857143,0.892857143,1\nclassify_knn,254,kc1-binary_1,0.851851852,0.892857143,0.954074074\nclassify_gp,254,kc1-binary_1,0.65,0.892857143,0.728\nclassify_gnb,254,kc1-binary_1,0.819672131,0.892857143,0.918032787\nclassify_et,254,kc1-binary_1,0.816326531,0.892857143,0.914285714\nclassify_dt,254,kc1-binary_1,0.836363636,0.892857143,0.936727273\nclassify_dbn,254,kc1-binary_1,0.862068966,0.892857143,0.965517241\nclassify_bnb,254,kc1-binary_1,0.819672131,0.892857143,0.918032787\nclassify_svm,255,kc1-top5_1,0.963855422,1,0.963855422\nclassify_sgd,255,kc1-top5_1,1,1,1\nclassify_rf,255,kc1-top5_1,1,1,1\nclassify_pa,255,kc1-top5_1,0.963855422,1,0.963855422\nclassify_mlp,255,kc1-top5_1,1,1,1\nclassify_logreg,255,kc1-top5_1,1,1,1\nclassify_knn,255,kc1-top5_1,0.988505747,1,0.988505747\nclassify_gp,255,kc1-top5_1,0.988505747,1,0.988505747\nclassify_gnb,255,kc1-top5_1,0.925,1,0.925\nclassify_et,255,kc1-top5_1,0.988505747,1,0.988505747\nclassify_dbn,255,kc1-top5_1,1,1,1\nclassify_bnb,255,kc1-top5_1,0.925,1,0.925\nclassify_svm,256,kc1_1,0.465573771,0.502673797,0.926194629\nclassify_sgd,256,kc1_1,0.41958042,0.502673797,0.834697218\nclassify_rf,256,kc1_1,0.278688525,0.502673797,0.554412278\nclassify_pa,256,kc1_1,0.196428571,0.502673797,0.390767477\nclassify_mnb,256,kc1_1,0.41025641,0.502673797,0.816148391\nclassify_mlp,256,kc1_1,0.502673797,0.502673797,1\nclassify_logreg,256,kc1_1,0.455782313,0.502673797,0.906715878\nclassify_knn,256,kc1_1,0.45398773,0.502673797,0.903145803\nclassify_gp,256,kc1_1,0.24,0.502673797,0.477446809\nclassify_et,256,kc1_1,0.233333333,0.502673797,0.464184397\nclassify_dbn,256,kc1_1,0.4,0.502673797,0.795744681\nclassify_svm,257,kc2_1,0.564102564,0.564102564,1\nclassify_sgd,257,kc2_1,0.547945205,0.564102564,0.97135741\nclassify_rf,257,kc2_1,0.545454545,0.564102564,0.966942149\nclassify_pa,257,kc2_1,0.561797753,0.564102564,0.995914198\nclassify_mlp,257,kc2_1,0.553846154,0.564102564,0.981818182\nclassify_logreg,257,kc2_1,0.507042254,0.564102564,0.898847631\nclassify_knn,257,kc2_1,0.558823529,0.564102564,0.990641711\nclassify_gp,257,kc2_1,0.412698413,0.564102564,0.731601732\nclassify_gnb,257,kc2_1,0.507936508,0.564102564,0.9004329\nclassify_et,257,kc2_1,0.509090909,0.564102564,0.902479339\nclassify_dt,257,kc2_1,0.52173913,0.564102564,0.924901186\nclassify_dbn,257,kc2_1,0.56,0.564102564,0.992727273\nclassify_svm,258,kc3_1,0.372881356,0.6,0.621468927\nclassify_sgd,258,kc3_1,0.6,0.6,1\nclassify_rf,258,kc3_1,0,0.6,0\nclassify_pa,258,kc3_1,0.392156863,0.6,0.653594771\nclassify_mlp,258,kc3_1,0.461538462,0.6,0.769230769\nclassify_logreg,258,kc3_1,0.431372549,0.6,0.718954248\nclassify_knn,258,kc3_1,0.117647059,0.6,0.196078431\nclassify_gp,258,kc3_1,0.111111111,0.6,0.185185185\nclassify_et,258,kc3_1,0,0.6,0\nclassify_dbn,258,kc3_1,0.2,0.6,0.333333333\nclassify_sgd,259,kdd_JapaneseVowels_1,0.976275208,0.998017447,0.97821457\nclassify_rf,259,kdd_JapaneseVowels_1,0.982449221,0.998017447,0.984400848\nclassify_pa,259,kdd_JapaneseVowels_1,0.974589523,0.998017447,0.976525537\nclassify_mlp,259,kdd_JapaneseVowels_1,0.998017447,0.998017447,1\nclassify_logreg,259,kdd_JapaneseVowels_1,0.788198609,0.998017447,0.789764359\nclassify_knn,259,kdd_JapaneseVowels_1,0.997227723,0.998017447,0.999208708\nclassify_gnb,259,kdd_JapaneseVowels_1,0.975416336,0.998017447,0.977353993\nclassify_dbn,259,kdd_JapaneseVowels_1,0.98906778,0.998017447,0.991032555\nclassify_bnb,259,kdd_JapaneseVowels_1,0.933305457,0.998017447,0.93515946\nclassify_svm,260,kdd_synthetic_control_1,0.899082569,1,0.899082569\nclassify_sgd,260,kdd_synthetic_control_1,1,1,1\nclassify_rf,260,kdd_synthetic_control_1,1,1,1\nclassify_pa,260,kdd_synthetic_control_1,1,1,1\nclassify_mlp,260,kdd_synthetic_control_1,1,1,1\nclassify_logreg,260,kdd_synthetic_control_1,1,1,1\nclassify_knn,260,kdd_synthetic_control_1,1,1,1\nclassify_gp,260,kdd_synthetic_control_1,1,1,1\nclassify_gnb,260,kdd_synthetic_control_1,1,1,1\nclassify_et,260,kdd_synthetic_control_1,1,1,1\nclassify_dt,260,kdd_synthetic_control_1,0.993243243,1,0.993243243\nclassify_dbn,260,kdd_synthetic_control_1,0.993150685,1,0.993150685\nclassify_bnb,260,kdd_synthetic_control_1,0.986394558,1,0.986394558\nclassify_svm,261,kidney_1,0.736842105,0.777777778,0.947368421\nclassify_sgd,261,kidney_1,0.588235294,0.777777778,0.756302521\nclassify_rf,261,kidney_1,0.705882353,0.777777778,0.907563025\nclassify_pa,261,kidney_1,0.736842105,0.777777778,0.947368421\nclassify_mnb,261,kidney_1,0.555555556,0.777777778,0.714285714\nclassify_mlp,261,kidney_1,0.777777778,0.777777778,1\nclassify_logreg,261,kidney_1,0.736842105,0.777777778,0.947368421\nclassify_knn,261,kidney_1,0.705882353,0.777777778,0.907563025\nclassify_gp,261,kidney_1,0.6,0.777777778,0.771428571\nclassify_gnb,261,kidney_1,0.631578947,0.777777778,0.812030075\nclassify_et,261,kidney_1,0.736842105,0.777777778,0.947368421\nclassify_dbn,261,kidney_1,0.705882353,0.777777778,0.907563025\nclassify_bnb,261,kidney_1,0.666666667,0.777777778,0.857142857\nclassify_svm,262,kin8nm_1,0.652042775,0.929883139,0.701209375\nclassify_sgd,262,kin8nm_1,0.748804708,0.929883139,0.80526754\nclassify_rf,262,kin8nm_1,0.733614412,0.929883139,0.788931836\nclassify_mlp,262,kin8nm_1,0.929883139,0.929883139,1\nclassify_logreg,262,kin8nm_1,0.730263158,0.929883139,0.785327884\nclassify_knn,262,kin8nm_1,0.866556837,0.929883139,0.931898645\nclassify_et,262,kin8nm_1,0.721907842,0.929883139,0.776342544\nclassify_dt,262,kin8nm_1,0.681269557,0.929883139,0.732639973\nclassify_dbn,262,kin8nm_1,0.918624161,0.929883139,0.987892051\nclassify_svm,263,kr-vs-kp_1,0.983089064,0.995454546,0.987578055\nclassify_sgd,263,kr-vs-kp_1,0.970588235,0.995454546,0.975020145\nclassify_rf,263,kr-vs-kp_1,0.934117647,0.995454546,0.938383024\nclassify_pa,263,kr-vs-kp_1,0.948430493,0.995454546,0.952761226\nclassify_mlp,263,kr-vs-kp_1,0.995454546,0.995454546,1\nclassify_logreg,263,kr-vs-kp_1,0.954751131,0.995454546,0.959110725\nclassify_knn,263,kr-vs-kp_1,0.948216341,0.995454546,0.952546096\nclassify_gp,263,kr-vs-kp_1,0.96803653,0.995454546,0.972456788\nclassify_et,263,kr-vs-kp_1,0.923627685,0.995454546,0.927845163\nclassify_dt,263,kr-vs-kp_1,0.964652223,0.995454546,0.969057028\nclassify_dbn,263,kr-vs-kp_1,0.986425339,0.995454546,0.990929565\nclassify_svm,264,letter_1,0.980718593,0.999220712,0.981483452\nclassify_sgd,264,letter_1,0.989332416,0.999220712,0.990103992\nclassify_rf,264,letter_1,0.980718593,0.999220712,0.981483452\nclassify_pa,264,letter_1,0.988846946,0.999220712,0.989618144\nclassify_mnb,264,letter_1,0.966489686,0.999220712,0.967243447\nclassify_mlp,264,letter_1,0.999220712,0.999220712,1\nclassify_logreg,264,letter_1,0.983200554,0.999220712,0.983967348\nclassify_knn,264,letter_1,0.998614958,0.999220712,0.999393774\nclassify_gnb,264,letter_1,0.985193523,0.999220712,0.985961872\nclassify_et,264,letter_1,0.985237648,0.999220712,0.986006031\nclassify_dt,264,letter_1,0.993762994,0.999220712,0.994538026\nclassify_dbn,264,letter_1,0.997922438,0.999220712,0.998700713\nclassify_svm,265,leukemia_1,1,1,1\nclassify_sgd,265,leukemia_1,1,1,1\nclassify_rf,265,leukemia_1,0.8,1,0.8\nclassify_pa,265,leukemia_1,1,1,1\nclassify_mlp,265,leukemia_1,1,1,1\nclassify_logreg,265,leukemia_1,1,1,1\nclassify_knn,265,leukemia_1,0.8,1,0.8\nclassify_gp,265,leukemia_1,0.666666667,1,0.666666667\nclassify_gnb,265,leukemia_1,1,1,1\nclassify_et,265,leukemia_1,0.909090909,1,0.909090909\nclassify_dt,265,leukemia_1,0.727272727,1,0.727272727\nclassify_dbn,265,leukemia_1,0.923076923,1,0.923076923\nclassify_bnb,265,leukemia_1,0.833333333,1,0.833333333\nclassify_svm,266,lowbwt_1,0,0.888888889,0\nclassify_sgd,266,lowbwt_1,0.888888889,0.888888889,1\nclassify_rf,266,lowbwt_1,0.819672131,0.888888889,0.922131147\nclassify_pa,266,lowbwt_1,0.819672131,0.888888889,0.922131147\nclassify_mlp,266,lowbwt_1,0.852459016,0.888888889,0.959016393\nclassify_logreg,266,lowbwt_1,0.777777778,0.888888889,0.875\nclassify_knn,266,lowbwt_1,0.833333333,0.888888889,0.9375\nclassify_gp,266,lowbwt_1,0.696969697,0.888888889,0.784090909\nclassify_gnb,266,lowbwt_1,0.830769231,0.888888889,0.934615385\nclassify_et,266,lowbwt_1,0.848484848,0.888888889,0.954545455\nclassify_dt,266,lowbwt_1,0.821428571,0.888888889,0.924107143\nclassify_dbn,266,lowbwt_1,0.830769231,0.888888889,0.934615385\nclassify_bnb,266,lowbwt_1,0.733333333,0.888888889,0.825\nclassify_svm,267,lsvt_1,0.888888889,0.958333333,0.927536232\nclassify_sgd,267,lsvt_1,0.958333333,0.958333333,1\nclassify_rf,267,lsvt_1,0.916666667,0.958333333,0.956521739\nclassify_mlp,267,lsvt_1,0.913043478,0.958333333,0.952741021\nclassify_logreg,267,lsvt_1,0.80952381,0.958333333,0.844720497\nclassify_knn,267,lsvt_1,0.826086957,0.958333333,0.862003781\nclassify_gp,267,lsvt_1,0.72,0.958333333,0.751304348\nclassify_et,267,lsvt_1,0.901960784,0.958333333,0.941176471\nclassify_dt,267,lsvt_1,0.772727273,0.958333333,0.806324111\nclassify_dbn,267,lsvt_1,0.901960784,0.958333333,0.941176471\nclassify_bnb,267,lsvt_1,0.631578947,0.958333333,0.659038902\nclassify_svm,268,lupus_1,0.625,0.75,0.833333333\nclassify_sgd,268,lupus_1,0.666666667,0.75,0.888888889\nclassify_rf,268,lupus_1,0.75,0.75,1\nclassify_pa,268,lupus_1,0.625,0.75,0.833333333\nclassify_mlp,268,lupus_1,0.666666667,0.75,0.888888889\nclassify_logreg,268,lupus_1,0.75,0.75,1\nclassify_knn,268,lupus_1,0.75,0.75,1\nclassify_gp,268,lupus_1,0.588235294,0.75,0.784313725\nclassify_et,268,lupus_1,0.571428571,0.75,0.761904762\nclassify_dt,268,lupus_1,0.705882353,0.75,0.941176471\nclassify_dbn,268,lupus_1,0.666666667,0.75,0.888888889\nclassify_bnb,268,lupus_1,0,0.75,0\nclassify_svm,269,lymph_1,0.703587681,0.867940659,0.810640305\nclassify_sgd,269,lymph_1,0.815116923,0.867940659,0.939139\nclassify_rf,269,lymph_1,0.157225094,0.867940659,0.181147284\nclassify_mnb,269,lymph_1,0.692116558,0.867940659,0.797423822\nclassify_mlp,269,lymph_1,0.851540081,0.867940659,0.981104032\nclassify_logreg,269,lymph_1,0.783578582,0.867940659,0.902802022\nclassify_knn,269,lymph_1,0.76701769,0.867940659,0.883721349\nclassify_gp,269,lymph_1,0.131593839,0.867940659,0.15161617\nclassify_gnb,269,lymph_1,0.156383993,0.867940659,0.180178208\nclassify_et,269,lymph_1,0.157225094,0.867940659,0.181147284\nclassify_dt,269,lymph_1,0.143870962,0.867940659,0.165761289\nclassify_dbn,269,lymph_1,0.867940659,0.867940659,1\nclassify_bnb,269,lymph_1,0.543065925,0.867940659,0.625694763\nclassify_svm,270,lymph_2,0.769230769,0.871794872,0.882352941\nclassify_sgd,270,lymph_2,0.820512821,0.871794872,0.941176471\nclassify_pa,270,lymph_2,0.810810811,0.871794872,0.930047695\nclassify_mlp,270,lymph_2,0.857142857,0.871794872,0.983193277\nclassify_logreg,270,lymph_2,0.8,0.871794872,0.917647059\nclassify_knn,270,lymph_2,0.75,0.871794872,0.860294118\nclassify_gp,270,lymph_2,0.705882353,0.871794872,0.809688581\nclassify_et,270,lymph_2,0.742857143,0.871794872,0.85210084\nclassify_dt,270,lymph_2,0.722222222,0.871794872,0.828431373\nclassify_dbn,270,lymph_2,0.871794872,0.871794872,1\nclassify_bnb,270,lymph_2,0.833333333,0.871794872,0.955882353\nclassify_svm,271,machine_cpu_1,0,1,0\nclassify_sgd,271,machine_cpu_1,0.947368421,1,0.947368421\nclassify_rf,271,machine_cpu_1,0.972972973,1,0.972972973\nclassify_pa,271,machine_cpu_1,0.88372093,1,0.88372093\nclassify_mlp,271,machine_cpu_1,0.974358974,1,0.974358974\nclassify_logreg,271,machine_cpu_1,0.904761905,1,0.904761905\nclassify_knn,271,machine_cpu_1,1,1,1\nclassify_gp,271,machine_cpu_1,0.882352941,1,0.882352941\nclassify_gnb,271,machine_cpu_1,0.95,1,0.95\nclassify_et,271,machine_cpu_1,0.416666667,1,0.416666667\nclassify_dt,271,machine_cpu_1,0.944444444,1,0.944444444\nclassify_dbn,271,machine_cpu_1,0.974358974,1,0.974358974\nclassify_svm,272,madelon_1,0.672340426,0.810539523,0.829497398\nclassify_sgd,272,madelon_1,0.672340426,0.810539523,0.829497398\nclassify_rf,272,madelon_1,0.810539523,0.810539523,1\nclassify_pa,272,madelon_1,0.590792839,0.810539523,0.728888379\nclassify_mnb,272,madelon_1,0.596078431,0.810539523,0.735409458\nclassify_mlp,272,madelon_1,0.672340426,0.810539523,0.829497398\nclassify_logreg,272,madelon_1,0.595578674,0.810539523,0.734792884\nclassify_knn,272,madelon_1,0.634567901,0.810539523,0.782895692\nclassify_gp,272,madelon_1,0,0.810539523,0\nclassify_et,272,madelon_1,0.688039458,0.810539523,0.848866018\nclassify_dt,272,madelon_1,0.71409396,0.810539523,0.881010659\nclassify_dbn,272,madelon_1,0.576454669,0.810539523,0.711198716\nclassify_bnb,272,madelon_1,0.602015113,0.810539523,0.742733816\nclassify_svm,273,mammography_1,0.278651685,0.684210526,0.407260156\nclassify_sgd,273,mammography_1,0.504504505,0.684210526,0.737352737\nclassify_rf,273,mammography_1,0.444444444,0.684210526,0.64957265\nclassify_pa,273,mammography_1,0.053333333,0.684210526,0.077948718\nclassify_mlp,273,mammography_1,0.684210526,0.684210526,1\nclassify_logreg,273,mammography_1,0.116197183,0.684210526,0.169826652\nclassify_knn,273,mammography_1,0.64516129,0.684210526,0.94292804\nclassify_et,273,mammography_1,0.252873563,0.684210526,0.369584439\nclassify_dt,273,mammography_1,0.078947368,0.684210526,0.115384615\nclassify_dbn,273,mammography_1,0.641221374,0.684210526,0.9371697\nclassify_bnb,273,mammography_1,0.13003096,0.684210526,0.190045249\nclassify_svm,274,mbagrade_1,0.8,0.818181818,0.977777778\nclassify_sgd,274,mbagrade_1,0.8,0.818181818,0.977777778\nclassify_rf,274,mbagrade_1,0.761904762,0.818181818,0.931216931\nclassify_pa,274,mbagrade_1,0.380952381,0.818181818,0.465608466\nclassify_mlp,274,mbagrade_1,0.818181818,0.818181818,1\nclassify_logreg,274,mbagrade_1,0.75,0.818181818,0.916666667\nclassify_knn,274,mbagrade_1,0.761904762,0.818181818,0.931216931\nclassify_gp,274,mbagrade_1,0.642857143,0.818181818,0.785714286\nclassify_gnb,274,mbagrade_1,0.818181818,0.818181818,1\nclassify_et,274,mbagrade_1,0.818181818,0.818181818,1\nclassify_dt,274,mbagrade_1,0.727272727,0.818181818,0.888888889\nclassify_dbn,274,mbagrade_1,0.818181818,0.818181818,1\nclassify_bnb,274,mbagrade_1,0.75,0.818181818,0.916666667\nclassify_svm,275,mc1_1,0.172413793,0.484848485,0.355603448\nclassify_sgd,275,mc1_1,0.298507463,0.484848485,0.615671642\nclassify_rf,275,mc1_1,0.347826087,0.484848485,0.717391305\nclassify_pa,275,mc1_1,0.275862069,0.484848485,0.568965517\nclassify_mlp,275,mc1_1,0.484848485,0.484848485,1\nclassify_logreg,275,mc1_1,0.050331126,0.484848485,0.103807947\nclassify_knn,275,mc1_1,0.424242424,0.484848485,0.875\nclassify_et,275,mc1_1,0,0.484848485,0\nclassify_dt,275,mc1_1,0.344827586,0.484848485,0.711206897\nclassify_dbn,275,mc1_1,0,0.484848485,0\nclassify_bnb,275,mc1_1,0.125,0.484848485,0.2578125\nclassify_svm,276,mc2_1,0.585365854,0.709677419,0.824833703\nclassify_sgd,276,mc2_1,0.689655172,0.709677419,0.971786834\nclassify_rf,276,mc2_1,0.416666667,0.709677419,0.587121212\nclassify_pa,276,mc2_1,0.434782609,0.709677419,0.612648221\nclassify_mnb,276,mc2_1,0.315789474,0.709677419,0.444976077\nclassify_mlp,276,mc2_1,0.709677419,0.709677419,1\nclassify_logreg,276,mc2_1,0.611111111,0.709677419,0.861111111\nclassify_knn,276,mc2_1,0.5,0.709677419,0.704545455\nclassify_gp,276,mc2_1,0.421052632,0.709677419,0.593301435\nclassify_gnb,276,mc2_1,0.5,0.709677419,0.704545455\nclassify_et,276,mc2_1,0.5,0.709677419,0.704545455\nclassify_dt,276,mc2_1,0.342857143,0.709677419,0.483116883\nclassify_dbn,276,mc2_1,0.580645161,0.709677419,0.818181818\nclassify_svm,277,meta_batchincremental.arff_1,-0.075729394,0.065285721,-1.159968722\nclassify_sgd,277,meta_batchincremental.arff_1,-0.015251059,0.065285721,-0.233604812\nclassify_rf,277,meta_batchincremental.arff_1,-0.065657423,0.065285721,-1.005693473\nclassify_pa,277,meta_batchincremental.arff_1,-0.069450729,0.065285721,-1.06379662\nclassify_mlp,277,meta_batchincremental.arff_1,0.065285721,0.065285721,1\nclassify_logreg,277,meta_batchincremental.arff_1,0.058056887,0.065285721,0.889273891\nclassify_knn,277,meta_batchincremental.arff_1,-0.125494424,0.065285721,-1.922233883\nclassify_gp,277,meta_batchincremental.arff_1,-0.138496099,0.065285721,-2.121384239\nclassify_gnb,277,meta_batchincremental.arff_1,-0.002321069,0.065285721,-0.03555248\nclassify_dt,277,meta_batchincremental.arff_1,-0.094895475,0.065285721,-1.453541054\nclassify_dbn,277,meta_batchincremental.arff_1,-0.022115179,0.065285721,-0.338744506\nclassify_bnb,277,meta_batchincremental.arff_1,-0.125821233,0.065285721,-1.9272397\nclassify_svm,278,meta_ensembles.arff_1,-0.003499137,0.486120415,-0.007198086\nclassify_sgd,278,meta_ensembles.arff_1,0.370125927,0.486120415,0.761387334\nclassify_rf,278,meta_ensembles.arff_1,0.200585278,0.486120415,0.412624674\nclassify_pa,278,meta_ensembles.arff_1,0.252750844,0.486120415,0.519934642\nclassify_mlp,278,meta_ensembles.arff_1,0.289264703,0.486120415,0.595047429\nclassify_logreg,278,meta_ensembles.arff_1,0.273257721,0.486120415,0.562119411\nclassify_knn,278,meta_ensembles.arff_1,0.464569322,0.486120415,0.95566717\nclassify_gp,278,meta_ensembles.arff_1,-0.003499137,0.486120415,-0.007198086\nclassify_gnb,278,meta_ensembles.arff_1,0.226599744,0.486120415,0.466139123\nclassify_et,278,meta_ensembles.arff_1,0.486120415,0.486120415,1\nclassify_dbn,278,meta_ensembles.arff_1,0.090221586,0.486120415,0.185595139\nclassify_bnb,278,meta_ensembles.arff_1,0.324643076,0.486120415,0.667824401\nclassify_sgd,279,meta_instanceincremental.arff_1,0.481077738,0.835930315,0.57549981\nclassify_rf,279,meta_instanceincremental.arff_1,0.835930315,0.835930315,1\nclassify_pa,279,meta_instanceincremental.arff_1,0.117940382,0.835930315,0.141088772\nclassify_mlp,279,meta_instanceincremental.arff_1,0.481077738,0.835930315,0.57549981\nclassify_logreg,279,meta_instanceincremental.arff_1,0.418281352,0.835930315,0.500378254\nclassify_knn,279,meta_instanceincremental.arff_1,0.166333467,0.835930315,0.198980063\nclassify_gp,279,meta_instanceincremental.arff_1,-0.124921551,0.835930315,-0.149440149\nclassify_gnb,279,meta_instanceincremental.arff_1,0.271194362,0.835930315,0.324422212\nclassify_et,279,meta_instanceincremental.arff_1,0.14086131,0.835930315,0.168508436\nclassify_dbn,279,meta_instanceincremental.arff_1,0.450313201,0.835930315,0.538697058\nclassify_svm,280,mfeat-factors_1,0.946444249,1,0.946444249\nclassify_sgd,280,mfeat-factors_1,0.999073216,1,0.999073216\nclassify_rf,280,mfeat-factors_1,0.994464945,1,0.994464945\nclassify_pa,280,mfeat-factors_1,1,1,1\nclassify_mnb,280,mfeat-factors_1,0.93083004,1,0.93083004\nclassify_mlp,280,mfeat-factors_1,0.999073216,1,0.999073216\nclassify_logreg,280,mfeat-factors_1,0.880581516,1,0.880581516\nclassify_knn,280,mfeat-factors_1,0.997214485,1,0.997214485\nclassify_gp,280,mfeat-factors_1,0.989767442,1,0.989767442\nclassify_gnb,280,mfeat-factors_1,0.972511848,1,0.972511848\nclassify_et,280,mfeat-factors_1,0.996303142,1,0.996303142\nclassify_dt,280,mfeat-factors_1,0.988888889,1,0.988888889\nclassify_dbn,280,mfeat-factors_1,0.997219648,1,0.997219648\nclassify_bnb,280,mfeat-factors_1,0.961612284,1,0.961612284\nclassify_svm,281,mfeat-fourier_1,1,1,1\nclassify_sgd,281,mfeat-fourier_1,1,1,1\nclassify_rf,281,mfeat-fourier_1,1,1,1\nclassify_pa,281,mfeat-fourier_1,0.997167139,1,0.997167139\nclassify_mnb,281,mfeat-fourier_1,0.995269631,1,0.995269631\nclassify_mlp,281,mfeat-fourier_1,1,1,1\nclassify_logreg,281,mfeat-fourier_1,0.993352327,1,0.993352327\nclassify_knn,281,mfeat-fourier_1,1,1,1\nclassify_gp,281,mfeat-fourier_1,0.999057493,1,0.999057493\nclassify_gnb,281,mfeat-fourier_1,0.994360902,1,0.994360902\nclassify_et,281,mfeat-fourier_1,0.98880597,1,0.98880597\nclassify_dt,281,mfeat-fourier_1,0.99342723,1,0.99342723\nclassify_dbn,281,mfeat-fourier_1,0.986891386,1,0.986891386\nclassify_svm,282,mfeat-karhunen_1,0.99257885,1,0.99257885\nclassify_sgd,282,mfeat-karhunen_1,0.997235023,1,0.997235023\nclassify_rf,282,mfeat-karhunen_1,0.982742961,1,0.982742961\nclassify_pa,282,mfeat-karhunen_1,0.996309963,1,0.996309963\nclassify_mlp,282,mfeat-karhunen_1,1,1,1\nclassify_logreg,282,mfeat-karhunen_1,0.982159624,1,0.982159624\nclassify_knn,282,mfeat-karhunen_1,0.996296296,1,0.996296296\nclassify_gp,282,mfeat-karhunen_1,0.992673993,1,0.992673993\nclassify_gnb,282,mfeat-karhunen_1,0.990825688,1,0.990825688\nclassify_dt,282,mfeat-karhunen_1,0.983425414,1,0.983425414\nclassify_dbn,282,mfeat-karhunen_1,0.996316759,1,0.996316759\nclassify_bnb,282,mfeat-karhunen_1,0.970946579,1,0.970946579\nclassify_svm,283,mfeat-morphological_1,0.944591029,0.999069767,0.945470537\nclassify_sgd,283,mfeat-morphological_1,0.999069767,0.999069767,1\nclassify_rf,283,mfeat-morphological_1,0.993512512,0.999069767,0.99443757\nclassify_pa,283,mfeat-morphological_1,0.999069767,0.999069767,1\nclassify_mnb,283,mfeat-morphological_1,0.924,0.999069767,0.924860335\nclassify_mlp,283,mfeat-morphological_1,0.999069767,0.999069767,1\nclassify_logreg,283,mfeat-morphological_1,0.717520858,0.999069767,0.718188941\nclassify_knn,283,mfeat-morphological_1,0.999069767,0.999069767,1\nclassify_gp,283,mfeat-morphological_1,0.980501393,0.999069767,0.981414336\nclassify_gnb,283,mfeat-morphological_1,0.999069767,0.999069767,1\nclassify_et,283,mfeat-morphological_1,0.975476839,0.999069767,0.976385104\nclassify_dt,283,mfeat-morphological_1,0.998137803,0.999069767,0.999067167\nclassify_dbn,283,mfeat-morphological_1,0.999069767,0.999069767,1\nclassify_svm,284,mfeat-pixel_1,0.99249531,0.998130841,0.994353915\nclassify_sgd,284,mfeat-pixel_1,0.995331466,0.998130841,0.997195383\nclassify_pa,284,mfeat-pixel_1,0.992509363,0.998130841,0.994367995\nclassify_mlp,284,mfeat-pixel_1,0.998130841,0.998130841,1\nclassify_logreg,284,mfeat-pixel_1,0.731132075,0.998130841,0.732501237\nclassify_knn,284,mfeat-pixel_1,0.998127341,0.998130841,0.999996493\nclassify_gp,284,mfeat-pixel_1,0.997193639,0.998130841,0.999061043\nclassify_et,284,mfeat-pixel_1,0.979816514,0.998130841,0.981651376\nclassify_dt,284,mfeat-pixel_1,0.995313964,0.998130841,0.997177848\nclassify_dbn,284,mfeat-pixel_1,0.995313964,0.998130841,0.997177848\nclassify_bnb,284,mfeat-pixel_1,0.977229602,0.998130841,0.97905962\nclassify_svm,285,mfeat-zernike_1,0.998127341,0.999066293,0.99906017\nclassify_sgd,285,mfeat-zernike_1,0.998134328,0.999066293,0.999067164\nclassify_rf,285,mfeat-zernike_1,0.99257885,0.999066293,0.993506493\nclassify_pa,285,mfeat-zernike_1,0.997204101,0.999066293,0.998136067\nclassify_mlp,285,mfeat-zernike_1,0.998134328,0.999066293,0.999067164\nclassify_logreg,285,mfeat-zernike_1,0.998130841,0.999066293,0.999063674\nclassify_knn,285,mfeat-zernike_1,0.99719888,0.999066293,0.998130841\nclassify_gp,285,mfeat-zernike_1,0.998134328,0.999066293,0.999067164\nclassify_et,285,mfeat-zernike_1,0.989824237,0.999066293,0.990749306\nclassify_dt,285,mfeat-zernike_1,0.993476235,0.999066293,0.994404717\nclassify_dbn,285,mfeat-zernike_1,0.999066293,0.999066293,1\nclassify_svm,286,molecular-biology_promoters_1,0.666666667,0.926829268,0.719298246\nclassify_sgd,286,molecular-biology_promoters_1,0.85,0.926829268,0.917105263\nclassify_pa,286,molecular-biology_promoters_1,0.705882353,0.926829268,0.761609907\nclassify_mlp,286,molecular-biology_promoters_1,0.842105263,0.926829268,0.908587258\nclassify_logreg,286,molecular-biology_promoters_1,0.820512821,0.926829268,0.885290148\nclassify_knn,286,molecular-biology_promoters_1,0.742857143,0.926829268,0.801503759\nclassify_gp,286,molecular-biology_promoters_1,0.689655172,0.926829268,0.744101633\nclassify_gnb,286,molecular-biology_promoters_1,0.926829268,0.926829268,1\nclassify_et,286,molecular-biology_promoters_1,0.894736842,0.926829268,0.965373961\nclassify_dt,286,molecular-biology_promoters_1,0.666666667,0.926829268,0.719298246\nclassify_dbn,286,molecular-biology_promoters_1,0.85,0.926829268,0.917105263\nclassify_bnb,286,molecular-biology_promoters_1,0.810810811,0.926829268,0.874822191\nclassify_svm,287,molecular-biology_promoters_2,0.75,0.882352941,0.85\nclassify_sgd,287,molecular-biology_promoters_2,0.823529412,0.882352941,0.933333333\nclassify_rf,287,molecular-biology_promoters_2,0.882352941,0.882352941,1\nclassify_pa,287,molecular-biology_promoters_2,0.709677419,0.882352941,0.804301075\nclassify_mnb,287,molecular-biology_promoters_2,0.8125,0.882352941,0.920833333\nclassify_mlp,287,molecular-biology_promoters_2,0.8,0.882352941,0.906666667\nclassify_logreg,287,molecular-biology_promoters_2,0.774193548,0.882352941,0.877419355\nclassify_knn,287,molecular-biology_promoters_2,0.857142857,0.882352941,0.971428571\nclassify_gp,287,molecular-biology_promoters_2,0.8125,0.882352941,0.920833333\nclassify_gnb,287,molecular-biology_promoters_2,0.833333333,0.882352941,0.944444444\nclassify_et,287,molecular-biology_promoters_2,0.823529412,0.882352941,0.933333333\nclassify_dbn,287,molecular-biology_promoters_2,0.8125,0.882352941,0.920833333\nclassify_bnb,287,molecular-biology_promoters_2,0.882352941,0.882352941,1\nclassify_svm,288,monks-problems-1_1,0.664,1,0.664\nclassify_sgd,288,monks-problems-1_1,0.698224852,1,0.698224852\nclassify_rf,288,monks-problems-1_1,0.955974843,1,0.955974843\nclassify_pa,288,monks-problems-1_1,0.300653595,1,0.300653595\nclassify_mnb,288,monks-problems-1_1,0.698224852,1,0.698224852\nclassify_mlp,288,monks-problems-1_1,1,1,1\nclassify_logreg,288,monks-problems-1_1,0.698224852,1,0.698224852\nclassify_knn,288,monks-problems-1_1,0.964285714,1,0.964285714\nclassify_gp,288,monks-problems-1_1,0.934911243,1,0.934911243\nclassify_dt,288,monks-problems-1_1,1,1,1\nclassify_dbn,288,monks-problems-1_1,1,1,1\nclassify_svm,289,monks-problems-2_1,0.507772021,1,0.507772021\nclassify_sgd,289,monks-problems-2_1,0.480686695,1,0.480686695\nclassify_rf,289,monks-problems-2_1,0,1,0\nclassify_pa,289,monks-problems-2_1,0,1,0\nclassify_mlp,289,monks-problems-2_1,1,1,1\nclassify_logreg,289,monks-problems-2_1,0.471428571,1,0.471428571\nclassify_knn,289,monks-problems-2_1,0.849557522,1,0.849557522\nclassify_gp,289,monks-problems-2_1,0.421052632,1,0.421052632\nclassify_et,289,monks-problems-2_1,0.034482759,1,0.034482759\nclassify_dbn,289,monks-problems-2_1,0.990990991,1,0.990990991\nclassify_svm,290,monks-problems-3_1,0.805369128,0.968553459,0.831517476\nclassify_sgd,290,monks-problems-3_1,0.85380117,0.968553459,0.881521987\nclassify_pa,290,monks-problems-3_1,0.726190476,0.968553459,0.749768089\nclassify_mlp,290,monks-problems-3_1,0.968553459,0.968553459,1\nclassify_logreg,290,monks-problems-3_1,0.8,0.968553459,0.825974026\nclassify_knn,290,monks-problems-3_1,0.962025317,0.968553459,0.993259905\nclassify_gp,290,monks-problems-3_1,0.941935484,0.968553459,0.972517805\nclassify_et,290,monks-problems-3_1,0.941935484,0.968553459,0.972517805\nclassify_dt,290,monks-problems-3_1,0.968553459,0.968553459,1\nclassify_dbn,290,monks-problems-3_1,0.968553459,0.968553459,1\nclassify_bnb,290,monks-problems-3_1,0.806629834,0.968553459,0.832819115\nclassify_svm,291,mozilla4_1,0.76417704,0.949025721,0.805222686\nclassify_sgd,291,mozilla4_1,0.88598979,0.949025721,0.933578269\nclassify_pa,291,mozilla4_1,0.879870655,0.949025721,0.927130462\nclassify_mnb,291,mozilla4_1,0.891112223,0.949025721,0.938975839\nclassify_mlp,291,mozilla4_1,0.948045833,0.949025721,0.99896748\nclassify_logreg,291,mozilla4_1,0.8339599,0.949025721,0.878753738\nclassify_knn,291,mozilla4_1,0.917522465,0.949025721,0.966804634\nclassify_gnb,291,mozilla4_1,0.722999223,0.949025721,0.761833117\nclassify_et,291,mozilla4_1,0.867995925,0.949025721,0.914617914\nclassify_dt,291,mozilla4_1,0.949025721,0.949025721,1\nclassify_dbn,291,mozilla4_1,0.925358852,0.949025721,0.975061931\nclassify_bnb,291,mozilla4_1,0.786429532,0.949025721,0.828670409\nclassify_svm,292,mu284_1,0.946236559,0.989247312,0.956521739\nclassify_sgd,292,mu284_1,0.989247312,0.989247312,1\nclassify_rf,292,mu284_1,0.989010989,0.989247312,0.999761108\nclassify_pa,292,mu284_1,0.989247312,0.989247312,1\nclassify_mlp,292,mu284_1,0.989247312,0.989247312,1\nclassify_logreg,292,mu284_1,0.989247312,0.989247312,1\nclassify_knn,292,mu284_1,0.946236559,0.989247312,0.956521739\nclassify_gp,292,mu284_1,0.778947368,0.989247312,0.787414188\nclassify_gnb,292,mu284_1,0.823529412,0.989247312,0.832480818\nclassify_et,292,mu284_1,0.989247312,0.989247312,1\nclassify_dt,292,mu284_1,0.989010989,0.989247312,0.999761108\nclassify_dbn,292,mu284_1,0.989247312,0.989247312,1\nclassify_bnb,292,mu284_1,0.85,0.989247312,0.85923913\nclassify_svm,293,musk_1,0.995245642,1,0.995245642\nclassify_sgd,293,musk_1,1,1,1\nclassify_rf,293,musk_1,1,1,1\nclassify_pa,293,musk_1,0.998405104,1,0.998405104\nclassify_mlp,293,musk_1,1,1,1\nclassify_logreg,293,musk_1,0.995245642,1,0.995245642\nclassify_knn,293,musk_1,0.919803601,1,0.919803601\nclassify_et,293,musk_1,0.978861789,1,0.978861789\nclassify_dt,293,musk_1,1,1,1\nclassify_dbn,293,musk_1,0,1,0\nclassify_svm,294,mv_1,0.998072953,0.9998626,0.998210107\nclassify_sgd,294,mv_1,0.999105976,0.9998626,0.999243273\nclassify_rf,294,mv_1,0.961182735,0.9998626,0.96131482\nclassify_pa,294,mv_1,0.996636694,0.9998626,0.996773651\nclassify_mlp,294,mv_1,0.9998626,0.9998626,1\nclassify_logreg,294,mv_1,0.987963409,0.9998626,0.988099174\nclassify_knn,294,mv_1,0.972604626,0.9998626,0.97273828\nclassify_gnb,294,mv_1,0.789386125,0.9998626,0.789494602\nclassify_et,294,mv_1,0.941735364,0.9998626,0.941864777\nclassify_dt,294,mv_1,0.94111719,0.9998626,0.941246517\nclassify_dbn,294,mv_1,0.999312998,0.9998626,0.999450323\nclassify_bnb,294,mv_1,0.838277512,0.9998626,0.838392707\nclassify_svm,295,mw1_1,0.142857143,0.428571429,0.333333333\nclassify_sgd,295,mw1_1,0.25,0.428571429,0.583333333\nclassify_pa,295,mw1_1,0.222222222,0.428571429,0.518518518\nclassify_mlp,295,mw1_1,0.357142857,0.428571429,0.833333333\nclassify_logreg,295,mw1_1,0.25,0.428571429,0.583333333\nclassify_knn,295,mw1_1,0.428571429,0.428571429,1\nclassify_gp,295,mw1_1,0,0.428571429,0\nclassify_dt,295,mw1_1,0.222222222,0.428571429,0.518518518\nclassify_dbn,295,mw1_1,0.266666667,0.428571429,0.622222222\nclassify_bnb,295,mw1_1,0.186046512,0.428571429,0.434108527\nclassify_svm,296,newton_hema_1,0.666666667,0.818181818,0.814814815\nclassify_sgd,296,newton_hema_1,0.707692308,0.818181818,0.864957265\nclassify_rf,296,newton_hema_1,0.736842105,0.818181818,0.900584795\nclassify_pa,296,newton_hema_1,0.541666667,0.818181818,0.662037037\nclassify_mlp,296,newton_hema_1,0.784313726,0.818181818,0.958605664\nclassify_logreg,296,newton_hema_1,0.784313726,0.818181818,0.958605664\nclassify_knn,296,newton_hema_1,0.818181818,0.818181818,1\nclassify_gp,296,newton_hema_1,0.65,0.818181818,0.794444444\nclassify_gnb,296,newton_hema_1,0.608695652,0.818181818,0.743961353\nclassify_et,296,newton_hema_1,0.761904762,0.818181818,0.931216931\nclassify_dt,296,newton_hema_1,0.615384615,0.818181818,0.752136752\nclassify_dbn,296,newton_hema_1,0.727272727,0.818181818,0.888888889\nclassify_svm,297,no2_1,0.582278481,0.699453552,0.832476266\nclassify_sgd,297,no2_1,0.699453552,0.699453552,1\nclassify_rf,297,no2_1,0.550724638,0.699453552,0.78736413\nclassify_pa,297,no2_1,0.591194969,0.699453552,0.845224057\nclassify_mlp,297,no2_1,0.684210526,0.699453552,0.978207237\nclassify_logreg,297,no2_1,0.617283951,0.699453552,0.882523148\nclassify_knn,297,no2_1,0.628930818,0.699453552,0.899174528\nclassify_gp,297,no2_1,0.492753623,0.699453552,0.704483696\nclassify_gnb,297,no2_1,0.403508772,0.699453552,0.576891447\nclassify_et,297,no2_1,0.45112782,0.699453552,0.644971804\nclassify_dt,297,no2_1,0.544117647,0.699453552,0.777918199\nclassify_dbn,297,no2_1,0.684210526,0.699453552,0.978207237\nclassify_bnb,297,no2_1,0.558139535,0.699453552,0.797965116\nclassify_mlp,298,nursery_1,-0.091823714,-0.091823714,1\nclassify_dbn,298,nursery_1,-0.091823714,-0.091823714,1\nclassify_svm,299,nursery_2,1,1,1\nclassify_sgd,299,nursery_2,1,1,1\nclassify_rf,299,nursery_2,1,1,1\nclassify_pa,299,nursery_2,1,1,1\nclassify_mlp,299,nursery_2,1,1,1\nclassify_logreg,299,nursery_2,1,1,1\nclassify_knn,299,nursery_2,1,1,1\nclassify_gnb,299,nursery_2,1,1,1\nclassify_dt,299,nursery_2,1,1,1\nclassify_dbn,299,nursery_2,1,1,1\nclassify_bnb,299,nursery_2,1,1,1\nclassify_svm,300,oil_spill_1,0.48,0.642857143,0.746666667\nclassify_sgd,300,oil_spill_1,0.583333333,0.642857143,0.907407407\nclassify_rf,300,oil_spill_1,0.583333333,0.642857143,0.907407407\nclassify_pa,300,oil_spill_1,0.620689655,0.642857143,0.965517241\nclassify_mlp,300,oil_spill_1,0.642857143,0.642857143,1\nclassify_logreg,300,oil_spill_1,0,0.642857143,0\nclassify_knn,300,oil_spill_1,0.387096774,0.642857143,0.602150538\nclassify_gp,300,oil_spill_1,0,0.642857143,0\nclassify_et,300,oil_spill_1,0,0.642857143,0\nclassify_dbn,300,oil_spill_1,0.538461539,0.642857143,0.837606838\nclassify_svm,301,optdigits_1,0.999339062,0.99966964,0.999669312\nclassify_sgd,301,optdigits_1,0.994402371,0.99966964,0.99473099\nclassify_rf,301,optdigits_1,0.988881622,0.99966964,0.989208417\nclassify_pa,301,optdigits_1,0.988726791,0.99966964,0.989053534\nclassify_mnb,301,optdigits_1,0.963994565,0.99966964,0.964313136\nclassify_mlp,301,optdigits_1,0.998350379,0.99966964,0.998680304\nclassify_logreg,301,optdigits_1,0.99173007,0.99966964,0.992057806\nclassify_knn,301,optdigits_1,0.998021108,0.99966964,0.998350924\nclassify_gp,301,optdigits_1,0.99966964,0.99966964,1\nclassify_et,301,optdigits_1,0.993107975,0.99966964,0.993436167\nclassify_dt,301,optdigits_1,0.982849604,0.99966964,0.983174406\nclassify_dbn,301,optdigits_1,0.999009574,0.99966964,0.999339716\nclassify_bnb,301,optdigits_1,0.972538513,0.99966964,0.972859907\nclassify_svm,302,ozone-level-8hr_1,0.254901961,0.53164557,0.47945845\nclassify_sgd,302,ozone-level-8hr_1,0.456140351,0.53164557,0.857978279\nclassify_rf,302,ozone-level-8hr_1,0.218181818,0.53164557,0.41038961\nclassify_pa,302,ozone-level-8hr_1,0.519230769,0.53164557,0.976648352\nclassify_mlp,302,ozone-level-8hr_1,0.53164557,0.53164557,1\nclassify_logreg,302,ozone-level-8hr_1,0.222748815,0.53164557,0.418979914\nclassify_knn,302,ozone-level-8hr_1,0.360655738,0.53164557,0.678376269\nclassify_et,302,ozone-level-8hr_1,0,0.53164557,0\nclassify_dt,302,ozone-level-8hr_1,0.276923077,0.53164557,0.520879121\nclassify_dbn,302,ozone-level-8hr_1,0.452380952,0.53164557,0.85090703\nclassify_svm,303,page-blocks_1,0.131274131,0.911949686,0.143948875\nclassify_sgd,303,page-blocks_1,0.734939759,0.911949686,0.80589946\nclassify_pa,303,page-blocks_1,0.615384615,0.911949686,0.674801061\nclassify_mnb,303,page-blocks_1,0.632978723,0.911949686,0.694093911\nclassify_mlp,303,page-blocks_1,0.911949686,0.911949686,1\nclassify_logreg,303,page-blocks_1,0.701670644,0.911949686,0.769418155\nclassify_knn,303,page-blocks_1,0.869565217,0.911949686,0.953523238\nclassify_gnb,303,page-blocks_1,0.498269896,0.911949686,0.546378714\nclassify_et,303,page-blocks_1,0.319148936,0.911949686,0.349963316\nclassify_dt,303,page-blocks_1,0.490909091,0.911949686,0.53830721\nclassify_dbn,303,page-blocks_1,0,0.911949686,0\nclassify_svm,304,parkinsons_1,0.967741936,0.989247312,0.97826087\nclassify_sgd,304,parkinsons_1,0.968421053,0.989247312,0.978947368\nclassify_rf,304,parkinsons_1,0.946236559,0.989247312,0.956521739\nclassify_pa,304,parkinsons_1,0.911111111,0.989247312,0.921014493\nclassify_mlp,304,parkinsons_1,0.97826087,0.989247312,0.98889414\nclassify_logreg,304,parkinsons_1,0.88372093,0.989247312,0.893326593\nclassify_knn,304,parkinsons_1,0.989247312,0.989247312,1\nclassify_gp,304,parkinsons_1,0.927835052,0.989247312,0.937920215\nclassify_gnb,304,parkinsons_1,0.779220779,0.989247312,0.78769057\nclassify_et,304,parkinsons_1,0.93877551,0.989247312,0.948979592\nclassify_dbn,304,parkinsons_1,0.945054945,0.989247312,0.955327281\nclassify_bnb,304,parkinsons_1,0.779220779,0.989247312,0.78769057\nclassify_svm,306,pasture_2,0,1,0\nclassify_sgd,306,pasture_2,0.947368421,1,0.947368421\nclassify_rf,306,pasture_2,1,1,1\nclassify_pa,306,pasture_2,0.823529412,1,0.823529412\nclassify_mlp,306,pasture_2,1,1,1\nclassify_logreg,306,pasture_2,0.823529412,1,0.823529412\nclassify_knn,306,pasture_2,1,1,1\nclassify_gp,306,pasture_2,0.941176471,1,0.941176471\nclassify_dt,306,pasture_2,0.941176471,1,0.941176471\nclassify_svm,307,pc1_1,0.296296296,0.428571429,0.691358025\nclassify_sgd,307,pc1_1,0.279069767,0.428571429,0.651162791\nclassify_rf,307,pc1_1,0.428571429,0.428571429,1\nclassify_pa,307,pc1_1,0.242424242,0.428571429,0.565656566\nclassify_mnb,307,pc1_1,0.153846154,0.428571429,0.358974359\nclassify_mlp,307,pc1_1,0.428571429,0.428571429,1\nclassify_logreg,307,pc1_1,0.288888889,0.428571429,0.674074074\nclassify_knn,307,pc1_1,0.4,0.428571429,0.933333333\nclassify_gp,307,pc1_1,0,0.428571429,0\nclassify_gnb,307,pc1_1,0.208333333,0.428571429,0.486111111\nclassify_et,307,pc1_1,0.173913044,0.428571429,0.405797101\nclassify_dt,307,pc1_1,0.303030303,0.428571429,0.707070707\nclassify_dbn,307,pc1_1,0.296296296,0.428571429,0.691358025\nclassify_bnb,307,pc1_1,0.186046512,0.428571429,0.434108527\nclassify_svm,308,pc1_req_1,0.681481482,0.794871795,0.85734767\nclassify_sgd,308,pc1_req_1,0.784810127,0.794871795,0.987341772\nclassify_rf,308,pc1_req_1,0.779220779,0.794871795,0.980310013\nclassify_pa,308,pc1_req_1,0.709219858,0.794871795,0.892244338\nclassify_mlp,308,pc1_req_1,0.784810127,0.794871795,0.987341772\nclassify_logreg,308,pc1_req_1,0.661417323,0.794871795,0.832105664\nclassify_knn,308,pc1_req_1,0.781456954,0.794871795,0.983123264\nclassify_gp,308,pc1_req_1,0.794871795,0.794871795,1\nclassify_gnb,308,pc1_req_1,0.787096774,0.794871795,0.990218522\nclassify_et,308,pc1_req_1,0.784810127,0.794871795,0.987341772\nclassify_dt,308,pc1_req_1,0.77852349,0.794871795,0.979432778\nclassify_dbn,308,pc1_req_1,0.784810127,0.794871795,0.987341772\nclassify_svm,309,pc2_1,0.2,0.260869565,0.766666667\nclassify_sgd,309,pc2_1,0.142857143,0.260869565,0.547619048\nclassify_rf,309,pc2_1,0,0.260869565,0\nclassify_pa,309,pc2_1,0,0.260869565,0\nclassify_mnb,309,pc2_1,0.260869565,0.260869565,1\nclassify_mlp,309,pc2_1,0.001821494,0.260869565,0.006982392\nclassify_logreg,309,pc2_1,0.03125,0.260869565,0.119791667\nclassify_knn,309,pc2_1,0,0.260869565,0\nclassify_gnb,309,pc2_1,0.163265306,0.260869565,0.62585034\nclassify_et,309,pc2_1,0,0.260869565,0\nclassify_dt,309,pc2_1,0,0.260869565,0\nclassify_bnb,309,pc2_1,0.04040404,0.260869565,0.154882155\nclassify_svm,310,pc3_1,0.264150943,0.465116279,0.567924528\nclassify_sgd,310,pc3_1,0.380952381,0.465116279,0.819047619\nclassify_rf,310,pc3_1,0.140350877,0.465116279,0.301754386\nclassify_pa,310,pc3_1,0.357541899,0.465116279,0.768715084\nclassify_mnb,310,pc3_1,0.195652174,0.465116279,0.420652174\nclassify_mlp,310,pc3_1,0.465116279,0.465116279,1\nclassify_logreg,310,pc3_1,0.379146919,0.465116279,0.815165877\nclassify_knn,310,pc3_1,0.363636364,0.465116279,0.781818182\nclassify_gp,310,pc3_1,0,0.465116279,0\nclassify_gnb,310,pc3_1,0.371257485,0.465116279,0.798203593\nclassify_et,310,pc3_1,0,0.465116279,0\nclassify_dt,310,pc3_1,0.34,0.465116279,0.731\nclassify_dbn,310,pc3_1,0.101694915,0.465116279,0.218644068\nclassify_svm,311,pc4_1,0.466321244,0.608695652,0.766099186\nclassify_sgd,311,pc4_1,0.573643411,0.608695652,0.942414175\nclassify_rf,311,pc4_1,0.352941177,0.608695652,0.579831933\nclassify_mnb,311,pc4_1,0.25,0.608695652,0.410714286\nclassify_mlp,311,pc4_1,0.608695652,0.608695652,1\nclassify_logreg,311,pc4_1,0.392857143,0.608695652,0.645408163\nclassify_knn,311,pc4_1,0.432989691,0.608695652,0.711340206\nclassify_gp,311,pc4_1,0.036363636,0.608695652,0.05974026\nclassify_et,311,pc4_1,0,0.608695652,0\nclassify_dt,311,pc4_1,0.253521127,0.608695652,0.416498994\nclassify_dbn,311,pc4_1,0.605504587,0.608695652,0.994757536\nclassify_svm,312,pendigits_1,0.983617865,0.999150382,0.984454275\nclassify_sgd,312,pendigits_1,0.996429179,0.999150382,0.997276482\nclassify_pa,312,pendigits_1,0.995756238,0.999150382,0.99660297\nclassify_mnb,312,pendigits_1,0.962297393,0.999150382,0.963115673\nclassify_mlp,312,pendigits_1,0.999150382,0.999150382,1\nclassify_logreg,312,pendigits_1,0.749362787,0.999150382,0.75\nclassify_knn,312,pendigits_1,0.998810939,0.999150382,0.999660268\nclassify_dt,312,pendigits_1,0.987008547,0.999150382,0.98784784\nclassify_dbn,312,pendigits_1,0.998980632,0.999150382,0.999830105\nclassify_bnb,312,pendigits_1,0.955618175,0.999150382,0.956430776\nclassify_svm,313,phoneme_1,0.457831325,0.822043628,0.556942855\nclassify_sgd,313,phoneme_1,0.637450199,0.822043628,0.775445703\nclassify_rf,313,phoneme_1,0.718510405,0.822043628,0.874053859\nclassify_pa,313,phoneme_1,0.605504587,0.822043628,0.736584491\nclassify_mlp,313,phoneme_1,0.796440489,0.822043628,0.968854283\nclassify_logreg,313,phoneme_1,0.644798501,0.822043628,0.784384768\nclassify_knn,313,phoneme_1,0.822043628,0.822043628,1\nclassify_gnb,313,phoneme_1,0.611615245,0.822043628,0.744017987\nclassify_et,313,phoneme_1,0.459499264,0.822043628,0.55897187\nclassify_dt,313,phoneme_1,0.734693878,0.822043628,0.893740737\nclassify_dbn,313,phoneme_1,0.766004415,0.822043628,0.931829393\nclassify_bnb,313,phoneme_1,0.584369449,0.822043628,0.710874009\nclassify_svm,314,planning-relax_1,0,0.470588235,0\nclassify_sgd,314,planning-relax_1,0.450704225,0.470588235,0.957746479\nclassify_rf,314,planning-relax_1,0.380952381,0.470588235,0.80952381\nclassify_pa,314,planning-relax_1,0.324324324,0.470588235,0.689189189\nclassify_mlp,314,planning-relax_1,0.451612903,0.470588235,0.959677419\nclassify_logreg,314,planning-relax_1,0.3,0.470588235,0.6375\nclassify_knn,314,planning-relax_1,0.470588235,0.470588235,1\nclassify_gp,314,planning-relax_1,0,0.470588235,0\nclassify_gnb,314,planning-relax_1,0,0.470588235,0\nclassify_et,314,planning-relax_1,0,0.470588235,0\nclassify_dt,314,planning-relax_1,0.387096774,0.470588235,0.822580645\nclassify_dbn,314,planning-relax_1,0.25,0.470588235,0.53125\nclassify_svm,315,plasma_retinol_1,0.503937008,0.566371681,0.88976378\nclassify_sgd,315,plasma_retinol_1,0.506024096,0.566371681,0.893448795\nclassify_pa,315,plasma_retinol_1,0.547945205,0.566371681,0.967465753\nclassify_mnb,315,plasma_retinol_1,0.453333333,0.566371681,0.800416667\nclassify_mlp,315,plasma_retinol_1,0.566371681,0.566371681,1\nclassify_logreg,315,plasma_retinol_1,0.533333333,0.566371681,0.941666667\nclassify_knn,315,plasma_retinol_1,0.538461539,0.566371681,0.950721154\nclassify_gp,315,plasma_retinol_1,0.257142857,0.566371681,0.454017857\nclassify_gnb,315,plasma_retinol_1,0.462962963,0.566371681,0.817418982\nclassify_et,315,plasma_retinol_1,0.5,0.566371681,0.8828125\nclassify_dt,315,plasma_retinol_1,0.436781609,0.566371681,0.771192529\nclassify_dbn,315,plasma_retinol_1,0.503937008,0.566371681,0.88976378\nclassify_bnb,315,plasma_retinol_1,0.520547945,0.566371681,0.919092466\nclassify_svm,316,pm10_1,0.520547945,0.642533937,0.810148563\nclassify_sgd,316,pm10_1,0.642533937,0.642533937,1\nclassify_rf,316,pm10_1,0.564885496,0.642533937,0.879152779\nclassify_pa,316,pm10_1,0.537142857,0.642533937,0.835975855\nclassify_mlp,316,pm10_1,0.642533937,0.642533937,1\nclassify_logreg,316,pm10_1,0.528301887,0.642533937,0.822216317\nclassify_knn,316,pm10_1,0.613333333,0.642533937,0.95455399\nclassify_gp,316,pm10_1,0.583333333,0.642533937,0.90786385\nclassify_gnb,316,pm10_1,0.510344828,0.642533937,0.794269063\nclassify_et,316,pm10_1,0.565789474,0.642533937,0.880559674\nclassify_dbn,316,pm10_1,0.642533937,0.642533937,1\nclassify_svm,317,pol_1,0.508946322,0.993152918,0.512455144\nclassify_sgd,317,pol_1,0.850362558,0.993152918,0.856225202\nclassify_rf,317,pol_1,0.865414228,0.993152918,0.871380643\nclassify_pa,317,pol_1,0.683882458,0.993152918,0.68859734\nclassify_mlp,317,pol_1,0.993152918,0.993152918,1\nclassify_logreg,317,pol_1,0.771860987,0.993152918,0.777182418\nclassify_knn,317,pol_1,0.955792191,0.993152918,0.962381697\nclassify_et,317,pol_1,0,0.993152918,0\nclassify_dt,317,pol_1,0.925696594,0.993152918,0.932078613\nclassify_dbn,317,pol_1,0.989549314,0.993152918,0.996371552\nclassify_sgd,318,pollen_1,0.664739884,0.664739884,1\nclassify_pa,318,pollen_1,0.265971317,0.664739884,0.400113372\nclassify_mlp,318,pollen_1,0.664739884,0.664739884,1\nclassify_logreg,318,pollen_1,0.476527901,0.664739884,0.716863712\nclassify_knn,318,pollen_1,0.507666099,0.664739884,0.763706392\nclassify_gp,318,pollen_1,0.664739884,0.664739884,1\nclassify_dt,318,pollen_1,0.652439024,0.664739884,0.981495228\nclassify_dbn,318,pollen_1,0.664739884,0.664739884,1\nclassify_bnb,318,pollen_1,0.470483005,0.664739884,0.707770086\nclassify_svm,319,pollution_1,0.636363636,0.875,0.727272727\nclassify_sgd,319,pollution_1,0.875,0.875,1\nclassify_rf,319,pollution_1,0.875,0.875,1\nclassify_pa,319,pollution_1,0.736842105,0.875,0.842105263\nclassify_mnb,319,pollution_1,0.875,0.875,1\nclassify_mlp,319,pollution_1,0.842105263,0.875,0.962406015\nclassify_logreg,319,pollution_1,0.631578947,0.875,0.721804511\nclassify_knn,319,pollution_1,0.857142857,0.875,0.979591837\nclassify_gp,319,pollution_1,0.615384615,0.875,0.703296703\nclassify_gnb,319,pollution_1,0.705882353,0.875,0.806722689\nclassify_dt,319,pollution_1,0.857142857,0.875,0.979591837\nclassify_dbn,319,pollution_1,0.875,0.875,1\nclassify_bnb,319,pollution_1,0.777777778,0.875,0.888888889\nclassify_svm,321,prnn_fglass_1,0.764705882,0.878048781,0.870915033\nclassify_sgd,321,prnn_fglass_1,0.757894737,0.878048781,0.863157895\nclassify_rf,321,prnn_fglass_1,0.870588235,0.878048781,0.991503268\nclassify_pa,321,prnn_fglass_1,0.722222222,0.878048781,0.822530864\nclassify_mnb,321,prnn_fglass_1,0.75,0.878048781,0.854166667\nclassify_mlp,321,prnn_fglass_1,0.829268293,0.878048781,0.944444444\nclassify_logreg,321,prnn_fglass_1,0.59375,0.878048781,0.676215278\nclassify_knn,321,prnn_fglass_1,0.873563218,0.878048781,0.994891443\nclassify_gp,321,prnn_fglass_1,0.878048781,0.878048781,1\nclassify_gnb,321,prnn_fglass_1,0.542372881,0.878048781,0.617702448\nclassify_dt,321,prnn_fglass_1,0.823529412,0.878048781,0.937908497\nclassify_dbn,321,prnn_fglass_1,0.810126582,0.878048781,0.922644163\nclassify_bnb,321,prnn_fglass_1,0.675675676,0.878048781,0.76951952\nclassify_svm,322,prnn_synth_1,0.648648649,0.868421053,0.746928747\nclassify_sgd,322,prnn_synth_1,0.814814815,0.868421053,0.938271605\nclassify_rf,322,prnn_synth_1,0.811594203,0.868421053,0.934563022\nclassify_pa,322,prnn_synth_1,0.835443038,0.868421053,0.962025317\nclassify_mlp,322,prnn_synth_1,0.868421053,0.868421053,1\nclassify_logreg,322,prnn_synth_1,0.815789474,0.868421053,0.939393939\nclassify_knn,322,prnn_synth_1,0.857142857,0.868421053,0.987012987\nclassify_gp,322,prnn_synth_1,0.868421053,0.868421053,1\nclassify_gnb,322,prnn_synth_1,0.789473684,0.868421053,0.909090909\nclassify_dt,322,prnn_synth_1,0.788732394,0.868421053,0.908237303\nclassify_dbn,322,prnn_synth_1,0.846153846,0.868421053,0.974358974\nclassify_svm,324,puma32H_1,0.652841145,0.909768212,0.717590631\nclassify_sgd,324,puma32H_1,0.675712347,0.909768212,0.742730224\nclassify_rf,324,puma32H_1,0.664487127,0.909768212,0.730391674\nclassify_pa,324,puma32H_1,0.596161699,0.909768212,0.655289656\nclassify_mlp,324,puma32H_1,0.909768212,0.909768212,1\nclassify_logreg,324,puma32H_1,0.655913979,0.909768212,0.720968231\nclassify_knn,324,puma32H_1,0.635646032,0.909768212,0.698690088\nclassify_gnb,324,puma32H_1,0.639564124,0.909768212,0.702996781\nclassify_et,324,puma32H_1,0.641429179,0.909768212,0.705046814\nclassify_dt,324,puma32H_1,0.879175258,0.909768212,0.966372804\nclassify_dbn,324,puma32H_1,0.857142857,0.909768212,0.942155206\nclassify_bnb,324,puma32H_1,0.660849772,0.909768212,0.726393562\nclassify_svm,325,puma8NH_1,0.826688365,0.835770999,0.989132628\nclassify_sgd,325,puma8NH_1,0.830769231,0.835770999,0.994015385\nclassify_rf,325,puma8NH_1,0.790123457,0.835770999,0.945382716\nclassify_pa,325,puma8NH_1,0.82097501,0.835770999,0.9822966\nclassify_mlp,325,puma8NH_1,0.834789846,0.835770999,0.998826051\nclassify_logreg,325,puma8NH_1,0,0.835770999,0\nclassify_knn,325,puma8NH_1,0.808493263,0.835770999,0.967362189\nclassify_et,325,puma8NH_1,0.827302632,0.835770999,0.989867599\nclassify_dt,325,puma8NH_1,0.787954831,0.835770999,0.942787955\nclassify_dbn,325,puma8NH_1,0.835770999,0.835770999,1\nclassify_bnb,325,puma8NH_1,0.727566694,0.835770999,0.870533549\nclassify_svm,326,pwLinear_1,0,0.953846154,0\nclassify_sgd,326,pwLinear_1,0.923076923,0.953846154,0.967741936\nclassify_rf,326,pwLinear_1,0.9375,0.953846154,0.982862903\nclassify_pa,326,pwLinear_1,0.920634921,0.953846154,0.965181772\nclassify_mlp,326,pwLinear_1,0.9375,0.953846154,0.982862903\nclassify_logreg,326,pwLinear_1,0.935483871,0.953846154,0.98074922\nclassify_knn,326,pwLinear_1,0.953846154,0.953846154,1\nclassify_gp,326,pwLinear_1,0.888888889,0.953846154,0.931899642\nclassify_gnb,326,pwLinear_1,0.84375,0.953846154,0.884576613\nclassify_et,326,pwLinear_1,0.870967742,0.953846154,0.913111342\nclassify_dbn,326,pwLinear_1,0.935483871,0.953846154,0.98074922\nclassify_svm,327,pyrim_1,0.888888889,0.941176471,0.944444444\nclassify_sgd,327,pyrim_1,0.941176471,0.941176471,1\nclassify_rf,327,pyrim_1,0.823529412,0.941176471,0.875\nclassify_pa,327,pyrim_1,0.888888889,0.941176471,0.944444444\nclassify_mlp,327,pyrim_1,0.941176471,0.941176471,1\nclassify_logreg,327,pyrim_1,0.888888889,0.941176471,0.944444444\nclassify_knn,327,pyrim_1,0.888888889,0.941176471,0.944444444\nclassify_gp,327,pyrim_1,0.823529412,0.941176471,0.875\nclassify_et,327,pyrim_1,0.875,0.941176471,0.9296875\nclassify_dbn,327,pyrim_1,0.842105263,0.941176471,0.894736842\nclassify_svm,328,qsar-biodeg_1,0.586872587,0.869918699,0.674629235\nclassify_sgd,328,qsar-biodeg_1,0.814814815,0.869918699,0.936656282\nclassify_rf,328,qsar-biodeg_1,0.746666667,0.869918699,0.858317757\nclassify_pa,328,qsar-biodeg_1,0.653846154,0.869918699,0.751617541\nclassify_mlp,328,qsar-biodeg_1,0.869918699,0.869918699,1\nclassify_logreg,328,qsar-biodeg_1,0.755852843,0.869918699,0.868877567\nclassify_knn,328,qsar-biodeg_1,0.826771653,0.869918699,0.95040106\nclassify_gp,328,qsar-biodeg_1,0.689320388,0.869918699,0.792396334\nclassify_gnb,328,qsar-biodeg_1,0.692082111,0.869918699,0.795571025\nclassify_et,328,qsar-biodeg_1,0.59139785,0.869918699,0.679831173\nclassify_dt,328,qsar-biodeg_1,0.726495727,0.869918699,0.835130601\nclassify_dbn,328,qsar-biodeg_1,0.822033898,0.869918699,0.944954855\nclassify_svm,329,quake_1,0.62749213,0.62749213,1\nclassify_sgd,329,quake_1,0.62749213,0.62749213,1\nclassify_rf,329,quake_1,0.145348837,0.62749213,0.231634518\nclassify_mlp,329,quake_1,0.62749213,0.62749213,1\nclassify_logreg,329,quake_1,0.514657981,0.62749213,0.820182367\nclassify_knn,329,quake_1,0.465608466,0.62749213,0.742014829\nclassify_gp,329,quake_1,0.44288225,0.62749213,0.705797297\nclassify_gnb,329,quake_1,0.139534884,0.62749213,0.222369137\nclassify_et,329,quake_1,0.074534162,0.62749213,0.11878103\nclassify_dt,329,quake_1,0.314350797,0.62749213,0.500963729\nclassify_dbn,329,quake_1,0.17877095,0.62749213,0.284897517\nclassify_bnb,329,quake_1,0,0.62749213,0\nclassify_svm,330,quake_2,0.581344902,0.581344902,1\nclassify_sgd,330,quake_2,0.581344902,0.581344902,1\nclassify_mlp,330,quake_2,0.581344902,0.581344902,1\nclassify_logreg,330,quake_2,0.48534202,0.581344902,0.834860713\nclassify_knn,330,quake_2,0.461538462,0.581344902,0.79391504\nclassify_gp,330,quake_2,0.455516014,0.581344902,0.783555532\nclassify_gnb,330,quake_2,0.258064516,0.581344902,0.443909485\nclassify_dt,330,quake_2,0.412955466,0.581344902,0.710345036\nclassify_dbn,330,quake_2,0,0.581344902,0\nclassify_svm,331,qualitative-bankruptcy_1,0.843373494,1,0.843373494\nclassify_sgd,331,qualitative-bankruptcy_1,0.780487805,1,0.780487805\nclassify_rf,331,qualitative-bankruptcy_1,0.989690722,1,0.989690722\nclassify_mnb,331,qualitative-bankruptcy_1,0.636363636,1,0.636363636\nclassify_mlp,331,qualitative-bankruptcy_1,1,1,1\nclassify_logreg,331,qualitative-bankruptcy_1,0.688888889,1,0.688888889\nclassify_knn,331,qualitative-bankruptcy_1,0.989473684,1,0.989473684\nclassify_gp,331,qualitative-bankruptcy_1,0.989473684,1,0.989473684\nclassify_gnb,331,qualitative-bankruptcy_1,0.989690722,1,0.989690722\nclassify_et,331,qualitative-bankruptcy_1,1,1,1\nclassify_dt,331,qualitative-bankruptcy_1,0.989690722,1,0.989690722\nclassify_dbn,331,qualitative-bankruptcy_1,1,1,1\nclassify_svm,332,rabe_131_1,0.75,0.923076923,0.8125\nclassify_sgd,332,rabe_131_1,0.857142857,0.923076923,0.928571429\nclassify_rf,332,rabe_131_1,0.8,0.923076923,0.866666667\nclassify_pa,332,rabe_131_1,0.857142857,0.923076923,0.928571429\nclassify_mnb,332,rabe_131_1,0.8,0.923076923,0.866666667\nclassify_mlp,332,rabe_131_1,0.923076923,0.923076923,1\nclassify_logreg,332,rabe_131_1,0.75,0.923076923,0.8125\nclassify_knn,332,rabe_131_1,0.857142857,0.923076923,0.928571429\nclassify_gp,332,rabe_131_1,0.666666667,0.923076923,0.722222222\nclassify_et,332,rabe_131_1,0.666666667,0.923076923,0.722222222\nclassify_dt,332,rabe_131_1,0.714285714,0.923076923,0.773809524\nclassify_dbn,332,rabe_131_1,0.923076923,0.923076923,1\nclassify_bnb,332,rabe_131_1,0.833333333,0.923076923,0.902777778\nclassify_svm,333,rabe_148_1,0.620689655,1,0.620689655\nclassify_sgd,333,rabe_148_1,1,1,1\nclassify_rf,333,rabe_148_1,1,1,1\nclassify_pa,333,rabe_148_1,1,1,1\nclassify_mlp,333,rabe_148_1,1,1,1\nclassify_logreg,333,rabe_148_1,0.9,1,0.9\nclassify_knn,333,rabe_148_1,1,1,1\nclassify_gp,333,rabe_148_1,1,1,1\nclassify_et,333,rabe_148_1,1,1,1\nclassify_dt,333,rabe_148_1,1,1,1\nclassify_dbn,333,rabe_148_1,1,1,1\nclassify_bnb,333,rabe_148_1,0.875,1,0.875\nclassify_svm,334,rabe_166_1,0.75,0.909090909,0.825\nclassify_sgd,334,rabe_166_1,0.666666667,0.909090909,0.733333333\nclassify_rf,334,rabe_166_1,0.666666667,0.909090909,0.733333333\nclassify_pa,334,rabe_166_1,0.666666667,0.909090909,0.733333333\nclassify_mnb,334,rabe_166_1,0,0.909090909,0\nclassify_mlp,334,rabe_166_1,0.909090909,0.909090909,1\nclassify_logreg,334,rabe_166_1,0.666666667,0.909090909,0.733333333\nclassify_knn,334,rabe_166_1,0.75,0.909090909,0.825\nclassify_gp,334,rabe_166_1,0.666666667,0.909090909,0.733333333\nclassify_dt,334,rabe_166_1,0.75,0.909090909,0.825\nclassify_bnb,334,rabe_166_1,0.75,0.909090909,0.825\nclassify_svm,335,rabe_176_1,0.7,0.7,1\nclassify_sgd,335,rabe_176_1,0.666666667,0.7,0.952380952\nclassify_rf,335,rabe_176_1,0.470588235,0.7,0.672268908\nclassify_mlp,335,rabe_176_1,0.631578947,0.7,0.902255639\nclassify_logreg,335,rabe_176_1,0.5,0.7,0.714285714\nclassify_knn,335,rabe_176_1,0.7,0.7,1\nclassify_gp,335,rabe_176_1,0.555555556,0.7,0.793650794\nclassify_gnb,335,rabe_176_1,0.555555556,0.7,0.793650794\nclassify_et,335,rabe_176_1,0.555555556,0.7,0.793650794\nclassify_dt,335,rabe_176_1,0.470588235,0.7,0.672268908\nclassify_dbn,335,rabe_176_1,0.6,0.7,0.857142857\nclassify_bnb,335,rabe_176_1,0.166666667,0.7,0.238095238\nclassify_svm,336,rabe_265_1,0.625,0.923076923,0.677083333\nclassify_sgd,336,rabe_265_1,0.769230769,0.923076923,0.833333333\nclassify_rf,336,rabe_265_1,0.727272727,0.923076923,0.787878788\nclassify_mnb,336,rabe_265_1,0.666666667,0.923076923,0.722222222\nclassify_mlp,336,rabe_265_1,0.923076923,0.923076923,1\nclassify_logreg,336,rabe_265_1,0.75,0.923076923,0.8125\nclassify_knn,336,rabe_265_1,0.727272727,0.923076923,0.787878788\nclassify_gp,336,rabe_265_1,0.5,0.923076923,0.541666667\nclassify_et,336,rabe_265_1,0.769230769,0.923076923,0.833333333\nclassify_dt,336,rabe_265_1,0.4,0.923076923,0.433333333\nclassify_dbn,336,rabe_265_1,0.666666667,0.923076923,0.722222222\nclassify_bnb,336,rabe_265_1,0.588235294,0.923076923,0.637254902\nclassify_svm,337,rabe_266_1,0.944444444,1,0.944444444\nclassify_sgd,337,rabe_266_1,0.944444444,1,0.944444444\nclassify_pa,337,rabe_266_1,0.918918919,1,0.918918919\nclassify_mlp,337,rabe_266_1,1,1,1\nclassify_logreg,337,rabe_266_1,0.914285714,1,0.914285714\nclassify_knn,337,rabe_266_1,1,1,1\nclassify_gp,337,rabe_266_1,0.944444444,1,0.944444444\nclassify_gnb,337,rabe_266_1,0.914285714,1,0.914285714\nclassify_et,337,rabe_266_1,0.971428571,1,0.971428571\nclassify_dbn,337,rabe_266_1,0.944444444,1,0.944444444\nclassify_svm,338,rabe_97_1,0.8,1,0.8\nclassify_sgd,338,rabe_97_1,0.909090909,1,0.909090909\nclassify_pa,338,rabe_97_1,0.8,1,0.8\nclassify_mlp,338,rabe_97_1,0.909090909,1,0.909090909\nclassify_logreg,338,rabe_97_1,0,1,0\nclassify_knn,338,rabe_97_1,0.909090909,1,0.909090909\nclassify_gp,338,rabe_97_1,0.909090909,1,0.909090909\nclassify_et,338,rabe_97_1,1,1,1\nclassify_dt,338,rabe_97_1,0.909090909,1,0.909090909\nclassify_bnb,338,rabe_97_1,0.8,1,0.8\nclassify_svm,339,ringnorm_1,0.888426311,0.967741936,0.918040522\nclassify_sgd,339,ringnorm_1,0.76793249,0.967741936,0.793530239\nclassify_rf,339,ringnorm_1,0.837264151,0.967741936,0.865172956\nclassify_pa,339,ringnorm_1,0.711094837,0.967741936,0.734797998\nclassify_mlp,339,ringnorm_1,0.967741936,0.967741936,1\nclassify_logreg,339,ringnorm_1,0.765327696,0.967741936,0.790838619\nclassify_knn,339,ringnorm_1,0.765217391,0.967741936,0.790724638\nclassify_et,339,ringnorm_1,0.938600258,0.967741936,0.969886933\nclassify_dt,339,ringnorm_1,0.805702648,0.967741936,0.832559403\nclassify_dbn,339,ringnorm_1,0.963855422,0.967741936,0.995983936\nclassify_bnb,339,ringnorm_1,0.567708333,0.967741936,0.586631944\nclassify_svm,340,rmftsa_ctoarrivals_1,0.532110092,0.9,0.591233435\nclassify_sgd,340,rmftsa_ctoarrivals_1,0.725,0.9,0.805555556\nclassify_rf,340,rmftsa_ctoarrivals_1,0.885245902,0.9,0.983606557\nclassify_mnb,340,rmftsa_ctoarrivals_1,0.333333333,0.9,0.37037037\nclassify_mlp,340,rmftsa_ctoarrivals_1,0.9,0.9,1\nclassify_logreg,340,rmftsa_ctoarrivals_1,0.754098361,0.9,0.837887067\nclassify_knn,340,rmftsa_ctoarrivals_1,0.9,0.9,1\nclassify_gp,340,rmftsa_ctoarrivals_1,0.842105263,0.9,0.935672515\nclassify_et,340,rmftsa_ctoarrivals_1,0.892857143,0.9,0.992063492\nclassify_dt,340,rmftsa_ctoarrivals_1,0.807017544,0.9,0.89668616\nclassify_dbn,340,rmftsa_ctoarrivals_1,0.847457627,0.9,0.941619586\nclassify_bnb,340,rmftsa_ctoarrivals_1,0.666666667,0.9,0.740740741\nclassify_svm,341,rmftsa_ladata_1,0.884353742,0.910344828,0.971449186\nclassify_sgd,341,rmftsa_ladata_1,0.893617021,0.910344828,0.981624758\nclassify_rf,341,rmftsa_ladata_1,0.855072464,0.910344828,0.939284146\nclassify_pa,341,rmftsa_ladata_1,0.790697674,0.910344828,0.868569415\nclassify_mnb,341,rmftsa_ladata_1,0.814285714,0.910344828,0.894480519\nclassify_mlp,341,rmftsa_ladata_1,0.910344828,0.910344828,1\nclassify_logreg,341,rmftsa_ladata_1,0.871428571,0.910344828,0.957251082\nclassify_knn,341,rmftsa_ladata_1,0.877697842,0.910344828,0.964137781\nclassify_gp,341,rmftsa_ladata_1,0.808510638,0.910344828,0.888136686\nclassify_gnb,341,rmftsa_ladata_1,0.820143885,0.910344828,0.900915631\nclassify_et,341,rmftsa_ladata_1,0.863636364,0.910344828,0.94869146\nclassify_dt,341,rmftsa_ladata_1,0.418181818,0.910344828,0.459366391\nclassify_dbn,341,rmftsa_ladata_1,0.887323944,0.910344828,0.974711908\nclassify_svm,342,rmftsa_sleepdata_1,0.683098592,0.767741935,0.889750266\nclassify_sgd,342,rmftsa_sleepdata_1,0.725663717,0.767741935,0.945192236\nclassify_rf,342,rmftsa_sleepdata_1,0.764525994,0.767741935,0.995811169\nclassify_pa,342,rmftsa_sleepdata_1,0.65795207,0.767741935,0.856996393\nclassify_mnb,342,rmftsa_sleepdata_1,0.561056106,0.767741935,0.730787364\nclassify_mlp,342,rmftsa_sleepdata_1,0.767741935,0.767741935,1\nclassify_logreg,342,rmftsa_sleepdata_1,0.656934307,0.767741935,0.855670735\nclassify_knn,342,rmftsa_sleepdata_1,0.750788644,0.767741935,0.977917981\nclassify_gp,342,rmftsa_sleepdata_1,0.757763975,0.767741935,0.987003497\nclassify_et,342,rmftsa_sleepdata_1,0.70877193,0.767741935,0.923190329\nclassify_dt,342,rmftsa_sleepdata_1,0.749140893,0.767741935,0.975771752\nclassify_dbn,342,rmftsa_sleepdata_1,0.75483871,0.767741935,0.983193277\nclassify_svm,343,rmftsa_sleepdata_2,0.072783306,0.291999022,0.249258734\nclassify_sgd,343,rmftsa_sleepdata_2,0.077512672,0.291999022,0.265455246\nclassify_rf,343,rmftsa_sleepdata_2,0.034678271,0.291999022,0.1187616\nclassify_pa,343,rmftsa_sleepdata_2,0.023401594,0.291999022,0.080142715\nclassify_mnb,343,rmftsa_sleepdata_2,0.100725981,0.291999022,0.344953146\nclassify_mlp,343,rmftsa_sleepdata_2,0.242469179,0.291999022,0.830376683\nclassify_logreg,343,rmftsa_sleepdata_2,0.036809141,0.291999022,0.126059124\nclassify_knn,343,rmftsa_sleepdata_2,0.291999022,0.291999022,1\nclassify_gp,343,rmftsa_sleepdata_2,-0.004135496,0.291999022,-0.014162706\nclassify_dbn,343,rmftsa_sleepdata_2,0.012286873,0.291999022,0.042078473\nclassify_svm,344,robot-failures-lp1_1,-0.003651044,0.881069179,-0.004143879\nclassify_sgd,344,robot-failures-lp1_1,0.221729294,0.881069179,0.251659346\nclassify_rf,344,robot-failures-lp1_1,0.881069179,0.881069179,1\nclassify_pa,344,robot-failures-lp1_1,0.283929333,0.881069179,0.322255436\nclassify_mlp,344,robot-failures-lp1_1,0.648241937,0.881069179,0.735744652\nclassify_logreg,344,robot-failures-lp1_1,0.144687217,0.881069179,0.164217772\nclassify_knn,344,robot-failures-lp1_1,0.81873173,0.881069179,0.929247952\nclassify_gp,344,robot-failures-lp1_1,-0.083662949,0.881069179,-0.094956164\nclassify_dbn,344,robot-failures-lp1_1,-0.009998426,0.881069179,-0.01134806\nclassify_svm,346,robot-failures-lp4_1,0.478585578,0.808123926,0.592218053\nclassify_sgd,346,robot-failures-lp4_1,0.472439789,0.808123926,0.584613045\nclassify_rf,346,robot-failures-lp4_1,0.38677027,0.808123926,0.478602672\nclassify_pa,346,robot-failures-lp4_1,0.309948994,0.808123926,0.383541415\nclassify_mlp,346,robot-failures-lp4_1,0.753992779,0.808123926,0.93301628\nclassify_logreg,346,robot-failures-lp4_1,0.242817465,0.808123926,0.30047058\nclassify_knn,346,robot-failures-lp4_1,0.595585259,0.808123926,0.736997433\nclassify_gp,346,robot-failures-lp4_1,0.113867522,0.808123926,0.14090354\nclassify_dt,346,robot-failures-lp4_1,0.694809977,0.808123926,0.85978147\nclassify_dbn,346,robot-failures-lp4_1,0.808123926,0.808123926,1\nclassify_svm,347,sa-heart_1,0.523364486,0.727272727,0.719626168\nclassify_sgd,347,sa-heart_1,0.647619048,0.727272727,0.89047619\nclassify_rf,347,sa-heart_1,0.481927711,0.727272727,0.662650602\nclassify_pa,347,sa-heart_1,0.568421053,0.727272727,0.781578947\nclassify_mnb,347,sa-heart_1,0.509803922,0.727272727,0.700980392\nclassify_mlp,347,sa-heart_1,0.666666667,0.727272727,0.916666667\nclassify_logreg,347,sa-heart_1,0.727272727,0.727272727,1\nclassify_knn,347,sa-heart_1,0.494623656,0.727272727,0.680107527\nclassify_gp,347,sa-heart_1,0.447368421,0.727272727,0.615131579\nclassify_gnb,347,sa-heart_1,0.685714286,0.727272727,0.942857143\nclassify_et,347,sa-heart_1,0.034482759,0.727272727,0.047413793\nclassify_dt,347,sa-heart_1,0.289156626,0.727272727,0.397590361\nclassify_dbn,347,sa-heart_1,0.593406593,0.727272727,0.815934066\nclassify_bnb,347,sa-heart_1,0.633663366,0.727272727,0.871287129\nclassify_svm,348,scene_1,0.623306233,0.971428571,0.641638769\nclassify_sgd,348,scene_1,0.971428571,0.971428571,1\nclassify_rf,348,scene_1,0,0.971428571,0\nclassify_pa,348,scene_1,0.959677419,0.971428571,0.987903226\nclassify_mnb,348,scene_1,0.747404844,0.971428571,0.76938734\nclassify_mlp,348,scene_1,0.963562753,0.971428571,0.991902834\nclassify_logreg,348,scene_1,0.88973384,0.971428571,0.915902483\nclassify_knn,348,scene_1,0.772727273,0.971428571,0.795454545\nclassify_gp,348,scene_1,0.844036697,0.971428571,0.868861306\nclassify_gnb,348,scene_1,0.670553936,0.971428571,0.690276111\nclassify_dbn,348,scene_1,0.042253521,0.971428571,0.043496272\nclassify_bnb,348,scene_1,0.563968668,0.971428571,0.580555982\nclassify_rf,349,schlvote_1,0.8,1,0.8\nclassify_mlp,349,schlvote_1,1,1,1\nclassify_logreg,349,schlvote_1,1,1,1\nclassify_knn,349,schlvote_1,1,1,1\nclassify_gp,349,schlvote_1,1,1,1\nclassify_gnb,349,schlvote_1,0.956521739,1,0.956521739\nclassify_et,349,schlvote_1,1,1,1\nclassify_dt,349,schlvote_1,0.909090909,1,0.909090909\nclassify_bnb,349,schlvote_1,1,1,1\nclassify_svm,350,seeds_1,0.950923806,0.95319899,0.997613107\nclassify_sgd,350,seeds_1,0.942167172,0.95319899,0.988426531\nclassify_rf,350,seeds_1,0.901891719,0.95319899,0.946173599\nclassify_pa,350,seeds_1,0.942167172,0.95319899,0.988426531\nclassify_mlp,350,seeds_1,0.95319899,0.95319899,1\nclassify_logreg,350,seeds_1,0.912457661,0.95319899,0.957258316\nclassify_knn,350,seeds_1,0.945003941,0.95319899,0.991402582\nclassify_gp,350,seeds_1,0.793570004,0.95319899,0.832533408\nclassify_dt,350,seeds_1,0.793797108,0.95319899,0.832771663\nclassify_dbn,350,seeds_1,0.897044596,0.95319899,0.941088488\nclassify_svm,351,segment_1,0.993355482,1,0.993355482\nclassify_sgd,351,segment_1,1,1,1\nclassify_rf,351,segment_1,0.997514499,1,0.997514499\nclassify_pa,351,segment_1,0.999170125,1,0.999170125\nclassify_mlp,351,segment_1,0.999170125,1,0.999170125\nclassify_logreg,351,segment_1,0.955996549,1,0.955996549\nclassify_knn,351,segment_1,0.997514499,1,0.997514499\nclassify_gp,351,segment_1,0.982055465,1,0.982055465\nclassify_et,351,segment_1,0.995864351,1,0.995864351\nclassify_dt,351,segment_1,0.995850622,1,0.995850622\nclassify_dbn,351,segment_1,0.999170125,1,0.999170125\nclassify_svm,352,seismic-bumps_1,0.872934454,0.957007191,0.91215036\nclassify_sgd,352,seismic-bumps_1,0.940567189,0.957007191,0.982821444\nclassify_rf,352,seismic-bumps_1,0.927242631,0.957007191,0.968898289\nclassify_pa,352,seismic-bumps_1,0.957007191,0.957007191,1\nclassify_mnb,352,seismic-bumps_1,0.753007302,0.957007191,0.786835573\nclassify_mlp,352,seismic-bumps_1,0.957007191,0.957007191,1\nclassify_logreg,352,seismic-bumps_1,0.957007191,0.957007191,1\nclassify_knn,352,seismic-bumps_1,0.936754543,0.957007191,0.978837517\nclassify_gp,352,seismic-bumps_1,0.875530121,0.957007191,0.914862635\nclassify_et,352,seismic-bumps_1,0.862255241,0.957007191,0.900991391\nclassify_dt,352,seismic-bumps_1,0.890134682,0.957007191,0.930123295\nclassify_dbn,352,seismic-bumps_1,0.915356933,0.957007191,0.956478636\nclassify_bnb,352,seismic-bumps_1,0.590045568,0.957007191,0.616552909\nclassify_svm,353,sensory_1,0.412903226,0.617886179,0.668251273\nclassify_sgd,353,sensory_1,0.616,0.617886179,0.996947368\nclassify_rf,353,sensory_1,0.576271186,0.617886179,0.93264942\nclassify_pa,353,sensory_1,0.532608696,0.617886179,0.861985126\nclassify_mnb,353,sensory_1,0.475609756,0.617886179,0.769736842\nclassify_mlp,353,sensory_1,0.617886179,0.617886179,1\nclassify_logreg,353,sensory_1,0.512195122,0.617886179,0.828947368\nclassify_knn,353,sensory_1,0.533333333,0.617886179,0.863157895\nclassify_gp,353,sensory_1,0.377358491,0.617886179,0.610724926\nclassify_gnb,353,sensory_1,0.389380531,0.617886179,0.630181649\nclassify_et,353,sensory_1,0,0.617886179,0\nclassify_dt,353,sensory_1,0.510067114,0.617886179,0.825503356\nclassify_dbn,353,sensory_1,0.552238806,0.617886179,0.89375491\nclassify_bnb,353,sensory_1,0.358974359,0.617886179,0.58097166\nclassify_svm,354,servo_1,0.875,0.903225807,0.96875\nclassify_sgd,354,servo_1,0.903225807,0.903225807,1\nclassify_rf,354,servo_1,0.8,0.903225807,0.885714286\nclassify_pa,354,servo_1,0.875,0.903225807,0.96875\nclassify_mlp,354,servo_1,0.857142857,0.903225807,0.948979592\nclassify_logreg,354,servo_1,0.651162791,0.903225807,0.720930233\nclassify_knn,354,servo_1,0.857142857,0.903225807,0.948979592\nclassify_gp,354,servo_1,0,0.903225807,0\nclassify_et,354,servo_1,0.8,0.903225807,0.885714286\nclassify_dbn,354,servo_1,0.903225807,0.903225807,1\nclassify_bnb,354,servo_1,0.875,0.903225807,0.96875\nclassify_sgd,355,skin-segmentation_1,0.956464462,0.999699919,0.956751566\nclassify_rf,355,skin-segmentation_1,0.986581658,0.999699919,0.986877802\nclassify_pa,355,skin-segmentation_1,0.954556295,0.999699919,0.954842825\nclassify_mnb,355,skin-segmentation_1,0.958721205,0.999699919,0.959008986\nclassify_mlp,355,skin-segmentation_1,0.999674195,0.999699919,0.999974268\nclassify_logreg,355,skin-segmentation_1,0.95718474,0.999699919,0.95747206\nclassify_knn,355,skin-segmentation_1,0.999699919,0.999699919,1\nclassify_gnb,355,skin-segmentation_1,0.954010246,0.999699919,0.954296613\nclassify_dt,355,skin-segmentation_1,0.953534154,0.999699919,0.953820377\nclassify_dbn,355,skin-segmentation_1,0,0.999699919,0\nclassify_bnb,355,skin-segmentation_1,0.930515514,0.999699919,0.930794828\nclassify_svm,356,sleuth_case1102_1,0.222222222,0.75,0.296296296\nclassify_sgd,356,sleuth_case1102_1,0.75,0.75,1\nclassify_pa,356,sleuth_case1102_1,0.571428571,0.75,0.761904762\nclassify_mlp,356,sleuth_case1102_1,0.571428571,0.75,0.761904762\nclassify_logreg,356,sleuth_case1102_1,0,0.75,0\nclassify_knn,356,sleuth_case1102_1,0.545454545,0.75,0.727272727\nclassify_gp,356,sleuth_case1102_1,0.666666667,0.75,0.888888889\nclassify_et,356,sleuth_case1102_1,0,0.75,0\nclassify_dt,356,sleuth_case1102_1,0.222222222,0.75,0.296296296\nclassify_svm,357,sleuth_case1201_1,0.952380952,1,0.952380952\nclassify_sgd,357,sleuth_case1201_1,1,1,1\nclassify_rf,357,sleuth_case1201_1,1,1,1\nclassify_mnb,357,sleuth_case1201_1,1,1,1\nclassify_mlp,357,sleuth_case1201_1,1,1,1\nclassify_logreg,357,sleuth_case1201_1,0.956521739,1,0.956521739\nclassify_knn,357,sleuth_case1201_1,1,1,1\nclassify_gp,357,sleuth_case1201_1,0.909090909,1,0.909090909\nclassify_gnb,357,sleuth_case1201_1,1,1,1\nclassify_et,357,sleuth_case1201_1,1,1,1\nclassify_dt,357,sleuth_case1201_1,1,1,1\nclassify_dbn,357,sleuth_case1201_1,1,1,1\nclassify_bnb,357,sleuth_case1201_1,0.956521739,1,0.956521739\nclassify_svm,358,sleuth_case1202_1,0.761904762,0.857142857,0.888888889\nclassify_sgd,358,sleuth_case1202_1,0.833333333,0.857142857,0.972222222\nclassify_rf,358,sleuth_case1202_1,0.8,0.857142857,0.933333333\nclassify_pa,358,sleuth_case1202_1,0.666666667,0.857142857,0.777777778\nclassify_mnb,358,sleuth_case1202_1,0.75,0.857142857,0.875\nclassify_mlp,358,sleuth_case1202_1,0.857142857,0.857142857,1\nclassify_logreg,358,sleuth_case1202_1,0.782608696,0.857142857,0.913043478\nclassify_knn,358,sleuth_case1202_1,0.761904762,0.857142857,0.888888889\nclassify_gp,358,sleuth_case1202_1,0.631578947,0.857142857,0.736842105\nclassify_gnb,358,sleuth_case1202_1,0.782608696,0.857142857,0.913043478\nclassify_et,358,sleuth_case1202_1,0.782608696,0.857142857,0.913043478\nclassify_dt,358,sleuth_case1202_1,0.75,0.857142857,0.875\nclassify_dbn,358,sleuth_case1202_1,0.818181818,0.857142857,0.954545455\nclassify_bnb,358,sleuth_case1202_1,0.818181818,0.857142857,0.954545455\nclassify_svm,359,sleuth_case2002_1,0.615384615,0.680851064,0.903846154\nclassify_sgd,359,sleuth_case2002_1,0.654545455,0.680851064,0.961363636\nclassify_rf,359,sleuth_case2002_1,0.52173913,0.680851064,0.766304348\nclassify_pa,359,sleuth_case2002_1,0.680851064,0.680851064,1\nclassify_mnb,359,sleuth_case2002_1,0.641509434,0.680851064,0.942216981\nclassify_mlp,359,sleuth_case2002_1,0.638297872,0.680851064,0.9375\nclassify_logreg,359,sleuth_case2002_1,0.653061225,0.680851064,0.959183674\nclassify_knn,359,sleuth_case2002_1,0.52,0.680851064,0.76375\nclassify_gp,359,sleuth_case2002_1,0.653061225,0.680851064,0.959183674\nclassify_et,359,sleuth_case2002_1,0.64,0.680851064,0.94\nclassify_dt,359,sleuth_case2002_1,0.62295082,0.680851064,0.914959016\nclassify_dbn,359,sleuth_case2002_1,0.666666667,0.680851064,0.979166667\nclassify_svm,360,sleuth_ex1221_1,0,0.923076923,0\nclassify_sgd,360,sleuth_ex1221_1,0.923076923,0.923076923,1\nclassify_rf,360,sleuth_ex1221_1,0.833333333,0.923076923,0.902777778\nclassify_pa,360,sleuth_ex1221_1,0.833333333,0.923076923,0.902777778\nclassify_mnb,360,sleuth_ex1221_1,0.769230769,0.923076923,0.833333333\nclassify_mlp,360,sleuth_ex1221_1,0.923076923,0.923076923,1\nclassify_logreg,360,sleuth_ex1221_1,0.8,0.923076923,0.866666667\nclassify_knn,360,sleuth_ex1221_1,0.769230769,0.923076923,0.833333333\nclassify_gp,360,sleuth_ex1221_1,0,0.923076923,0\nclassify_et,360,sleuth_ex1221_1,0.769230769,0.923076923,0.833333333\nclassify_dt,360,sleuth_ex1221_1,0.545454545,0.923076923,0.590909091\nclassify_svm,361,sleuth_ex1605_1,0.888888889,0.888888889,1\nclassify_sgd,361,sleuth_ex1605_1,0.857142857,0.888888889,0.964285714\nclassify_rf,361,sleuth_ex1605_1,0.727272727,0.888888889,0.818181818\nclassify_mlp,361,sleuth_ex1605_1,0.888888889,0.888888889,1\nclassify_logreg,361,sleuth_ex1605_1,0.842105263,0.888888889,0.947368421\nclassify_knn,361,sleuth_ex1605_1,0.8,0.888888889,0.9\nclassify_gp,361,sleuth_ex1605_1,0.761904762,0.888888889,0.857142857\nclassify_gnb,361,sleuth_ex1605_1,0.8,0.888888889,0.9\nclassify_et,361,sleuth_ex1605_1,0.761904762,0.888888889,0.857142857\nclassify_dt,361,sleuth_ex1605_1,0.727272727,0.888888889,0.818181818\nclassify_dbn,361,sleuth_ex1605_1,0.857142857,0.888888889,0.964285714\nclassify_svm,362,sleuth_ex1714_1,0,0.833333333,0\nclassify_sgd,362,sleuth_ex1714_1,0.769230769,0.833333333,0.923076923\nclassify_rf,362,sleuth_ex1714_1,0.769230769,0.833333333,0.923076923\nclassify_pa,362,sleuth_ex1714_1,0.769230769,0.833333333,0.923076923\nclassify_mnb,362,sleuth_ex1714_1,0.666666667,0.833333333,0.8\nclassify_mlp,362,sleuth_ex1714_1,0.769230769,0.833333333,0.923076923\nclassify_logreg,362,sleuth_ex1714_1,0.769230769,0.833333333,0.923076923\nclassify_knn,362,sleuth_ex1714_1,0.769230769,0.833333333,0.923076923\nclassify_gp,362,sleuth_ex1714_1,0.833333333,0.833333333,1\nclassify_et,362,sleuth_ex1714_1,0.769230769,0.833333333,0.923076923\nclassify_bnb,362,sleuth_ex1714_1,0.666666667,0.833333333,0.8\nclassify_svm,363,sleuth_ex2015_1,0,0.842105263,0\nclassify_sgd,363,sleuth_ex2015_1,0.842105263,0.842105263,1\nclassify_rf,363,sleuth_ex2015_1,0.7,0.842105263,0.83125\nclassify_pa,363,sleuth_ex2015_1,0.705882353,0.842105263,0.838235294\nclassify_mnb,363,sleuth_ex2015_1,0.666666667,0.842105263,0.791666667\nclassify_mlp,363,sleuth_ex2015_1,0.842105263,0.842105263,1\nclassify_logreg,363,sleuth_ex2015_1,0.705882353,0.842105263,0.838235294\nclassify_knn,363,sleuth_ex2015_1,0.818181818,0.842105263,0.971590909\nclassify_gp,363,sleuth_ex2015_1,0.761904762,0.842105263,0.904761905\nclassify_gnb,363,sleuth_ex2015_1,0.761904762,0.842105263,0.904761905\nclassify_et,363,sleuth_ex2015_1,0.8,0.842105263,0.95\nclassify_dt,363,sleuth_ex2015_1,0.5,0.842105263,0.59375\nclassify_dbn,363,sleuth_ex2015_1,0.8,0.842105263,0.95\nclassify_bnb,363,sleuth_ex2015_1,0.666666667,0.842105263,0.791666667\nclassify_svm,365,sleuth_ex2016_1,0,0.740740741,0\nclassify_sgd,365,sleuth_ex2016_1,0.736842105,0.740740741,0.994736842\nclassify_pa,365,sleuth_ex2016_1,0.72,0.740740741,0.972\nclassify_mnb,365,sleuth_ex2016_1,0.4,0.740740741,0.54\nclassify_mlp,365,sleuth_ex2016_1,0.740740741,0.740740741,1\nclassify_logreg,365,sleuth_ex2016_1,0.583333333,0.740740741,0.7875\nclassify_knn,365,sleuth_ex2016_1,0.692307692,0.740740741,0.934615385\nclassify_gp,365,sleuth_ex2016_1,0.727272727,0.740740741,0.981818182\nclassify_et,365,sleuth_ex2016_1,0.692307692,0.740740741,0.934615385\nclassify_dbn,365,sleuth_ex2016_1,0.695652174,0.740740741,0.939130435\nclassify_svm,367,socmob_1,0.831578947,0.898203593,0.925824561\nclassify_sgd,367,socmob_1,0.867052023,0.898203593,0.965317919\nclassify_rf,367,socmob_1,0.880503145,0.898203593,0.980293501\nclassify_mlp,367,socmob_1,0.898203593,0.898203593,1\nclassify_logreg,367,socmob_1,0.829787234,0.898203593,0.923829787\nclassify_knn,367,socmob_1,0.833333333,0.898203593,0.927777778\nclassify_gp,367,socmob_1,0.855421687,0.898203593,0.952369478\nclassify_gnb,367,socmob_1,0.848101266,0.898203593,0.944219409\nclassify_et,367,socmob_1,0.023809524,0.898203593,0.026507936\nclassify_dt,367,socmob_1,0.864197531,0.898203593,0.962139918\nclassify_dbn,367,socmob_1,0.86746988,0.898203593,0.965783133\nclassify_svm,368,sonar_1,0.788732394,0.931506849,0.846727423\nclassify_sgd,368,sonar_1,0.861538462,0.931506849,0.924886878\nclassify_rf,368,sonar_1,0.931506849,0.931506849,1\nclassify_pa,368,sonar_1,0.838709677,0.931506849,0.900379507\nclassify_mnb,368,sonar_1,0.823529412,0.931506849,0.884083045\nclassify_mlp,368,sonar_1,0.927536232,0.931506849,0.995737425\nclassify_logreg,368,sonar_1,0.766666667,0.931506849,0.823039216\nclassify_knn,368,sonar_1,0.904109589,0.931506849,0.970588235\nclassify_gp,368,sonar_1,0.918918919,0.931506849,0.986486486\nclassify_gnb,368,sonar_1,0.701754386,0.931506849,0.753353973\nclassify_et,368,sonar_1,0.916666667,0.931506849,0.984068628\nclassify_dt,368,sonar_1,0.710526316,0.931506849,0.762770898\nclassify_dbn,368,sonar_1,0.914285714,0.931506849,0.981512605\nclassify_svm,369,space_ga_1,0.656565657,0.871520343,0.753356662\nclassify_sgd,369,space_ga_1,0.828789531,0.871520343,0.950969806\nclassify_rf,369,space_ga_1,0.814049587,0.871520343,0.934056897\nclassify_pa,369,space_ga_1,0.826222685,0.871520343,0.948024555\nclassify_mlp,369,space_ga_1,0.871520343,0.871520343,1\nclassify_logreg,369,space_ga_1,0.852356021,0.871520343,0.978010471\nclassify_knn,369,space_ga_1,0.837108954,0.871520343,0.960515679\nclassify_gp,369,space_ga_1,0.037578288,0.871520343,0.043118085\nclassify_et,369,space_ga_1,0.793442623,0.871520343,0.910412051\nclassify_dbn,369,space_ga_1,0.857446809,0.871520343,0.983851743\nclassify_bnb,369,space_ga_1,0.676822633,0.871520343,0.776599926\nclassify_svm,370,spambase_1,0.8878327,0.925747348,0.959044281\nclassify_sgd,370,spambase_1,0.889546351,0.925747348,0.960895381\nclassify_rf,370,spambase_1,0.86036961,0.925747348,0.929378422\nclassify_pa,370,spambase_1,0.886051081,0.925747348,0.957119761\nclassify_mlp,370,spambase_1,0.925747348,0.925747348,1\nclassify_logreg,370,spambase_1,0.89449113,0.925747348,0.966236773\nclassify_knn,370,spambase_1,0.909272183,0.925747348,0.98220339\nclassify_gnb,370,spambase_1,0.789265983,0.925747348,0.852571692\nclassify_et,370,spambase_1,0.769230769,0.925747348,0.830929487\nclassify_dt,370,spambase_1,0.841085271,0.925747348,0.908547319\nclassify_dbn,370,spambase_1,0.919583728,0.925747348,0.993342006\nclassify_svm,371,spectrometer_1,0.971014493,0.989247312,0.981568998\nclassify_sgd,371,spectrometer_1,0.971428571,0.989247312,0.981987578\nclassify_pa,371,spectrometer_1,0.929765886,0.989247312,0.939872037\nclassify_mlp,371,spectrometer_1,0.989247312,0.989247312,1\nclassify_logreg,371,spectrometer_1,0.730593607,0.989247312,0.738534842\nclassify_knn,371,spectrometer_1,0.964539007,0.989247312,0.975023127\nclassify_gp,371,spectrometer_1,0.965277778,0.989247312,0.975769928\nclassify_gnb,371,spectrometer_1,0.873015873,0.989247312,0.882505176\nclassify_et,371,spectrometer_1,0.961130742,0.989247312,0.971577815\nclassify_dt,371,spectrometer_1,0.96350365,0.989247312,0.973976515\nclassify_dbn,371,spectrometer_1,0.957446809,0.989247312,0.967853839\nclassify_svm,372,splice_1,0.625718705,0.899925049,0.69530091\nclassify_sgd,372,splice_1,0.895177898,0.899925049,0.994724948\nclassify_rf,372,splice_1,0.845438183,0.899925049,0.939453995\nclassify_pa,372,splice_1,0.806690041,0.899925049,0.896396919\nclassify_mnb,372,splice_1,0.879540943,0.899925049,0.977349108\nclassify_mlp,372,splice_1,0.899925049,0.899925049,1\nclassify_logreg,372,splice_1,0.886399394,0.899925049,0.984970242\nclassify_knn,372,splice_1,0.843880444,0.899925049,0.937723031\nclassify_et,372,splice_1,0.866287747,0.899925049,0.962622107\nclassify_dbn,372,splice_1,0.882862043,0.899925049,0.981039526\nclassify_svm,373,splice_2,0.873150106,0.944672131,0.924289049\nclassify_sgd,373,splice_2,0.875960483,0.944672131,0.927264025\nclassify_rf,373,splice_2,0.944672131,0.944672131,1\nclassify_pa,373,splice_2,0.840611354,0.944672131,0.889844557\nclassify_mnb,373,splice_2,0.871287129,0.944672131,0.922316961\nclassify_mlp,373,splice_2,0.935586061,0.944672131,0.990381774\nclassify_logreg,373,splice_2,0.878504673,0.944672131,0.929957224\nclassify_knn,373,splice_2,0.8828125,0.944672131,0.934517354\nclassify_gnb,373,splice_2,0.864118896,0.944672131,0.914728896\nclassify_dt,373,splice_2,0.884488449,0.944672131,0.93629146\nclassify_dbn,373,splice_2,0.924369748,0.944672131,0.97850854\nclassify_bnb,373,splice_2,0.864749734,0.944672131,0.915396681\nclassify_svm,374,steel-plates-fault_1,0.932714617,1,0.932714617\nclassify_sgd,374,steel-plates-fault_1,1,1,1\nclassify_rf,374,steel-plates-fault_1,0.746323529,1,0.746323529\nclassify_pa,374,steel-plates-fault_1,0.997542998,1,0.997542998\nclassify_mlp,374,steel-plates-fault_1,1,1,1\nclassify_logreg,374,steel-plates-fault_1,0.997542998,1,0.997542998\nclassify_knn,374,steel-plates-fault_1,0.992592593,1,0.992592593\nclassify_gp,374,steel-plates-fault_1,0.356687898,1,0.356687898\nclassify_gnb,374,steel-plates-fault_1,0.995049505,1,0.995049505\nclassify_et,374,steel-plates-fault_1,0.912037037,1,0.912037037\nclassify_dt,374,steel-plates-fault_1,0.968973747,1,0.968973747\nclassify_dbn,374,steel-plates-fault_1,0.997542998,1,0.997542998\nclassify_svm,375,stock_1,0.972222222,0.982817869,0.989219114\nclassify_sgd,375,stock_1,0.871428571,0.982817869,0.886663337\nclassify_rf,375,stock_1,0.929032258,0.982817869,0.945274081\nclassify_pa,375,stock_1,0.855172414,0.982817869,0.87012298\nclassify_mnb,375,stock_1,0.702508961,0.982817869,0.714790586\nclassify_mlp,375,stock_1,0.979166667,0.982817869,0.996284965\nclassify_logreg,375,stock_1,0.869565217,0.982817869,0.884767407\nclassify_knn,375,stock_1,0.982817869,0.982817869,1\nclassify_gp,375,stock_1,0.95035461,0.982817869,0.966969201\nclassify_et,375,stock_1,0.948453608,0.982817869,0.965034965\nclassify_dt,375,stock_1,0.960854093,0.982817869,0.977652241\nclassify_dbn,375,stock_1,0.979310345,0.982817869,0.996431155\nclassify_bnb,375,stock_1,0.833333333,0.982817869,0.847902098\nclassify_svm,376,strikes_1,0.712041885,0.965909091,0.737172775\nclassify_sgd,376,strikes_1,0.666666667,0.965909091,0.690196078\nclassify_mlp,376,strikes_1,0.965909091,0.965909091,1\nclassify_logreg,376,strikes_1,0.662857143,0.965909091,0.686252101\nclassify_knn,376,strikes_1,0.92972973,0.965909091,0.96254372\nclassify_gp,376,strikes_1,0.748603352,0.965909091,0.775024647\nclassify_et,376,strikes_1,0.765765766,0.965909091,0.792792793\nclassify_dbn,376,strikes_1,0.881355932,0.965909091,0.912462612\nclassify_svm,377,sylva_prior_1,0.859778598,0.967244701,0.888894606\nclassify_sgd,377,sylva_prior_1,0.958490566,0.967244701,0.99094941\nclassify_pa,377,sylva_prior_1,0.91372549,0.967244701,0.944668385\nclassify_mlp,377,sylva_prior_1,0.967244701,0.967244701,1\nclassify_logreg,377,sylva_prior_1,0.531540848,0.967244701,0.549541235\nclassify_knn,377,sylva_prior_1,0.939805825,0.967244701,0.971631919\nclassify_dt,377,sylva_prior_1,0.904483431,0.967244701,0.935113348\nclassify_dbn,377,sylva_prior_1,0.821256039,0.967244701,0.849067498\nclassify_svm,378,tae_1,0.11430203,0.699929928,0.163304962\nclassify_sgd,378,tae_1,0.5,0.699929928,0.714357223\nclassify_rf,378,tae_1,0.51076402,0.699929928,0.729735933\nclassify_pa,378,tae_1,0.35826863,0.699929928,0.511863567\nclassify_mlp,378,tae_1,0.586790311,0.699929928,0.838355794\nclassify_logreg,378,tae_1,0.501712242,0.699929928,0.716803528\nclassify_knn,378,tae_1,0.699929928,0.699929928,1\nclassify_gp,378,tae_1,0.433909405,0.699929928,0.619932635\nclassify_gnb,378,tae_1,0.42407913,0.699929928,0.60588798\nclassify_et,378,tae_1,0.519526215,0.699929928,0.742254608\nclassify_dt,378,tae_1,0.373928811,0.699929928,0.534237494\nclassify_dbn,378,tae_1,0.412371108,0.699929928,0.58916056\nclassify_bnb,378,tae_1,0.213943002,0.699929928,0.305663457\nclassify_svm,379,tae_2,0.835443038,0.898550725,0.929767252\nclassify_sgd,379,tae_2,0.873239437,0.898550725,0.971830986\nclassify_rf,379,tae_2,0.865671642,0.898550725,0.963408763\nclassify_pa,379,tae_2,0.830769231,0.898550725,0.924565757\nclassify_mnb,379,tae_2,0.62962963,0.898550725,0.700716846\nclassify_mlp,379,tae_2,0.878787879,0.898550725,0.978005865\nclassify_logreg,379,tae_2,0.830769231,0.898550725,0.924565757\nclassify_knn,379,tae_2,0.898550725,0.898550725,1\nclassify_gp,379,tae_2,0.846153846,0.898550725,0.941687345\nclassify_gnb,379,tae_2,0.830769231,0.898550725,0.924565757\nclassify_et,379,tae_2,0.831168831,0.898550725,0.925010473\nclassify_dt,379,tae_2,0.861538462,0.898550725,0.958808933\nclassify_dbn,379,tae_2,0.861111111,0.898550725,0.958333333\nclassify_bnb,379,tae_2,0.830769231,0.898550725,0.924565757\nclassify_svm,380,teachingAssistant_1,-0.057132905,0.610859106,-0.093528777\nclassify_sgd,380,teachingAssistant_1,0.51021831,0.610859106,0.835247121\nclassify_rf,380,teachingAssistant_1,0.610859106,0.610859106,1\nclassify_pa,380,teachingAssistant_1,0.51387948,0.610859106,0.841240599\nclassify_mlp,380,teachingAssistant_1,0.555023001,0.610859106,0.908594136\nclassify_logreg,380,teachingAssistant_1,0.493027587,0.610859106,0.807105243\nclassify_knn,380,teachingAssistant_1,0.541160887,0.610859106,0.885901318\nclassify_gp,380,teachingAssistant_1,0.512469486,0.610859106,0.838932385\nclassify_gnb,380,teachingAssistant_1,0.505556586,0.610859106,0.827615699\nclassify_dt,380,teachingAssistant_1,0.529745253,0.610859106,0.867213484\nclassify_dbn,380,teachingAssistant_1,0.49685721,0.610859106,0.813374484\nclassify_bnb,380,teachingAssistant_1,0.4538063,0.610859106,0.742898478\nclassify_svm,381,tecator_1,0.898876405,1,0.898876405\nclassify_sgd,381,tecator_1,0.989010989,1,0.989010989\nclassify_rf,381,tecator_1,0.931818182,1,0.931818182\nclassify_pa,381,tecator_1,0.954545455,1,0.954545455\nclassify_mlp,381,tecator_1,1,1,1\nclassify_logreg,381,tecator_1,0.966292135,1,0.966292135\nclassify_knn,381,tecator_1,0.945054945,1,0.945054945\nclassify_gp,381,tecator_1,0.909090909,1,0.909090909\nclassify_et,381,tecator_1,0.943820225,1,0.943820225\nclassify_dbn,381,tecator_1,0.956521739,1,0.956521739\nclassify_svm,382,thoracic-surgery_1,0.8,0.927203065,0.862809917\nclassify_sgd,382,thoracic-surgery_1,0.927203065,0.927203065,1\nclassify_rf,382,thoracic-surgery_1,0.923664122,0.927203065,0.996183206\nclassify_pa,382,thoracic-surgery_1,0.923664122,0.927203065,0.996183206\nclassify_mlp,382,thoracic-surgery_1,0.923664122,0.927203065,0.996183206\nclassify_logreg,382,thoracic-surgery_1,0.711340206,0.927203065,0.767189231\nclassify_knn,382,thoracic-surgery_1,0.923664122,0.927203065,0.996183206\nclassify_gp,382,thoracic-surgery_1,0.923664122,0.927203065,0.996183206\nclassify_et,382,thoracic-surgery_1,0.923664122,0.927203065,0.996183206\nclassify_dt,382,thoracic-surgery_1,0.894117647,0.927203065,0.964316967\nclassify_dbn,382,thoracic-surgery_1,0.923664122,0.927203065,0.996183206\nclassify_svm,383,tic-tac-toe_1,0.678678679,1,0.678678679\nclassify_sgd,383,tic-tac-toe_1,0.782795699,1,0.782795699\nclassify_rf,383,tic-tac-toe_1,0.891089109,1,0.891089109\nclassify_pa,383,tic-tac-toe_1,0.774468085,1,0.774468085\nclassify_mnb,383,tic-tac-toe_1,0.627329193,1,0.627329193\nclassify_mlp,383,tic-tac-toe_1,1,1,1\nclassify_logreg,383,tic-tac-toe_1,0.642201835,1,0.642201835\nclassify_knn,383,tic-tac-toe_1,0.917525773,1,0.917525773\nclassify_gp,383,tic-tac-toe_1,0.877108434,1,0.877108434\nclassify_et,383,tic-tac-toe_1,0.883495146,1,0.883495146\nclassify_dt,383,tic-tac-toe_1,0.8,1,0.8\nclassify_dbn,383,tic-tac-toe_1,0.981132075,1,0.981132075\nclassify_bnb,383,tic-tac-toe_1,0.670769231,1,0.670769231\nclassify_svm,384,transplant_1,0,1,0\nclassify_sgd,384,transplant_1,1,1,1\nclassify_rf,384,transplant_1,0.96,1,0.96\nclassify_pa,384,transplant_1,0.923076923,1,0.923076923\nclassify_mlp,384,transplant_1,1,1,1\nclassify_logreg,384,transplant_1,0.923076923,1,0.923076923\nclassify_knn,384,transplant_1,1,1,1\nclassify_gp,384,transplant_1,0.96,1,0.96\nclassify_et,384,transplant_1,1,1,1\nclassify_dt,384,transplant_1,1,1,1\nclassify_dbn,384,transplant_1,0.96,1,0.96\nclassify_bnb,384,transplant_1,0.909090909,1,0.909090909\nclassify_sgd,385,triazines_1,0.8,0.818181818,0.977777778\nclassify_rf,385,triazines_1,0.764705882,0.818181818,0.934640523\nclassify_pa,385,triazines_1,0.727272727,0.818181818,0.888888889\nclassify_mnb,385,triazines_1,0.657534247,0.818181818,0.803652968\nclassify_mlp,385,triazines_1,0.75,0.818181818,0.916666667\nclassify_logreg,385,triazines_1,0.666666667,0.818181818,0.814814815\nclassify_knn,385,triazines_1,0.818181818,0.818181818,1\nclassify_gp,385,triazines_1,0.794117647,0.818181818,0.970588235\nclassify_gnb,385,triazines_1,0.52173913,0.818181818,0.637681159\nclassify_et,385,triazines_1,0.8,0.818181818,0.977777778\nclassify_dt,385,triazines_1,0.756756757,0.818181818,0.924924925\nclassify_dbn,385,triazines_1,0.8,0.818181818,0.977777778\nclassify_bnb,385,triazines_1,0.721311475,0.818181818,0.881602914\nclassify_svm,386,tumors_C_1,0.761904762,0.8,0.952380952\nclassify_sgd,386,tumors_C_1,0.8,0.8,1\nclassify_rf,386,tumors_C_1,0.714285714,0.8,0.892857143\nclassify_pa,386,tumors_C_1,0.736842105,0.8,0.921052632\nclassify_mlp,386,tumors_C_1,0.782608696,0.8,0.97826087\nclassify_logreg,386,tumors_C_1,0.736842105,0.8,0.921052632\nclassify_knn,386,tumors_C_1,0.769230769,0.8,0.961538462\nclassify_gp,386,tumors_C_1,0,0.8,0\nclassify_gnb,386,tumors_C_1,0.6,0.8,0.75\nclassify_et,386,tumors_C_1,0.714285714,0.8,0.892857143\nclassify_dt,386,tumors_C_1,0.608695652,0.8,0.760869565\nclassify_dbn,386,tumors_C_1,0.714285714,0.8,0.892857143\nclassify_bnb,386,tumors_C_1,0.52631579,0.8,0.657894737\nclassify_svm,387,twonorm_1,0.967332123,0.983783784,0.983277158\nclassify_sgd,387,twonorm_1,0.98280543,0.983783784,0.999005519\nclassify_rf,387,twonorm_1,0.949395432,0.983783784,0.965044807\nclassify_pa,387,twonorm_1,0.97574124,0.983783784,0.991824887\nclassify_mlp,387,twonorm_1,0.983783784,0.983783784,1\nclassify_logreg,387,twonorm_1,0.982440342,0.983783784,0.998634414\nclassify_knn,387,twonorm_1,0.97880018,0.983783784,0.994934249\nclassify_et,387,twonorm_1,0.981981982,0.983783784,0.998168498\nclassify_dbn,387,twonorm_1,0.983754513,0.983783784,0.999970246\nclassify_bnb,387,twonorm_1,0.942497754,0.983783784,0.958033431\nclassify_svm,388,vehicle_1,0.681466362,0.769771382,0.885284096\nclassify_sgd,388,vehicle_1,0.601015239,0.769771382,0.780771088\nclassify_rf,388,vehicle_1,0.453407255,0.769771382,0.589015474\nclassify_pa,388,vehicle_1,0.497425486,0.769771382,0.646198985\nclassify_mnb,388,vehicle_1,0.162988439,0.769771382,0.211736164\nclassify_mlp,388,vehicle_1,0.769771382,0.769771382,1\nclassify_logreg,388,vehicle_1,0.570223785,0.769771382,0.74077031\nclassify_knn,388,vehicle_1,0.546222375,0.769771382,0.70959039\nclassify_gp,388,vehicle_1,0.40691388,0.769771382,0.528616534\nclassify_gnb,388,vehicle_1,0.309796967,0.769771382,0.402453215\nclassify_et,388,vehicle_1,0.478791659,0.769771382,0.621992023\nclassify_dbn,388,vehicle_1,0.530676599,0.769771382,0.689395074\nclassify_svm,389,vehicle_2,0.949852507,0.979942693,0.969293933\nclassify_sgd,389,vehicle_2,0.971098266,0.979942693,0.990974546\nclassify_rf,389,vehicle_2,0.962750716,0.979942693,0.98245614\nclassify_pa,389,vehicle_2,0.95184136,0.979942693,0.971323493\nclassify_mlp,389,vehicle_2,0.979942693,0.979942693,1\nclassify_logreg,389,vehicle_2,0.912386707,0.979942693,0.931061289\nclassify_knn,389,vehicle_2,0.970760234,0.979942693,0.990629595\nclassify_gp,389,vehicle_2,0.901333333,0.979942693,0.919781676\nclassify_et,389,vehicle_2,0.95,0.979942693,0.969444444\nclassify_dt,389,vehicle_2,0.873684211,0.979942693,0.891566636\nclassify_dbn,389,vehicle_2,0.977011494,0.979942693,0.997008806\nclassify_bnb,389,vehicle_2,0.890052356,0.979942693,0.908269802\nclassify_svm,390,vertebra-column_1,0.487804878,0.813559322,0.599593496\nclassify_sgd,390,vertebra-column_1,0.806451613,0.813559322,0.991263441\nclassify_pa,390,vertebra-column_1,0.712328767,0.813559322,0.875570776\nclassify_mlp,390,vertebra-column_1,0.807692308,0.813559322,0.992788462\nclassify_logreg,390,vertebra-column_1,0.806451613,0.813559322,0.991263441\nclassify_knn,390,vertebra-column_1,0.709677419,0.813559322,0.872311828\nclassify_gp,390,vertebra-column_1,0.71875,0.813559322,0.883463542\nclassify_et,390,vertebra-column_1,0.75862069,0.813559322,0.932471264\nclassify_dt,390,vertebra-column_1,0.813559322,0.813559322,1\nclassify_dbn,390,vertebra-column_1,0.771929825,0.813559322,0.948830409\nclassify_bnb,390,vertebra-column_1,0.65060241,0.813559322,0.799698795\nclassify_svm,391,vertebra-column_2,0.764364082,0.809353725,0.94441288\nclassify_sgd,391,vertebra-column_2,0.760330997,0.809353725,0.939429787\nclassify_rf,391,vertebra-column_2,0.735715093,0.809353725,0.909015515\nclassify_pa,391,vertebra-column_2,0.677385147,0.809353725,0.836945734\nclassify_mlp,391,vertebra-column_2,0.781955053,0.809353725,0.966147469\nclassify_logreg,391,vertebra-column_2,0.809353725,0.809353725,1\nclassify_knn,391,vertebra-column_2,0.787130452,0.809353725,0.972541952\nclassify_gp,391,vertebra-column_2,0.789798019,0.809353725,0.975837875\nclassify_et,391,vertebra-column_2,0.608928318,0.809353725,0.752363645\nclassify_dbn,391,vertebra-column_2,0.786271814,0.809353725,0.971481059\nclassify_bnb,391,vertebra-column_2,0.640367393,0.809353725,0.79120831\nclassify_svm,392,veteran_1,0.333333333,0.666666667,0.5\nclassify_sgd,392,veteran_1,0.486486487,0.666666667,0.72972973\nclassify_rf,392,veteran_1,0.153846154,0.666666667,0.230769231\nclassify_pa,392,veteran_1,0.5,0.666666667,0.75\nclassify_mnb,392,veteran_1,0.384615385,0.666666667,0.576923077\nclassify_mlp,392,veteran_1,0.666666667,0.666666667,1\nclassify_logreg,392,veteran_1,0.444444444,0.666666667,0.666666667\nclassify_knn,392,veteran_1,0.470588235,0.666666667,0.705882353\nclassify_gp,392,veteran_1,0.375,0.666666667,0.5625\nclassify_gnb,392,veteran_1,0.272727273,0.666666667,0.409090909\nclassify_et,392,veteran_1,0,0.666666667,0\nclassify_dbn,392,veteran_1,0.4,0.666666667,0.6\nclassify_svm,393,vineyard_1,0.888888889,0.941176471,0.944444444\nclassify_sgd,393,vineyard_1,0.941176471,0.941176471,1\nclassify_rf,393,vineyard_1,0.888888889,0.941176471,0.944444444\nclassify_pa,393,vineyard_1,0.888888889,0.941176471,0.944444444\nclassify_mnb,393,vineyard_1,0.75,0.941176471,0.796875\nclassify_mlp,393,vineyard_1,0.888888889,0.941176471,0.944444444\nclassify_logreg,393,vineyard_1,0.888888889,0.941176471,0.944444444\nclassify_knn,393,vineyard_1,0.888888889,0.941176471,0.944444444\nclassify_gp,393,vineyard_1,0.888888889,0.941176471,0.944444444\nclassify_gnb,393,vineyard_1,0.888888889,0.941176471,0.944444444\nclassify_et,393,vineyard_1,0.888888889,0.941176471,0.944444444\nclassify_dt,393,vineyard_1,0.615384615,0.941176471,0.653846154\nclassify_dbn,393,vineyard_1,0.857142857,0.941176471,0.910714286\nclassify_svm,394,vinnie_1,0.822580645,0.822695036,0.999860957\nclassify_sgd,394,vinnie_1,0.822695036,0.822695036,1\nclassify_rf,394,vinnie_1,0.803278689,0.822695036,0.976399095\nclassify_pa,394,vinnie_1,0.814285714,0.822695036,0.989778325\nclassify_mnb,394,vinnie_1,0.80620155,0.822695036,0.979951884\nclassify_mlp,394,vinnie_1,0.819672131,0.822695036,0.996325608\nclassify_logreg,394,vinnie_1,0.803149606,0.822695036,0.976242194\nclassify_knn,394,vinnie_1,0.806722689,0.822695036,0.980585338\nclassify_gp,394,vinnie_1,0.80620155,0.822695036,0.979951884\nclassify_gnb,394,vinnie_1,0.803149606,0.822695036,0.976242194\nclassify_et,394,vinnie_1,0.822580645,0.822695036,0.999860957\nclassify_dt,394,vinnie_1,0.806722689,0.822695036,0.980585338\nclassify_dbn,394,vinnie_1,0.806451613,0.822695036,0.98025584\nclassify_svm,395,visualizing_environmental_1,0.647058824,0.666666667,0.970588235\nclassify_sgd,395,visualizing_environmental_1,0.666666667,0.666666667,1\nclassify_rf,395,visualizing_environmental_1,0.625,0.666666667,0.9375\nclassify_pa,395,visualizing_environmental_1,0.545454545,0.666666667,0.818181818\nclassify_mnb,395,visualizing_environmental_1,0.6,0.666666667,0.9\nclassify_mlp,395,visualizing_environmental_1,0.647058824,0.666666667,0.970588235\nclassify_logreg,395,visualizing_environmental_1,0.606060606,0.666666667,0.909090909\nclassify_knn,395,visualizing_environmental_1,0.620689655,0.666666667,0.931034483\nclassify_gp,395,visualizing_environmental_1,0.545454545,0.666666667,0.818181818\nclassify_gnb,395,visualizing_environmental_1,0.529411765,0.666666667,0.794117647\nclassify_et,395,visualizing_environmental_1,0.529411765,0.666666667,0.794117647\nclassify_dt,395,visualizing_environmental_1,0.4375,0.666666667,0.65625\nclassify_dbn,395,visualizing_environmental_1,0.628571429,0.666666667,0.942857143\nclassify_bnb,395,visualizing_environmental_1,0.580645161,0.666666667,0.870967742\nclassify_svm,396,visualizing_ethanol_1,0,0.742857143,0\nclassify_sgd,396,visualizing_ethanol_1,0.742857143,0.742857143,1\nclassify_mlp,396,visualizing_ethanol_1,0.742857143,0.742857143,1\nclassify_logreg,396,visualizing_ethanol_1,0.620689655,0.742857143,0.835543767\nclassify_knn,396,visualizing_ethanol_1,0.689655172,0.742857143,0.928381963\nclassify_gp,396,visualizing_ethanol_1,0.620689655,0.742857143,0.835543767\nclassify_et,396,visualizing_ethanol_1,0.571428571,0.742857143,0.769230769\nclassify_dbn,396,visualizing_ethanol_1,0.742857143,0.742857143,1\nclassify_bnb,396,visualizing_ethanol_1,0.518518519,0.742857143,0.698005698\nclassify_svm,397,visualizing_galaxy_1,0.112359551,0.988764045,0.113636364\nclassify_sgd,397,visualizing_galaxy_1,0.966292135,0.988764045,0.977272727\nclassify_pa,397,visualizing_galaxy_1,0.966292135,0.988764045,0.977272727\nclassify_mlp,397,visualizing_galaxy_1,0.988764045,0.988764045,1\nclassify_logreg,397,visualizing_galaxy_1,0.966292135,0.988764045,0.977272727\nclassify_knn,397,visualizing_galaxy_1,0.977272727,0.988764045,0.988378099\nclassify_gp,397,visualizing_galaxy_1,0.977272727,0.988764045,0.988378099\nclassify_et,397,visualizing_galaxy_1,0.888888889,0.988764045,0.898989899\nclassify_dt,397,visualizing_galaxy_1,0.943820225,0.988764045,0.954545455\nclassify_dbn,397,visualizing_galaxy_1,0.966292135,0.988764045,0.977272727\nclassify_bnb,397,visualizing_galaxy_1,0.746666667,0.988764045,0.755151515\nclassify_svm,398,visualizing_hamster_1,0.666666667,0.785714286,0.848484849\nclassify_sgd,398,visualizing_hamster_1,0.785714286,0.785714286,1\nclassify_rf,398,visualizing_hamster_1,0.444444444,0.785714286,0.565656566\nclassify_pa,398,visualizing_hamster_1,0.285714286,0.785714286,0.363636364\nclassify_mlp,398,visualizing_hamster_1,0.666666667,0.785714286,0.848484849\nclassify_logreg,398,visualizing_hamster_1,0.454545455,0.785714286,0.578512397\nclassify_knn,398,visualizing_hamster_1,0.736842105,0.785714286,0.937799043\nclassify_gp,398,visualizing_hamster_1,0.5,0.785714286,0.636363636\nclassify_et,398,visualizing_hamster_1,0.444444444,0.785714286,0.565656566\nclassify_dt,398,visualizing_hamster_1,0.736842105,0.785714286,0.937799043\nclassify_dbn,398,visualizing_hamster_1,0.518518519,0.785714286,0.65993266\nclassify_bnb,398,visualizing_hamster_1,0.315789474,0.785714286,0.401913876\nclassify_svm,399,visualizing_livestock_1,0.470588235,0.666666667,0.705882353\nclassify_sgd,399,visualizing_livestock_1,0.352941177,0.666666667,0.529411765\nclassify_rf,399,visualizing_livestock_1,0.461538462,0.666666667,0.692307692\nclassify_mlp,399,visualizing_livestock_1,0.533333333,0.666666667,0.8\nclassify_logreg,399,visualizing_livestock_1,0.363636364,0.666666667,0.545454545\nclassify_knn,399,visualizing_livestock_1,0.666666667,0.666666667,1\nclassify_gp,399,visualizing_livestock_1,0,0.666666667,0\nclassify_gnb,399,visualizing_livestock_1,0.545454545,0.666666667,0.818181818\nclassify_et,399,visualizing_livestock_1,0.461538462,0.666666667,0.692307692\nclassify_dt,399,visualizing_livestock_1,0.333333333,0.666666667,0.5\nclassify_dbn,399,visualizing_livestock_1,0.428571429,0.666666667,0.642857143\nclassify_bnb,399,visualizing_livestock_1,0.444444444,0.666666667,0.666666667\nclassify_svm,400,visualizing_slope_1,0.727272727,1,0.727272727\nclassify_sgd,400,visualizing_slope_1,1,1,1\nclassify_rf,400,visualizing_slope_1,1,1,1\nclassify_pa,400,visualizing_slope_1,1,1,1\nclassify_mlp,400,visualizing_slope_1,1,1,1\nclassify_logreg,400,visualizing_slope_1,1,1,1\nclassify_knn,400,visualizing_slope_1,1,1,1\nclassify_gp,400,visualizing_slope_1,1,1,1\nclassify_et,400,visualizing_slope_1,1,1,1\nclassify_dt,400,visualizing_slope_1,0.888888889,1,0.888888889\nclassify_bnb,400,visualizing_slope_1,0.727272727,1,0.727272727\nclassify_svm,401,visualizing_soil_1,0.998716303,1,0.998716303\nclassify_sgd,401,visualizing_soil_1,1,1,1\nclassify_rf,401,visualizing_soil_1,1,1,1\nclassify_pa,401,visualizing_soil_1,0.998712999,1,0.998712999\nclassify_mlp,401,visualizing_soil_1,1,1,1\nclassify_logreg,401,visualizing_soil_1,0.960493827,1,0.960493827\nclassify_knn,401,visualizing_soil_1,0.998715203,1,0.998715203\nclassify_gnb,401,visualizing_soil_1,0.744497608,1,0.744497608\nclassify_dt,401,visualizing_soil_1,0.999571367,1,0.999571367\nclassify_dbn,401,visualizing_soil_1,1,1,1\nclassify_bnb,401,visualizing_soil_1,0.923431734,1,0.923431734\nclassify_svm,402,vowel_1,0.958742633,1,0.958742633\nclassify_sgd,402,vowel_1,0.980988593,1,0.980988593\nclassify_rf,402,vowel_1,0.983114447,1,0.983114447\nclassify_pa,402,vowel_1,0.980988593,1,0.980988593\nclassify_mlp,402,vowel_1,1,1,1\nclassify_logreg,402,vowel_1,0.970873786,1,0.970873786\nclassify_knn,402,vowel_1,1,1,1\nclassify_gp,402,vowel_1,0.957952468,1,0.957952468\nclassify_gnb,402,vowel_1,0.9609375,1,0.9609375\nclassify_et,402,vowel_1,0.966789668,1,0.966789668\nclassify_dt,402,vowel_1,0.978967495,1,0.978967495\nclassify_dbn,402,vowel_1,0.992366412,1,0.992366412\nclassify_bnb,402,vowel_1,0.947565543,1,0.947565543\nclassify_sgd,403,wall-robot-navigation_1,-0.10471551,0.889008855,-0.117789052\nclassify_mlp,403,wall-robot-navigation_1,0.889008855,0.889008855,1\nclassify_knn,403,wall-robot-navigation_1,0.876417407,0.889008855,0.985836533\nclassify_dbn,403,wall-robot-navigation_1,-0.104943231,0.889008855,-0.118045203\nclassify_svm,404,wall-robot-navigation_2,0.237119709,0.989884422,0.239542823\nclassify_sgd,404,wall-robot-navigation_2,-0.106188636,0.989884422,-0.107273772\nclassify_mlp,404,wall-robot-navigation_2,0.989884422,0.989884422,1\nclassify_logreg,404,wall-robot-navigation_2,-0.106188636,0.989884422,-0.107273772\nclassify_knn,404,wall-robot-navigation_2,0.962975501,0.989884422,0.972816098\nclassify_dbn,404,wall-robot-navigation_2,0.976358689,0.989884422,0.986336048\nclassify_bnb,404,wall-robot-navigation_2,0.177512769,0.989884422,0.179326763\nclassify_sgd,405,wall-robot-navigation_3,-0.044919516,1,-0.044919516\nclassify_mlp,405,wall-robot-navigation_3,0.992688173,1,0.992688173\nclassify_logreg,405,wall-robot-navigation_3,-0.107422216,1,-0.107422216\nclassify_knn,405,wall-robot-navigation_3,0.983496977,1,0.983496977\nclassify_dt,405,wall-robot-navigation_3,1,1,1\nclassify_dbn,405,wall-robot-navigation_3,0.983209516,1,0.983209516\nclassify_svm,406,waveform-5000_1,-0.067049209,0.808260611,-0.082954938\nclassify_sgd,406,waveform-5000_1,-0.067049209,0.808260611,-0.082954938\nclassify_mlp,406,waveform-5000_1,0.808260611,0.808260611,1\nclassify_logreg,406,waveform-5000_1,-0.072196751,0.808260611,-0.089323604\nclassify_knn,406,waveform-5000_1,0.793244136,0.808260611,0.981421246\nclassify_dt,406,waveform-5000_1,0.166484287,0.808260611,0.205978473\nclassify_dbn,406,waveform-5000_1,-0.067049209,0.808260611,-0.082954938\nclassify_svm,407,waveform-5000_2,0.875275938,0.923766816,0.947507448\nclassify_sgd,407,waveform-5000_2,0.880687563,0.923766816,0.953365663\nclassify_rf,407,waveform-5000_2,0.890466531,0.923766816,0.963951634\nclassify_pa,407,waveform-5000_2,0.870116156,0.923766816,0.941921859\nclassify_mlp,407,waveform-5000_2,0.923766816,0.923766816,1\nclassify_logreg,407,waveform-5000_2,0.799769186,0.923766816,0.865769556\nclassify_knn,407,waveform-5000_2,0.899497487,0.923766816,0.973727863\nclassify_gnb,407,waveform-5000_2,0.881614839,0.923766816,0.954369462\nclassify_et,407,waveform-5000_2,0.902941177,0.923766816,0.97745574\nclassify_dt,407,waveform-5000_2,0.846766169,0.923766816,0.916644931\nclassify_dbn,407,waveform-5000_2,0.917705736,0.923766816,0.993438733\nclassify_bnb,407,waveform-5000_2,0.792009401,0.923766816,0.8573694\nclassify_svm,408,wdbc_1,0.834782609,0.990291262,0.842966752\nclassify_sgd,408,wdbc_1,0.960784314,0.990291262,0.970203768\nclassify_pa,408,wdbc_1,0.888888889,0.990291262,0.897603486\nclassify_mnb,408,wdbc_1,0.813186813,0.990291262,0.821159233\nclassify_mlp,408,wdbc_1,0.990291262,0.990291262,1\nclassify_logreg,408,wdbc_1,0.961538462,0.990291262,0.970965309\nclassify_knn,408,wdbc_1,0.951456311,0.990291262,0.960784314\nclassify_gp,408,wdbc_1,0.863157895,0.990291262,0.871620227\nclassify_gnb,408,wdbc_1,0.857142857,0.990291262,0.865546218\nclassify_et,408,wdbc_1,0.92,0.990291262,0.929019608\nclassify_dt,408,wdbc_1,0.831858407,0.990291262,0.840013882\nclassify_dbn,408,wdbc_1,0.970873786,0.990291262,0.980392157\nclassify_svm,410,white-clover_2,0.705882353,0.923076923,0.764705882\nclassify_sgd,410,white-clover_2,0.923076923,0.923076923,1\nclassify_rf,410,white-clover_2,0.923076923,0.923076923,1\nclassify_pa,410,white-clover_2,0.923076923,0.923076923,1\nclassify_mlp,410,white-clover_2,0.923076923,0.923076923,1\nclassify_logreg,410,white-clover_2,0.823529412,0.923076923,0.892156863\nclassify_knn,410,white-clover_2,0.857142857,0.923076923,0.928571429\nclassify_gp,410,white-clover_2,0.769230769,0.923076923,0.833333333\nclassify_gnb,410,white-clover_2,0.666666667,0.923076923,0.722222222\nclassify_et,410,white-clover_2,0.923076923,0.923076923,1\nclassify_dt,410,white-clover_2,0.75,0.923076923,0.8125\nclassify_dbn,410,white-clover_2,0.6,0.923076923,0.65\nclassify_svm,411,wholesale-customers_1,-0.032152801,1,-0.032152801\nclassify_sgd,411,wholesale-customers_1,1,1,1\nclassify_rf,411,wholesale-customers_1,1,1,1\nclassify_mlp,411,wholesale-customers_1,1,1,1\nclassify_logreg,411,wholesale-customers_1,0.250151879,1,0.250151879\nclassify_knn,411,wholesale-customers_1,0.938034784,1,0.938034784\nclassify_gp,411,wholesale-customers_1,-0.112685902,1,-0.112685902\nclassify_gnb,411,wholesale-customers_1,1,1,1\nclassify_et,411,wholesale-customers_1,1,1,1\nclassify_dt,411,wholesale-customers_1,0.138145187,1,0.138145187\nclassify_dbn,411,wholesale-customers_1,0.973329564,1,0.973329564\nclassify_svm,412,wilt_1,0.646551724,0.911392405,0.709410919\nclassify_sgd,412,wilt_1,0.55,0.911392405,0.603472222\nclassify_rf,412,wilt_1,0.729927007,0.911392405,0.800892133\nclassify_pa,412,wilt_1,0.705882353,0.911392405,0.774509804\nclassify_mnb,412,wilt_1,0.15821501,0.911392405,0.173597025\nclassify_mlp,412,wilt_1,0.911392405,0.911392405,1\nclassify_logreg,412,wilt_1,0.625,0.911392405,0.685763889\nclassify_knn,412,wilt_1,0.657142857,0.911392405,0.721031746\nclassify_et,412,wilt_1,0,0.911392405,0\nclassify_dt,412,wilt_1,0.048780488,0.911392405,0.053523035\nclassify_dbn,412,wilt_1,0.909090909,0.911392405,0.997474747\nclassify_bnb,412,wilt_1,0.225140713,0.911392405,0.247029393\nclassify_svm,413,wind_1,0.837084673,0.85851575,0.97503706\nclassify_sgd,413,wind_1,0.836689038,0.85851575,0.974576224\nclassify_pa,413,wind_1,0.811403509,0.85851575,0.945123614\nclassify_mnb,413,wind_1,0.780922432,0.85851575,0.909619226\nclassify_mlp,413,wind_1,0.85851575,0.85851575,1\nclassify_logreg,413,wind_1,0.843850267,0.85851575,0.982917631\nclassify_knn,413,wind_1,0.842049093,0.85851575,0.980819621\nclassify_gnb,413,wind_1,0.79845815,0.85851575,0.930044847\nclassify_dt,413,wind_1,0.816931217,0.85851575,0.951562294\nclassify_dbn,413,wind_1,0.847603662,0.85851575,0.987289589\nclassify_svm,414,wind_correlations_1,0.909090909,1,0.909090909\nclassify_sgd,414,wind_correlations_1,0.923076923,1,0.923076923\nclassify_rf,414,wind_correlations_1,0.909090909,1,0.909090909\nclassify_pa,414,wind_correlations_1,0.909090909,1,0.909090909\nclassify_mlp,414,wind_correlations_1,1,1,1\nclassify_logreg,414,wind_correlations_1,0.833333333,1,0.833333333\nclassify_knn,414,wind_correlations_1,0.857142857,1,0.857142857\nclassify_gp,414,wind_correlations_1,1,1,1\nclassify_gnb,414,wind_correlations_1,0.909090909,1,0.909090909\nclassify_et,414,wind_correlations_1,0.909090909,1,0.909090909\nclassify_dt,414,wind_correlations_1,0.8,1,0.8\nclassify_bnb,414,wind_correlations_1,0.833333333,1,0.833333333\nclassify_svm,415,wine_1,-0.060030951,1,-0.060030951\nclassify_sgd,415,wine_1,0.970317197,1,0.970317197\nclassify_rf,415,wine_1,0.926266205,1,0.926266205\nclassify_mnb,415,wine_1,0.871148335,1,0.871148335\nclassify_mlp,415,wine_1,0.970317197,1,0.970317197\nclassify_logreg,415,wine_1,0.955601831,1,0.955601831\nclassify_knn,415,wine_1,0.970317197,1,0.970317197\nclassify_gp,415,wine_1,0.534429616,1,0.534429616\nclassify_gnb,415,wine_1,1,1,1\nclassify_et,415,wine_1,0.970317197,1,0.970317197\nclassify_dt,415,wine_1,0.742843871,1,0.742843871\nclassify_dbn,415,wine_1,0.967904298,1,0.967904298\nclassify_bnb,415,wine_1,0.81807538,1,0.81807538\nclassify_svm,416,wine_2,0.036363636,1,0.036363636\nclassify_sgd,416,wine_2,1,1,1\nclassify_rf,416,wine_2,0.957746479,1,0.957746479\nclassify_pa,416,wine_2,0.985507246,1,0.985507246\nclassify_mnb,416,wine_2,0.757575758,1,0.757575758\nclassify_mlp,416,wine_2,1,1,1\nclassify_logreg,416,wine_2,1,1,1\nclassify_knn,416,wine_2,0.985507246,1,0.985507246\nclassify_gp,416,wine_2,0.816901408,1,0.816901408\nclassify_et,416,wine_2,0.971428571,1,0.971428571\nclassify_dt,416,wine_2,0.971428571,1,0.971428571\nclassify_dbn,416,wine_2,1,1,1\nclassify_bnb,416,wine_2,0.942857143,1,0.942857143\nclassify_svm,417,wisconsin_1,0.674157303,0.674157303,1\nclassify_sgd,417,wisconsin_1,0.674157303,0.674157303,1\nclassify_rf,417,wisconsin_1,0.517241379,0.674157303,0.767241379\nclassify_mnb,417,wisconsin_1,0.5625,0.674157303,0.834375\nclassify_mlp,417,wisconsin_1,0.674157303,0.674157303,1\nclassify_logreg,417,wisconsin_1,0.571428571,0.674157303,0.847619048\nclassify_knn,417,wisconsin_1,0.597014925,0.674157303,0.885572139\nclassify_gp,417,wisconsin_1,0.576271186,0.674157303,0.85480226\nclassify_gnb,417,wisconsin_1,0.5,0.674157303,0.741666667\nclassify_et,417,wisconsin_1,0.481481482,0.674157303,0.714197531\nclassify_dbn,417,wisconsin_1,0.620689655,0.674157303,0.920689655\nclassify_svm,418,witmer_census_1980_1,0.75,0.857142857,0.875\nclassify_sgd,418,witmer_census_1980_1,0.857142857,0.857142857,1\nclassify_rf,418,witmer_census_1980_1,0.736842105,0.857142857,0.859649123\nclassify_pa,418,witmer_census_1980_1,0.5,0.857142857,0.583333333\nclassify_mnb,418,witmer_census_1980_1,0.777777778,0.857142857,0.907407407\nclassify_mlp,418,witmer_census_1980_1,0.857142857,0.857142857,1\nclassify_logreg,418,witmer_census_1980_1,0.714285714,0.857142857,0.833333333\nclassify_knn,418,witmer_census_1980_1,0.705882353,0.857142857,0.823529412\nclassify_gp,418,witmer_census_1980_1,0.666666667,0.857142857,0.777777778\nclassify_gnb,418,witmer_census_1980_1,0.75,0.857142857,0.875\nclassify_et,418,witmer_census_1980_1,0.823529412,0.857142857,0.960784314\nclassify_dt,418,witmer_census_1980_1,0.588235294,0.857142857,0.68627451\nclassify_dbn,418,witmer_census_1980_1,0.823529412,0.857142857,0.960784314\nclassify_svm,419,yeast_ml8_1,0.021428571,0.285714286,0.075\nclassify_sgd,419,yeast_ml8_1,0.285714286,0.285714286,1\nclassify_rf,419,yeast_ml8_1,0,0.285714286,0\nclassify_pa,419,yeast_ml8_1,0.083333333,0.285714286,0.291666667\nclassify_mlp,419,yeast_ml8_1,0.111111111,0.285714286,0.388888889\nclassify_logreg,419,yeast_ml8_1,0.13559322,0.285714286,0.474576271\nclassify_knn,419,yeast_ml8_1,0,0.285714286,0\nclassify_gp,419,yeast_ml8_1,0,0.285714286,0\nclassify_gnb,419,yeast_ml8_1,0.136645963,0.285714286,0.478260869\nclassify_et,419,yeast_ml8_1,0,0.285714286,0\nclassify_dbn,419,yeast_ml8_1,0.142857143,0.285714286,0.5\nclassify_bnb,419,yeast_ml8_1,0.196078431,0.285714286,0.68627451\nclassify_svm,420,zoo_1,0,1,0\nclassify_sgd,420,zoo_1,1,1,1\nclassify_rf,420,zoo_1,1,1,1\nclassify_pa,420,zoo_1,1,1,1\nclassify_mnb,420,zoo_1,1,1,1\nclassify_mlp,420,zoo_1,1,1,1\nclassify_logreg,420,zoo_1,1,1,1\nclassify_knn,420,zoo_1,1,1,1\nclassify_gp,420,zoo_1,0.971428571,1,0.971428571\nclassify_gnb,420,zoo_1,0.971428571,1,0.971428571\nclassify_et,420,zoo_1,1,1,1\nclassify_dbn,420,zoo_1,1,1,1\n"
  },
  {
    "path": "server/requirements.txt",
    "content": "cachelib==0.1\nflask==1.0\nflask-cors==3.0.0\nsqlalchemy==1.1.14\n"
  },
  {
    "path": "server/setup.py",
    "content": "from setuptools import setup\n\nsetup(\n    name='atm-vis',\n    version='0.0.0',\n    url='http://flask.pocoo.org/docs/tutorial/',\n    install_requires=[\n        'flask',\n    ],\n    entry_points={\n        'console_scripts': [\n            'atmvis=atm_vis:cli'\n        ],\n    },\n)"
  },
  {
    "path": "src/Const.tsx",
    "content": "export const URL = process.env.NODE_ENV === 'development'\n    ? 'http://localhost:7777'\n    : location.origin\n\nexport const UPDATE_INTERVAL_MS = 5000;\nexport const USER_STUDY = false;\n// user_study == false , then user study related modules will be disabled.\n// including, set name, post click event, early stoppings.\n\nexport const THRESHOLD_STEP : number = 20;\n// after running 20 classifier, it will stop the datarun."
  },
  {
    "path": "src/assets/methodsDef.1.json",
    "content": "\n{\n    \"svm\":{   \n        \"name\": \"svm\",\n        \"class\": \"sklearn.svm.SVC\",\n        \"fullname\":\"support vector machine\",\n        \"hyperparameters\": {\n            \"C\": {\n                \"type\": \"float_exp\",\n                \"range\": [1e-5, 1e5]\n            },\n            \"gamma\": {\n                \"type\": \"float_exp\",\n                \"range\": [1e-5, 1e5]\n            },\n            \"kernel\": {\n                \"type\": \"string\",\n                \"values\": [\"rbf\", \"poly\", \"linear\", \"sigmoid\"]\n            },\n            \"degree\": {\n                \"type\": \"int\",\n                \"range\": [2, 5]\n            },\n            \"coef0\": {\n                \"type\": \"int\",\n                \"range\": [-1e3, 1e3]\n            },\n            \"probability\": {\n                \"type\": \"bool\",\n                \"values\": [true]\n            },\n            \"shrinking\": {\n                \"type\": \"bool\",\n                \"values\": [true]\n            },\n            \"cache_size\": {\n                \"type\": \"int\",\n                \"range\": [15000]\n            },\n            \"class_weight\": {\n                \"type\": \"string\",\n                \"values\": [\"balanced\"]\n            },\n            \"_scale\": {\n                \"type\": \"bool\",\n                \"values\": [true]\n            },\n            \"max_iter\": {\n                \"type\": \"int\",\n                \"range\": [50000]\n            }\n        },\n        \"root_hyperparameters\": [\"C\", \"kernel\", \"probability\", \"shrinking\", \"cache_size\", \"class_weight\", \"max_iter\", \"_scale\"],\n        \"conditional_hyperparameters\": {\n            \"kernel\": {\n                \"rbf\": [\"gamma\"],\n                \"sigmoid\": [\"gamma\", \"coef0\"],\n                \"poly\": [\"degree\", \"gamma\", \"coef0\"]\n            }\n        }\n    },\n    \"rf\":{   \n        \"name\": \"rf\",\n        \"class\": \"sklearn.ensemble.RandomForestClassifier\",\n        \"fullname\": \"random forest\",\n        \"hyperparameters\": {\n            \"criterion\": {\n                \"type\": \"string\",\n                \"values\": [\"entropy\", \"gini\"]\n            },\n            \"max_features\": {\n                \"type\": \"float\",\n                \"range\": [0.1, 1.0]\n            },\n            \"max_depth\": {\n                \"type\": \"int\",\n                \"range\": [2, 10]\n            },\n            \"min_samples_split\": {\n                \"type\": \"int\",\n                \"range\": [2, 4]\n            },\n            \"min_samples_leaf\": {\n                \"type\": \"int\",\n                \"range\": [1, 3]\n            },\n            \"n_estimators\": {\n                \"type\": \"int_cat\",\n                \"values\": [100]\n            },\n            \"n_jobs\": {\n                \"type\": \"int_cat\",\n                \"values\": [-1]\n            }\n        },\n        \"root_hyperparameters\": [\"criterion\", \"max_features\", \"max_depth\", \"min_samples_leaf\", \"min_samples_leaf\", \"n_estimators\", \"n_jobs\"],\n        \"conditional_hyperparameters\": {}\n    },\n    \"et\":{   \n        \"name\": \"et\",\n        \"class\": \"sklearn.ensemble.ExtraTreesClassifier\",\n        \"fullname\": \"extreme trees\",\n        \"hyperparameters\": {\n            \"criterion\": {\n                \"type\": \"string\",\n                \"values\": [\"entropy\", \"gini\"]\n            },\n            \"max_features\": {\n                \"type\": \"float\",\n                \"range\": [0.1, 1.0]\n            },\n            \"max_depth\": {\n                \"type\": \"int\",\n                \"range\": [2, 10]\n            },\n            \"min_samples_split\": {\n                \"type\": \"int\",\n                \"range\": [2, 3]\n            },\n            \"min_samples_leaf\": {\n                \"type\": \"int\",\n                \"range\": [1, 2]\n            },\n            \"n_estimators\": {\n                \"type\": \"int_cat\",\n                \"values\": [100]\n            },\n            \"n_jobs\": {\n                \"type\": \"int\",\n                \"range\": [-1]\n            }\n        },\n        \"root_hyperparameters\": [\"criterion\", \"max_features\", \"max_depth\", \"min_samples_leaf\", \"min_samples_leaf\", \"n_estimators\", \"n_jobs\"],\n        \"conditional_hyperparameters\": {}\n    },\n    \"dt\":{   \n        \"name\": \"dt\",\n        \"class\": \"sklearn.tree.DecisionTreeClassifier\",\n        \"fullname\": \"decision tree\",\n        \"hyperparameters\": {\n            \"criterion\": {\n                \"type\": \"string\",\n                \"values\": [\"entropy\", \"gini\"]\n            },\n            \"max_features\": {\n                \"type\": \"float\",\n                \"range\": [0.1, 1.0]\n            },\n            \"max_depth\": {\n                \"type\": \"int\",\n                \"range\": [2, 10]\n            },\n            \"min_samples_split\": {\n                \"type\": \"int\",\n                \"range\": [2, 4]\n            },\n            \"min_samples_leaf\": {\n                \"type\": \"int\",\n                \"range\": [1, 3]\n            }\n        },\n        \"root_hyperparameters\": [\"criterion\", \"max_features\", \"max_depth\", \"min_samples_split\", \"min_samples_leaf\"],\n        \"conditional_hyperparameters\": {}\n    },\n    \"sgd\":{   \n        \"name\": \"sgd\",\n        \"class\": \"sklearn.linear_model.SGDClassifier\",\n        \"fullname\":\"stochastic gradient descent\",\n        \"hyperparameters\": {\n            \"loss\": {\n                \"type\": \"string\",\n                \"values\": [\"hinge\", \"log\", \"modified_huber\", \"squared_hinge\"]\n            },\n            \"penalty\": {\n                \"type\": \"string\",\n                \"values\": [\"l1\", \"l2\", \"elasticnet\"]\n            },\n            \"alpha\": {\n                \"type\": \"float_exp\",\n                \"range\": [1e-5, 1e5]\n            },\n            \"l1_ratio\": {\n                \"type\": \"float\",\n                \"range\": [0.0, 1.0]\n            },\n            \"fit_intercept\": {\n                \"type\": \"int\",\n                \"range\": [0, 1]\n            },\n            \"n_iter\": {\n                \"type\": \"int\",\n                \"range\": [10, 200]\n            },\n            \"shuffle\": {\n                \"type\": \"bool\",\n                \"values\": [true]\n            },\n            \"epsilon\": {\n                \"type\": \"float_exp\",\n                \"range\": [1e-5, 1e5]\n            },\n            \"learning_rate\": {\n                \"type\": \"string\",\n                \"values\": [\"constant\", \"optimal\"]\n            },\n            \"eta0\": {\n                \"type\": \"float_exp\",\n                \"range\": [1e-5, 1e5]\n            },\n            \"class_weight\": {\n                \"type\": \"string\",\n                \"values\": [null]\n            },\n            \"_scale_minmax\": {\n                \"type\": \"bool\",\n                \"values\": [true]\n            },\n            \"n_jobs\": {\n                \"type\": \"int_cat\",\n                \"values\": [-1]\n            }\n        },\n        \"root_hyperparameters\": [\"loss\", \"penalty\", \"alpha\", \"l1_ratio\", \"fit_intercept\", \"n_iter\", \"shuffle\", \"epsilon\", \"learning_rate\", \"eta0\", \"class_weight\", \"_scale_minmax\", \"n_jobs\"],\n        \"conditional_hyperparameters\": {}\n    },\n    \"pa\": {   \n        \"name\": \"pa\",\n        \"class\": \"sklearn.linear_model.PassiveAggressiveClassifier\",\n        \"fullname\": \"passive aggressive\",\n        \"hyperparameters\": {\n            \"C\": {\n                \"type\": \"float_exp\",\n                \"range\": [1e-5, 1e5]\n            },\n            \"fit_intercept\": {\n                \"type\": \"int_cat\",\n                \"values\": [0, 1]\n            },\n            \"n_iter\": {\n                \"type\": \"int\",\n                \"range\": [10, 200]\n            },\n            \"shuffle\": {\n                \"type\": \"bool\",\n                \"values\": [true]\n            },\n            \"loss\": {\n                \"type\": \"string\",\n                \"values\": [\"hinge\", \"squared_hinge\"]\n            },\n            \"_scale\": {\n                \"type\": \"bool\",\n                \"values\": [true]\n            },\n            \"n_jobs\": {\n                \"type\": \"int_cat\",\n                \"values\": [-1]\n            }\n        },\n        \"root_hyperparameters\": [\"C\", \"fit_intercept\", \"n_iter\", \"shuffle\", \"loss\", \"_scale\", \"n_jobs\"],\n        \"conditional_hyperparameters\": {}\n    },\n    \"knn\": {   \n        \"name\": \"knn\",\n        \"class\": \"sklearn.neighbors.KNeighborsClassifier\",\n        \"fullname\": \"k nearest neighbors\",\n        \"hyperparameters\": {\n            \"n_neighbors\": {\n                \"type\": \"int\",\n                \"range\": [1, 20]\n            },\n            \"weights\": {\n                \"type\": \"string\",\n                \"values\": [\"uniform\", \"distance\"]\n            },\n            \"algorithm\": {\n                \"type\": \"string\",\n                \"values\": [\"ball_tree\", \"kd_tree\", \"brute\"]\n            },\n            \"leaf_size\": {\n                \"type\": \"int\",\n                \"range\": [1, 50]\n            },\n            \"metric\": {\n                \"type\": \"string\",\n                \"values\": [\"minkowski\", \"euclidean\", \"manhattan\", \"chebyshev\"]\n            },\n            \"p\": {\n                \"type\": \"int\",\n                \"range\": [1, 3]\n            },\n            \"_scale\": {\n                \"type\": \"bool\",\n                \"values\": [true]\n            }\n        },\n        \"root_hyperparameters\": [\"n_neighbors\", \"weights\", \"algorithm\", \"metric\", \"_scale\"],\n        \"conditional_hyperparameters\": {\n            \"metric\": {\n                \"minkowski\": [\"p\"]\n            },\n            \"algorithm\": {\n                \"ball_tree\": [\"leaf_size\"],\n                \"kd_tree\": [\"leaf_size\"]\n            }\n        }\n    },\n    \"logreg\":{   \n        \"name\": \"logreg\",\n        \"class\": \"sklearn.linear_model.LogisticRegression\",\n        \"fullname\": \"logistic regression\",\n        \"hyperparameters\": {\n            \"C\": {\n                \"type\": \"float_exp\",\n                \"range\": [1e-5, 1e5]\n            },\n            \"tol\": {\n                \"type\": \"float_exp\",\n                \"range\": [1e-5, 1e5]\n            },\n            \"penalty\": {\n                \"type\": \"string\",\n                \"values\": [\"l1\", \"l2\"]\n            },\n            \"dual\": {\n                \"type\": \"bool\",\n                \"values\": [true, false]\n            },\n            \"fit_intercept\": {\n                \"type\": \"bool\",\n                \"values\": [true, false]\n            },\n            \"class_weight\": {\n                \"type\": \"string\",\n                \"values\": [\"balanced\"]\n            },\n            \"_scale\": {\n                \"type\": \"bool\",\n                \"values\": [true]\n            }\n        },\n        \"root_hyperparameters\": [\"C\", \"tol\", \"penalty\", \"fit_intercept\", \"class_weight\", \"_scale\"],\n        \"conditional_hyperparameters\": {\n            \"penalty\": {\n                \"l2\": [\"dual\"]\n            }\n        }\n    },\n    \"gnb\": {   \n        \"name\": \"gnb\",\n        \"class\": \"sklearn.naive_bayes.GaussianNB\",\n        \"fullname\": \"gaussian naive bayes\",\n        \"hyperparameters\": {\n            \"_scale_minmax\": {\n                \"type\": \"bool\",\n                \"values\": [true]\n            }\n        },\n        \"root_hyperparameters\": [\"_scale_minmax\"],\n        \"conditional_hyperparameters\": {}\n    },\n    \"bnb\": {   \n        \"name\": \"bnb\",\n        \"class\": \"sklearn.naive_bayes.BernoulliNB\",\n        \"fullname\": \"bernoulli naive bayes\",\n        \"hyperparameters\": {\n            \"alpha\": {\n                \"type\": \"float\",\n                \"range\": [0.0, 1.0]\n            },\n            \"binarize\": {\n                \"type\": \"float\",\n                \"range\": [0.0, 1.0]\n            },\n            \"fit_prior\": {\n                \"type\": \"int\",\n                \"range\": [0, 1]\n            },\n            \"class_prior\": {\n                \"type\": \"string\",\n                \"values\": [null]\n            },\n            \"_scale\": {\n                \"type\": \"bool\",\n                \"values\": [true]\n            }\n        },\n        \"root_hyperparameters\": [\"alpha\", \"binarize\", \"fit_prior\", \"class_prior\", \"_scale\"],\n        \"conditional_hyperparameters\": {}\n    },\n    \"gp\":{   \n        \"name\": \"gp\",\n        \"class\": \"sklearn.gaussian_process.GaussianProcessClassifier\",\n        \"fullname\": \"gaussian process\",\n        \"hyperparameters\": {\n            \"kernel\": {\n                \"type\": \"string\",\n                \"values\": [\"constant\", \"rbf\", \"matern\", \"rational_quadratic\", \"exp_sine_squared\"]\n            },\n            \"nu\": {\n                \"type\": \"float_cat\",\n                \"values\": [0.5, 1.5, 2.5]\n            },\n            \"length_scale\": {\n                \"type\": \"float_exp\",\n                \"range\": [0.01, 100]\n            },\n            \"alpha\": {\n                \"type\": \"float\",\n                \"range\": [0.0, 1.0]\n            },\n            \"periodicity\": {\n                \"type\": \"int_cat\",\n                \"values\": [0, 1]\n            }\n        },\n        \"root_hyperparameters\": [\"kernel\"],\n        \"conditional_hyperparameters\": {\n            \"kernel\": {\n                \"matern\": [\"nu\"],\n                \"rational_quadratic\": [\"length_scale\", \"alpha\"],\n                \"exp_sine_squared\": [\"length_scale\", \"periodicity\"]\n            }\n        }\n    },\n    \"mlp\": {   \n        \"name\": \"mlp\",\n        \"class\": \"sklearn.neural_network.MLPClassifier\",\n        \"fullname\": \"multiple layer perceptron\",\n        \"hyperparameters\": {\n            \"batch_size\": {\n                \"type\": \"string\",\n                \"values\": [\"auto\"]\n            },\n            \"solver\": {\n                \"type\": \"string\",\n                \"values\": [\"lbfgs\", \"sgd\", \"adam\"]\n            },\n            \"alpha\": {\n                \"type\": \"float\",\n                \"range\": [0.0001, 0.009]\n            },\n            \"learning_rate_init\": {\n                \"type\": \"float\",\n                \"range\": [0.001, 0.99]\n            },\n            \"beta_1\": {\n                \"type\": \"float\",\n                \"range\": [0.8, 0.9999]\n            },\n            \"beta_2\": {\n                \"type\": \"float\",\n                \"range\": [0.8, 0.9999]\n            },\n            \"learning_rate\": {\n                \"type\": \"string\",\n                \"values\": [\"constant\", \"invscaling\", \"adaptive\"]\n            },\n            \"activation\": {\n                \"type\": \"string\",\n                \"values\": [\"relu\", \"logistic\", \"identity\", \"tanh\"]\n            },\n            \"hidden_layer_sizes\": {\n                \"type\": \"list\",\n                \"list_length\": [1, 2, 3],\n                \"element\": {\n                    \"type\": \"int\",\n                    \"range\": [2, 300]\n                }\n            },\n            \"_scale\": {\n                \"type\": \"string\",\n                \"values\": [true]\n            }\n        },\n        \"root_hyperparameters\": [\"batch_size\", \"solver\", \"alpha\", \"activation\", \"hidden_layer_sizes\", \"_scale\"],\n        \"conditional_hyperparameters\": {\n            \"solver\": {\n                \"sgd\": [\n                    \"learning_rate_init\", \n                    \"learning_rate\"\n                ],\n                \"adam\": [\n                    \"learning_rate_init\", \n                    \"beta_1\", \n                    \"beta_2\"\n                ]\n            }\n        }\n    },\n    \"dbn\":{\n        \"name\": \"dbn\",\n        \"fullname\": \"deep belief network\",\n        \"hyperparameters\": {},\n        \"root_hyperparameters\": [],\n        \"conditional_hyperparameters\": {}\n    },\n    \"mnb\":{   \n        \"name\": \"mnb\",\n        \"fullname\": \"multinomial naive bayes\",\n        \"class\": \"sklearn.naive_bayes.MultinomialNB\",\n        \"hyperparameters\": {\n            \"alpha\": {\n                \"type\": \"float\",\n                \"range\": [0.0, 1.0]\n            },\n            \"fit_prior\": {\n                \"type\": \"int\",\n                \"range\": [0, 1]\n            },\n            \"class_prior\": {\n                \"type\": \"string\",\n                \"values\": [null]\n            },\n            \"_scale_minmax\": {\n                \"type\": \"bool\",\n                \"values\": [true]\n            }\n        },\n        \"root_hyperparameters\": [\"alpha\", \"fit_prior\", \"class_prior\", \"_scale_minmax\"],\n        \"conditional_hyperparameters\": {}\n    },\n    \"ada\":{   \n        \"name\": \"ada\",\n        \"fullname\": \"adaboost\",\n        \"class\": \"sklearn.ensemble.AdaBoostClassifier\",\n        \"hyperparameters\": {\n            \"n_estimators\": {\n                \"type\": \"int\",\n                \"range\": [25, 500]\n            },\n            \"learning_rate\": {\n                \"type\": \"float\",\n                \"range\": [0.5, 10]\n            }\n        },\n        \"root_hyperparameters\": [\"n_estimators\", \"learning_rate\"],\n        \"conditional_hyperparameters\": {}\n    }\n}"
  },
  {
    "path": "src/assets/methodsDef.json",
    "content": "\n{\n    \"svm\":{\n        \"name\": \"svm\",\n        \"class\": \"sklearn.svm.SVC\",\n        \"fullname\":\"support vector machine\",\n        \"hyperparameters\": {\n            \"C\": {\n                \"type\": \"float_exp\",\n                \"range\": [1e-5, 1e5]\n            },\n            \"gamma\": {\n                \"type\": \"float_exp\",\n                \"range\": [1e-5, 1e5]\n            },\n            \"kernel\": {\n                \"type\": \"string\",\n                \"values\": [\"rbf\", \"poly\", \"linear\", \"sigmoid\"]\n            },\n            \"degree\": {\n                \"type\": \"int\",\n                \"range\": [2, 5]\n            },\n            \"coef0\": {\n                \"type\": \"int\",\n                \"range\": [-1e3, 1e3]\n            },\n            \"probability\": {\n                \"type\": \"bool\",\n                \"values\": [true]\n            },\n            \"shrinking\": {\n                \"type\": \"bool\",\n                \"values\": [true]\n            },\n            \"cache_size\": {\n                \"type\": \"int\",\n                \"range\": [15000]\n            },\n            \"class_weight\": {\n                \"type\": \"string\",\n                \"values\": [\"balanced\"]\n            },\n            \"_scale\": {\n                \"type\": \"bool\",\n                \"values\": [true]\n            },\n            \"max_iter\": {\n                \"type\": \"int\",\n                \"range\": [50000]\n            }\n        },\n        \"root_hyperparameters\": [\"gamma\", \"C\", \"kernel\", \"probability\", \"shrinking\", \"cache_size\", \"class_weight\", \"max_iter\", \"_scale\"],\n        \"conditional_hyperparameters\": {\n            \"kernel\": {\n                \"rbf\": [\"gamma\"],\n                \"sigmoid\": [\"gamma\", \"coef0\"],\n                \"poly\": [\"degree\", \"gamma\", \"coef0\"]\n            }\n        }\n    },\n    \"rf\":{\n        \"name\": \"rf\",\n        \"class\": \"sklearn.ensemble.RandomForestClassifier\",\n        \"fullname\": \"random forest\",\n        \"hyperparameters\": {\n            \"criterion\": {\n                \"type\": \"string\",\n                \"values\": [\"entropy\", \"gini\"]\n            },\n            \"max_features\": {\n                \"type\": \"float\",\n                \"range\": [0.1, 1.0]\n            },\n            \"max_depth\": {\n                \"type\": \"int\",\n                \"range\": [2, 10]\n            },\n            \"min_samples_split\": {\n                \"type\": \"int\",\n                \"range\": [2, 4]\n            },\n            \"min_samples_leaf\": {\n                \"type\": \"int\",\n                \"range\": [1, 3]\n            },\n            \"n_estimators\": {\n                \"type\": \"int_cat\",\n                \"values\": [100]\n            },\n            \"n_jobs\": {\n                \"type\": \"int_cat\",\n                \"values\": [-1]\n            }\n        },\n        \"root_hyperparameters\": [\"criterion\", \"max_features\", \"max_depth\", \"min_samples_leaf\", \"n_estimators\", \"n_jobs\"],\n        \"conditional_hyperparameters\": {}\n    },\n    \"et\":{\n        \"name\": \"et\",\n        \"class\": \"sklearn.ensemble.ExtraTreesClassifier\",\n        \"fullname\": \"extreme trees\",\n        \"hyperparameters\": {\n            \"criterion\": {\n                \"type\": \"string\",\n                \"values\": [\"entropy\", \"gini\"]\n            },\n            \"max_features\": {\n                \"type\": \"float\",\n                \"range\": [0.1, 1.0]\n            },\n            \"max_depth\": {\n                \"type\": \"int\",\n                \"range\": [2, 10]\n            },\n            \"min_samples_split\": {\n                \"type\": \"int\",\n                \"range\": [2, 3]\n            },\n            \"min_samples_leaf\": {\n                \"type\": \"int\",\n                \"range\": [1, 2]\n            },\n            \"n_estimators\": {\n                \"type\": \"int_cat\",\n                \"values\": [100]\n            },\n            \"n_jobs\": {\n                \"type\": \"int\",\n                \"range\": [-1]\n            }\n        },\n        \"root_hyperparameters\": [\"criterion\", \"max_features\", \"max_depth\", \"min_samples_leaf\", \"min_samples_leaf\", \"n_estimators\", \"n_jobs\"],\n        \"conditional_hyperparameters\": {}\n    },\n    \"dt\":{\n        \"name\": \"dt\",\n        \"class\": \"sklearn.tree.DecisionTreeClassifier\",\n        \"fullname\": \"decision tree\",\n        \"hyperparameters\": {\n            \"criterion\": {\n                \"type\": \"string\",\n                \"values\": [\"entropy\", \"gini\"]\n            },\n            \"max_features\": {\n                \"type\": \"float\",\n                \"range\": [0.1, 1.0]\n            },\n            \"max_depth\": {\n                \"type\": \"int\",\n                \"range\": [2, 10]\n            },\n            \"min_samples_split\": {\n                \"type\": \"int\",\n                \"range\": [2, 4]\n            },\n            \"min_samples_leaf\": {\n                \"type\": \"int\",\n                \"range\": [1, 3]\n            }\n        },\n        \"root_hyperparameters\": [\"criterion\", \"max_features\", \"max_depth\", \"min_samples_split\", \"min_samples_leaf\"],\n        \"conditional_hyperparameters\": {}\n    },\n    \"sgd\":{\n        \"name\": \"sgd\",\n        \"class\": \"sklearn.linear_model.SGDClassifier\",\n        \"fullname\":\"stochastic gradient descent\",\n        \"hyperparameters\": {\n            \"loss\": {\n                \"type\": \"string\",\n                \"values\": [\"hinge\", \"log\", \"modified_huber\", \"squared_hinge\"]\n            },\n            \"penalty\": {\n                \"type\": \"string\",\n                \"values\": [\"l1\", \"l2\", \"elasticnet\"]\n            },\n            \"alpha\": {\n                \"type\": \"float_exp\",\n                \"range\": [1e-5, 1e5]\n            },\n            \"l1_ratio\": {\n                \"type\": \"float\",\n                \"range\": [0.0, 1.0]\n            },\n            \"fit_intercept\": {\n                \"type\": \"int\",\n                \"range\": [0, 1]\n            },\n            \"n_iter\": {\n                \"type\": \"int\",\n                \"range\": [10, 200]\n            },\n            \"shuffle\": {\n                \"type\": \"bool\",\n                \"values\": [true]\n            },\n            \"epsilon\": {\n                \"type\": \"float_exp\",\n                \"range\": [1e-5, 1e5]\n            },\n            \"learning_rate\": {\n                \"type\": \"string\",\n                \"values\": [\"constant\", \"optimal\"]\n            },\n            \"eta0\": {\n                \"type\": \"float_exp\",\n                \"range\": [1e-5, 1e5]\n            },\n            \"class_weight\": {\n                \"type\": \"string\",\n                \"values\": [null]\n            },\n            \"_scale_minmax\": {\n                \"type\": \"bool\",\n                \"values\": [true]\n            },\n            \"n_jobs\": {\n                \"type\": \"int_cat\",\n                \"values\": [-1]\n            }\n        },\n        \"root_hyperparameters\": [\"loss\", \"penalty\", \"alpha\", \"l1_ratio\", \"fit_intercept\", \"n_iter\", \"shuffle\", \"epsilon\", \"learning_rate\", \"eta0\", \"class_weight\", \"_scale_minmax\", \"n_jobs\"],\n        \"conditional_hyperparameters\": {}\n    },\n    \"pa\": {\n        \"name\": \"pa\",\n        \"class\": \"sklearn.linear_model.PassiveAggressiveClassifier\",\n        \"fullname\": \"passive aggressive\",\n        \"hyperparameters\": {\n            \"C\": {\n                \"type\": \"float_exp\",\n                \"range\": [1e-5, 1e5]\n            },\n            \"fit_intercept\": {\n                \"type\": \"int_cat\",\n                \"values\": [0, 1]\n            },\n            \"n_iter\": {\n                \"type\": \"int\",\n                \"range\": [10, 200]\n            },\n            \"shuffle\": {\n                \"type\": \"bool\",\n                \"values\": [true]\n            },\n            \"loss\": {\n                \"type\": \"string\",\n                \"values\": [\"hinge\", \"squared_hinge\"]\n            },\n            \"_scale\": {\n                \"type\": \"bool\",\n                \"values\": [true]\n            },\n            \"n_jobs\": {\n                \"type\": \"int_cat\",\n                \"values\": [-1]\n            }\n        },\n        \"root_hyperparameters\": [\"C\", \"fit_intercept\", \"n_iter\", \"shuffle\", \"loss\", \"_scale\", \"n_jobs\"],\n        \"conditional_hyperparameters\": {}\n    },\n    \"knn\": {\n        \"name\": \"knn\",\n        \"class\": \"sklearn.neighbors.KNeighborsClassifier\",\n        \"fullname\": \"k nearest neighbors\",\n        \"hyperparameters\": {\n            \"n_neighbors\": {\n                \"type\": \"int\",\n                \"range\": [1, 20]\n            },\n            \"weights\": {\n                \"type\": \"string\",\n                \"values\": [\"uniform\", \"distance\"]\n            },\n            \"algorithm\": {\n                \"type\": \"string\",\n                \"values\": [\"ball_tree\", \"kd_tree\", \"brute\"]\n            },\n            \"leaf_size\": {\n                \"type\": \"int\",\n                \"range\": [1, 50]\n            },\n            \"metric\": {\n                \"type\": \"string\",\n                \"values\": [\"minkowski\", \"euclidean\", \"manhattan\", \"chebyshev\"]\n            },\n            \"p\": {\n                \"type\": \"int\",\n                \"range\": [1, 3]\n            },\n            \"_scale\": {\n                \"type\": \"bool\",\n                \"values\": [true]\n            }\n        },\n        \"root_hyperparameters\": [\"n_neighbors\", \"weights\", \"algorithm\", \"metric\", \"_scale\", \"leaf_size\"],\n        \"conditional_hyperparameters\": {\n            \"metric\": {\n                \"minkowski\": [\"p\"]\n            },\n            \"algorithm\": {\n                \"ball_tree\": [\"leaf_size\"],\n                \"kd_tree\": [\"leaf_size\"]\n            }\n        }\n    },\n    \"logreg\":{\n        \"name\": \"logreg\",\n        \"class\": \"sklearn.linear_model.LogisticRegression\",\n        \"fullname\": \"logistic regression\",\n        \"hyperparameters\": {\n            \"C\": {\n                \"type\": \"float_exp\",\n                \"range\": [1e-5, 1e5]\n            },\n            \"tol\": {\n                \"type\": \"float_exp\",\n                \"range\": [1e-5, 1e5]\n            },\n            \"penalty\": {\n                \"type\": \"string\",\n                \"values\": [\"l1\", \"l2\"]\n            },\n            \"dual\": {\n                \"type\": \"bool\",\n                \"values\": [true, false]\n            },\n            \"fit_intercept\": {\n                \"type\": \"bool\",\n                \"values\": [true, false]\n            },\n            \"class_weight\": {\n                \"type\": \"string\",\n                \"values\": [\"balanced\"]\n            },\n            \"_scale\": {\n                \"type\": \"bool\",\n                \"values\": [true]\n            }\n        },\n        \"root_hyperparameters\": [\"C\", \"tol\", \"penalty\", \"fit_intercept\", \"class_weight\", \"_scale\"],\n        \"conditional_hyperparameters\": {\n            \"penalty\": {\n                \"l2\": [\"dual\"]\n            }\n        }\n    },\n    \"gnb\": {\n        \"name\": \"gnb\",\n        \"class\": \"sklearn.naive_bayes.GaussianNB\",\n        \"fullname\": \"gaussian naive bayes\",\n        \"hyperparameters\": {\n            \"_scale_minmax\": {\n                \"type\": \"bool\",\n                \"values\": [true]\n            }\n        },\n        \"root_hyperparameters\": [\"_scale_minmax\"],\n        \"conditional_hyperparameters\": {}\n    },\n    \"bnb\": {\n        \"name\": \"bnb\",\n        \"class\": \"sklearn.naive_bayes.BernoulliNB\",\n        \"fullname\": \"bernoulli naive bayes\",\n        \"hyperparameters\": {\n            \"alpha\": {\n                \"type\": \"float\",\n                \"range\": [0.0, 1.0]\n            },\n            \"binarize\": {\n                \"type\": \"float\",\n                \"range\": [0.0, 1.0]\n            },\n            \"fit_prior\": {\n                \"type\": \"int\",\n                \"range\": [0, 1]\n            },\n            \"class_prior\": {\n                \"type\": \"string\",\n                \"values\": [null]\n            },\n            \"_scale\": {\n                \"type\": \"bool\",\n                \"values\": [true]\n            }\n        },\n        \"root_hyperparameters\": [\"alpha\", \"binarize\", \"fit_prior\", \"class_prior\", \"_scale\"],\n        \"conditional_hyperparameters\": {}\n    },\n    \"gp\":{\n        \"name\": \"gp\",\n        \"class\": \"sklearn.gaussian_process.GaussianProcessClassifier\",\n        \"fullname\": \"gaussian process\",\n        \"hyperparameters\": {\n            \"kernel\": {\n                \"type\": \"string\",\n                \"values\": [\"constant\", \"rbf\", \"matern\", \"rational_quadratic\", \"exp_sine_squared\"]\n            },\n            \"nu\": {\n                \"type\": \"float_cat\",\n                \"values\": [0.5, 1.5, 2.5]\n            },\n            \"length_scale\": {\n                \"type\": \"float_exp\",\n                \"range\": [0.01, 100]\n            },\n            \"alpha\": {\n                \"type\": \"float\",\n                \"range\": [0.0, 1.0]\n            },\n            \"periodicity\": {\n                \"type\": \"int_cat\",\n                \"values\": [0, 1]\n            }\n        },\n        \"root_hyperparameters\": [\"kernel\"],\n        \"conditional_hyperparameters\": {\n            \"kernel\": {\n                \"matern\": [\"nu\"],\n                \"rational_quadratic\": [\"length_scale\", \"alpha\"],\n                \"exp_sine_squared\": [\"length_scale\", \"periodicity\"]\n            }\n        }\n    },\n    \"mlp\": {\n        \"name\": \"mlp\",\n        \"class\": \"sklearn.neural_network.MLPClassifier\",\n        \"fullname\": \"multiple layer perceptron\",\n        \"hyperparameters\": {\n            \"batch_size\": {\n                \"type\": \"string\",\n                \"values\": [\"auto\"]\n            },\n            \"solver\": {\n                \"type\": \"string\",\n                \"values\": [\"lbfgs\", \"sgd\", \"adam\"]\n            },\n            \"alpha\": {\n                \"type\": \"float\",\n                \"range\": [0.0001, 0.009]\n            },\n            \"learning_rate_init\": {\n                \"type\": \"float\",\n                \"range\": [0.001, 0.99]\n            },\n            \"beta_1\": {\n                \"type\": \"float\",\n                \"range\": [0.8, 0.9999]\n            },\n            \"beta_2\": {\n                \"type\": \"float\",\n                \"range\": [0.8, 0.9999]\n            },\n            \"learning_rate\": {\n                \"type\": \"string\",\n                \"values\": [\"constant\", \"invscaling\", \"adaptive\"]\n            },\n            \"activation\": {\n                \"type\": \"string\",\n                \"values\": [\"relu\", \"logistic\", \"identity\", \"tanh\"]\n            },\n            \"hidden_layer_sizes\": {\n                \"type\": \"list\",\n                \"list_length\": [1, 2, 3],\n                \"element\": {\n                    \"type\": \"int\",\n                    \"range\": [2, 300]\n                }\n            },\n            \"_scale\": {\n                \"type\": \"string\",\n                \"values\": [true]\n            }\n        },\n        \"root_hyperparameters\": [\"batch_size\", \"solver\", \"alpha\", \"activation\", \"hidden_layer_sizes\", \"_scale\", \"learning_rate_init\"],\n        \"conditional_hyperparameters\": {\n            \"solver\": {\n                \"sgd\": [\n                    \"learning_rate\"\n                ],\n                \"adam\": [\n                    \"beta_1\",\n                    \"beta_2\"\n                ]\n            }\n        }\n    },\n    \"mnb\":{\n        \"name\": \"mnb\",\n        \"fullname\": \"multinomial naive bayes\",\n        \"class\": \"sklearn.naive_bayes.MultinomialNB\",\n        \"hyperparameters\": {\n            \"alpha\": {\n                \"type\": \"float\",\n                \"range\": [0.0, 1.0]\n            },\n            \"fit_prior\": {\n                \"type\": \"int\",\n                \"range\": [0, 1]\n            },\n            \"class_prior\": {\n                \"type\": \"string\",\n                \"values\": [null]\n            },\n            \"_scale_minmax\": {\n                \"type\": \"bool\",\n                \"values\": [true]\n            }\n        },\n        \"root_hyperparameters\": [\"alpha\", \"fit_prior\", \"class_prior\", \"_scale_minmax\"],\n        \"conditional_hyperparameters\": {}\n    },\n    \"ada\":{\n        \"name\": \"ada\",\n        \"fullname\": \"adaboost\",\n        \"class\": \"sklearn.ensemble.AdaBoostClassifier\",\n        \"hyperparameters\": {\n            \"n_estimators\": {\n                \"type\": \"int\",\n                \"range\": [25, 500]\n            },\n            \"learning_rate\": {\n                \"type\": \"float\",\n                \"range\": [0.5, 10]\n            }\n        },\n        \"root_hyperparameters\": [\"n_estimators\", \"learning_rate\"],\n        \"conditional_hyperparameters\": {}\n    }\n}"
  },
  {
    "path": "src/components/App.css",
    "content": "@import '~antd/dist/antd.css';\n\n:root{\n  --header-height: 6vh;\n}\n.app{\n  width:100vw;\n  height:100vh;\n}\n.col{\n  padding: 10px;\n  height: 100%;\n  overflow-y: hidden;\n\n}\n.appHeader {\n  background-color: #555;\n  /* font-family: Roboto, sans-serif; */\n  font-family: \"Arial Black\", Gadget, sans-serif;\n  height: var(--header-height);\n  /* padding: 20px; */\n  color: white;\n  font-size: 3.5vh;\n  box-shadow: 0 4px 4px 0 rgba(0,0,0,0.16), 0 0 0 4px rgba(0,0,0,0.08);\n  line-height: var(--header-height);\n}\n.appContent{\n  background-color: white;\n  height: calc(100% - var(--header-height));\n}\n.appLogo{\n  height:3.5vh;\n  padding: 1px 5px;\n}\n\n.shadowBox{\n  box-shadow: 0 2px 2px 0 rgba(0,0,0,0.16), 0 0 0 1px rgba(0,0,0,0.08);\n  margin: 10px;\n  display: block;\n  position:absolute; top:0; left:0; right:0; bottom:0\n}\n\n.ant-tabs-tabpane{\n    height: 100% !important;\n}\n.ant-tabs-content{\n    height: 100% !important;\n}\n\n/* width */\n::-webkit-scrollbar {\n    width: 0px;\n}\n\n/* Track */\n::-webkit-scrollbar-track {\n    background: #ffffff; \n    opacity:0;\n}\n \n/* Handle */\n::-webkit-scrollbar-thumb {\n    background: #ffffff; \n    opacity:0;\n}\n\n/* Handle on hover */\n::-webkit-scrollbar-thumb:hover {\n    background: #ffffff; \n    opacity:0;\n}"
  },
  {
    "path": "src/components/App.test.tsx",
    "content": "import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport App from './App';\n\nit('renders without crashing', () => {\n  const div = document.createElement('div');\n  ReactDOM.render(<App />, div);\n  ReactDOM.unmountComponentAtNode(div);\n});\n"
  },
  {
    "path": "src/components/App.tsx",
    "content": "import { Col, Layout, Row } from 'antd';\nimport * as React from 'react';\nimport * as logo from '../assets/ATM-Logo.png';\nimport './App.css';\nimport DataRuns from './DataRuns';\n// import DataView from \"./DataView\";\nimport SidePanel from './SidePanel';\nimport { IDatarunStatusTypes } from 'types';\nimport { getDatarun,IClickEvent,postBundleClickEvent,IClickBundleEvent } from 'service/dataService';\nimport { UPDATE_INTERVAL_MS,USER_STUDY } from 'Const';\nimport UploadModal from './UploadModal'\n\n\nconst { Content, Header } = Layout;\n\nexport interface IState {\n  datarunID: number | null;\n  datasetID: number | null;\n  datarunStatus: IDatarunStatusTypes;\n  compareK: number // 0=> don't compare\n}\n\n\nclass App extends React.Component<{}, IState> {\n    private intervalID: number | null;\n    private user_name = \"\";\n    //private clickevent: IClickEvent[] = [];\n    constructor(props: {}) {\n        super(props);\n        // this.onChange = this.onChange.bind(this)\n        this.setDatarunID = this.setDatarunID.bind(this);\n        this.setDatasetID = this.setDatasetID.bind(this);\n        this.setDatarunStatus = this.setDatarunStatus.bind(this);\n        this.updateDatarunStatus = this.updateDatarunStatus.bind(this);\n        this.startOrStopUpdateCycle = this.startOrStopUpdateCycle.bind(this);\n        this.setTopK = this.setTopK.bind(this);\n        this.state = {\n            datarunStatus: IDatarunStatusTypes.PENDING,\n            datarunID: null,\n            datasetID: null,\n            compareK: 0 // 0=> don't compare\n        };\n        this.intervalID = null;\n    }\n    public setDatarunID(id: number): void {\n        console.info(\"set datarun id\", id)\n        this.setState({ datarunID: id })\n    }\n    public setDatasetID(datasetID: number): void {\n        this.setState({ datasetID });\n    }\n    public setDatarunStatus(datarunStatus: IDatarunStatusTypes): void {\n        this.setState({ datarunStatus });\n    }\n\n    public updateDatarunStatus() {\n        const { datarunID } = this.state;\n        if (datarunID !== null) {\n            getDatarun(datarunID).then(({ status }) => {\n                this.setDatarunStatus(status);\n            });\n        }\n    }\n    public setTopK(topK:number){\n        let action=\"selected\";\n        if(topK==0){\n            action=\"unselected\";\n        }\n        let eventlog:IClickEvent = {\n            type:\"compare\",\n            description:{\n                action:action,\n                topK:topK\n            },\n            time:new Date().toString()\n        }\n        this.postClickEvent(eventlog);\n        this.setState({compareK: topK})\n    }\n\n    public startOrStopUpdateCycle(datarunStatus: IDatarunStatusTypes) {\n        if (datarunStatus === IDatarunStatusTypes.RUNNING) {\n            this.intervalID = window.setInterval(this.updateDatarunStatus, UPDATE_INTERVAL_MS);\n        } else if (this.intervalID !== null) {\n            clearInterval(this.intervalID);\n            this.intervalID = null;\n        }\n    }\n    setUserName = (user_name:string)=>{\n        this.user_name = user_name;\n    }\n    postClickEvent = (log:IClickEvent)=>{\n        //this.clickevent.push(log);\n        if(USER_STUDY){\n            let bundlelog : IClickBundleEvent= {\n                name:this.user_name,\n                datasetID:this.state.datasetID?this.state.datasetID:-1,\n                datarunID:this.state.datarunID?this.state.datarunID:-1,\n                clickevent:log\n            }\n            postBundleClickEvent(bundlelog);\n        }\n    }\n    componentDidUpdate(prevProps: {}, prevState: IState) {\n        if (prevState.datarunID !== this.state.datarunID) {\n            this.updateDatarunStatus();\n        }\n        if (prevState.datarunStatus !== this.state.datarunStatus) {\n            this.startOrStopUpdateCycle(this.state.datarunStatus);\n        }\n    }\n    public render() {\n        return (\n            <Layout className=\"app\" >\n                <Header className='appHeader'>\n                ATMSeer\n                        <img src={logo} className='appLogo' />\n                        <UploadModal setUserName={this.setUserName}/>\n                </Header>\n                <Content className='appContent' >\n                    <Row style={{ \"height\": \"100%\" }}>\n                        <Col span={4} className=\"col\">\n                            <SidePanel\n                                {...this.state}\n                                setDatarunID={this.setDatarunID}\n                                setDatasetID={this.setDatasetID}\n                                setDatarunStatus={this.setDatarunStatus}\n                                setTopK = {this.setTopK}\n                                postClickEvent = {this.postClickEvent}\n                            />\n                        </Col >\n\n                        <Col span={20} className=\"col\">\n                            <div className=\"shadowBox\" >\n                                <DataRuns\n                                    datarunID={this.state.datarunID}\n                                    datarunStatus={this.state.datarunStatus}\n                                    datasetID={this.state.datasetID}\n                                    setDatarunID={this.setDatarunID}\n                                    compareK = {this.state.compareK}\n                                    postClickEvent ={this.postClickEvent}\n                                    setDatarunStatus={this.setDatarunStatus}\n                                />\n                            </div>\n                        </Col>\n                        {/* <Col span={6} className=\"col\">\n\n            </Col> */}\n                    </Row>\n                </Content>\n            </Layout>\n\n        );\n    }\n}\n\nexport default App;\n"
  },
  {
    "path": "src/components/DataRuns/AskModal.tsx",
    "content": "import * as React from 'react';\nimport { Modal, Button  } from 'antd';\n\nexport interface AskModalProps {\n  AskModalCallBack : (e:number)=>void,\n  visible:boolean\n}\n\nexport interface AskModalState {\n    loading: boolean,\n    visible: boolean,\n    name:string,\n    alertvisible:boolean\n}\n\nexport default class AskModal extends React.Component<AskModalProps, AskModalState> {\n  constructor(props: AskModalProps) {\n    super(props);\n     this.state = {\n        loading: false,\n        visible: false,\n        alertvisible:false,\n        name:\"\"\n    }\n  }\n\nshowModal =() => {\n  this.initModal();\n}\n public initModal() {\n  // get configs from server ;\n  // initialize the default value in Modal\n  // Show Modal.\n  this.setState({\n    visible: true\n  });\n }\n \n  handleOk = () => {\n    // Submit\n    \n    this.props.AskModalCallBack(0);\n    //this.setState({ visible:false});\n  }\n  handleCancel = () => {\n    //this.handleOk();\n    this.props.AskModalCallBack(1);\n    //this.setState({ visible: false });\n  }\n  onInputChange = (e : any) =>{\n    //console.log(e.target.value);\n    this.setState({name:e.target.value});\n  }\n  render() {\n    const {  loading } = this.state;\n\n    return (\n      <div>\n        <Modal\n          visible={this.props.visible}\n          title=\"Notice\"\n          onOk={this.handleOk}\n          onCancel={this.handleCancel}\n          footer={[\n\n            <Button key=\"submit\" type=\"primary\" loading={loading} onClick={this.handleOk}>\n              I know\n            </Button>,\n          ]}>\n            <h4 style={{display: \"inline\"}}>The current process has been stopped. You can decide whether to continue it. </h4>\n        </Modal>\n      </div>\n    );\n  }\n}\n\n"
  },
  {
    "path": "src/components/DataRuns/BarChart.tsx",
    "content": "import ReactEcharts from \"echarts-for-react\";\nimport { getColor } from \"helper\"\nimport * as React from \"react\";\nimport { Switch } from \"antd\";\nimport {EChartOption} from \"echarts\";\n\nconst sortSwitchStyle = {\n    position: \"absolute\" as \"absolute\",\n    top: \"5px\",\n    right: \"5px\"\n}\nexport interface IProps {\n    run: any,\n    width: number\n}\nexport interface IState {\n    sorted: boolean,\n}\nexport default class BarChart extends React.Component<IProps, IState>{\n    constructor(props: IProps) {\n        super(props)\n        this.state = {\n            sorted: false\n        }\n        this.changeSort = this.changeSort.bind(this)\n        this.getOption = this.getOption.bind(this)\n    }\n    public getOption() {\n        let points = this.props.run.split('\\n')\n        points.splice(-1, 1) //remove last empty line\n        // extract headers\n\n        let headers = points.shift().split(',')\n\n        // // hold a list of performance scores (to later find the max)\n        // let performanceArray = [0]\n\n        let scoreTarget = points[0].split(',')[headers.indexOf('metrics')]\n        let data = points.map((point: any) => {\n            point = point.split(',')\n            let performanceIdx = headers.indexOf('performance')\n            let performance = parseFloat(point[performanceIdx].split(\"+-\")[0])\n            // performanceArray.push(performance)\n            let method = point[1]\n            // let trialID = parseInt(point[0])\n            return {\n                value: performance,\n                itemStyle: {\n                    color: getColor(method)\n                }\n            }\n        })\n        let series:EChartOption['series'] = [{\n            data: data,\n            type: 'bar',\n        }]\n\n        if (this.state.sorted) {\n            data.sort((a: any, b: any) => {\n                return b.value - a.value;\n            })\n        } else {\n            let bestSoFar: EChartOption['series'] = []\n            let max = 0\n            for (let i = 0; i < data.length; i++) {\n                let currentPerformance = data[i].value\n                let dotSize = 2 //if the performance get improved, draw a big circle\n                if (max < currentPerformance) {\n                    max = currentPerformance\n                    dotSize = 5\n                    bestSoFar.push({\n                        value:max,\n                        symbolSize: dotSize,\n                        symbol: \"emptyCircle\"\n                    })\n                }else{\n                    bestSoFar.push({\n                        value:max,\n                        symbolSize: dotSize\n                    })\n                }\n\n            }\n\n            series.push({\n                data: bestSoFar,\n                type: \"line\",\n                symbolSize: 2,\n                symbol: \"circle\",\n                lineStyle: {\n                    color: \"gray\",\n                    width: \"1\"\n                }\n            })\n        };\n        const option = {\n            title: {\n                text: \"Trials\",\n                left: '5%',\n                top: '0.5%',\n            },\n            xAxis: {\n                type: 'category',\n                // name: this.state.sorted?\"\":\"trial ID\",\n                nameLocation: \"middle\",\n                nameGap: 5,\n                // data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\n                // type: 'value'\n            },\n            yAxis: {\n                type: 'value',\n                min: 'dataMin',\n                max: 1,\n                name: scoreTarget,\n                nameLocation: \"middle\",\n                nameGap: 28\n            },\n            grid: {\n                left: '5%',\n                right: '5%',\n                top: '25%',\n                bottom: '5%',\n            },\n            tooltip: {},\n            series,\n        };\n        return option\n    }\n    public changeSort() {\n        this.setState({\n            sorted: !this.state.sorted\n        })\n    }\n    public render() {\n\n        return (\n            <div style={{ width: `${this.props.width}%`, height: '100%' }}>\n\n                <ReactEcharts\n                    option={this.getOption()}\n                    style={{ width: `100%`, height: '100%' }}\n                    notMerge={true}\n                />\n                <div className=\"sortSwitch\" style={sortSwitchStyle}>\n                    {\"sorted by \"}\n                    <Switch checkedChildren=\"score\" unCheckedChildren=\"time\"\n                        defaultChecked={false} onChange={this.changeSort} />\n                </div>\n            </div>\n\n        )\n    }\n}\n"
  },
  {
    "path": "src/components/DataRuns/DataRuns.tsx",
    "content": "// library\n// import axios from \"axios\";\nimport * as React from \"react\";\n//import { Tabs, Row, Col, Progress } from 'antd';\n\n//\nimport { parseDatarun } from \"helper\";\nimport { IDatarun } from 'types';\n// import {URL} from '../../Const';\n//import {getClassifierSummary} from 'service/dataService';\nimport {\n    getClassifierSummary, getClassifiers, getHyperpartitions, IRecommendationResult,\n    IClassifierInfo, IHyperpartitionInfo, getRecommendation, IClickEvent, stopDatarun\n} from 'service/dataService';\n\n//components\n// import MethodsLineChart from './MethodsLineChart';\n//import MethodsSearchSpace from './MethodsSearchSpace';\nimport BarChart from './BarChart';\n//import OverallHistogram from \"./OverallHistogram\";\n// import HyperPartitions from \"./HyperPartitions\";\nimport { IDatarunStatusTypes } from 'types/index';\nimport { UPDATE_INTERVAL_MS } from \"Const\";\nimport ThreeLevel from \"./ThreeLevel\";\nimport AskModal from \"./AskModal\";\nimport { USER_STUDY,THRESHOLD_STEP } from 'Const';\n// const axiosInstance = axios.create({\n//     baseURL: URL+'/api',\n//     // timeout: 1000,\n//     headers: {\n//         'Access-Control-Allow-Origin': '*',\n// }\n//   });\n//const TabPane = Tabs.TabPane\n\n\nexport interface IProps {\n    datarunID: number | null;\n    datarunStatus: IDatarunStatusTypes;\n    datasetID: number | null;\n    compareK: number\n    setDatarunID: (id: number) => void;\n    postClickEvent: (e: IClickEvent) => void;\n    setDatarunStatus: (e: IDatarunStatusTypes) => void;\n}\nexport interface IState {\n    runCSV: string,\n    classifiers: IClassifierInfo[],\n    hyperpartitions: IHyperpartitionInfo[],\n    recommendationResult: IRecommendationResult,\n    run_threshold: number,\n    askvisible: boolean\n}\nexport interface IDatarunSummary {\n    nTried: number;\n    topClassifiers: IClassifierInfo[];\n    nTriedByMethod: { [method: string]: number };\n    triedHyperpartition: number[]\n}\nexport default class DataRuns extends React.Component<IProps, IState>{\n    private intervalID: number\n    constructor(props: IProps) {\n        super(props)\n        this.getData = this.getData.bind(this)\n        this.state = {\n            runCSV: '',\n            classifiers: [],\n            hyperpartitions: [],\n            recommendationResult: {\n                result: []\n            },\n            run_threshold: THRESHOLD_STEP,\n            askvisible: false\n        }\n    }\n    public async getData() {\n        // const res = await axios.get('../../viz/datarun2_gp.csv')\n        // const {datarunID} = this.props\n        // const res = await axiosInstance.get(`/classifier_summary?datarun_id=${datarunID}`)\n        // const run = res.data\n        const { datarunID, datasetID } = this.props\n        if (datarunID !== null && datasetID !== null) {\n            const runCSV = await getClassifierSummary(datarunID);\n            // const res = await axios.get('../../data/csvs/bandit/hyperpartitions.csv')\n            // const banditData = res.data\n            const classifiers = await getClassifiers(datarunID);\n            let hyperpartitions = await getHyperpartitions(undefined, datarunID).then(hyperpartitions => {\n                // console.log(hyperpartitions);\n                if (Array.isArray(hyperpartitions)) {\n                    return hyperpartitions\n                } else {\n                    console.error('The fetched hyperpartitions should be an array!');\n                    return []\n                }\n            });\n            let recommendationResult = await getRecommendation(datasetID);\n            let askvisible = this.state.askvisible;\n            let run_threshold = this.state.run_threshold;\n            if (USER_STUDY) {\n                if (this.props.datarunStatus === IDatarunStatusTypes.RUNNING) {\n                    if (classifiers.length >= run_threshold) {\n                        askvisible = true;\n                        if (this.props.datarunID !== null) {\n                            let promise = stopDatarun(this.props.datarunID);\n                            promise\n                                .then(datarun => {\n                                    // this.props.setDatarunID(this.props.datarunID) // pass datarun id to datarun after clicking run button\n                                    this.props.setDatarunStatus(datarun.status);\n                                })\n                                .catch(error => {\n                                    console.log(error);\n                                });\n                        }\n                    }\n                } else {\n                    if (askvisible == false) {\n                        run_threshold = classifiers.length + THRESHOLD_STEP;\n                    }\n                }\n            }\n            this.setState({\n                runCSV: runCSV,\n                classifiers: classifiers,\n                hyperpartitions: hyperpartitions,\n                recommendationResult: recommendationResult,\n                run_threshold: run_threshold,\n                askvisible: askvisible\n            })\n        }\n\n    }\n    public startOrStopUpdateCycle() {\n        // this.intervalID = window.setInterval(this.getData, UPDATE_INTERVAL_MS);\n        if (this.props.datarunStatus === IDatarunStatusTypes.RUNNING) {\n            this.intervalID = window.setInterval(this.getData, UPDATE_INTERVAL_MS);\n        } else {\n            clearInterval(this.intervalID);\n        }\n    }\n    public componentDidMount() {\n        // this.getData()\n        // repeatedly get data\n        this.getData();\n        this.startOrStopUpdateCycle();\n    }\n    componentDidUpdate(prevProps: IProps) {\n        if (this.state.runCSV == '') {\n            this.getData();\n        }\n        if (prevProps.datarunID !== this.props.datarunID) {\n            this.getData();\n        }\n        if (prevProps.datarunStatus !== this.props.datarunStatus) {\n            this.startOrStopUpdateCycle();\n        }\n    }\n    public componentWillUnmount() {\n        window.clearInterval(this.intervalID)\n    }\n    AskModalCallBack = (mode: number) => {\n        // mode = 0      continue_running\n        // mode = 1      stop_running\n\n        let { run_threshold, classifiers } = this.state;\n        run_threshold = classifiers.length + THRESHOLD_STEP;\n\n        if (mode == 0) {\n            /*\n            if(this.props.datarunID!=null){\n                let promise = startDatarun(this.props.datarunID);\n                promise\n                .then(datarun => {\n                    // this.props.setDatarunID(this.props.datarunID) // pass datarun id to datarun after clicking run button\n                    this.props.setDatarunStatus(datarun.status);\n\n                })\n                .catch(error => {\n                    console.log(error);\n                });\n            }*/\n        }\n        this.setState({\n            askvisible: false,\n            run_threshold: run_threshold\n        })\n    }\n\n    public render() {\n        let { runCSV, hyperpartitions, classifiers } = this.state\n        let { datasetID, datarunID, compareK } = this.props\n       // let bestCls = classifiers.sort((a, b) => -a.cv_metric + b.cv_metric)[0]\n\n        hyperpartitions = hyperpartitions.filter(d => d.datarun_id == this.props.datarunID)\n        // const {classifiers} = this.state\n        let datarun: IDatarun = parseDatarun(runCSV)\n        //console.log(runCSV);\n        //console.log(datarun);\n        /*function computeDatarunSummary(classifiers: IClassifierInfo[]): IDatarunSummary {\n            // This need to fix to support other metric?\n            classifiers = [...classifiers];\n            classifiers.sort((a, b) => -a.cv_metric + b.cv_metric);\n            let nTriedByMethod = {};\n            let triedHyperpartition = []\n            classifiers.forEach(c => {\n                const nTried = nTriedByMethod[c.method];\n                nTriedByMethod[c.method] = nTried ? nTried + 1 : 1;\n            });\n            triedHyperpartition = Array.from(new Set(classifiers.map(d => d.hyperpartition_id)))\n            return {\n                nTried: classifiers.length,\n                topClassifiers: classifiers,\n                nTriedByMethod,\n                triedHyperpartition,\n            };\n        }\n        let summary = computeDatarunSummary(classifiers);\n        let methods_num = summary ? Object.keys(summary.nTriedByMethod).length : 0\n        let hp_num = summary ? summary.triedHyperpartition.length : 0\n        const progressAlgorithm = (percent: number) => {\n            return `${methods_num}/14`\n        }\n        const progressHyperpartiton = (percent: number) => {\n            return `${hp_num}/172`\n        }*/\n\n\n\n\n        if (Object.keys(datarun).length > 0) {\n            return (\n                <div style={{ height: '100%' }}>\n\n                    <div className=\"runTracker\" style={{ height: '12%', display: \"flex\" }}>\n                        {/* <Histogram datarun={datarun} width={40}/> */}\n                        <AskModal AskModalCallBack={this.AskModalCallBack} visible={this.state.askvisible} />\n                         <BarChart run={runCSV} width={100} />\n                      {/*  <Row style={{ \"height\": \"100%\", width: \"100%\" }}>\n                            <Col span={18} style={{ height: \"100%\" }}>\n                                <Tabs\n                                    defaultActiveKey=\"1\"\n                                    style={{ width: '100%' }}\n                                    tabPosition=\"left\"\n                                >\n                                    <TabPane tab=\"Trials\" key=\"1\">\n                                        <BarChart run={runCSV} width={100} />\n\n                                    </TabPane>\n                                    <TabPane tab=\"Performance\" key=\"2\">\n                                        <OverallHistogram datarun={datarun} width={100} />\n                                    </TabPane>\n                                </Tabs>\n                            </Col>\n                            <Col span={6} style={{ padding: \"10px\" }}>\n                            <div>\n                                <b>Total  classifiers</b>: {classifiers.length}\n                                <br />\n                                <b>Best classifier</b>:\n                        <span\n                            style={{\n                                backgroundColor: getColor(bestCls.method),\n                                borderRadius: '4px',\n                                padding: '2px',\n                                marginLeft: \"2px\",\n                                color: 'white'\n                            }}\n                        >\n                            {`${bestCls.method}-${bestCls.id}`}\n                        </span>\n                        {` ${bestCls.cv_metric.toFixed(3)}±${bestCls.cv_metric_std.toFixed(3)}`}\n                        <br />\n                                <b>Algorithm </b>:{' '}\n                                <Progress\n                                    type=\"circle\"\n                                    percent={100 * methods_num / 14}\n                                    format={progressAlgorithm}\n                                    width={40}\n                                    strokeWidth={10}\n                                />\n                                <b>{' '} Hyperpartitions</b>:{' '}\n                                <Progress\n                                    type=\"circle\"\n                                    percent={100 * hp_num / 172}\n                                    format={progressHyperpartiton}\n                                    width={40}\n                                    strokeWidth={10}\n                                />\n                                </div>\n                                \n                            </Col>\n                        </Row>*/}\n                    </div>\n                    {/* <div style={{height: \"80%\", overflowY: \"scroll\"}}>\n                <HyperPartitions classifiers={classifiers} />\n            </div> */}\n\n                    {/* <MethodsLineChart height={85} datarun={datarun} hyperpartitions={this.state.hyperpartitions}\n            datasetID={this.props.datasetID} setDatarunID={this.props.setDatarunID}\n            datarunID={this.props.datarunID}/> */}\n                    <ThreeLevel\n                        height={88}\n                        datarun={datarun}\n                        hyperpartitions={hyperpartitions}\n                        classifiers={classifiers}\n                        datasetID={datasetID}\n                        setDatarunID={this.props.setDatarunID}\n                        compareK={compareK}\n                        datarunID={datarunID}\n                        recommendationResult={this.state.recommendationResult}\n                        postClickEvent={this.props.postClickEvent}\n                    />\n\n                </div>)\n        } else {\n            return <div />\n        }\n\n    }\n}\n\n"
  },
  {
    "path": "src/components/DataRuns/Histogram.tsx",
    "content": "import ReactEcharts from \"echarts-for-react\";\nimport {getColor} from \"helper\"\nimport * as React from \"react\";\nimport { IDatarun } from \"types\";\n\nexport interface IProps{\n    datarun:IDatarun, width: number\n}\n\nexport interface IState{\n    step: number\n    yAxis: 'absolute'|'relative'\n}\n\nexport default class Histogram extends React.Component<IProps, IState>{\n    constructor(props:IProps){\n        super(props)\n        this.state={\n            step :0.05, \n            yAxis:'absolute' //'absolute' or 'relative\n        }\n    }\n    public getOption(){\n        const {datarun} = this.props\n        let {step, yAxis} = this.state\n        let series = Object.keys(datarun).map((name:string)=>{\n            let data:number[] = []\n            for (let i =0; i<1/step; i++){\n                data.push(0)\n            }\n            datarun[name].forEach(classifier=>{\n                let performance = parseFloat(classifier['performance'].split(' +- ')[0])\n                let rangeIdx = Math.floor(performance/step)\n                data[rangeIdx] = data[rangeIdx]+1\n            })\n            if (yAxis=='relative'){\n                let max = Math.max(...data)\n                data = data.map(d=>d/max)\n            }\n            \n            return {\n                type: 'bar',\n                // smooth: false,\n                barGap:'5%',\n                barCategoryGap: \"5%\",\n                data,\n                itemStyle:{\n                    color: getColor(name),\n                    opacity: 1\n                },\n            }\n        })\n\n        let xAxisData:string[] = []\n        for (let i =0; i<1/step; i++){\n            xAxisData.push(`${(i*step).toFixed(2)}-${((i+1)*step).toFixed(2)}`)\n        }\n        const option = {\n            title:{\n                text:\"performance histogram\",\n                left: '0.5%',\n                top: '0.5%',\n            },\n            xAxis: {\n                type: 'category',\n                data: xAxisData,\n                axisTick:{\n                    interval:0,\n                },\n                axisLabel:{\n                    rotate:-30,\n                    interval:1,\n                    fontSize: 8,\n                }\n            },\n            yAxis: {\n                type: 'value'\n            },\n            grid:{\n                left: '5%',\n                right: '5%',\n                top: '25%',\n                bottom: '30%',\n            },\n            series,\n        };\n        return option\n    }\n    public render(){\n        return <ReactEcharts \n        option = { this.getOption() }\n        style={{height: `100%`, width: `${this.props.width}%`}}\n        />\n    }\n}"
  },
  {
    "path": "src/components/DataRuns/HyperPartitions.tsx",
    "content": "import ReactEcharts from \"echarts-for-react\";\nimport {getColor} from \"helper\"\nimport * as React from \"react\";\nimport {IClassifierInfo} from \"service/dataService\"\n\nexport interface IProps{\n    classifiers: IClassifierInfo[]\n}\n\nexport interface IState{\n    step: number\n}\n\nexport default class extends React.Component<IProps, {}>{\n    render(){\n        let {classifiers} = this.props\n        let hyperPartitionSet = new Set(classifiers.map(cls=>cls.hyperpartition_id))\n        let hyperPartitionIDs = Array.from(hyperPartitionSet)\n        return hyperPartitionIDs.map(hpID=>{\n            let hpClassifiers = this.props.classifiers.filter(cls=>cls.hyperpartition_id==hpID)\n            return (<div key={'hyperPartitionID:'+hpID} style={{float: \"left\", height: `35%`, width: '33%' }}>\n                <GridHistogram  classifiers={hpClassifiers}/>\n            </div>)\n        })\n    }\n}\n\nexport class GridHistogram extends React.Component<IProps, IState>{\n    constructor(props:IProps){\n        super(props)\n        this.state={\n            step: 0.05\n        }\n    }\n    public getOption(){\n        let {classifiers} = this.props\n        let {step} = this.state\n\n        let xAxisData:string[] = []\n        for (let i =0; i<1/step; i++){\n            xAxisData.push(`${(i*step).toFixed(2)}-${((i+1)*step).toFixed(2)}`)\n        }\n\n        let performanceCount:number[] = []\n        for (let i =0; i<1/step; i++){\n            performanceCount.push(0)\n        }\n        let series = {\n            type: \"heatmap\",\n            itemStyle: {\n                // color: getColor(classifiers[0].method),\n                borderColor: 'white',\n                borderWidth: 4,\n            },\n            data: classifiers.map(classifier=>{\n                let performanceIdx = Math.floor(classifier.cv_metric/step)\n                performanceCount[performanceIdx] += 1\n                return [performanceIdx, performanceCount[performanceIdx]-1, classifier.id]\n            })\n        }\n\n        const option = {\n            title:{\n                text: '',\n                left: '0.5%',\n                top: '0.5%',\n            },\n            tooltip:{\n                formatter: (params: Object | any[], ticket: string) => {\n                    return [\n                        `performance: ${params['name']}`,\n                        `classifier id: ${params['data'][2]}`\n                    ].join('<br/>')\n                }\n            },\n            xAxis: {\n                type: 'category',\n                data: xAxisData,\n                axisTick:{\n                    interval:0,\n                },\n                axisLabel:{\n                    rotate:-30,\n                    interval:1,\n                    fontSize: 8,\n                },\n            },\n            yAxis: {\n                type: 'category',\n                axisLabel:{\n                    show: false\n                },\n            },\n            grid:{\n                left: '5%',\n                right: '5%',\n                top: '25%',\n                bottom: '30%',\n            },\n            visualMap: {\n                min: Math.min(...classifiers.map(cls=>cls.id)),\n                max: Math.max(...classifiers.map(cls=>cls.id)),\n                calculable: true,\n                show:false,\n                inRange: {\n                    color: [getColor(classifiers[0].method)],\n                    opacity: [0.4, 1]\n                }\n            },\n            series,\n        };\n        return option\n    }\n    public render(){\n        return <ReactEcharts\n        option = { this.getOption() }\n        style={{height: `100%`, width: `100%`}}\n        />\n    }\n}"
  },
  {
    "path": "src/components/DataRuns/Methods.css",
    "content": ".methods{\n    overflow-y: scroll;\n    padding: 10px;\n}\n\n.usedMethodContainer{\n    padding: 3px 8px;\n    float: left;\n}\n\n.method{\n    border: .4px solid rgba(0,0,0, 0.2);\n    box-shadow: 0 1px 1px 0 rgba(0,0,0,0.06);\n    /* height: ${100/methods.length}% */\n    height: 100%;\n    padding: 2px 5px;\n}\n\n.unusedMethod{\n    border: 2px dashed rgba(0,0,0, 0.3);\n    box-shadow: 0 1px 1px 0 rgba(0,0,0,0.06);\n    padding: 2px 5px;\n    margin: 5px;\n    float: left;\n}"
  },
  {
    "path": "src/components/DataRuns/Methods.tsx",
    "content": "import { } from 'antd';\nimport * as React from 'react';\nimport * as methodsDef from \"../../assets/methodsDef.json\";\nimport { IMethod, IDatarun, IClassifier } from \"types\";\nimport { getColor } from 'helper';\nimport \"./Methods.css\"\nimport ReactEcharts from \"echarts-for-react\";\n\nexport interface IState {\n}\nexport interface IProps {\n    height: number,\n    datarun: IDatarun\n}\nexport default class Methods extends React.Component<IProps, IState>{\n\n    public render() {\n        // const methodLen = Object.keys(methodsDef).length\n        let { datarun, height } = this.props\n        let usedMethods: string[] = Object.keys(datarun)\n        // const usedMethods = ['SVM', 'RF', 'DT', 'MLP',,'GP', 'LR', 'KNN'] // the used methodsDef should be obtained by requesting server the config file\n        const unusedMethods = Object.keys(methodsDef).filter((name: string) => usedMethods.indexOf(name) < 0)\n        return <div className=\"methods\" style={{height: height+'%', borderTop: \".6px solid rgba(0,0,0, 0.4)\"}}>\n            {usedMethods.map((name: string, i: number) => {\n                const methodDef = methodsDef[name]\n                return <div key={name + '_used'} className=\"usedMethodContainer\"\n                    style={{ height: `35%`, width: '33%' }}>\n                    <div className=\"method\">\n                        <Method methodDef={methodDef} classifiers={datarun[name]} />\n                    </div>\n                </div>\n            })}\n\n            {unusedMethods.map((name: string) => (<div key={name + '_unused'} className='unusedMethod'>{methodsDef[name]['fullname']}</div>))}\n        </div>\n\n    }\n}\n\nclass Method extends React.Component<{ methodDef: IMethod, classifiers: IClassifier[] }, {}>{\n    getOption() {\n        const { methodDef, classifiers } = this.props\n\n        // pepare data for parallel coordinates\n        let parallelAxis: any[] = []\n        let idx = 0\n        methodDef.root_hyperparameters.forEach((p: string) => {\n            let parameter = methodDef['hyperparameters'][p]\n            if (parameter['values']) { //category axis\n                parallelAxis.push({ dim: idx, name: p, type: 'category', data: parameter['values'] })\n            } else if (parameter['range']) {//value axis\n                if (parameter['range'].length > 1) { //range in the form of [min, max]\n                    parallelAxis.push({ dim: idx, name: p, type: 'value', min: parameter['range'][0], max: parameter['range'][1] })\n                } else { // range in the form of [max]\n                    parallelAxis.push({ dim: idx, name: p, type: 'value', min: 0, max: parameter['range'][0] })\n                }\n\n            } else if (parameter['type'] == 'list') { // the hidden layer sizes in MLP\n                for (let hidden_l = 0; hidden_l < parameter['list_length'].length; hidden_l++) {\n\n                    parallelAxis.push({\n                        dim: idx + hidden_l, name: `${p}[${hidden_l}]`, type: 'value',\n                        min: 0,\n                        max: parameter['element']['range'][1]\n                    })\n                }\n                idx = idx + parameter['list_length'].length - 1\n                // parallelAxis.push({\n                //     dim: idx, name:p, type:'value'\n                // })\n\n            } else {\n                parallelAxis.push({\n                    dim: idx, name: p, type: 'value'\n                })\n            }\n        })\n        //performance as a value axis\n        parallelAxis.push({\n            dim: parallelAxis.length,\n            name: 'performance',\n            type: 'value',\n            min: 0,\n            max: 1\n        })\n        //remove axes that only have one value\n        parallelAxis = parallelAxis.filter(axis => {\n            if (axis.type == 'value') {\n                return true\n            } else {\n                return axis.data.length > 1\n            }\n        })\n        //re organize the dim index after filtering and inserting\n        parallelAxis.forEach((p, idx: number) => {\n            p['dim'] = idx,\n                p['nameRotate'] = 45\n            p['axisLabel'] = { rotate: 45 }\n            p['gridIndex'] = 0\n        })\n        let data: any[] = []\n        classifiers.forEach(((classifier: IClassifier, idx: number) => {\n\n            let par_dict = {}\n            let parameters = classifier['parameters'].split('; ')\n            parameters = parameters.map((p: string) => {\n                let [k, v] = p.split(' = ')\n                return par_dict[k] = v\n            })\n            // for the hidden layer sizes in MLP\n\n            if (par_dict['len(hidden_layer_sizes)']) {\n                for (let i = parseInt(par_dict['len(hidden_layer_sizes)']); i < 3; i++) {\n                    par_dict[`hidden_layer_sizes[${i}]`] = 0\n                }\n            }\n\n            // add perforamce\n            par_dict['performance'] = parseFloat(classifier['performance'].split(' +- '))\n            let attrs = parallelAxis.map(p => {\n\n                let value = par_dict[p.name]\n                if (p.type == 'value') {\n                    return parseFloat(value)\n                } else {\n                    return value\n                }\n            })\n            data.push(attrs)\n        }\n        ))\n\n        // prepare data for performance histogram\n        const step = 0.05\n        let histogramData: number[] = []\n        for (let i = 0; i < 1 / step; i++) {\n            histogramData.push(0)\n        }\n        classifiers.forEach(classifier => {\n            let performance = parseFloat(classifier['performance'].split(' +- ')[0])\n            let rangeIdx = Math.floor(performance / step)\n            histogramData[rangeIdx] = histogramData[rangeIdx] + 1\n        })\n        // normalize to 0-1\n        let max = Math.max(...histogramData)\n        histogramData = histogramData.map(d => d / max)\n\n        let yAxisData: string[] = []\n        for (let i = 0; i < 1 / step; i++) {\n            yAxisData.push(`${(i * step).toFixed(2)}-${((i + 1) * step).toFixed(2)}`)\n        }\n        let barSeries = {\n            name: methodDef.name,\n            type: 'bar',\n            coordinateSystem: 'cartesian2d',\n            xAxisIndex: 0,\n            yAxisIndex: 0,\n            data: histogramData,\n            itemStyle: {\n                color: getColor(methodDef.name),\n                opacity: 0.6,\n            },\n            tooltip: {\n                formatter: (params: Object | any[], ticket: string) => {\n                    return `${params['seriesName']} between ${params['name']}: ${params['data'] * max}`\n                }\n            }\n        }\n\n        // construct echarts option\n        const option = {\n            title: {\n                text: `${methodDef.fullname}: {term|${classifiers.length}}`,\n                left: '0.5%',\n                top: '0.5%',\n                textStyle: {\n                    fontSize: 15,\n                    rich: {\n                        term: {\n                            borderColor: \"black\",\n                            borderWidth: 1,\n                            borderRadius: 15,\n                            padding: 5\n                        }\n                    }\n                }\n\n            },\n            tooltip: {},\n            grid: [\n                // this grid for the performance histogram\n                {\n                    id: 0,\n                    left: '80%',\n                    right: '2%',\n                    top: '35%',\n                    bottom: '5%',\n                }\n            ],\n            // axis for parallel coordinates\n            parallelAxis,\n            parallel: {\n                gridIndex: 0,\n                bottom: '5%',\n                left: '5%',\n                top: '35%',\n                right: '20%',\n                // height: '31%',\n                // width: '55%',\n                parallelAxisDefault: {\n                    type: 'value',\n                    name: 'performance',\n                    nameLocation: 'end',\n                    nameGap: 10,\n                    splitNumber: 3,\n                    nameTextStyle: {\n                        fontSize: 14\n                    },\n                    axisLine: {\n                        lineStyle: {\n                            color: '#555'\n                        }\n                    },\n                    axisTick: {\n                        lineStyle: {\n                            color: '#555'\n                        }\n                    },\n                    splitLine: {\n                        show: false\n                    },\n                    axisLabel: {\n                        textStyle: {\n                            color: '#555'\n                        }\n                    }\n                }\n            },\n            // axes for performance histogram\n            xAxis: {\n                type: 'value',\n                gridIndex: 0,\n                id: 0,\n                show: false,\n                axisLabel: {\n                    show: false\n                }\n            },\n            yAxis: {\n                type: 'category',\n                id: 0,\n                gridIndex: 0,\n                data: yAxisData,\n                show: false,\n                axisLabel: {\n                    show: false\n                }\n            },\n            series: [\n                {\n                    name: 'parallel',\n                    type: 'parallel',\n                    smooth: true,\n                    inactiveOpacity: 0,\n                    activeOpacity: 1,\n                    tooltip: {},\n                    lineStyle: {\n                        normal: {\n                            width: 1,\n                            opacity: 1,\n                            color: getColor(methodDef.name)\n                        }\n                    },\n                    data,\n                },\n                barSeries\n                // {\n                //     name: 'bar',\n                //     type: 'bar',\n                //     data: [120, 200, 150, 80, 70, 110, 130]\n                // }\n            ],\n\n        }\n        return option\n    }\n    render() {\n        return <ReactEcharts\n            option={this.getOption()}\n            style={{ height: `100%`, width: '100%' }}\n        />\n    }\n}\n\n\n"
  },
  {
    "path": "src/components/DataRuns/MethodsDotBarChart.css",
    "content": ".methods{\n    overflow-y: scroll;\n    padding: 10px;\n}\n\n.usedMethodContainer{\n    padding: 3px 8px;\n    float: left;\n}\n\n.method{\n    border: .4px solid rgba(0,0,0, 0.2);\n    box-shadow: 0 1px 1px 0 rgba(0,0,0,0.06);\n    /* height: ${100/methods.length}% */\n    height: 100%;\n    padding: 2px 5px;\n}\n\n.unusedMethod{\n    border: 2px dashed rgba(0,0,0, 0.3);\n    box-shadow: 0 1px 1px 0 rgba(0,0,0,0.06);\n    padding: 2px 5px;\n    margin: 5px;\n    float: left;\n}\n.box {\n    font: 10px sans-serif;\n  }\n  \n.box line,\n.box rect,\n.box circle {\nfill: #fff;\nstroke: #000;\nstroke-width: 1.5px;\n}\n\n.box .center {\nstroke-dasharray: 3,3;\n}\n\n.box .outlier {\nfill: none;\nstroke: #ccc;\n}"
  },
  {
    "path": "src/components/DataRuns/MethodsDotBarChart.tsx",
    "content": "//import { Button } from 'antd';\nimport * as React from 'react';\nimport * as methodsDef from \"../../assets/methodsDef.json\";\nimport { IMethod, IDatarun, IClassifier } from \"types\";\n//import { IDatarun } from \"types\";\n//import { getColor ,RED,YELLOW, getGradientColor} from 'helper';\nimport { getColor } from 'helper';\nimport \"./MethodsDotBarChart.css\"\n//import ReactEcharts from \"echarts-for-react\";\n\nexport interface IState {\n}\nexport interface IProps {\n    height: number,\n    datarun: IDatarun\n}\nexport interface ChartProps {\n    width: number,\n    height: number,\n    x: number,\n    y: number,\n    methodDef: IMethod,\n    classifiers : IClassifier[],\n    name:string\n\n}\nexport default class MethodsDotBarChart extends React.Component<IProps, IState>{\n    public render() {\n        // const methodLen = Object.keys(methodsDef).length\n        let { datarun, height } = this.props\n        let usedMethods: string[] = Object.keys(datarun)\n        // const usedMethods = ['SVM', 'RF', 'DT', 'MLP',,'GP', 'LR', 'KNN'] // the used methodsDef should be obtained by requesting server the config file\n        const unusedMethods = Object.keys(methodsDef).filter((name: string) => usedMethods.indexOf(name) < 0)\n        return <div className=\"methods\" style={{height: height+'%', borderTop: \".6px solid rgba(0,0,0, 0.4)\"}}>\n            {usedMethods.map((name: string, i: number) => {\n                const methodDef = methodsDef[name];\n                const classifier_num = datarun[name].length;\n                const top_width = classifier_num*6+60;\n                return <div key={name + '_used'} className=\"usedMethodContainer\"\n                    style={{ height: 80, width: top_width }}>\n                    <div className=\"method\">\n                        <svg style={{ height: '100%', width: '100%' }} id=\"chart\">\n                            <BoxPlot x={2} y={2} width={7} height={60} methodDef={methodDef} classifiers={datarun[name]} name={name}/>\n                            <DotBarChart x={15} y={2} width={top_width-10} height={60} methodDef={methodDef} classifiers={datarun[name]} name={name}/>\n                        </svg>  \n                    </div>\n                </div>\n            })}\n\n            {unusedMethods.map((name: string) => (<div key={name + '_unused'} className='unusedMethod'>{methodsDef[name]['fullname']}</div>))}\n        </div>\n      \n    }\n}\nclass SingleBoxPlot {\n    \n    boxWhiskers=(d:any)=> {\n        return [0, d.length - 1];\n      }\n      \n    boxQuartiles=(d:any)=> {\n        const d3 = require(\"d3\");\n        return [\n            d3.quantile(d, .25),\n            d3.quantile(d, .5),\n            d3.quantile(d, .75)\n        ];\n    }\n    public width = 1;\n    public height = 1;\n    public duration = 0;\n    public domain : any = null;\n    public value = Number;\n    public whiskers = this.boxWhiskers;\n    public quartiles = this.boxQuartiles;\n    public tickFormat : any= null;\n\n    public setdomain(x:any) {\n        this.domain = x;\n    };\n\n    renderBoxPlot(data:number[],obj:any){\n        // obj -> Selection.\n        // data -> sequential data.\n        const d3 = require(\"d3\");\n        \n        let width = this.width,\n            height = this.height,\n            //duration = this.duration,\n            domain = this.domain,\n           // value = this.value,\n            whiskers = this.whiskers,\n            quartiles = this.quartiles;\n            \n        let sortedData = data.sort((a,b)=>{return a - b;});\n        let d = sortedData;\n        let g = obj;\n\n        let n = sortedData.length,\n            min = sortedData[0],\n            max = sortedData[n - 1];\n\n        // Compute quartiles. Must return exactly 3 elements.\n        var quartileData = quartiles(sortedData);\n\n        // Compute whiskers. Must return exactly 2 elements, or null.\n        var whiskerIndices = whiskers && whiskers(sortedData),\n            whiskerData = whiskerIndices && whiskerIndices.map(function(i:number) { return sortedData[i]; });\n\n        // Compute outliers. If no whiskers are specified, all data are \"outliers\".\n        // We compute the outliers as indices, so that we can join across transitions!\n        var outlierIndices = whiskerIndices\n            ? d3.range(0, whiskerIndices[0]).concat(d3.range(whiskerIndices[1] + 1, n))\n            : d3.range(n);\n\n        // Compute the new x-scale.\n        var x1 = d3.scaleLinear()\n            .domain(domain || [min, max])\n            .range([height, 0]);\n\n        // Retrieve the old x-scale, if this is an update.\n        //var x0 = d3.scaleLinear()\n        //    .domain([0, Infinity])\n        //    .range(x1.range());\n\n        // Stash the new scale.\n        //obj.__chart__ = x1;\n\n        // Note: the box, median, and box tick elements are fixed in number,\n        // so we only have to handle enter and update. In contrast, the outliers\n        // and other elements are variable, so we need to exit them! Variable\n        // elements also fade in and out.\n\n        // Update center line: the vertical line spanning the whiskers.\n        var center = g.selectAll(\"line.center\")\n            .data(whiskerData ? [whiskerData] : []);\n        \n        center.enter().insert(\"line\", \"rect\")\n            .attr(\"class\", \"center\")\n            .attr(\"x1\", width / 2)\n            .attr(\"y1\", function(d:any) { return x1(d[0]); })\n            .attr(\"x2\", width / 2)\n            .attr(\"y2\", function(d:any) { return x1(d[1]); })\n            .style(\"opacity\", 1);\n\n        // Update innerquartile box.\n        var box = g.selectAll(\"rect.box\")\n            .data([quartileData]);\n\n        box.enter().append(\"rect\")\n            .attr(\"class\", \"box\")\n            .attr(\"x\", 0)\n            .attr(\"y\", function(d:any) { return x1(d[2]); })\n            .attr(\"width\", width)\n            .attr(\"height\", function(d:any) { return x1(d[0]) - x1(d[2]); });\n\n        // Update median line.\n        var medianLine =g.selectAll(\"line.median\")\n            .data([quartileData[1]]);\n\n        medianLine.enter().append(\"line\")\n            .attr(\"class\", \"median\")\n            .attr(\"x1\", 0)\n            .attr(\"y1\", x1)\n            .attr(\"x2\", width)\n            .attr(\"y2\", x1);\n\n\n        // Update whiskers.\n        var whisker = g.selectAll(\"line.whisker\")\n            .data(whiskerData || []);\n\n        whisker.enter().insert(\"line\", \"circle, text\")\n            .attr(\"class\", \"whisker\")\n            .attr(\"x1\", 0)\n            .attr(\"y1\", x1)\n            .attr(\"x2\", width)\n            .attr(\"y2\", x1)\n            .style(\"opacity\", 1);\n\n        // Update outliers.\n        var outlier = g.selectAll(\"circle.outlier\")\n            .data(outlierIndices, Number);\n\n        outlier.enter().insert(\"circle\", \"text\")\n            .attr(\"class\", \"outlier\")\n            .attr(\"r\", 5)\n            .attr(\"cx\", width / 2)\n            .attr(\"cy\", function(i:any) { return x1(d[i]); })\n            .style(\"opacity\", 1);\n        \n    }\n}\nclass BoxPlot extends React.Component<ChartProps, {}>{\n    TAG=\"BoxPlot_\";\n    componentDidMount() {\n        this.renderBoxPlot();\n    }\n    \n    renderBoxPlot(){\n        let topx = this.props.x;\n        let topy = this.props.y;\n        let name = this.props.name;\n        let TAG = this.TAG;\n        let d3 = require(\"d3\");\n        var margin = {top: 0, right: 0, bottom: 0, left: 0},\n        width = this.props.width - margin.left - margin.right,\n        height = this.props.height - margin.top - margin.bottom;\n\n        var min = Infinity,\n        max = -Infinity;\n\n        var chart = new SingleBoxPlot();\n        chart.whiskers = iqr(1.5);\n        chart.width = width;\n        chart.height = height;\n\n        d3.csv(\"morley.csv\", function(error:any, csv:any) {\n            if (error) throw error;\n\n            var data:any[] = [];\n\n            csv.forEach(function(x:any) {\n            //var e : number = Math.floor(x.Expt - 1),\n            //    r = Math.floor(x.Run - 1),\n            var s = Math.floor(x.Speed),\n                d = data[0];\n            if (!d) d = data[0] = [s];\n            else d.push(s);\n            if (s > max) max = s;\n            if (s < min) min = s;\n            });\n\n            chart.setdomain([600, 1200]);\n\n            d3.select(\"#\"+TAG+name)\n            .attr(\"class\", \"box\")\n            .attr(\"width\", width + margin.left + margin.right)\n            .attr(\"height\", height + margin.bottom + margin.top);\n            var svg_box = d3.selectAll(\"#\"+TAG+name).attr(\"transform\", \"translate(\" + topx + \",\" + topy + \")\");;\n            var g_box = svg_box.append(\"g\")\n            .attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");\n            chart.renderBoxPlot(data[0],g_box);\n            \n        });\n\n       \n\n        // Returns a function to compute the interquartile range.\n        function iqr(k:any) {\n            return function(d:any):number[] {\n            let arr = chart.quartiles(d)\n            var q1 = arr[0],\n                q3 = arr[2],\n                iqr = (q3 - q1) * k,\n                i:number = -1,\n                j = d.length;\n            while (d[++i] < q1 - iqr);\n            while (d[--j] > q3 + iqr);\n            return [i, j];\n            };\n        }\n    }\n    render() {\n        const {name}=this.props;\n        return <g id={this.TAG+name}/>\n    }\n}\n\n\nclass DotBarChart extends React.Component<ChartProps, {}>{\n    TAG = \"DotBarChart_\";\n    componentDidMount() {\n        this.renderD3();\n    }\n    renderD3() {\n        const d3 = require(\"d3\");\n        // Get Datasets\n        const { methodDef, classifiers } = this.props;\n        let step = 0.1;\n        let data:number[] = [];\n        \n        for (let i =0; i<1/step; i++){\n            data.push(0)\n        }\n        classifiers.forEach((classifier:IClassifier)=>{\n            let performance = parseFloat(classifier['performance'].split(' +- ')[0])\n            let rangeIdx = Math.floor(performance/step)\n            data[rangeIdx] = data[rangeIdx]+1\n        });\n        let total = 0;\n        data.forEach(d=>{\n            total+=d;\n        });\n        let yAxisData:string[] = []\n        for (let i =0; i<=1/step; i++){\n            yAxisData.push(`${(i*step).toFixed(2)}`)\n        }\n        \n        // g\n        // Set the dimensions of the canvas / graph\n        let\tmargin = {top: 0, right: 0, bottom: 0, left: 0},\n            width = this.props.width - margin.left - margin.right,\n            height = this.props.height - margin.top - margin.bottom,\n            top_margin = {top:this.props.y,left:this.props.x};\n\n        // Set the ranges\n        let\txScale = d3.scaleLinear().range([0, width]);\n        let\tyScale = d3.scaleLinear().range([height, 0]);\n        \n        let yAxis = d3.axisLeft()\n                    .scale(yScale)\n                    .tickFormat(function (d:any) {\n                        return \"\";\n                    })\n                    .ticks(1);\n\n        xScale.domain([0, total]);\n        yScale.domain([0, 1]);\n        //Create SVG element\n        let top_svg = d3.select(\"#\"+this.TAG+this.props.name).attr(\"width\", width + margin.left + margin.right)\n        .attr(\"height\", height + margin.top + margin.bottom).attr(\"transform\", \"translate(\" + top_margin.left + \",\" + top_margin.top + \")\");;\n\n        let svg = top_svg.append(\"g\").attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");\n\n        //Create Y axis\n        svg.append(\"g\")\n            .attr(\"transform\", \"translate(0,0)\")\n            .attr(\"class\", \"y axis\")\n            .call(yAxis);\n\n        let groups = svg\n        .selectAll(\"g.group\")\n        .data( data )\n            .enter()\n            .append('g')\n            .attr(\"class\", \"group\");\n        function generate_array(d:number,index:number){ \n            // index*step -> performance range\n            // d -> number\n\n            var arr = new Array(d);\n            for(var i=0;i<d;i++){\n                arr[i] = {y:(index+0.5)*step,x:i};\n            }\n            return arr;\n        }\n        let rectArray = groups.selectAll(\"g.rectArray\")\n        .data(function(d:number,i:number) {\n            return generate_array(d,i);});\n\n        rectArray.enter()\n        .append('g')\n        .attr(\"class\", \"rectArray\")\n        .append(\"rect\")\n        .style(\"fill\",getColor(methodDef.name))\n        .attr(\"width\", 5)\n        .attr(\"height\",5)\n        .attr(\"x\", function(d:any,i:any) {return d.x*6; })\n        .attr(\"y\", function(d:any,i:any) { return yScale(d.y)-2.5; });\n        \n\n      }\n    render() {\n        const {name}=this.props;\n        return <g id={this.TAG+name}/>\n    }\n}\n"
  },
  {
    "path": "src/components/DataRuns/MethodsLineChart.css",
    "content": ".methods{\n    overflow-y: scroll;\n    padding: 10px;\n}\n\n.usedMethodContainer{\n    padding: 3px 8px;\n    float: left;\n}\n\n.method{\n    border: .4px solid rgba(0,0,0, 0.2);\n    box-shadow: 0 1px 1px 0 rgba(0,0,0,0.06);\n    /* height: ${100/methods.length}% */\n    height: 100%;\n    padding: 2px 5px;\n}\n\n.unusedMethod{\n    border: 2px dashed rgba(0,0,0, 0.3);\n    box-shadow: 0 1px 1px 0 rgba(0,0,0,0.06);\n    padding: 2px 5px;\n    margin: 5px;\n    float: left;\n}\n\ndiv.tooltip {\n    position: absolute;\n    text-align: left;\n    color: aliceblue;\n    width: 180px;\n    height: 80px;\n    padding: 10px;\n    font: 12px sans-serif;\n    background: rgba(0, 0, 0, 0.671);\n    border: 10px;\n    border-radius: 5px;\n    pointer-events: none;\n  }\n  .link {\n    fill: none;\n    stroke-width: 1.5px;\n  }\n  .bottomright {\n    position: absolute;\n    bottom: 80px;\n    right: 30px;\n    font-size: 18px;\n}"
  },
  {
    "path": "src/components/DataRuns/MethodsLineChart.tsx",
    "content": "import { Button,Checkbox,message,InputNumber } from 'antd';\nimport * as React from 'react';\nimport * as methodsDef from \"../../assets/methodsDef.json\";\nimport { IMethod, IDatarun, IClassifier } from \"types\";\nimport { IConfigsInfo,INewDatarunResponse,IUpdateDatarunConfig, ICommonResponse,IHyperpartitionInfo,IClassifierInfo,IRecommendationResult,IClickEvent } from '../../service/dataService';\nimport { getConfigs,getDatarunConfigs,postNewDatarun,updateDatarunConfigs} from '../../service/dataService';\n//import { IDatarun } from \"types\";\n//import { getColor ,RED,YELLOW, getGradientColor} from 'helper';\nimport { getColor } from 'helper';\nimport \"./MethodsLineChart.css\";\n//import ReactEcharts from \"echarts-for-react\";\n/*const sortSwitchStyle = {\n     position: \"absolute\" as \"absolute\",\n     top: \"5px\",\n     right: \"5px\"\n }*/\nexport interface IState {\n    mode : number,\n    selectedMethodName : string[],\n    nowselectedMethodName : string,\n    selectedHyperpartitionName :string,\n    selectedHyperpartitionId : number,\n    loading : boolean ,\n    configsMethod : string[],\n    configsBudget:number,\n    hyperparametersRangeSelectedName:string,\n    hyperparametersRangeSelected:number[],\n    hyperparametersRangeAlreadySelected:any\n}\nexport interface IProps {\n    height: number,\n    datarun: IDatarun,\n    datasetID: number | null,\n    datarunID: number | null,\n    setDatarunID: (id: number) => void,\n    hyperpartitions : IHyperpartitionInfo[],\n    classifiers: IClassifierInfo[],\n    compareK: number,\n    recommendationResult:IRecommendationResult,\n    postClickEvent:(e:IClickEvent)=>void\n}\n\nexport interface ChartProps {\n    width: number,\n    height: number,\n    x: number,\n    y: number,\n    methodDef: IMethod,\n    classifiers : IClassifier[],\n    name:string,\n    totallen?:number,\n    methodName?:string,\n    onClick:(a:string)=>void,\n    selected?:boolean,\n\n\n}\nexport interface DetailChartProps{\n    width: number,\n    height: number,\n    x: number,\n    y: number,\n    methodDef: IMethod,\n    classifiers : IClassifier[],\n    name:string,\n    min:number,\n    max:number,\n    hyname:string,\n    alreadySelectedRange:number[],\n    hintRange:number[],\n    onSelectedChange:(method:string,name:string,range:number[])=>void,\n    valueType:string\n\n}\nexport interface HyperpartitionHeatmapProps{\n    width: number,\n    height: number,\n    x: number,\n    y: number,\n    methodDef: IMethod,\n    classifiers : IClassifier[],\n    name:string,\n    totallen?:number,\n    methodName?:string,\n    onClick:(a:string,b:number)=>void,\n    selected?:boolean,\n    hpname:string,\n    methodSelected:boolean,\n    hpid:number\n}\nexport default class MethodsLineChart extends React.Component<IProps, IState>{\n    constructor(props:IProps){\n        super(props);\n        //let usedMethods:any[] = Object.keys(this.props.datarun);\n        this.getCurrentConfigs();\n        this.state={\n            mode : 0,\n            selectedMethodName :[],\n            nowselectedMethodName:\"\",\n            selectedHyperpartitionName : \"\",\n            loading:false,\n            configsMethod:[],\n            configsBudget:1000,\n            hyperparametersRangeSelectedName:\"\",\n            hyperparametersRangeSelected:[],\n            hyperparametersRangeAlreadySelected:{},\n            selectedHyperpartitionId:0\n        };\n\n    }\n    index = 0;  // global component key index\n\n    displayMethod = [];\n    allMethods = [];\n    onMethodsOverViewClick = (Methods:string)=>{\n        // Show Methods\n        console.log(\"onclick\");\n        let selectedMethodName:string[] = this.state.selectedMethodName;\n        let  i = selectedMethodName.indexOf(Methods);\n        if (i > -1) {\n            selectedMethodName.splice(i, 1);\n            this.setState({selectedMethodName : selectedMethodName});\n\n        }else{\n            selectedMethodName.push(Methods);\n\n            //if(this.state.mode==0||this.state.mode==2){\n                this.setState({\n                    mode : 1,\n                    selectedMethodName : selectedMethodName,\n                    selectedHyperpartitionName:\"\",\n                    nowselectedMethodName:Methods\n                });\n           // }else{\n           //     this.setState({\n            //        selectedMethodName : selectedMethodName\n             //   });\n           // }\n        }\n\n\n    };\n    onHyperpartitionsOverViewClick = (HyperpatitionName:string,HyperpartitionId:number)=>{\n        //alert(\"onclick \"+HyperpatitionName);\n        this.setState({\n            mode : 2,\n            selectedHyperpartitionName : HyperpatitionName,\n            selectedHyperpartitionId : HyperpartitionId\n        });\n    };\n    public getbestperformance(list:IClassifier[]){\n        if(list.length>0){\n            let classifierPerformance:number[]=list.map((classifier:IClassifier)=>{\n                let performance = parseFloat(classifier['performance'].split(' +- ')[0]);\n                return performance;\n            });\n            classifierPerformance.sort(function(a:any,b:any){\n                return b-a;\n            });\n            return classifierPerformance[0];\n        }else{\n            return 0;\n        }\n\n    }\n    public getmaxnum(classifiers:IClassifier[]){\n        let step = 0.1;\n        let data:number[] = [];\n\n        for (let i =0; i<=1/step; i++){\n            data.push(0)\n        }\n        let bestperformance = 0;\n        classifiers.forEach((classifier:IClassifier)=>{\n            let performance = parseFloat(classifier['performance'].split(' +- ')[0]);\n            if(performance>bestperformance){\n                bestperformance=performance;\n            }\n            let rangeIdx = Math.floor(performance/step)\n            data[rangeIdx] = data[rangeIdx]+1\n        });\n        let maxvalue = 0;\n        data.forEach((p:any)=>{\n            if(p>maxvalue){\n                maxvalue = p;\n            }\n        })\n        return maxvalue;\n    }\n    componentDidMount(){\n        /*\n        const d3 = require(\"d3\");\n        let zoom = d3.zoom()\n        .scaleExtent([1, 10])\n        .on(\"zoom\", function(){\n            let container = d3.select(\"#top_container\");\n            //container.attr(\"transform\", \"translate(\" + d3.event.translate + \")scale(\" + d3.event.scale + \")\");\n            container.attr(\"transform\", d3.event.transform);\n        });\n        let margin = {left:0,right:0,top:0,bottom:0};\n        d3.select(\"#top_container\").attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.right + \")\").call(zoom);\n        */\n       // My computer\n       // width = 1313 (0.82)\n       // height = 567 (0.77)\n       // tptalwidth = 1600\n       // totalheight = 730\n       // Large Computer\n       // width = 1757 (0.82)\n       // height = 820 (0.78)\n       // totalwidth = 2133\n       // totalheight = 1047\n      // const d3 = require(\"d3\");\n       //console.log(\"methodstop width height\");\n       //console.log(d3.select(\"#methodstop\"));\n       //console.log(d3.select(\"#methodstop\").node().getBoundingClientRect());\n\n    }\n    componentWillReceiveProps(nextProps : IProps) {\n        //let { datarun } = nextProps;\n        //let usedMethods = Object.keys(datarun);\n        if(this.state.loading==false){\n           /* this.setState({\n                configsMethod:usedMethods\n            });*/\n            this.getCurrentConfigs();\n        }\n    }\n    onCheckBoxChange=(e : any)=>{\n        let checked = e.target.checked;\n        let value = e.target.value;\n        if(checked==false){\n            let configsMethod : string[] = this.state.configsMethod;\n            let index = configsMethod.indexOf(value);\n            if(index>-1){\n                configsMethod.splice(index, 1);\n                this.setState({\n                    configsMethod:configsMethod\n                });\n\n            }\n        }else{\n            let configsMethod : string[] = this.state.configsMethod;\n            configsMethod.push(value);\n            this.setState({\n                configsMethod:configsMethod\n            });\n\n\n        }\n    }\n\n\n    createNewDataRun = () => {\n        // get configs from server ;\n        // submit configs in this view\n        // switch to the new datarun.\n        let methods = this.state.configsMethod;\n        let budget = this.state.configsBudget;\n        if(this.props.datasetID!=null){\n            let promise: Promise<IConfigsInfo>;\n            promise = getConfigs();\n            promise\n                .then(configs => {\n                    configs.methods = methods;\n                    configs.budget = budget;\n                    this.setState({ loading: true });\n                    let datasetID : number= this.props.datasetID?this.props.datasetID:0;\n                    let promise:Promise<INewDatarunResponse> = postNewDatarun(datasetID,configs);\n                    //const promise = this.props.onSubmit(this.state.configs);\n                    console.log(\"post new data run in methods view\");\n                    console.log(configs);\n                    promise.then(status => {\n                        if(status.success == true){\n                            message.success(\"Submit Configs Successfully. Datarun ID:\"+status.id);\n                            this.props.setDatarunID(status.id);\n                        }else{\n                            message.error(\"Submit Configs Failed.\");\n                        }\n                        this.setState({ loading: false });\n                    }).catch(error=>{\n                        console.log(error);\n                        message.error(\"Submit Configs Failed.\");\n                        this.setState({ loading: false});\n\n                    });\n                })\n                .catch(error => {\n                    console.log(error);\n                });\n                }\n       }\n       getCurrentConfigs = () =>{\n        if(this.props.datarunID!=null){\n            let promise: Promise<IConfigsInfo>;\n            let datarunID : number= this.props.datarunID?this.props.datarunID:0;\n            promise = getDatarunConfigs(datarunID);\n            promise.then(configs=>{\n                this.setState({\n                    configsMethod:configs.methods,\n                    configsBudget:configs.budget\n                })\n            })\n        }\n       }\n       updateCurrentDataRun = () => {\n        // get configs from server ;\n        // submit configs in this view\n        // switch to the new datarun.\n        let methods = this.state.configsMethod;\n        let budget = this.state.configsBudget;\n        if(this.props.datarunID!=null){\n            let promise: Promise<IConfigsInfo>;\n            let datarunID : number= this.props.datarunID?this.props.datarunID:0;\n            promise = getDatarunConfigs(datarunID);\n            promise\n                .then(configs => {\n                    configs.methods = methods;\n                    configs.budget = budget;\n                    \n                    // Workflow: \n                    // filter selected method hyperparameters.\n\n                    // normalized the value.\n                    // construct method_config. (the server will check type and automatically update the configs in the list.)\n                    // submit.\n                    \n                    //let methods_configs:any = {};\n                    //methods_configs[\"knn\"] = {\n                    //    \"n_neighbors\":{\n                    //        \"type\" : \"int\",\n                    //        \"range\" : [8,10]\n                    //    }\n                    // }\n                    \n                    this.setState({ loading: true });\n\n                    let submitconfigs : IUpdateDatarunConfig = {};\n                    submitconfigs.configs = configs;\n                    if(this.state.mode==2&&this.state.selectedHyperpartitionName!=\"\"){\n                        submitconfigs.hyperpartitions=[this.state.selectedHyperpartitionId];\n                    }\n                    //submitconfigs.method_configs = methods_configs;\n                    let promise:Promise<ICommonResponse> = updateDatarunConfigs(datarunID,submitconfigs);\n                    //const promise = this.props.onSubmit(this.state.configs);\n                    console.log(\"update data run in methods view\");\n                    console.log(configs);\n                    //console.log(this.state.hyperparametersRangeAlreadySelected);\n                    \n                    promise.then(status => {\n                        if(status.success == true){\n                            message.success(\"Update Configs Successfully.\");\n                        }else{\n                            message.error(\"Update Configs Failed.\");\n                        }\n                        this.setState({ loading: false });\n                    }).catch(error=>{\n                        console.log(error);\n                        message.error(\"Update Configs Failed.\");\n                        this.setState({ loading: false});\n\n                    });\n                })\n                .catch(error => {\n                    console.log(error);\n                });\n                }\n       }\n       onBudgetChange = (budget : any) =>{\n\n        this.setState({configsBudget:budget});\n      }\n\n      onBrushSelected = (methodname:string, hpaName: string,range:number[])=>{\n         let {hyperparametersRangeAlreadySelected} = this.state;\n         let update : boolean = false;\n         if(!hyperparametersRangeAlreadySelected[methodname]){\n            hyperparametersRangeAlreadySelected[methodname]={};\n         }\n         if(hyperparametersRangeAlreadySelected[methodname][hpaName]){\n            if(hyperparametersRangeAlreadySelected[methodname][hpaName][0]==range[0]&&hyperparametersRangeAlreadySelected[methodname][hpaName][1]==range[1]){\n                // nothing\n            }else{\n                update = true;\n            }\n         }else{\n             if(range.length>0){\n                 update = true;\n\n            }\n         }\n         if(update){\n            hyperparametersRangeAlreadySelected[methodname][hpaName]=range;\n\n            this.setState({\n                hyperparametersRangeSelectedName : hpaName,\n                hyperparametersRangeSelected : range,\n                hyperparametersRangeAlreadySelected : hyperparametersRangeAlreadySelected\n            })\n         }\n\n      }\n    public render() {\n        // const methodLen = Object.keys(methodsDef).length\n        let { datarun, height } = this.props;\n        let {mode,selectedHyperpartitionName,hyperparametersRangeAlreadySelected} = this.state;\n        let selectedMethodName:string[] = this.state.selectedMethodName;\n        let usedMethods: string[] = Object.keys(datarun);\n        let totallen = 0;\n        //  Width and height constant\n        const d3 = require(\"d3\");\n        let bodyAttr = d3.select(\"body\").node().getBoundingClientRect();\n        let topheight = (bodyAttr.height-10) * 0.75;\n\n        let topwidth = bodyAttr.width * 0.80;\n        let methodnumber =  Object.keys(methodsDef).length;\n        // Default Attr:\n        let methodBoxAttr = {width : 70,height:70,gap:15,x:2,y:30,checkboxY:2,checkboxWidth:75,checkboxHeight:30};\n        let HeatmapAttr ={topgap:100,height:73};\n        let DetailChartAttr = {left:20+5,width:150,topgap:30,top:12,horizontalgap:10,height:175,extraheight:45,extray:8};\n\n        // ------------ Detail Layout Coordinates Calculation -------------------------//\n        let hratio = 0.18;\n        if(topheight*hratio>methodBoxAttr.height+methodBoxAttr.y){\n            methodBoxAttr.height=topheight*hratio - methodBoxAttr.y;\n            methodBoxAttr.width=topheight*hratio - methodBoxAttr.y;\n        }\n        if(topwidth<methodBoxAttr.x+methodnumber*(methodBoxAttr.width+methodBoxAttr.gap)){\n            methodBoxAttr.width = (topwidth-methodBoxAttr.x)/methodnumber-methodBoxAttr.gap;\n            if(methodBoxAttr.width<70){\n                methodBoxAttr.width=70;\n            }\n            methodBoxAttr.height = methodBoxAttr.width;\n        }\n        let methodBoxHeight = methodBoxAttr.height+methodBoxAttr.gap+methodBoxAttr.y;\n        hratio = 0.35;\n        if(topheight*hratio>methodBoxHeight+10){\n            HeatmapAttr.topgap = topheight*hratio - (methodBoxHeight);\n        }\n        hratio = 0.50;\n        if(topheight*hratio>methodBoxHeight+HeatmapAttr.topgap+73){\n            HeatmapAttr.height = topheight*hratio - (methodBoxHeight+HeatmapAttr.topgap);\n        }\n        let HeatmapBottomY = methodBoxHeight+HeatmapAttr.topgap+HeatmapAttr.height;\n\n        if(topheight>HeatmapBottomY+DetailChartAttr.topgap+DetailChartAttr.top+DetailChartAttr.height+DetailChartAttr.extraheight){\n            DetailChartAttr.height = topheight - (HeatmapBottomY+DetailChartAttr.topgap+DetailChartAttr.top+DetailChartAttr.extraheight);\n        }\n        // ------------ End Detail Layout Coordinates Calculation -------------------------//\n\n        // ------------ Data preprocessing  ----------------------------------------------//\n\n        let hpid2hp : any = {};\n        this.props.hyperpartitions.forEach((data:IHyperpartitionInfo)=>{\n            hpid2hp[data.id]=data;\n        });\n\n\n\n\n        usedMethods.forEach((name: string, i: number)=>{\n            const classifier_num = datarun[name].length;\n            totallen+=classifier_num;\n        })\n        let hyperpartitionData : IDatarun= {};\n        let hyperpartition2Method : {[hyperpartition:string]:string}= {};\n        let Method2hyperpartition : {[method:string]:string[]} = {};\n        let hyperpartition2hpid : {[hyperpartition:string]:number}= {};\n        usedMethods.forEach((name: string, i: number) => {\n            const methodDef = methodsDef[name];\n            const classifiers = datarun[name];\n            let parameterList: any[] = [];\n            let idx = 0;\n            methodDef.root_hyperparameters.forEach((p: string) => {\n                let parameter = methodDef['hyperparameters'][p]\n                if (parameter['values']) { //category axis\n                    parameterList.push({ dim: idx, name: p, type: 'category', data: parameter['values'] })\n                }\n            })\n            classifiers.forEach(((classifier: IClassifier, idx: number) => {\n                let par_dict = {}\n                let parameters = classifier['parameters'].split('; ')\n                parameters = parameters.map((p: string) => {\n                    let [k, v] = p.split(' = ')\n                    return par_dict[k] = v\n                })\n                // for the hidden layer sizes in MLP\n\n                if (par_dict['len(hidden_layer_sizes)']) {\n                    for (let i = parseInt(par_dict['len(hidden_layer_sizes)']); i < 3; i++) {\n                        par_dict[`hidden_layer_sizes[${i}]`] = 0\n                    }\n                }\n\n                // add perforamce\n                par_dict['performance'] = parseFloat(classifier['performance'].split(' +- '))\n                let ScatterPlotCategory : any[] = [methodDef.fullname];\n                parameterList.forEach(p => {\n                    let value = par_dict[p.name]\n                    if (p.type == 'category') {\n                        ScatterPlotCategory.push(p.name+\":\"+value);\n                    }\n                });\n                let HyperpartitionName = ScatterPlotCategory.join(\"\\n\");\n                if(!Method2hyperpartition[name]){\n                    Method2hyperpartition[name]=[];\n                }\n                if(!hyperpartitionData[HyperpartitionName]){\n                    hyperpartitionData[HyperpartitionName] = [];\n                    Method2hyperpartition[name].push(HyperpartitionName);\n                }\n                hyperpartitionData[HyperpartitionName].push(classifier);\n                hyperpartition2Method[HyperpartitionName] = name;\n                if(hyperpartition2hpid[HyperpartitionName]){\n                    if( hyperpartition2hpid[HyperpartitionName] !== parseInt(classifier[\"hyperpartitionID\"])){\n                        console.log(\"inconsistent id mapping\" + HyperpartitionName);\n                    }\n                }\n                hyperpartition2hpid[HyperpartitionName] = parseInt(classifier[\"hyperpartitionID\"]);\n            }\n            ));\n        });\n        //console.log(\"id mapping\");\n        //console.log(hyperpartition2hpid);\n        // ------------ Data preprocessing  End----------------------------------------------//\n\n        // ------------- Mode selection checked ----------------------------------------------//\n        //let usedHyperpartitions: string[] = Object.keys(hyperpartitionData);\n        if(mode==1||mode==2){\n            //is method name exist?\n            let flag = 0;\n            let len = selectedMethodName.length;\n            for(let i = 0;i<len;i++){\n                const methodDef = methodsDef[selectedMethodName[i]];\n                if(!methodDef||!Method2hyperpartition[selectedMethodName[i]]){\n                    flag= 1;\n                    break;\n                }\n            }\n            if(len==0){\n                flag=1;\n            }\n            if(flag){\n                mode=0;\n                selectedHyperpartitionName=\"\";\n                selectedMethodName=[];\n                console.log(\"roll back\");\n                this.setState({\n                    mode : 0,\n                    selectedMethodName:[],\n                    selectedHyperpartitionName : \"\"\n                });\n            }\n        }\n\n\n        if(mode==2){\n            const methodDef = methodsDef[hyperpartition2Method[selectedHyperpartitionName]];\n            if(!methodDef||!hyperpartitionData[selectedHyperpartitionName]){\n                mode=0;\n                selectedHyperpartitionName=\"\";\n                selectedMethodName=[];\n                console.log(\"roll back also\");\n                this.setState({\n                    mode : 0,\n                    selectedMethodName:[],\n                    selectedHyperpartitionName : \"\"\n                });\n            }\n        }\n        // ------------- Mode selection checked end----------------------------------------------//\n\n        // const usedMethods = ['SVM', 'RF', 'DT', 'MLP',,'GP', 'LR', 'KNN'] // the used methodsDef should be obtained by requesting server the config file\n        const unusedMethods = Object.keys(methodsDef).filter((name: string) => usedMethods.indexOf(name) < 0)\n\n        let hpname :string[]= [];\n        usedMethods.forEach((name: string, i: number) =>{\n            hpname = hpname.concat(Method2hyperpartition[name]);\n        });\n        let performance = usedMethods.map((name: string, i: number) =>{\n           return {value:this.getbestperformance(datarun[name]),name:name};\n        });\n        performance.sort(function(a:any,b:any){\n            return b.value-a.value;\n        });\n        let sortedusedMethods = performance.map((d:any)=>{\n            return d.name;\n        });\n        let maxnum = 1;\n        // calculate the max num\n        sortedusedMethods.forEach((name: string, i: number)=>{\n            let num = this.getmaxnum(datarun[name]);\n            if(num>maxnum){\n                maxnum=num;\n            }\n\n        });\n\n        let generateHp = ()=>{\n            if(mode==0||mode==1||mode==2){\n                let gap = 20;\n                let nowx = 2;\n                let lastwidth = 0;\n                let hpheight = HeatmapAttr.height;\n                let hpmargin = 12;\n                let rectwidth = 5;\n                let rectheight = 5;\n                let verticalnum = Math.floor((hpheight-hpmargin)/(rectheight+1));\n\n                    // horizontalnum should be set to be Math.ceil(num/verticalnum)\n                    //let horizontalnum = Math.floor(width/(rectwidth+1));\n                let hpname :string[]= [];\n                usedMethods.forEach((name: string, i: number) =>{\n                    hpname = hpname.concat(Method2hyperpartition[name]);\n                });\n                let performance = hpname.map((name: string, i: number) =>{\n                    return {value:this.getbestperformance(hyperpartitionData[name]),name:name};\n                });\n                performance.sort(function(a:any,b:any){\n                    return b.value-a.value;\n                });\n                let sortedhpname = performance.map((d:any)=>{\n                    return d.name;\n                });\n\n                let pathgenerator:any[] = [];\n                let array = sortedhpname.map((name: string, i: number) => {\n                    let selected = selectedHyperpartitionName===name;\n                    let id = hyperpartition2hpid[name];\n                    nowx+=lastwidth;lastwidth=0;\n                    const selectedMethod = hyperpartition2Method[name];\n                    const methodDef = methodsDef[selectedMethod];\n\n                    let methodselected = selected;\n                    if(methodselected==false){\n                        const nowselectedMethod = hyperpartition2Method[selectedHyperpartitionName];\n                        if(nowselectedMethod===selectedMethod){\n                            methodselected=true;\n                        }\n                    }\n\n\n                    const hplen:number = hyperpartitionData[name].length;\n                    let horizontalnum = Math.ceil(hplen/verticalnum);\n                    let hpwidth = hpmargin + horizontalnum * (rectwidth+1);\n                    lastwidth = hpwidth+gap;\n                    let index1 = this.state.selectedMethodName.indexOf(selectedMethod);\n                    let nowy = methodBoxAttr.y+methodBoxAttr.height+methodBoxAttr.gap+HeatmapAttr.topgap;\n                    if(index1>-1){\n                        let  index0 = sortedusedMethods.indexOf(selectedMethod);\n                        if(index0>-1)\n                        {\n                            let x1 = (methodBoxAttr.x+index0*(methodBoxAttr.width+methodBoxAttr.gap))+methodBoxAttr.width/2;\n                            let y1 = methodBoxAttr.y+methodBoxAttr.height;\n                            let x2 = nowx+hpwidth/2;\n                            let y2 = nowy;\n                            pathgenerator.push({\n                                x1:x1,\n                                x2:x2,\n                                y1:y1,\n                                y2:y2,\n                                color:getColor(methodDef.name)\n                            })\n                        }\n                    }\n\n                return (<HyperpartitionHeatmap\n                    key={name+\"_used_\"+(++this.index)}\n                    x={nowx}\n                    y={nowy}\n                    width={hpwidth}\n                    height={hpheight}\n                    methodDef={methodDef}\n                    classifiers={hyperpartitionData[name]}\n                    name={\"hp\"+this.index}\n                    hpname={name}\n                    hpid={id}\n                    totallen={totallen}\n                    selected={selected}\n                    onClick={this.onHyperpartitionsOverViewClick}\n                    methodSelected={methodselected}/>);\n             });\n                let array2 = pathgenerator.map((node: any, i: number) => {\n                        let mean_y = (node.y1 + node.y2) / 2;\n                        let pathlang = \"M\"+node.x1+\",\"+node.y1+\"C\"+node.x1+\",\"+mean_y+\" \"+node.x2+\",\"+mean_y+\" \"+node.x2+\",\"+node.y2;\n                        return (<path key={\"_path_\"+(++this.index)}\n                        d={pathlang}\n                        stroke={node.color}\n                        fill=\"none\"\n                        strokeWidth={1.5} />);\n                });\n                return array.concat(array2);\n            }else{\n                return <g />\n            }\n        };\n        // end of generate Hp\n\n        let generateHpdetail = ()=>{\n            if(mode==2||mode==1){\n                console.log(\"show detail\");\n                let selectedMethod : string = \"\";\n                if(mode==1){\n                    selectedMethod  = this.state.nowselectedMethodName;\n                }else if(mode==2){\n                    selectedMethod  = hyperpartition2Method[selectedHyperpartitionName];\n                }\n                let methodDef = methodsDef[selectedMethod];\n                // methodDef['hyperparameters'][name]['type']\n                let HyperparameterList: any[] = [];\n                let idx = 0\n                let rangeMap : any ={};\n\n                let hintRangeMap : any ={};\n                // hyperparameter analysis\n                methodDef.root_hyperparameters.forEach((p: string) => {\n                    let parameter = methodDef['hyperparameters'][p]\n                    if (parameter['values']) { //category axis\n                    } else if (parameter['range']) {//value axis\n                        if (parameter['range'].length > 1) { //range in the form of [min, max]\n                            HyperparameterList.push({ dim: idx, name: p, type: 'value', min: parameter['range'][0], max: parameter['range'][1], valueType :parameter['type'] })\n                        } else { // range in the form of [max]\n                            HyperparameterList.push({ dim: idx, name: p, type: 'value', min: 0, max: parameter['range'][0] ,valueType :parameter['type']})\n                        }\n\n                    } else if (parameter['type'] == 'list') { // the hidden layer sizes in MLP\n                        for (let hidden_l = 0; hidden_l < parameter['list_length'].length; hidden_l++) {\n\n                            HyperparameterList.push({\n                                dim: idx + hidden_l, name: `${p}[${hidden_l}]`, type: 'value',\n                                min: 0,\n                                max: parameter['element']['range'][1],\n                                valueType :parameter['type']\n                            })\n                        }\n                        idx = idx + parameter['list_length'].length - 1\n\n                    } else {\n                        HyperparameterList.push({\n                            dim: idx, name: p, type: 'value',valueType :parameter['type']\n                        })\n                    }\n                })\n                // get the real range\n                HyperparameterList.map((data:any,index:number)=>{\n                    rangeMap[data.name]={min:data.min,max:data.max,valueType:data.valueType};\n                });\n                let hyperparameterData : any = {};\n                //let totallen = classifiers.length;\n                // calculate the corresponding data\n                let pushData = (classifier: IClassifier, idx: number , selected:boolean) =>{\n                    let par_dict = {}\n                    let parameters = classifier['parameters'].split('; ')\n                    parameters = parameters.map((p: string) => {\n                        let [k, v] = p.split(' = ')\n                        return par_dict[k] = v\n                    })\n                    // for the hidden layer sizes in MLP\n\n                    if (par_dict['len(hidden_layer_sizes)']) {\n                        for (let i = parseInt(par_dict['len(hidden_layer_sizes)']); i < 3; i++) {\n                            par_dict[`hidden_layer_sizes[${i}]`] = 0\n                        }\n                    }\n\n                    // add perforamce\n                    par_dict['performance'] = parseFloat(classifier['performance'].split(' +- '));\n                    let performance = parseFloat(classifier['performance'].split(' +- ')[0])\n                    //let trailID : number = classifier['trail ID'];\n                    let hpaSelect : boolean = true;\n\n                    let filterRange = hyperparametersRangeAlreadySelected[methodDef.name];\n                    if(filterRange){\n                        let filterkeys = Object.keys(filterRange);\n                        if(filterkeys.length>0){\n                            filterkeys.forEach((name:string,index:number)=>{\n                                if(hpaSelect){\n                                    // Avoid endless comparison\n                                    if(par_dict[name]){\n                                        let data = par_dict[name];\n                                        if(filterRange[name].length==2){\n                                            let hpamin = filterRange[name][0];\n                                            let hpamax = filterRange[name][1];\n\n                                            if(data<hpamin||data>hpamax){\n                                                hpaSelect = false;\n                                            }\n                                        }\n                                    }else{\n                                        hpaSelect = false;\n                                    }\n                                }\n                            });\n                        }  else{\n                            hpaSelect=false;\n                        }\n\n                    }else{\n                        hpaSelect = false;\n                    }\n                    HyperparameterList.forEach(p => {\n                        let value = par_dict[p.name]\n                        if (p.type == 'value') {\n                            if(!hyperparameterData[p.name]){\n                                hyperparameterData[p.name]=[];\n                            }\n                            let thisvalue = parseFloat(value);\n                            hyperparameterData[p.name].push({value:thisvalue,performance:performance,selected:selected});\n\n                            // calculate hint\n                            if(hpaSelect){\n                                if(!hintRangeMap[p.name]){\n                                    hintRangeMap[p.name]=[thisvalue,thisvalue];\n                                }else{\n                                    let hintmin = hintRangeMap[p.name][0];\n                                    let hintmax = hintRangeMap[p.name][1];\n                                    if(thisvalue<hintmin){\n                                        hintRangeMap[p.name][0]=thisvalue;\n                                    }\n                                    if(thisvalue>hintmax){\n                                        hintRangeMap[p.name][1] = thisvalue;\n                                    }\n                                }\n\n                            }\n                        } else {\n                            //return value;\n                        }\n                    })\n\n                }\n               // Calculate the display data.\n                Method2hyperpartition[selectedMethod].forEach((value:string,index:number)=>{\n\n                    if(value==selectedHyperpartitionName||mode==1){\n                        hyperpartitionData[value].forEach(((classifier: IClassifier, idx: number) => {\n                            pushData(classifier,idx,true);\n                        }\n                        ));\n                    }else{\n                        hyperpartitionData[value].forEach(((classifier: IClassifier, idx: number) => {\n                            pushData(classifier,idx,false);\n                        }\n                        ));\n                    }\n\n                })\n                let keys = Object.keys(hyperparameterData);\n                let nowy = methodBoxAttr.y+methodBoxAttr.height+methodBoxAttr.gap+HeatmapAttr.topgap+HeatmapAttr.height\n                +DetailChartAttr.topgap+DetailChartAttr.top;\n                let array = (keys.map((name:string,index:number)=>{\n                    let alreadySelectedRange = [];\n                    if(hyperparametersRangeAlreadySelected[methodDef.name]){\n                        if(hyperparametersRangeAlreadySelected[methodDef.name][name]){\n                            alreadySelectedRange = hyperparametersRangeAlreadySelected[methodDef.name][name];\n                        }\n                    }\n                    let nowx = methodBoxAttr.x+DetailChartAttr.left+(DetailChartAttr.width+DetailChartAttr.horizontalgap)*index;\n\n                    return (<DotBarChart x={nowx}\n                        y={nowy}\n                        width={DetailChartAttr.width}\n                        height={DetailChartAttr.height}\n                        min={rangeMap[name].min}\n                        max={rangeMap[name].max}\n                        valueType={rangeMap[name].valueType}\n                        methodDef={methodDef}\n                        classifiers={hyperparameterData[name]}\n                        hyname={name}\n                        alreadySelectedRange={alreadySelectedRange}\n                        hintRange={hintRangeMap[name]?hintRangeMap[name]:[]}\n                        onSelectedChange={this.onBrushSelected}\n                        name={\"hpd\"+(++this.index)}\n                        key={\"hpdetail\"+(++this.index)}/>)\n                }));\n                let finalwidth = DetailChartAttr.left+(DetailChartAttr.width+DetailChartAttr.horizontalgap)*(keys.length);\n\n                let array2=  (\n                    <rect key={'_rect_'+(++this.index)}\n                    x={methodBoxAttr.x}\n                    y={nowy-DetailChartAttr.extray}\n                    width={finalwidth}\n                    height={DetailChartAttr.height+DetailChartAttr.extraheight}\n                    fill=\"none\"\n                    strokeWidth={2}\n                    stroke=\"#E0D6D4\" />)\n                return array.concat(array2);\n\n            }else{\n                return <g />\n            }\n        };\n        console.log(\"render\");\n        let allmethods = sortedusedMethods.concat(unusedMethods);\n        console.log(allmethods.length);\n        /**\n         * <foreignObject key={\"submit_\"+(++this.index)} y={480} x={1100} width=\"120\" height=\"50\">\n                        <Button key={\"_button_\"+(++this.index)}>Submit</Button>\n                            </foreignObject>\n         */\n        /**\n         * {allmethods.map((name: string, i: number) => {\n\n                               //return (<text key={name+\"_text_\"+this.index} x={2+i*85+35}  y={2+20} width={70} textAnchor=\"middle\" fontFamily=\"sans-serif\" fontSize=\"20px\" fill=\"black\">{name}</text>)\n                               return (<div key={name+\"_text_\"+(++this.index)} style={{position: \"absolute\",left:(20+i*85)+\"px\",top:\"120px\"}} >\n\n                                       <Checkbox  key={name+\"_checkbox_\"+(++this.index)}  >{name}</Checkbox></div>\n\n                                  )\n                           })}\n         *\n         */\n\n\n        return (<div className=\"methods\" id=\"methodstop\" style={{height: height+'%', borderTop: \".6px solid rgba(0,0,0, 0.4)\"}}>\n            <div className=\"usedMethodContainer\"\n                    style={{ height: \"100%\", width: \"100%\" }}>\n                        <div style={{position: \"absolute\",bottom:\"10px\",right:\"50px\"}}>\n                        <h4>Budget</h4>\n                        <InputNumber min={1} value={this.state.configsBudget} style={{ width: \"130px\" }} onChange={this.onBudgetChange} />\n                        <br /><Button key={\"_button_\"+(++this.index)} loading={this.state.loading} onClick={this.updateCurrentDataRun}>Update</Button>\n                        <br /></div>\n\n                        <svg style={{ height: '100%', width: '100%' }} id=\"chart\" xmlns=\"http://www.w3.org/2000/svg\">\n\n                            <g id=\"top_container\">\n                            {allmethods.map((name: string, i: number) => {\n                               let checked = false;\n                               let configsMethod : string[] = this.state.configsMethod;\n                               if(configsMethod.indexOf(name)>-1){\n                                    checked= true;\n                            };\n                               //return (<text key={name+\"_text_\"+this.index} x={2+i*85+35}  y={2+20} width={70} textAnchor=\"middle\" fontFamily=\"sans-serif\" fontSize=\"20px\" fill=\"black\">{name}</text>)\n                               return (<foreignObject key={name+\"_text_\"+(++this.index)} x={methodBoxAttr.x+i*(methodBoxAttr.width+methodBoxAttr.gap)} y={methodBoxAttr.checkboxY} width={methodBoxAttr.checkboxWidth} height={methodBoxAttr.checkboxHeight}>\n\n                                       <Checkbox  key={name+\"_checkbox_\"+(++this.index)} checked={checked} value={name} onChange={this.onCheckBoxChange} >{name}</Checkbox></foreignObject>\n\n                                  )\n                                 /* return  <Checkbox\n                                    style={{\n                                        position:'absolute',\n                                        left:2+i*85,\n                                        top: 2,\n                                        width:75,\n                                        height:30\n                                            // transform:\"translate(\"+(2+i*85)+\",\"+(2)+\")\"\n                                    }}\n                                    key={name+\"_checkbox_\"+(++this.index)}\n                                    checked={checked} value={name} onChange={this.onCheckBoxChange}\n                                    >\n                                  {name}\n                                  </Checkbox>*/\n\n\n\n                           })}\n                            {sortedusedMethods.map((name: string, i: number) => {\n                                const methodDef = methodsDef[name];\n                                let  testin = selectedMethodName.indexOf(name);\n                                let selected = false;\n                                if (testin > -1) {\n                                    selected = true;\n                                }\n                                //const classifier_num = datarun[name].length;\n                                //const top_width = classifier_num*6+60;\n                                this.index++;\n                                return (\n                                <LineChart key={name+\"_used_\"+this.index}\n                                        x={methodBoxAttr.x+i*(methodBoxAttr.width+methodBoxAttr.gap)}\n                                        y={methodBoxAttr.y}\n                                        width={methodBoxAttr.width}\n                                        height={methodBoxAttr.height}\n                                        methodDef={methodDef}\n                                        classifiers={datarun[name]}\n                                        name={name}\n                                        totallen={maxnum}\n                                        onClick={this.onMethodsOverViewClick}\n                                        selected={selected}\n                                        />)\n\n                            })}\n                            {\n                                unusedMethods.map((name: string,i:number) => {\n                                    let index = i+sortedusedMethods.length;\n                                return (<rect key={name + '_unused'} strokeDasharray=\"5,5\" x={methodBoxAttr.x+index*(methodBoxAttr.width+methodBoxAttr.gap)} y={methodBoxAttr.y} width={methodBoxAttr.width} height={methodBoxAttr.height} fill=\"white\" strokeWidth={2} stroke=\"#E0D6D4\" />)})\n\n                            }\n                            {generateHp()}\n                            {generateHpdetail()}\n                            </g>\n                         </svg>\n                    </div>\n                </div>)\n\n\n    }\n}\n/////////////////////////////////////////////////////////////////////////////////////////////////////////\n//  The main component presented above.\n//\n//\n//\n///////////////////////////////////////////////////////////////////////////////////////////////////////\nclass LineChart extends React.Component<ChartProps, {}>{\n    TAG = \"LineChart_\";\n    componentDidMount() {\n        this.renderD3();\n    }\n    renderD3() {\n        const d3 = require(\"d3\");\n        // Get Datasets\n        const { methodDef, classifiers,totallen,onClick,selected } = this.props;\n        let step = 0.1;\n        let data:number[] = [];\n\n        for (let i =0; i<=1/step; i++){\n            data.push(0)\n        }\n        let bestperformance = 0;\n        classifiers.forEach((classifier:IClassifier)=>{\n            let performance = parseFloat(classifier['performance'].split(' +- ')[0]);\n            if(performance>bestperformance){\n                bestperformance=performance;\n            }\n            let rangeIdx = Math.floor(performance/step)\n            data[rangeIdx] = data[rangeIdx]+1\n        });\n        let total = 0;\n        let bestindex = 0;\n        let frequentindex = 0;\n        let maxfrequency = 0;\n        data.forEach((d:any,i:any)=>{\n            if(d>0&&i>bestindex){\n                bestindex=i;\n            }\n            if(d>maxfrequency){\n                frequentindex=i;\n                maxfrequency=d;\n            }\n            total+=d;\n        });\n        //total;\n        let yAxisData:string[] = []\n        for (let i =0; i<=1/step; i++){\n            yAxisData.push(`${(i*step).toFixed(2)}`)\n        }\n\n        // g\n        // Set the dimensions of the canvas / graph\n        //let\tmargin = {top: 0, right: 0, bottom: 0, left: 0},\n        let\tmargin = {top: 6, right: 6, bottom: 6, left: 6},\n            width = this.props.width - margin.left - margin.right,\n            height = this.props.height - margin.top - margin.bottom,\n            top_margin = {top:this.props.y,left:this.props.x};\n\n        // Set the ranges\n        let\txScale = d3.scaleLinear().range([0, width]);\n        let\tyScale = d3.scaleLinear().range([height, 0]);\n\n\n        xScale.domain([0, totallen]);\n        yScale.domain([0, 1]);\n        //Create SVG element\n        let tooltip = d3.select(\"#tooltip\");\n        //let top_methods = d3.select(\"#methodstop\");\n\n        if(tooltip.empty()){\n            tooltip = d3.select(\"body\").append(\"div\")\n            .attr(\"class\", \"tooltip\")\n            .attr(\"id\",\"tooltip\")\n            .style(\"opacity\", 0)\n            .style(\"left\",  \"0px\")\n              .style(\"top\",  \"0px\");;\n        }\n        let top_svg = d3.select(\"#\"+this.TAG+this.props.name).attr(\"width\", width + margin.left + margin.right)\n        .attr(\"height\", height + margin.top + margin.bottom).attr(\"transform\", \"translate(\" + top_margin.left + \",\" + top_margin.top + \")\")\n        .on(\"click\",()=>{onClick(this.props.name)})\n        .on(\"mousemove\", function(d:any) {\n\n            tooltip.transition()\n              .duration(100)\n              .style(\"left\", (d3.event.pageX) + \"px\")\n              .style(\"top\", (d3.event.pageY - 28) + \"px\");\n              tooltip.style(\"opacity\", 0.7).html(methodDef.fullname+\"<br/>\"+\"best performance:\"+bestperformance.toFixed(2) + \"<br/>\" + \"trial number:\"+total)\n\n            })\n\n          .on(\"mouseout\", function(d:any) {\n            tooltip\n              .style(\"opacity\", 0);\n            });;\n        top_svg.append(\"rect\")\n        .attr(\"x\",0)\n        .attr(\"y\",0)\n        .attr(\"width\", width + margin.left + margin.right)\n        .attr(\"height\",height + margin.top + margin.bottom)\n        .attr(\"fill\",\"white\")\n        .attr(\"stroke-width\",2)\n        .attr(\"stroke\",selected?\"#A4A0A0\":\"#E0D6D4\")\n        ;\n        let svg = top_svg.append(\"g\").attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");\n\n\n        var line = d3.line()\n        .x(function(d:any, i:any) { return xScale(d); }) // set the x values for the line generator\n        .y(function(d:any,i:any) { return yScale((i)*step); }) // set the y values for the line generator\n        .curve(d3.curveMonotoneX) // apply smoothing to the line\n\n\n        function generateArray(index:number){\n            let data:any[] = [];\n            data.push({x:0,y:index*step});\n            data.push({x:totallen,y:index*step});\n            return data;\n        }\n\n        var straightline = d3.line()\n            .x(function(d:any, i:any) { return xScale(d.x); }) // set the x values for the line generator\n            .y(function(d:any,i:any) { return yScale(d.y); }) // set the y values for the line generator\n        svg.append(\"path\")\n            .datum(generateArray(bestindex))\n            .attr(\"class\", \"line\")\n            .attr(\"fill\",\"none\")\n            .attr(\"stroke\",\"#E0D6D4\")\n            .attr(\"stroke-width\",2)\n            .attr(\"stroke-dasharray\",\"5,5\")\n            .attr(\"d\", straightline);\n        svg.append(\"path\")\n            .datum(generateArray(frequentindex))\n            .attr(\"class\", \"line\")\n            .attr(\"fill\",\"none\")\n            .attr(\"stroke\",\"#E0D6D4\")\n            .attr(\"stroke-width\",2)\n            .attr(\"stroke-dasharray\",\"5,5\")\n            .attr(\"d\", straightline);\n        svg.append(\"path\")\n            .datum(data)\n            .attr(\"class\", \"line\")\n            .attr(\"fill\",\"none\")\n            .attr(\"stroke\",getColor(methodDef.name))\n            .attr(\"stroke-width\",2)\n            .attr(\"d\", line);\n      }\n    render() {\n        const {name}=this.props;\n        return <g id={this.TAG+name}/>\n    }\n}\n\n\nclass HyperpartitionHeatmap extends React.Component<HyperpartitionHeatmapProps, {}>{\n    TAG = \"HyperpartitionHeatmap_\";\n    componentDidMount() {\n        this.renderD3();\n    }\n    renderD3() {\n        const d3 = require(\"d3\");\n        // Get Datasets\n        const { methodDef, classifiers,onClick ,selected,methodSelected} = this.props;\n        let bestperformance = 0;\n        let classifierPerformance:number[]=classifiers.map((classifier:IClassifier)=>{\n            let performance = parseFloat(classifier['performance'].split(' +- ')[0]);\n            return performance;\n        });\n        classifierPerformance.sort(function(a:any,b:any){\n            return b-a;\n        });\n        if(classifierPerformance.length>0){\n            bestperformance = classifierPerformance[0];\n        }\n        let total = classifierPerformance.length;\n\n         // g\n        // Set the dimensions of the canvas / graph\n        //let\tmargin = {top: 0, right: 0, bottom: 0, left: 0},\n        let\tmargin = {top: 6, right: 6, bottom: 6, left: 6},\n            width = this.props.width - margin.left - margin.right,\n            height = this.props.height - margin.top - margin.bottom,\n            top_margin = {top:this.props.y,left:this.props.x};\n        //Create SVG element\n\n        //Create SVG element\n        let tooltip_hp = d3.select(\"#tooltip\");\n        //let top_methods = d3.select(\"#methodstop\");\n\n        if(tooltip_hp.empty()){\n            tooltip_hp = d3.select(\"body\").append(\"div\")\n            .attr(\"class\", \"tooltip\")\n            .attr(\"id\",\"tooltip\")\n            .style(\"opacity\", 0)\n            .style(\"left\",  \"0px\")\n            .style(\"top\",  \"0px\");;\n        }\n\n        let top_svg = d3.select(\"#\"+this.TAG+this.props.name).attr(\"width\", width + margin.left + margin.right)\n        .attr(\"height\", height + margin.top + margin.bottom).attr(\"transform\", \"translate(\" + top_margin.left + \",\" + top_margin.top + \")\")\n        .on(\"click\",()=>{onClick(this.props.hpname,this.props.hpid)})\n        .on(\"mousemove\", function(d:any) {\n\n            tooltip_hp.transition()\n              .duration(100)\n              .style(\"left\", (d3.event.pageX) + \"px\")\n              .style(\"top\", (d3.event.pageY - 28) + \"px\");\n              tooltip_hp.style(\"opacity\", 0.7).html(methodDef.fullname+\"<br/>\"+\"best performance:\"+bestperformance.toFixed(2) + \"<br/>\" + \"trial number:\"+total)\n\n            })\n\n          .on(\"mouseout\", function(d:any) {\n            tooltip_hp\n              .style(\"opacity\", 0);\n            });;;\n        top_svg.append(\"rect\")\n        .attr(\"x\",0)\n        .attr(\"y\",0)\n        .attr(\"width\", width + margin.left + margin.right)\n        .attr(\"height\",height + margin.top + margin.bottom)\n        .attr(\"fill\",\"white\")\n        .attr(\"stroke\",selected?\"#424242\":methodSelected?\"#B19F9B\":\"#E0D6D4\")\n        .attr(\"stroke-width\",2);\n        let svg = top_svg.append(\"g\").attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");\n\n        let rectwidth = 5;\n        let rectheight = 5;\n        //let verticalnum = Math.floor(height/(rectheight+1));\n        // horizontalnum should be set to be Math.ceil(num/verticalnum)\n        let horizontalnum = Math.floor(width/(rectwidth+1));\n\n        let groups = svg\n            .append('g')\n            .attr(\"class\", \"group\");\n        let rect_scale = 0.5;\n        let rectArray = groups.selectAll(\"g.rectArray\")\n        .data(classifierPerformance);\n        //console.log(classifierPerformance.length);\n        rectArray.enter()\n        .append(\"rect\")\n        .style(\"fill\",getColor(methodDef.name))\n        //.attr(\"fill-opacity\",function(d:any,i:any){return d*0.9+0.1;})\n        .attr(\"width\", function(d:any,i:any) {return (d*rect_scale+1-rect_scale)*rectwidth;})\n        .attr(\"height\", function(d:any,i:any){return (d*rect_scale+1-rect_scale)*rectheight;})\n        .attr(\"x\", function(d:any,i:any) {\n            let thiswidth = (d*rect_scale+1-rect_scale)*rectwidth;\n            return  (i%horizontalnum)*(rectwidth+1)+(rectwidth-thiswidth)/2.0;})\n        .attr(\"y\", function(d:any,i:any) {\n            let thisheight = (d*rect_scale+1-rect_scale)*rectheight;\n            return  Math.floor(i/horizontalnum)*(rectheight+1)-thisheight/2.0;\n        });\n\n\n\n\n    }\n\n    render() {\n        const {name}=this.props;\n        return <g id={this.TAG+name}/>\n    }\n}\n\n\nclass DotBarChart extends React.Component<DetailChartProps, {}>{\n    TAG = \"DotBarChart_\";\n    componentDidMount() {\n        this.renderD3();\n    }\n    renderD3() {\n        const d3 = require(\"d3\");\n        // Get Datasets\n\n        const { methodDef, classifiers ,min,max,alreadySelectedRange,hintRange,onSelectedChange,hyname,valueType} = this.props;\n\n        let\tmargin = {top: 0, right: 0, bottom: 20, left: 25},\n            width = this.props.width - margin.left - margin.right,\n            height = this.props.height - margin.top - margin.bottom,\n            top_margin = {top:this.props.y,left:this.props.x};\n\n        let totaltick = height/6;\n        //let step = (max-min)/totaltick;\n        let histogram:number[] = [];\n\n        for (let i =0; i<totaltick; i++){\n            histogram.push(0)\n        }\n        let displaydata:any[]=[];\n\n        console.log(\"length\");\n        console.log(classifiers.length);\n        classifiers.forEach((classifier:any)=>{\n            let opacity = classifier.selected? 0.8:0.1;\n            let data = {y:classifier.value,x:classifier.performance,opacity:opacity};\n            displaydata.push(data);\n        });\n\n        // Set the ranges\n        let xScale = d3.scaleLinear().range([0,width]);\n        xScale.domain([0,1]);\n        let\tyScale = d3.scaleLinear().range([height, 0]);\n        yScale.domain([0, 1]);\n        let yScale2 = d3.scaleLinear();\n        if(valueType==\"float_exp\"){\n            yScale2 = d3.scaleLog();\n        }\n        yScale2.range([height, 0]).domain([min, max]);\n        //let axisticks = 10;\n        let yAxis = d3.axisLeft()\n                    .scale(yScale2);\n        let xAxis = d3.axisBottom()\n        .scale(xScale)\n        .ticks(5);\n                    //.tickFormat(function (d:any) {\n                    //    console.log(\"d\"+d);\n                    //    return (min+(max-min)*d).toFixed(2);\n                    //})\n                    //.ticks(axisticks);\n\n\n        //Create SVG element\n        let top_svg = d3.select(\"#\"+this.TAG+this.props.name).attr(\"width\", width + margin.left + margin.right)\n        .attr(\"height\", height + margin.top + margin.bottom).attr(\"transform\", \"translate(\" + top_margin.left + \",\" + top_margin.top + \")\");;\n        // text label for the x axis\n        top_svg.append(\"text\")\n        .attr(\"transform\",\n                \"translate(\" + (0) + \" ,\" +\n                            (height + margin.top + 40) + \")\")\n        .style(\"text-anchor\", \"start\")\n        .text(this.props.hyname);\n        let svg = top_svg.append(\"g\").attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");\n\n        //Create Y axis\n        let g_axis = svg.append(\"g\")\n            .attr(\"transform\", \"translate(0,0)\")\n            .attr(\"class\", \"bundle-axis\")\n\n        g_axis.append(\"g\")\n        .attr(\"transform\", \"translate(0,0)\")\n        .attr(\"class\", \"y axis\").call(yAxis);\n        g_axis.append(\"g\")\n        .attr(\"transform\", \"translate(0,\"+height+\")\")\n        .attr(\"class\", \"x axis\").call(xAxis)\n        ;\n\n        function brushended() {\n            if (!d3.event.sourceEvent) return; // Only transition after input.\n            if (!d3.event.selection) return; // Ignore empty selections.\n            let d0 = d3.event.selection.map(yScale2.invert);\n            let min = d0[1];\n            let max = d0[0];\n            console.log(\"brush min max\");\n            console.log(min);\n            console.log(max);\n            onSelectedChange(methodDef.name,hyname,[min,max]);\n\n          }\n          if(hintRange.length==2){\n            g_axis.append(\"g\")\n           .append(\"rect\")\n           .attr(\"opacity\",1)\n           .attr(\"fill\",getColor(methodDef.name))\n           .attr(\"x\",-4)\n           .attr(\"y\",yScale2(hintRange[1]))\n           .attr(\"width\",4)\n           .attr(\"height\",yScale2(hintRange[0])-yScale2(hintRange[1]));\n       }\n\n\n          let brush : any;\n        let brush_g = g_axis.append(\"g\")\n        .attr(\"class\", \"brush\")\n        .call(brush = d3.brushY()\n            .extent([[-6, 0], [6, height]]));\n        if(alreadySelectedRange.length==2){\n            brush.move(brush_g,[yScale2(alreadySelectedRange[1]),yScale2(alreadySelectedRange[0])]);\n        }\n        brush.on(\"end\", brushended);\n\n        let groups = svg\n            .append('g')\n            .attr(\"class\", \"group\");\n            //.transition().call(d3.event.target.move, d1.map(x));\n        let rectArray = groups.selectAll(\"g.rectArray\")\n        .data(displaydata);\n        let rectwidth : number= 5;\n        let rectheight : number = 5;\n        rectArray.enter()\n        .append('g')\n        .attr(\"class\", \"rectArray\")\n        .append(\"rect\")\n        .style(\"fill\",getColor(methodDef.name))\n        .style(\"opacity\",function(d:any,i:any){return d.opacity;})\n        .attr(\"width\", function(d:any,i:any) {return rectwidth;})\n        .attr(\"height\",function(d:any,i:any) {return rectheight;})\n        .attr(\"x\", function(d:any,i:any) {\n            return xScale(d.x);\n        })\n        .attr(\"y\", function(d:any,i:any) {\n            return yScale2(d.y)-2.5; });\n\n      }\n    render() {\n        const {name}=this.props;\n        return <g id={this.TAG+name}/>\n    }\n}"
  },
  {
    "path": "src/components/DataRuns/MethodsLineChart_backup.css",
    "content": ".methods{\n    overflow-y: scroll;\n    padding: 10px;\n}\n\n.usedMethodContainer{\n    padding: 3px 8px;\n    float: left;\n}\n\n.method{\n    border: .4px solid rgba(0,0,0, 0.2);\n    box-shadow: 0 1px 1px 0 rgba(0,0,0,0.06);\n    /* height: ${100/methods.length}% */\n    height: 100%;\n    padding: 2px 5px;\n}\n\n.unusedMethod{\n    border: 2px dashed rgba(0,0,0, 0.3);\n    box-shadow: 0 1px 1px 0 rgba(0,0,0,0.06);\n    padding: 2px 5px;\n    margin: 5px;\n    float: left;\n}\n\ndiv.tooltip {\n    position: absolute;\n    text-align: left;\n    color: aliceblue;\n    width: 180px;\n    height: 80px;\n    padding: 10px;\n    font: 12px sans-serif;\n    background: rgba(0, 0, 0, 0.671);\n    border: 10px;\n    border-radius: 5px;\n    pointer-events: none;\n  }\n  .link {\n    fill: none;\n    stroke-width: 1.5px;\n  }\n  .bottomright {\n    position: absolute;\n    bottom: 80px;\n    right: 30px;\n    font-size: 18px;\n}"
  },
  {
    "path": "src/components/DataRuns/MethodsLineChart_backup.tsx",
    "content": "import { Button,Checkbox,message,InputNumber } from 'antd';\nimport * as React from 'react';\nimport * as methodsDef from \"../../assets/methodsDef.json\";\nimport { IMethod, IDatarun, IClassifier } from \"types\";\nimport { IConfigsInfo,INewDatarunResponse } from 'service/dataService';\nimport { getConfigs,postNewDatarun} from 'service/dataService';\n//import { IDatarun } from \"types\";\n//import { getColor ,RED,YELLOW, getGradientColor} from 'helper';\nimport { getColor } from 'helper';\nimport \"./MethodsLineChart.css\";\n//import ReactEcharts from \"echarts-for-react\";\n/*const sortSwitchStyle = {\n     position: \"absolute\" as \"absolute\",\n     top: \"5px\",\n     right: \"5px\"\n }*/\nexport interface IState {\n    mode : number,\n    selectedMethodName : string[],\n    selectedHyperpartitionName :string,\n    loading : boolean ,\n    configsMethod : string[],\n    configsBudget:number\n}\nexport interface IProps {\n    height: number,\n    datarun: IDatarun,\n    datasetID: number | null,\n    setDatarunID: (id: number) => void\n}\nexport interface ChartProps {\n    width: number,\n    height: number,\n    x: number,\n    y: number,\n    methodDef: IMethod,\n    classifiers : IClassifier[],\n    name:string,\n    totallen?:number,\n    methodName?:string,\n    onClick:(a:string)=>void,\n    selected?:boolean,\n    \n\n}\nexport interface DetailChartProps{\n    width: number,\n    height: number,\n    x: number,\n    y: number,\n    methodDef: IMethod,\n    classifiers : IClassifier[],\n    name:string,\n    min:number,\n    max:number,\n    hyname:string\n}\nexport interface HyperpartitionHeatmapProps{\n    width: number,\n    height: number,\n    x: number,\n    y: number,\n    methodDef: IMethod,\n    classifiers : IClassifier[],\n    name:string,\n    totallen?:number,\n    methodName?:string,\n    onClick:(a:string)=>void,\n    selected?:boolean,    \n    hpname:string,\n    methodSelected:boolean\n}\nexport default class MethodsLineChart extends React.Component<IProps, IState>{\n    constructor(props:IProps){\n        super(props);\n        let usedMethods:any[] = Object.keys(this.props.datarun);\n        this.state={\n            mode : 0,\n            selectedMethodName :[],\n            selectedHyperpartitionName : \"\",\n            loading:false,\n            configsMethod:usedMethods,\n            configsBudget:1000\n        };\n        \n    }\n    index = 0;\n    \n    displayMethod = [];\n    allMethods = [];\n    onMethodsOverViewClick = (Methods:string)=>{\n        // Show Methods\n        console.log(\"onclick\");\n        let selectedMethodName:string[] = this.state.selectedMethodName;\n        let  i = selectedMethodName.indexOf(Methods);\n        if (i > -1) {\n            selectedMethodName.splice(i, 1);\n            this.setState({\n                selectedMethodName : selectedMethodName\n            });\n        }else{\n            selectedMethodName.push(Methods);\n        \n            if(this.state.mode==0){\n                this.setState({\n                    mode : 1,\n                    selectedMethodName : selectedMethodName\n                });\n            }else{\n                this.setState({\n                    selectedMethodName : selectedMethodName\n                });\n            }\n        }\n\n        \n    };\n    onHyperpartitionsOverViewClick = (HyperpatitionName:string)=>{\n        //alert(\"onclick \"+HyperpatitionName);\n        this.setState({\n            mode : 2,\n            selectedHyperpartitionName : HyperpatitionName\n        });\n    };\n    public getbestperformance(list:IClassifier[]){\n        if(list.length>0){\n            let classifierPerformance:number[]=list.map((classifier:IClassifier)=>{\n                let performance = parseFloat(classifier['performance'].split(' +- ')[0]);\n                return performance;\n            });\n            classifierPerformance.sort(function(a:any,b:any){\n                return b-a;\n            });\n            return classifierPerformance[0];\n        }else{\n            return 0;\n        }\n        \n    }\n    public getmaxnum(classifiers:IClassifier[]){\n        let step = 0.1;\n        let data:number[] = [];\n        \n        for (let i =0; i<=1/step; i++){\n            data.push(0)\n        }\n        let bestperformance = 0;\n        classifiers.forEach((classifier:IClassifier)=>{\n            let performance = parseFloat(classifier['performance'].split(' +- ')[0]);\n            if(performance>bestperformance){\n                bestperformance=performance;\n            }\n            let rangeIdx = Math.floor(performance/step)\n            data[rangeIdx] = data[rangeIdx]+1\n        });\n        let maxvalue = 0;\n        data.forEach((p:any)=>{\n            if(p>maxvalue){\n                maxvalue = p;\n            }\n        })\n        return maxvalue;\n    }\n    componentDidMount(){\n        /*\n        const d3 = require(\"d3\");\n        let zoom = d3.zoom()\n        .scaleExtent([1, 10])\n        .on(\"zoom\", function(){\n            let container = d3.select(\"#top_container\");\n            //container.attr(\"transform\", \"translate(\" + d3.event.translate + \")scale(\" + d3.event.scale + \")\");\n            container.attr(\"transform\", d3.event.transform);\n        });\n        let margin = {left:0,right:0,top:0,bottom:0};\n        d3.select(\"#top_container\").attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.right + \")\").call(zoom);\n        */\n    }\n    componentWillReceiveProps(nextProps : IProps) {\n        let { datarun } = nextProps;\n        let usedMethods = Object.keys(datarun);\n        if(this.state.loading==false){\n            this.setState({\n                configsMethod:usedMethods\n            });\n        }\n    }\n    onCheckBoxChange=(e : any)=>{\n        let checked = e.target.checked;\n        let value = e.target.value;\n        if(checked==false){\n            let configsMethod : string[] = this.state.configsMethod;\n            let index = configsMethod.indexOf(value);\n            if(index>-1){\n                configsMethod.splice(index, 1);\n                this.setState({\n                    configsMethod:configsMethod\n                });\n\n            }\n        }else{\n            let configsMethod : string[] = this.state.configsMethod;\n            configsMethod.push(value);\n            this.setState({\n                configsMethod:configsMethod\n            });\n\n            \n        }\n    }\n\n    \n    createNewDataRun = () => {\n        // get configs from server ;\n        // submit configs in this view\n        // switch to the new datarun.\n        let methods = this.state.configsMethod;\n        let budget = this.state.configsBudget;\n        if(this.props.datasetID!=null){\n            let promise: Promise<IConfigsInfo>;\n            promise = getConfigs();\n            promise\n                .then(configs => {\n                    configs.methods = methods;\n                    configs.budget = budget;\n                    this.setState({ loading: true });\n                    let datasetID : number= this.props.datasetID?this.props.datasetID:0;\n                    let promise:Promise<INewDatarunResponse> = postNewDatarun(datasetID,configs);\n                    //const promise = this.props.onSubmit(this.state.configs);\n                    console.log(\"post new data run in methods view\");\n                    console.log(configs);\n                    promise.then(status => {\n                        if(status.success == true){\n                            message.success(\"Submit Configs Successfully. Datarun ID:\"+status.id);\n                            this.props.setDatarunID(status.id);\n                        }else{\n                            message.error(\"Submit Configs Failed.\");\n                        }\n                        this.setState({ loading: false });\n                    }).catch(error=>{\n                        console.log(error);\n                        message.error(\"Submit Configs Failed.\");\n                        this.setState({ loading: false});\n                \n                    });\n                })\n                .catch(error => {\n                    console.log(error);\n                });\n                }\n       }\n\n       onBudgetChange = (budget : any) =>{\n       \n        this.setState({configsBudget:budget});\n      }\n\n\n    public render() {\n        // const methodLen = Object.keys(methodsDef).length\n        let { datarun, height } = this.props;\n        let {mode,selectedHyperpartitionName} = this.state;\n        let selectedMethodName:string[] = this.state.selectedMethodName;\n        selectedHyperpartitionName;\n        let usedMethods: string[] = Object.keys(datarun);\n        let totallen = 0;\n        usedMethods.forEach((name: string, i: number)=>{\n            const classifier_num = datarun[name].length;\n            totallen+=classifier_num;\n        })\n        let hyperpartitionData : IDatarun= {};\n        let hyperpartition2Method : {[hyperpartition:string]:string}= {};\n        let Method2hyperpartition : {[method:string]:string[]} = {};\n        usedMethods.forEach((name: string, i: number) => {\n            const methodDef = methodsDef[name];\n            const classifiers = datarun[name];\n            let parameterList: any[] = [];\n            let idx = 0;\n            methodDef.root_hyperparameters.forEach((p: string) => {\n                let parameter = methodDef['hyperparameters'][p]\n                if (parameter['values']) { //category axis\n                    parameterList.push({ dim: idx, name: p, type: 'category', data: parameter['values'] })\n                }\n            })\n            classifiers.forEach(((classifier: IClassifier, idx: number) => {\n                let par_dict = {}\n                let parameters = classifier['parameters'].split('; ')\n                parameters = parameters.map((p: string) => {\n                    let [k, v] = p.split(' = ')\n                    return par_dict[k] = v\n                })\n                // for the hidden layer sizes in MLP\n    \n                if (par_dict['len(hidden_layer_sizes)']) {\n                    for (let i = parseInt(par_dict['len(hidden_layer_sizes)']); i < 3; i++) {\n                        par_dict[`hidden_layer_sizes[${i}]`] = 0\n                    }\n                }\n    \n                // add perforamce\n                par_dict['performance'] = parseFloat(classifier['performance'].split(' +- '))\n                let ScatterPlotCategory : any[] = [methodDef.fullname];\n                parameterList.forEach(p => {\n                    let value = par_dict[p.name]\n                    if (p.type == 'category') {\n                        ScatterPlotCategory.push(p.name+\":\"+value);\n                    }\n                });\n                let HyperpartitionName = ScatterPlotCategory.join(\"\\n\");\n                if(!Method2hyperpartition[name]){\n                    Method2hyperpartition[name]=[];\n                }\n                if(!hyperpartitionData[HyperpartitionName]){\n                    hyperpartitionData[HyperpartitionName] = [];\n                    Method2hyperpartition[name].push(HyperpartitionName);\n                }\n                hyperpartitionData[HyperpartitionName].push(classifier);\n                hyperpartition2Method[HyperpartitionName] = name;\n                \n                \n            }\n            )); \n        });\n\n        //let usedHyperpartitions: string[] = Object.keys(hyperpartitionData);\n        if(mode==1||mode==2){\n            //is method name exist?\n            let flag = 0;\n            let len = selectedMethodName.length;\n            for(let i = 0;i<len;i++){\n                const methodDef = methodsDef[selectedMethodName[i]];\n                if(!methodDef||!Method2hyperpartition[selectedMethodName[i]]){\n                    flag= 1;\n                    break;\n                }\n            }\n            if(len==0){\n                flag=1;\n            }\n            if(flag){\n                mode=0;\n                selectedHyperpartitionName=\"\";\n                selectedMethodName=[];\n                console.log(\"roll back\");\n                this.setState({\n                    mode : 0,\n                    selectedMethodName:[],\n                    selectedHyperpartitionName : \"\"\n                });\n            }\n        }\n        \n            \n        if(mode==2){\n            const methodDef = methodsDef[hyperpartition2Method[selectedHyperpartitionName]];\n            if(!methodDef||!hyperpartitionData[selectedHyperpartitionName]){\n                mode=0;\n                selectedHyperpartitionName=\"\";\n                selectedMethodName=[];\n                console.log(\"roll back also\");\n                this.setState({\n                    mode : 0,\n                    selectedMethodName:[],\n                    selectedHyperpartitionName : \"\"\n                });\n            }\n        }\n    \n\n        // const usedMethods = ['SVM', 'RF', 'DT', 'MLP',,'GP', 'LR', 'KNN'] // the used methodsDef should be obtained by requesting server the config file\n        const unusedMethods = Object.keys(methodsDef).filter((name: string) => usedMethods.indexOf(name) < 0)\n        \n        let hpname :string[]= [];\n        usedMethods.forEach((name: string, i: number) =>{\n            hpname = hpname.concat(Method2hyperpartition[name]);\n        });\n        let performance = usedMethods.map((name: string, i: number) =>{\n           return {value:this.getbestperformance(datarun[name]),name:name};\n        });\n        performance.sort(function(a:any,b:any){\n            return b.value-a.value;\n        });\n        let sortedusedMethods = performance.map((d:any)=>{\n            return d.name;\n        });\n        let maxnum = 1;\n        // calculate the max num\n        sortedusedMethods.forEach((name: string, i: number)=>{\n            let num = this.getmaxnum(datarun[name]);\n            if(num>maxnum){\n                maxnum=num;\n            }\n\n        });\n   \n        let generateHp = ()=>{\n            if(mode==1||mode==2){\n                let gap = 20;\n                let nowx = 2;\n                let lastwidth = 0;\n                let hpheight = 73;\n                let hpmargin = 12;\n                let rectwidth = 5;\n                let rectheight = 5;\n                let verticalnum = Math.floor((hpheight-hpmargin)/(rectheight+1));\n\n                    // horizontalnum should be set to be Math.ceil(num/verticalnum) \n                    //let horizontalnum = Math.floor(width/(rectwidth+1));\n                let hpname :string[]= [];\n                selectedMethodName.forEach((name: string, i: number) =>{\n                    hpname = hpname.concat(Method2hyperpartition[name]);\n                });\n                let performance = hpname.map((name: string, i: number) =>{\n                    return {value:this.getbestperformance(hyperpartitionData[name]),name:name};\n                });\n                performance.sort(function(a:any,b:any){\n                    return b.value-a.value;\n                });\n                let sortedhpname = performance.map((d:any)=>{\n                    return d.name;\n                });\n                \n                let pathgenerator:any[] = [];\n                let array = sortedhpname.map((name: string, i: number) => {\n                    let selected = selectedHyperpartitionName===name;\n                    \n                    nowx+=lastwidth;lastwidth=0;\n                    const selectedMethod = hyperpartition2Method[name];\n                    const methodDef = methodsDef[selectedMethod];\n\n                    let methodselected = selected;\n                    if(methodselected==false){\n                        const nowselectedMethod = hyperpartition2Method[selectedHyperpartitionName];\n                        if(nowselectedMethod===selectedMethod){\n                            methodselected=true;\n                        }\n                    }\n\n\n                    const hplen:number = hyperpartitionData[name].length;\n                    let horizontalnum = Math.ceil(hplen/verticalnum);\n                    let hpwidth = hpmargin + horizontalnum * (rectwidth+1);\n                    lastwidth = hpwidth+gap;\n                    let  index0 = sortedusedMethods.indexOf(selectedMethod);\n                    if(index0>-1)\n                    {\n                        let x1 = (2+index0*85)+35;\n                        let y1 = 100;\n                        let x2 = nowx+hpwidth/2;\n                        let y2 = 30+85+100;\n                        pathgenerator.push({\n                            x1:x1,\n                            x2:x2,\n                            y1:y1,\n                            y2:y2,\n                            color:getColor(methodDef.name)\n                        })\n                    }\n                    \n                return (<HyperpartitionHeatmap \n                    key={name+\"_used_\"+(++this.index)} \n                    x={nowx} \n                    y={30+85+100} \n                    width={hpwidth} \n                    height={hpheight} \n                    methodDef={methodDef} \n                    classifiers={hyperpartitionData[name]} \n                    name={\"hp\"+this.index} \n                    hpname={name}\n                    totallen={totallen} \n                    selected={selected}\n                    onClick={this.onHyperpartitionsOverViewClick}\n                    methodSelected={methodselected}/>);\n             });\n                let array2 = pathgenerator.map((node: any, i: number) => {\n                        let mean_y = (node.y1 + node.y2) / 2;\n                        let pathlang = \"M\"+node.x1+\",\"+node.y1+\"C\"+node.x1+\",\"+mean_y+\" \"+node.x2+\",\"+mean_y+\" \"+node.x2+\",\"+node.y2;\n                        return (<path key={\"_path_\"+(++this.index)}  \n                        d={pathlang} \n                        stroke={node.color}\n                        fill=\"none\"\n                        strokeWidth={1.5} />);\n                });\n                return array.concat(array2);\n            }else{\n                return <g />\n            }\n        };\n        // end of generate Hp \n        \n        let generateHpdetail = ()=>{\n            if(mode==2){\n                console.log(\"show detail\");\n                const selectedMethod : string = hyperpartition2Method[selectedHyperpartitionName];\n                const methodDef = methodsDef[selectedMethod];\n\n                let HyperparameterList: any[] = [];\n                let idx = 0\n                let rangeMap : any ={};\n                methodDef.root_hyperparameters.forEach((p: string) => {\n                    let parameter = methodDef['hyperparameters'][p]\n                    if (parameter['values']) { //category axis\n                    } else if (parameter['range']) {//value axis\n                        if (parameter['range'].length > 1) { //range in the form of [min, max]\n                            HyperparameterList.push({ dim: idx, name: p, type: 'value', min: parameter['range'][0], max: parameter['range'][1] })\n                        } else { // range in the form of [max]\n                            HyperparameterList.push({ dim: idx, name: p, type: 'value', min: 0, max: parameter['range'][0] })\n                        }\n        \n                    } else if (parameter['type'] == 'list') { // the hidden layer sizes in MLP\n                        for (let hidden_l = 0; hidden_l < parameter['list_length'].length; hidden_l++) {\n        \n                            HyperparameterList.push({\n                                dim: idx + hidden_l, name: `${p}[${hidden_l}]`, type: 'value',\n                                min: 0,\n                                max: parameter['element']['range'][1]\n                            })\n                        }\n                        idx = idx + parameter['list_length'].length - 1\n        \n                    } else {\n                        HyperparameterList.push({\n                            dim: idx, name: p, type: 'value'\n                        })\n                    }\n                })\n                HyperparameterList.map((data:any,index:number)=>{\n                    rangeMap[data.name]={min:data.min,max:data.max};\n                });\n                let hyperparameterData : any = {};\n                //let totallen = classifiers.length;\n                let pushData = (classifier: IClassifier, idx: number , selected:boolean) =>{\n                    let par_dict = {}\n                    let parameters = classifier['parameters'].split('; ')\n                    parameters = parameters.map((p: string) => {\n                        let [k, v] = p.split(' = ')\n                        return par_dict[k] = v\n                    })\n                    // for the hidden layer sizes in MLP\n        \n                    if (par_dict['len(hidden_layer_sizes)']) {\n                        for (let i = parseInt(par_dict['len(hidden_layer_sizes)']); i < 3; i++) {\n                            par_dict[`hidden_layer_sizes[${i}]`] = 0\n                        }\n                    }\n        \n                    // add perforamce\n                    par_dict['performance'] = parseFloat(classifier['performance'].split(' +- '));\n                    let performance = parseFloat(classifier['performance'].split(' +- ')[0])\n                    //let trailID : number = classifier['trail ID'];\n                    HyperparameterList.forEach(p => {\n                        let value = par_dict[p.name]\n                        if (p.type == 'value') {\n                            if(!hyperparameterData[p.name]){\n                                hyperparameterData[p.name]=[];\n                            }\n                            let thisvalue = parseFloat(value);\n                            hyperparameterData[p.name].push({value:thisvalue,performance:performance,selected:selected});\n                            \n                        } else {\n                            //return value;\n                        }\n                    })\n                    \n                }\n               \n                Method2hyperpartition[selectedMethod].forEach((value:string,index:number)=>{\n                    if(value!=selectedHyperpartitionName){\n                        hyperpartitionData[value].forEach(((classifier: IClassifier, idx: number) => {\n                            pushData(classifier,idx,false);\n                        }\n                        ));\n                    }else{\n                        hyperpartitionData[value].forEach(((classifier: IClassifier, idx: number) => {\n                            pushData(classifier,idx,true);\n                        }\n                        ));\n                    }\n                })\n                let keys = Object.keys(hyperparameterData);\n               \n                let array = (keys.map((name:string,index:number)=>{\n                    return (<DotBarChart x={2+5+20+160*index} \n                        y={30+5+85+100+73+30+3} \n                        width={150} \n                        height={205} \n                        min={rangeMap[name].min}\n                        max={rangeMap[name].max}\n                        methodDef={methodDef} \n                        classifiers={hyperparameterData[name]} \n                        hyname={name}\n                        name={\"hpd\"+(++this.index)} \n                        key={\"hpdetail\"+(++this.index)}/>)\n                }));\n                let finalwidth = 5+20+160*(keys.length);\n                    \n                let array2=  (<rect key={'_rect_'+(++this.index)} x={2} y={30+85+100+73+30-2} width={finalwidth} height={220} fill=\"none\" strokeWidth={2} stroke=\"#E0D6D4\" />)\n                    \n                \n                return array.concat(array2);\n                \n            }else{\n                return <g />\n            }\n        };\n        console.log(\"render\");\n        let allmethods = sortedusedMethods.concat(unusedMethods);\n        console.log(allmethods.length);\n        /**\n         * <foreignObject key={\"submit_\"+(++this.index)} y={480} x={1100} width=\"120\" height=\"50\">\n                        <Button key={\"_button_\"+(++this.index)}>Submit</Button>\n                            </foreignObject>\n         */\n        /**\n         * {allmethods.map((name: string, i: number) => {\n                               \n                               //return (<text key={name+\"_text_\"+this.index} x={2+i*85+35}  y={2+20} width={70} textAnchor=\"middle\" fontFamily=\"sans-serif\" fontSize=\"20px\" fill=\"black\">{name}</text>)\n                               return (<div key={name+\"_text_\"+(++this.index)} style={{position: \"absolute\",left:(20+i*85)+\"px\",top:\"120px\"}} >\n                                      \n                                       <Checkbox  key={name+\"_checkbox_\"+(++this.index)}  >{name}</Checkbox></div>\n                               \n                                  )\n                           })}\n         * \n         */\n        return (<div className=\"methods\" id=\"methodstop\" style={{height: height+'%', borderTop: \".6px solid rgba(0,0,0, 0.4)\"}}>\n            <div className=\"usedMethodContainer\"\n                    style={{ height: \"100%\", width: \"100%\" }}>\n                        <div style={{position: \"absolute\",bottom:\"10px\",right:\"50px\"}}>\n                        <h4>Budget</h4>\n                        <InputNumber min={1} value={this.state.configsBudget} style={{ width: \"130px\" }} onChange={this.onBudgetChange} />\n                        <br /><Button key={\"_button_\"+(++this.index)} loading={this.state.loading} onClick={this.createNewDataRun}>Create New Data Run</Button>\n                        <br /><Button key={\"_button_\"+(++this.index)}>Update Hyperparameters Range</Button></div>\n                        \n                        <svg style={{ height: '100%', width: '100%' }} id=\"chart\" xmlns=\"http://www.w3.org/2000/svg\">\n                        \n                            <g id=\"top_container\">\n                            {allmethods.map((name: string, i: number) => {\n                               let checked = false;\n                               let configsMethod : string[] = this.state.configsMethod;\n                               if(configsMethod.indexOf(name)>-1){\n                                    checked= true;\n                            };\n                               //return (<text key={name+\"_text_\"+this.index} x={2+i*85+35}  y={2+20} width={70} textAnchor=\"middle\" fontFamily=\"sans-serif\" fontSize=\"20px\" fill=\"black\">{name}</text>)\n                               return (<foreignObject key={name+\"_text_\"+(++this.index)} x={2+i*85} y={2} width={75} height={30}>\n                                      \n                                       <Checkbox  key={name+\"_checkbox_\"+(++this.index)} checked={checked} value={name} onChange={this.onCheckBoxChange} >{name}</Checkbox></foreignObject>\n                               \n                                  )\n                                 /* return  <Checkbox \n                                    style={{\n                                        position:'absolute',\n                                        left:2+i*85,\n                                        top: 2,\n                                        width:75,\n                                        height:30\n                                            // transform:\"translate(\"+(2+i*85)+\",\"+(2)+\")\"\n                                    }} \n                                    key={name+\"_checkbox_\"+(++this.index)} \n                                    checked={checked} value={name} onChange={this.onCheckBoxChange} \n                                    >\n                                  {name}\n                                  </Checkbox>*/\n\n                               \n                                  \n                           })}\n                            {sortedusedMethods.map((name: string, i: number) => {\n                                const methodDef = methodsDef[name];\n                                let  testin = selectedMethodName.indexOf(name);\n                                let selected = false;\n                                if (testin > -1) {\n                                    selected = true;\n                                }\n                                //const classifier_num = datarun[name].length;\n                                //const top_width = classifier_num*6+60;\n                                this.index++;\n                                return (\n                                <LineChart key={name+\"_used_\"+this.index} \n                                        x={2+i*85} \n                                        y={30} \n                                        width={70} \n                                        height={70} \n                                        methodDef={methodDef} \n                                        classifiers={datarun[name]} \n                                        name={name} \n                                        totallen={maxnum} \n                                        onClick={this.onMethodsOverViewClick}\n                                        selected={selected}\n                                        />)\n                                    \n                            })}\n                            {\n                                unusedMethods.map((name: string,i:number) => {\n                                    let index = i+sortedusedMethods.length;\n                                return (<rect key={name + '_unused'} strokeDasharray=\"5,5\" x={2+index*85} y={30} width={70} height={70} fill=\"white\" strokeWidth={2} stroke=\"#E0D6D4\" />)})\n                                \n                            }\n                            {generateHp()}\n                            {generateHpdetail()}\n                            </g>\n                         </svg>  \n                    </div>\n                </div>)\n    \n      \n    }\n}\n/////////////////////////////////////////////////////////////////////////////////////////////////////////\n//  The main component presented above.\n//\n//\n//\n///////////////////////////////////////////////////////////////////////////////////////////////////////\nclass LineChart extends React.Component<ChartProps, {}>{\n    TAG = \"LineChart_\";\n    componentDidMount() {\n        this.renderD3();\n    }\n    renderD3() {\n        const d3 = require(\"d3\");\n        // Get Datasets\n        const { methodDef, classifiers,totallen,onClick,selected } = this.props;\n        let step = 0.1;\n        let data:number[] = [];\n        \n        for (let i =0; i<=1/step; i++){\n            data.push(0)\n        }\n        let bestperformance = 0;\n        classifiers.forEach((classifier:IClassifier)=>{\n            let performance = parseFloat(classifier['performance'].split(' +- ')[0]);\n            if(performance>bestperformance){\n                bestperformance=performance;\n            }\n            let rangeIdx = Math.floor(performance/step)\n            data[rangeIdx] = data[rangeIdx]+1\n        });\n        let total = 0;\n        let bestindex = 0;\n        let frequentindex = 0;\n        let maxfrequency = 0;\n        data.forEach((d:any,i:any)=>{\n            if(d>0&&i>bestindex){\n                bestindex=i;\n            }\n            if(d>maxfrequency){\n                frequentindex=i;\n                maxfrequency=d;\n            }\n            total+=d;\n        });\n        //total;\n        let yAxisData:string[] = []\n        for (let i =0; i<=1/step; i++){\n            yAxisData.push(`${(i*step).toFixed(2)}`)\n        }\n        \n        // g\n        // Set the dimensions of the canvas / graph\n        //let\tmargin = {top: 0, right: 0, bottom: 0, left: 0},\n        let\tmargin = {top: 6, right: 6, bottom: 6, left: 6},\n            width = this.props.width - margin.left - margin.right,\n            height = this.props.height - margin.top - margin.bottom,\n            top_margin = {top:this.props.y,left:this.props.x};\n\n        // Set the ranges\n        let\txScale = d3.scaleLinear().range([0, width]);\n        let\tyScale = d3.scaleLinear().range([height, 0]);\n        \n\n        xScale.domain([0, totallen]);\n        yScale.domain([0, 1]);\n        //Create SVG element\n        let tooltip = d3.select(\"#tooltip\");\n        //let top_methods = d3.select(\"#methodstop\");\n\n        if(tooltip.empty()){\n            tooltip = d3.select(\"body\").append(\"div\")\n            .attr(\"class\", \"tooltip\")\n            .attr(\"id\",\"tooltip\")\n            .style(\"opacity\", 0)\n            .style(\"left\",  \"0px\")\n              .style(\"top\",  \"0px\");;\n        }\n        let top_svg = d3.select(\"#\"+this.TAG+this.props.name).attr(\"width\", width + margin.left + margin.right)\n        .attr(\"height\", height + margin.top + margin.bottom).attr(\"transform\", \"translate(\" + top_margin.left + \",\" + top_margin.top + \")\")\n        .on(\"click\",()=>{onClick(this.props.name)})\n        .on(\"mousemove\", function(d:any) {\n            \n            tooltip.transition()\n              .duration(100)\n              .style(\"left\", (d3.event.pageX) + \"px\")\n              .style(\"top\", (d3.event.pageY - 28) + \"px\");\n              tooltip.style(\"opacity\", 0.7).html(methodDef.fullname+\"<br/>\"+\"best performance:\"+bestperformance.toFixed(2) + \"<br/>\" + \"trial number:\"+total)\n             \n            })\n            \n          .on(\"mouseout\", function(d:any) {\n            tooltip\n              .style(\"opacity\", 0);\n            });;\n        top_svg.append(\"rect\")\n        .attr(\"x\",0)\n        .attr(\"y\",0)\n        .attr(\"width\", width + margin.left + margin.right)\n        .attr(\"height\",height + margin.top + margin.bottom)\n        .attr(\"fill\",\"white\")\n        .attr(\"stroke-width\",2)\n        .attr(\"stroke\",selected?\"#A4A0A0\":\"#E0D6D4\")\n        ;\n        let svg = top_svg.append(\"g\").attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");\n\n\n        var line = d3.line()\n        .x(function(d:any, i:any) { return xScale(d); }) // set the x values for the line generator\n        .y(function(d:any,i:any) { return yScale((i)*step); }) // set the y values for the line generator \n        .curve(d3.curveMonotoneX) // apply smoothing to the line\n\n\n        function generateArray(index:number){\n            let data:any[] = [];\n            data.push({x:0,y:index*step});\n            data.push({x:totallen,y:index*step});\n            return data;\n        }\n\n        var straightline = d3.line()\n            .x(function(d:any, i:any) { return xScale(d.x); }) // set the x values for the line generator\n            .y(function(d:any,i:any) { return yScale(d.y); }) // set the y values for the line generator\n        svg.append(\"path\")\n            .datum(generateArray(bestindex)) \n            .attr(\"class\", \"line\") \n            .attr(\"fill\",\"none\")\n            .attr(\"stroke\",\"#E0D6D4\")\n            .attr(\"stroke-width\",2)\n            .attr(\"stroke-dasharray\",\"5,5\")\n            .attr(\"d\", straightline); \n        svg.append(\"path\")\n            .datum(generateArray(frequentindex)) \n            .attr(\"class\", \"line\") \n            .attr(\"fill\",\"none\")\n            .attr(\"stroke\",\"#E0D6D4\")\n            .attr(\"stroke-width\",2)\n            .attr(\"stroke-dasharray\",\"5,5\")\n            .attr(\"d\", straightline); \n        svg.append(\"path\")\n            .datum(data) \n            .attr(\"class\", \"line\") \n            .attr(\"fill\",\"none\")\n            .attr(\"stroke\",getColor(methodDef.name))\n            .attr(\"stroke-width\",2)\n            .attr(\"d\", line); \n      }\n    render() {\n        const {name}=this.props;\n        return <g id={this.TAG+name}/>\n    }\n}\n\n\nclass HyperpartitionHeatmap extends React.Component<HyperpartitionHeatmapProps, {}>{\n    TAG = \"HyperpartitionHeatmap_\";\n    componentDidMount() {\n        this.renderD3();\n    }\n    renderD3() {\n        const d3 = require(\"d3\");\n        // Get Datasets\n        const { methodDef, classifiers,onClick ,selected,methodSelected} = this.props;\n        let bestperformance = 0;\n        let classifierPerformance:number[]=classifiers.map((classifier:IClassifier)=>{\n            let performance = parseFloat(classifier['performance'].split(' +- ')[0]);\n            return performance;\n        });\n        classifierPerformance.sort(function(a:any,b:any){\n            return b-a;\n        });\n        if(classifierPerformance.length>0){\n            bestperformance = classifierPerformance[0];\n        }\n        let total = classifierPerformance.length;\n\n         // g\n        // Set the dimensions of the canvas / graph\n        //let\tmargin = {top: 0, right: 0, bottom: 0, left: 0},\n        let\tmargin = {top: 6, right: 6, bottom: 6, left: 6},\n            width = this.props.width - margin.left - margin.right,\n            height = this.props.height - margin.top - margin.bottom,\n            top_margin = {top:this.props.y,left:this.props.x};\n        //Create SVG element\n\n        //Create SVG element\n        let tooltip_hp = d3.select(\"#tooltip\");\n        //let top_methods = d3.select(\"#methodstop\");\n\n        if(tooltip_hp.empty()){\n            tooltip_hp = d3.select(\"body\").append(\"div\")\n            .attr(\"class\", \"tooltip\")\n            .attr(\"id\",\"tooltip\")\n            .style(\"opacity\", 0)\n            .style(\"left\",  \"0px\")\n            .style(\"top\",  \"0px\");;\n        }\n\n        let top_svg = d3.select(\"#\"+this.TAG+this.props.name).attr(\"width\", width + margin.left + margin.right)\n        .attr(\"height\", height + margin.top + margin.bottom).attr(\"transform\", \"translate(\" + top_margin.left + \",\" + top_margin.top + \")\")\n        .on(\"click\",()=>{onClick(this.props.hpname)})\n        .on(\"mousemove\", function(d:any) {\n            \n            tooltip_hp.transition()\n              .duration(100)\n              .style(\"left\", (d3.event.pageX) + \"px\")\n              .style(\"top\", (d3.event.pageY - 28) + \"px\");\n              tooltip_hp.style(\"opacity\", 0.7).html(methodDef.fullname+\"<br/>\"+\"best performance:\"+bestperformance.toFixed(2) + \"<br/>\" + \"trial number:\"+total)\n             \n            })\n            \n          .on(\"mouseout\", function(d:any) {\n            tooltip_hp\n              .style(\"opacity\", 0);\n            });;;\n        top_svg.append(\"rect\")\n        .attr(\"x\",0)\n        .attr(\"y\",0)\n        .attr(\"width\", width + margin.left + margin.right)\n        .attr(\"height\",height + margin.top + margin.bottom)\n        .attr(\"fill\",\"white\")\n        .attr(\"stroke\",selected?\"#424242\":methodSelected?\"#B19F9B\":\"#E0D6D4\")\n        .attr(\"stroke-width\",2);\n        let svg = top_svg.append(\"g\").attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");\n        \n        let rectwidth = 5;\n        let rectheight = 5;\n        //let verticalnum = Math.floor(height/(rectheight+1));\n        // horizontalnum should be set to be Math.ceil(num/verticalnum) \n        let horizontalnum = Math.floor(width/(rectwidth+1));\n\n        let groups = svg\n            .append('g')\n            .attr(\"class\", \"group\");\n        let rect_scale = 0.5;\n        let rectArray = groups.selectAll(\"g.rectArray\")\n        .data(classifierPerformance);\n        //console.log(classifierPerformance.length);\n        rectArray.enter()\n        .append(\"rect\")\n        .style(\"fill\",getColor(methodDef.name))\n        //.attr(\"fill-opacity\",function(d:any,i:any){return d*0.9+0.1;})\n        .attr(\"width\", function(d:any,i:any) {return (d*rect_scale+1-rect_scale)*rectwidth;})\n        .attr(\"height\", function(d:any,i:any){return (d*rect_scale+1-rect_scale)*rectheight;})\n        .attr(\"x\", function(d:any,i:any) {\n            let thiswidth = (d*rect_scale+1-rect_scale)*rectwidth;\n            return  (i%horizontalnum)*(rectwidth+1)+(rectwidth-thiswidth)/2.0;})\n        .attr(\"y\", function(d:any,i:any) { \n            let thisheight = (d*rect_scale+1-rect_scale)*rectheight;\n            return  Math.floor(i/horizontalnum)*(rectheight+1)-thisheight/2.0;\n        });\n        \n            \n\n        \n    }\n\n    render() {\n        const {name}=this.props;\n        return <g id={this.TAG+name}/>\n    }\n}\n\n\nclass DotBarChart extends React.Component<DetailChartProps, {}>{\n    TAG = \"DotBarChart_\";\n    componentDidMount() {\n        this.renderD3();\n    }\n    renderD3() {\n        const d3 = require(\"d3\");\n        // Get Datasets\n\n        const { methodDef, classifiers ,min,max} = this.props;\n\n        let\tmargin = {top: 0, right: 0, bottom: 20, left: 25},\n            width = this.props.width - margin.left - margin.right,\n            height = this.props.height - margin.top - margin.bottom,\n            top_margin = {top:this.props.y,left:this.props.x};\n\n        let totaltick = height/6;\n        let step = (max-min)/totaltick;\n        let histogram:number[] = [];\n        \n        for (let i =0; i<totaltick; i++){\n            histogram.push(0)\n        }\n        let displaydata:any[]=[];\n        let markerdata:any[]=[];\n        let datacluster:any={};\n        \n        console.log(\"length\");\n        console.log(classifiers.length);\n        classifiers.forEach((classifier:any)=>{\n            // let performance = classifier.performance;\n            //let rangeIdx = Math.floor(performance/step)\n            let value = classifier.value;\n            let rangeIdx = Math.floor((value-min)/step)\n            if(rangeIdx>=totaltick){\n                rangeIdx=totaltick-1;\n            }\n            if(!datacluster[rangeIdx]){\n                datacluster[rangeIdx]=[];\n            }\n            let opacity = classifier.selected? 1:0.3;\n            datacluster[rangeIdx].push({performance:classifier.performance,opacity:opacity});\n            //let data = {idx:rangeIdx,performance:classifier.performance};\n\n            //let data = {y:(rangeIdx+0.5)*1/totaltick,x:histogram[rangeIdx],performance:classifier.performance};\n            //displaydata.push(data);\n            //histogram[rangeIdx] = histogram[rangeIdx]+1;\n            \n        });\n        let dkeys = Object.keys(datacluster);\n        let maxhorizontalnum = 19;\n        dkeys.map((value:string)=>{\n            let rangeIdx = parseInt(value);\n            datacluster[value].sort(\n                function(a:any,b:any){\n                    return b.performance-a.performance;\n                }\n            )\n            \n            datacluster[value].map((obj:any,i:number)=>{\n                //console.log(\"performance\"+performance);\n                if(i<maxhorizontalnum){\n                    let data = {y:(rangeIdx+0.5)*1/totaltick,x:i,performance:obj.performance,opacity:obj.opacity};\n                    displaydata.push(data);\n                }\n            });\n            if(datacluster[value].length>maxhorizontalnum){\n                markerdata.push({y:(rangeIdx+0.5)*1/totaltick,x:maxhorizontalnum});\n            }\n            \n            \n        })\n        // Set the ranges\n        let\tyScale = d3.scaleLinear().range([height, 0]);\n        yScale.domain([0, 1]);\n        let yScale2 = d3.scaleLinear().range([height, 0]);\n        yScale2.domain([min, max]);\n        //let axisticks = 10;\n        let yAxis = d3.axisLeft()\n                    .scale(yScale2);\n                    //.tickFormat(function (d:any) {\n                    //    console.log(\"d\"+d);\n                    //    return (min+(max-min)*d).toFixed(2);\n                    //})\n                    //.ticks(axisticks);\n\n        \n        //Create SVG element\n        let top_svg = d3.select(\"#\"+this.TAG+this.props.name).attr(\"width\", width + margin.left + margin.right)\n        .attr(\"height\", height + margin.top + margin.bottom).attr(\"transform\", \"translate(\" + top_margin.left + \",\" + top_margin.top + \")\");;\n        // text label for the x axis\n        top_svg.append(\"text\")             \n        .attr(\"transform\",\n                \"translate(\" + (0) + \" ,\" + \n                            (height + margin.top + 20) + \")\")\n        .style(\"text-anchor\", \"start\")\n        .text(this.props.hyname);\n        let svg = top_svg.append(\"g\").attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");\n\n        //Create Y axis\n        let g_axis = svg.append(\"g\")\n            .attr(\"transform\", \"translate(0,0)\")\n            .attr(\"class\", \"bundle-axis\")\n            \n        g_axis.append(\"g\")\n        .attr(\"transform\", \"translate(0,0)\")\n        .attr(\"class\", \"y axis\").call(yAxis);\n\n\n        function brushended() {\n            if (!d3.event.sourceEvent) return; // Only transition after input.\n            if (!d3.event.selection) return; // Ignore empty selections.\n            let d0 = d3.event.selection.map(yScale2.invert);\n            let min = d0[1];\n            let max = d0[0];\n            console.log(\"brush min max\");\n            console.log(min);\n            console.log(max);\n          }\n          \n\n\n        g_axis.append(\"g\")\n        .attr(\"class\", \"brush\")\n        .call(d3.brushY()\n            .extent([[-6, 0], [6, height]]).on(\"end\", brushended));\n        let groups = svg\n            .append('g')\n            .attr(\"class\", \"group\");\n\n        let rectArray = groups.selectAll(\"g.rectArray\")\n        .data(displaydata);\n        let rectwidth : number= 5;\n        let rectheight : number = 5;\n        let rect_scale = 0.5;\n        rectArray.enter()\n        .append('g')\n        .attr(\"class\", \"rectArray\")\n        .append(\"rect\")\n        .style(\"fill\",getColor(methodDef.name))\n        .style(\"opacity\",function(d:any,i:any){return d.opacity;})\n        .attr(\"width\", function(d:any,i:any) {return (d.performance*rect_scale+1-rect_scale)*rectwidth;})\n        .attr(\"height\",function(d:any,i:any) {return (d.performance*rect_scale+1-rect_scale)*rectheight;})\n        .attr(\"x\", function(d:any,i:any) {\n            let width = (d.performance*rect_scale+1-rect_scale)*rectwidth;\n            return d.x*6+rectwidth/2.0-width/2.0; \n        })\n        .attr(\"y\", function(d:any,i:any) { \n            let height = (d.performance*rect_scale+1-rect_scale)*rectheight;\n            return yScale(d.y)-2.5+rectheight/2.0-height/2.0; });\n        function generateMarkerPath(x:number,y:number,width:number,height:number){\n            let x1=x;\n            let y1=y;\n            let x2= x+width;\n            let y2 = y+height/2;\n            let x3 = x;\n            let y3 = y+height;\n            return \"M\"+x1+\" \"+y1+\" L\"+x2+\" \"+y2+\" L\"+x3+\" \"+y3+\" Z\";\n        }\n        let markerArray = groups.selectAll(\"g.marker\").data(markerdata);\n        markerArray.enter()\n        .append('g')\n        .attr(\"class\",\"marker\")\n        .append('path')\n        .attr(\"fill\",getColor(methodDef.name))\n        .attr(\"d\",function(d:any,i:any){return generateMarkerPath(d.x*6,yScale(d.y)-2.5,rectwidth,rectheight);})\n\n      }\n    render() {\n        const {name}=this.props;\n        return <g id={this.TAG+name}/>\n    }\n}"
  },
  {
    "path": "src/components/DataRuns/MethodsSearchSpace.css",
    "content": ".methods{\n    overflow-y: scroll;\n    padding: 10px;\n}\n\n.usedMethodContainer{\n    padding: 3px 8px;\n    float: left;\n}\n\n.method{\n    border: .4px solid rgba(0,0,0, 0.2);\n    box-shadow: 0 1px 1px 0 rgba(0,0,0,0.06);\n    /* height: ${100/methods.length}% */\n    height: 100%;\n    padding: 2px 5px;\n}\n\n.unusedMethod{\n    border: 2px dashed rgba(0,0,0, 0.3);\n    box-shadow: 0 1px 1px 0 rgba(0,0,0,0.06);\n    padding: 2px 5px;\n    margin: 5px;\n    float: left;\n}"
  },
  {
    "path": "src/components/DataRuns/MethodsSearchSpace.tsx",
    "content": "import { Button } from 'antd';\nimport * as React from 'react';\nimport * as methodsDef from \"../../assets/methodsDef.json\";\nimport { IMethod, IDatarun, IClassifier } from \"types\";\nimport { getColor ,RED,YELLOW, getGradientColor} from 'helper';\n//import { getColor } from 'helper';\nimport \"./MethodsSearchSpace.css\"\nimport ReactEcharts from \"echarts-for-react\";\nexport interface IState {\n}\nexport interface IProps {\n    height: number,\n    datarun: IDatarun\n}\nexport default class MethodsSearchSpace extends React.Component<IProps, IState>{\n    state={\n        mode : 0,\n        selectedHyperpartitionName : \"\"\n    };\n    onOverViewClick = (HyperpatitionName:string)=>{\n        //alert(\"onclick \"+HyperpatitionName);\n        this.setState({\n            mode : 1,\n            selectedHyperpartitionName : HyperpatitionName\n        });\n    };\n    onBackBtn = ()=>{\n        //alert(\"onclick \"+HyperpatitionName);\n        this.setState({\n            mode : 0,\n            selectedHyperpartitionName : \"\"\n        });\n    };\n    public render() {\n        // const methodLen = Object.keys(methodsDef).length\n        let { datarun, height } = this.props;\n        let { mode,selectedHyperpartitionName } = this.state;\n        let usedMethods: string[] = Object.keys(datarun);\n        let sumTrail : number = 0;\n        usedMethods.forEach((name:string)=>{\n            sumTrail+=datarun[name].length;\n        });\n        // const usedMethods = ['SVM', 'RF', 'DT', 'MLP',,'GP', 'LR', 'KNN'] // the used methodsDef should be obtained by requesting server the config file\n        const unusedMethods = Object.keys(methodsDef).filter((name: string) => usedMethods.indexOf(name) < 0)\n        let hyperpartitionData : IDatarun= {};\n        let hyperpartition2Method : {[hyperpartition:string]:string}= {};\n        usedMethods.forEach((name: string, i: number) => {\n            const methodDef = methodsDef[name];\n            const classifiers = datarun[name];\n            let parameterList: any[] = [];\n            let idx = 0;\n            methodDef.root_hyperparameters.forEach((p: string) => {\n                let parameter = methodDef['hyperparameters'][p]\n                if (parameter['values']) { //category axis\n                    parameterList.push({ dim: idx, name: p, type: 'category', data: parameter['values'] })\n                }\n            })\n            classifiers.forEach(((classifier: IClassifier, idx: number) => {\n                let par_dict = {}\n                let parameters = classifier['parameters'].split('; ')\n                parameters = parameters.map((p: string) => {\n                    let [k, v] = p.split(' = ')\n                    return par_dict[k] = v\n                })\n                // for the hidden layer sizes in MLP\n\n                if (par_dict['len(hidden_layer_sizes)']) {\n                    for (let i = parseInt(par_dict['len(hidden_layer_sizes)']); i < 3; i++) {\n                        par_dict[`hidden_layer_sizes[${i}]`] = 0\n                    }\n                }\n\n                // add perforamce\n                par_dict['performance'] = parseFloat(classifier['performance'].split(' +- '))\n                let ScatterPlotCategory : any[] = [methodDef.fullname];\n                parameterList.forEach(p => {\n                    let value = par_dict[p.name]\n                    if (p.type == 'category') {\n                        ScatterPlotCategory.push(p.name+\":\"+value);\n                    }\n                });\n                let HyperpartitionName = ScatterPlotCategory.join(\"\\n\");\n\n                if(!hyperpartitionData[HyperpartitionName]){\n                    hyperpartitionData[HyperpartitionName] = [];\n                }\n                hyperpartitionData[HyperpartitionName].push(classifier);\n                hyperpartition2Method[HyperpartitionName] = name;\n            }\n            ));\n        });\n\n        let usedHyperpartitions: string[] = Object.keys(hyperpartitionData)\n        if(mode==1){\n            const methodDef = methodsDef[hyperpartition2Method[selectedHyperpartitionName]];\n            if(!methodDef){\n                mode=0;\n                selectedHyperpartitionName=\"\";\n                this.setState({\n                    mode : 0,\n                    selectedHyperpartitionName : \"\"\n                });\n            }\n        }\n\n        /**\n         * <div key={name + '_used'} className=\"usedMethodContainer\"\n                    style={{ height: `100%`, width: '100%' }}>\n\n                    <div className=\"method\">\n                        <HyperpatitionSearchSpace hyperpartitionName={name} methodDef={methodDef} classifiers={hyperpartitionData[name]} sumTrail={sumTrail} />\n                        <HyperpatitionBarChart hyperpartitionName={name} methodDef={methodDef} classifiers={hyperpartitionData[name]} sumTrail={sumTrail} />\n                    </div>\n                </div>\n         */\n        if(mode==0){\n            return <div className=\"methods\" style={{height: height+'%', borderTop: \".6px solid rgba(0,0,0, 0.4)\"}}>\n                {usedHyperpartitions.map((name: string, i: number) => {\n                    const methodDef = methodsDef[hyperpartition2Method[name]];\n                    return <div key={name + '_used'} className=\"usedMethodContainer\"\n                        style={{ height: `33%`, width: '33%' }}>\n\n                        <div className=\"method\">\n                            <HyperpatitionOverViewBarChart hyperpartitionName={name} methodDef={methodDef} classifiers={hyperpartitionData[name]} sumTrail={sumTrail} onClick={this.onOverViewClick}/>\n                        </div>\n                    </div>\n                })}\n\n                {unusedMethods.map((name: string) => (<div key={name + '_unused'} className='unusedMethod'>{methodsDef[name]['fullname']}</div>))\n                }\n            </div>\n        }else if(mode==1){\n            const methodDef = methodsDef[hyperpartition2Method[selectedHyperpartitionName]];\n            return <div className=\"methods\" style={{height: height+'%', borderTop: \".6px solid rgba(0,0,0, 0.4)\"}}>\n                    <div key={name + '_used'} className=\"usedMethodContainer\"\n                    style={{ height: `100%`, width: '100%' }}>\n\n                    <div className=\"method\">\n                        <HyperpatitionSearchSpace hyperpartitionName={selectedHyperpartitionName} methodDef={methodDef} classifiers={hyperpartitionData[selectedHyperpartitionName]} sumTrail={sumTrail} />\n                        <HyperpatitionBarChart hyperpartitionName={selectedHyperpartitionName} methodDef={methodDef} classifiers={hyperpartitionData[selectedHyperpartitionName]} sumTrail={sumTrail} />\n                        <Button  onClick={this.onBackBtn}>Back</Button>\n\n                    </div>\n                    </div>\n                    </div>\n        }else{\n            return <div />\n        }\n\n    }\n}\n/*\nclass MethodSearchSpace extends React.Component<{ methodDef: IMethod, classifiers: IClassifier[] ,sumTrail:number}, {}>{\n\n    public render() {\n        const { methodDef, classifiers , sumTrail } = this.props;\n        // pepare data for hyperpartition search space visualization\n        // TODO: Now I split the classifier data two times. In order to improve efficiency, maybe it is necessary\n        // to split the classifier data once.\n        let parameterList: any[] = [];\n        let idx = 0;\n        methodDef.root_hyperparameters.forEach((p: string) => {\n            let parameter = methodDef['hyperparameters'][p]\n            if (parameter['values']) { //category axis\n                parameterList.push({ dim: idx, name: p, type: 'category', data: parameter['values'] })\n            }\n        })\n        let hyperpartitionData : IDatarun= {};\n        classifiers.forEach(((classifier: IClassifier, idx: number) => {\n            let par_dict = {}\n            let parameters = classifier['parameters'].split('; ')\n            parameters = parameters.map((p: string) => {\n                let [k, v] = p.split(' = ')\n                return par_dict[k] = v\n            })\n            // for the hidden layer sizes in MLP\n\n            if (par_dict['len(hidden_layer_sizes)']) {\n                for (let i = parseInt(par_dict['len(hidden_layer_sizes)']); i < 3; i++) {\n                    par_dict[`hidden_layer_sizes[${i}]`] = 0\n                }\n            }\n\n            // add perforamce\n            par_dict['performance'] = parseFloat(classifier['performance'].split(' +- '))\n            let ScatterPlotCategory : any[] = [methodDef.fullname];\n            parameterList.forEach(p => {\n                let value = par_dict[p.name]\n                if (p.type == 'category') {\n                    ScatterPlotCategory.push(p.name+\":\"+value);\n                }\n            });\n            let HyperpartitionName = ScatterPlotCategory.join(\"\\n\");\n\n            if(!hyperpartitionData[HyperpartitionName]){\n                hyperpartitionData[HyperpartitionName] = [];\n            }\n            hyperpartitionData[HyperpartitionName].push(classifier);\n        }\n        ));\n        let usedHyperpartitions: string[] = Object.keys(hyperpartitionData)\n        return <div className=\"methods\" style={{height: '100%', borderTop: \".6px solid rgba(0,0,0, 0.4)\"}}>\n            {usedHyperpartitions.map((name: string, i: number) => {\n                return <div key={name + '_used'} className=\"usedMethodContainer\"\n                    style={{ height: `100%`, width: '100%' }}>\n\n                    <div className=\"method\">\n                        <HyperpatitionSearchSpace hyperpartitionName={name} methodDef={methodDef} classifiers={hyperpartitionData[name]} sumTrail={sumTrail} />\n                        <HyperpatitionBarChart hyperpartitionName={name} methodDef={methodDef} classifiers={hyperpartitionData[name]} sumTrail={sumTrail} />\n                    </div>\n                </div>\n            })}\n\n        </div>\n\n\n    }\n\n}\n\n*/\nclass HyperpatitionSearchSpace extends React.Component<{ methodDef: IMethod, classifiers: IClassifier[], hyperpartitionName : string, sumTrail:number }, {}>{\n    PCA = require('ml-pca');\n\n    getOption() {\n        // Get Datasets\n        const { methodDef, classifiers,sumTrail } = this.props\n\n        // pepare data for parallel coordinates\n        let searchSpaceScatterPlot: any[] = [];\n        let idx = 0\n        methodDef.root_hyperparameters.forEach((p: string) => {\n            let parameter = methodDef['hyperparameters'][p]\n            if (parameter['values']) { //category axis\n            } else if (parameter['range']) {//value axis\n                if (parameter['range'].length > 1) { //range in the form of [min, max]\n                    searchSpaceScatterPlot.push({ dim: idx, name: p, type: 'value', min: parameter['range'][0], max: parameter['range'][1] })\n                } else { // range in the form of [max]\n                    searchSpaceScatterPlot.push({ dim: idx, name: p, type: 'value', min: 0, max: parameter['range'][0] })\n                }\n\n            } else if (parameter['type'] == 'list') { // the hidden layer sizes in MLP\n                for (let hidden_l = 0; hidden_l < parameter['list_length'].length; hidden_l++) {\n\n                    searchSpaceScatterPlot.push({\n                        dim: idx + hidden_l, name: `${p}[${hidden_l}]`, type: 'value',\n                        min: 0,\n                        max: parameter['element']['range'][1]\n                    })\n                }\n                idx = idx + parameter['list_length'].length - 1\n\n            } else {\n                searchSpaceScatterPlot.push({\n                    dim: idx, name: p, type: 'value'\n                })\n            }\n        })\n        let data: any[] = []\n        let classifiersData : any[] = [];\n        //let totallen = classifiers.length;\n        classifiers.forEach(((classifier: IClassifier, idx: number) => {\n\n            let par_dict = {}\n            let parameters = classifier['parameters'].split('; ')\n            parameters = parameters.map((p: string) => {\n                let [k, v] = p.split(' = ')\n                return par_dict[k] = v\n            })\n            // for the hidden layer sizes in MLP\n\n            if (par_dict['len(hidden_layer_sizes)']) {\n                for (let i = parseInt(par_dict['len(hidden_layer_sizes)']); i < 3; i++) {\n                    par_dict[`hidden_layer_sizes[${i}]`] = 0\n                }\n            }\n\n            // add perforamce\n            par_dict['performance'] = parseFloat(classifier['performance'].split(' +- '))\n            let attrs  =  searchSpaceScatterPlot.map(p => {\n                let value = par_dict[p.name]\n                if (p.type == 'value') {\n                    return parseFloat(value);\n                } else {\n                    return value;\n                }\n            })\n            data.push(attrs);\n            let performance = parseFloat(classifier['performance'].split(' +- ')[0])\n            let trailID : number = classifier['trail ID'];\n            classifiersData.push({attrs:attrs,performance:performance,label:\"trail ID:\"+trailID+\" performance:\"+performance,idx:trailID});\n        }\n        ));\n        // Get Color Gradient\n\n        //const N = totallen<2?2:totallen;\n        //const colors = getGradientColor(getColor(methodDef.name),RED,N);\n        //console.log(colors);\n\n        const N = sumTrail<2?2:sumTrail;\n        const colors = getGradientColor(YELLOW,RED,N-1);\n        // PCA\n        let scatterPlotData : any[] = [];\n        // scatterPlotData Format: x, y , performance, label, idx.\n        //console.log(data);\n        if(data.length>0 && data[0].length>0){\n            const pca = new this.PCA(data);\n\n            classifiersData.forEach(p=>{\n                let predictData = pca.predict([p.attrs])[0];\n                if(predictData.length>0){\n                    let attr : any[] = [];\n                    if(predictData.length==1){\n                        attr.push(predictData[0]);\n                        attr.push(predictData[0]);\n                    }else if(predictData.length>=2){\n                        attr.push(predictData[0]);\n                        attr.push(predictData[1]);\n                    }\n                    attr.push(p.performance);\n                    attr.push(p.label);\n                    attr.push(p.idx);\n                    scatterPlotData.push(attr);\n                }\n            });\n        }else{\n            // console.log(data);\n        }\n\n        // Visualization for pca result.\n\n\n\n\n\n        let series= [];\n        series.push({\n            data: scatterPlotData,\n            type: 'scatter',\n            symbolSize: function (data : any) {\n                return data[2]*25+1;\n            },\n            label: {\n                emphasis: {\n                    show: true,\n                    formatter: function (param : any) {\n                        return param.data[3];\n                    },\n                    position: 'top',\n                    color: 'black'\n                }\n            },\n            itemStyle: {\n                normal: {\n                    color: function(param:any){\n                        return colors[param.data[4]];\n                    },\n\n                }\n            }\n        });\n        series.push({\n\n            data: scatterPlotData,\n            type: 'line',\n            symbolSize: 0,\n            smooth:true,\n            itemStyle: {\n                normal: {\n                    color: '#F2E3E0',\n                    width:1\n                }\n            }\n\n\n        });\n        /*\n         let datalength = scatterPlotData.length;\n        for(let i = 0;i<datalength-1;i++){\n            let bundle = [];\n            bundle.push(scatterPlotData[i]);\n            bundle.push(scatterPlotData[i+1]);\n            let series2 = {\n                label:\"index\"+i,\n                data: bundle,\n                type: 'line',\n                symbolSize: 0,\n                color: colors[scatterPlotData[i][4]],\n                itemStyle: {\n                    normal: {\n                        color: colors[scatterPlotData[i][4]]\n\n                    }\n                }\n            };\n\n            series.push(series2);\n        }\n        */\n        const option = {\n            title: {\n                text: `${this.props.hyperpartitionName}: {term|${classifiers.length}}`,\n                left: '0.5%',\n                top: '0.5%',\n                textStyle: {\n                    fontSize: 15,\n                    rich: {\n                        term: {\n                            borderColor: \"black\",\n                            borderWidth: 1,\n                            borderRadius: 15,\n                            padding: 5\n                        }\n                    },\n                    color:getColor(methodDef.name)\n                }\n\n            },\n            xAxis: {\n                show:false,\n                scale:true\n            },\n            yAxis: {\n                show:false,\n                scale: true\n            },\n\n            visualMap: [\n                {\n                    left:'right',\n                    dimension: 4,\n                    min: 0,\n                    max: N-1,\n                    itemHeight: 120,\n                    calculable: true,\n                    precision: 0,\n                    text: ['latest time'],\n                    inRange: {\n                        color: [YELLOW, RED]\n                    }\n\n\n                }\n\n            ],\n\n            series: series\n        };\n        return option\n    }\n    render() {\n        return <ReactEcharts\n            option={this.getOption()}\n            style={{ height: `60%`, width: '100%' }}\n        />\n    }\n}\n\n\nclass HyperpatitionBarChart extends React.Component<{ methodDef: IMethod, classifiers: IClassifier[], hyperpartitionName : string, sumTrail:number }, {}>{\n    PCA = require('ml-pca');\n\n    getBarOption() {\n        // Get Datasets\n        const { methodDef, classifiers } = this.props;\n        let step = 0.05;\n        let data:number[] = [];\n        for (let i =0; i<1/step; i++){\n            data.push(0)\n        }\n        classifiers.forEach((classifier:IClassifier)=>{\n            let performance = parseFloat(classifier['performance'].split(' +- ')[0])\n            let rangeIdx = Math.floor(performance/step)\n            data[rangeIdx] = data[rangeIdx]+1\n        });\n        let xAxisData:string[] = []\n        for (let i =0; i<1/step; i++){\n            xAxisData.push(`${(i*step).toFixed(2)}-${((i+1)*step).toFixed(2)}`)\n        }\n\n        const option = {\n            title:{\n                text:\"performance histogram\",\n                left: '0.5%',\n                bottom: '0.5%',\n            },\n            xAxis: {\n                type: 'category',\n                data: xAxisData,\n                axisTick:{\n                    interval:0,\n                },\n                axisLabel:{\n                    rotate:-30,\n                    interval:1,\n                    fontSize: 8,\n                }\n            },\n            yAxis: {\n                type: 'value',\n            },\n\n            series:[\n                {\n                    type: 'bar',\n                    // smooth: false,\n                    barGap:'5%',\n                    barCategoryGap: \"5%\",\n                    data:data,\n                    itemStyle:{\n                        color: getColor(methodDef.name),\n                        opacity: 1\n                    },\n                }\n            ]\n        };\n        return option\n    }\n    render() {\n        return <ReactEcharts\n            option={this.getBarOption()}\n            style={{ height: `30%`, width: '40%' }}\n        />\n    }\n}\n\nclass HyperpatitionOverViewBarChart extends React.Component<{ methodDef: IMethod, classifiers: IClassifier[], hyperpartitionName : string, sumTrail:number,onClick:(name:string)=>void }, {}>{\n\n    getBarOption() {\n        // Get Datasets\n        const { methodDef, classifiers } = this.props;\n        let step = 0.05;\n        let data:number[] = [];\n        for (let i =0; i<1/step; i++){\n            data.push(0)\n        }\n        classifiers.forEach((classifier:IClassifier)=>{\n            let performance = parseFloat(classifier['performance'].split(' +- ')[0])\n            let rangeIdx = Math.floor(performance/step)\n            data[rangeIdx] = data[rangeIdx]+1\n        });\n        let xAxisData:string[] = []\n        for (let i =0; i<1/step; i++){\n            xAxisData.push(`${(i*step).toFixed(2)}-${((i+1)*step).toFixed(2)}`)\n        }\n        /*\n        const option = {\n            title: {\n                text: `${this.props.hyperpartitionName}: {term|${classifiers.length}}`,\n                left: '0.5%',\n                top: '0.5%',\n                textStyle: {\n                    fontSize: 15,\n                    rich: {\n                        term: {\n                            borderColor: \"black\",\n                            borderWidth: 1,\n                            borderRadius: 15,\n                            padding: 5\n                        }\n                    },\n                    color:getColor(methodDef.name)\n                }\n\n            },\n            xAxis: {\n                type: 'category',\n                data: xAxisData,\n                axisTick:{\n                    interval:0,\n                },\n                axisLabel:{\n                    rotate:-30,\n                    interval:1,\n                    fontSize: 8,\n                }\n            },\n            yAxis: {\n                type: 'value'\n            },\n\n            series:[\n                {\n                    type: 'bar',\n                    // smooth: false,\n                    barGap:'5%',\n                    barCategoryGap: \"5%\",\n                    data:data,\n                    itemStyle:{\n                        color: getColor(methodDef.name),\n                        opacity: 1\n                    },\n                }\n            ]\n        };\n        */\n       const option = {\n        title: {\n            text: `${this.props.hyperpartitionName}: {term|${classifiers.length}}`,\n            left: '0.5%',\n            top: '0.5%',\n            textStyle: {\n                fontSize: 15,\n                rich: {\n                    term: {\n                        borderColor: \"black\",\n                        borderWidth: 1,\n                        borderRadius: 15,\n                        padding: 5\n                    }\n                },\n                color:getColor(methodDef.name),\n                opacity: 1\n            }\n\n        },\n        xAxis: {\n            type: 'category',\n            show:false\n        },\n        yAxis: {\n            type: 'value',\n            show:false\n        },\n\n        series:[\n            {\n                type: 'bar',\n                // smooth: false,\n                data:data,\n                itemStyle:{\n                    color: \"#E0D6D4\",\n                    opacity: 0.5\n                },\n            }\n        ]\n    };\n        return option\n    }\n    onChartClick=()=>{\n        //alert('chart click' + this.props.hyperpartitionName);\n        const name = this.props.hyperpartitionName;\n        this.props.onClick(name);\n    };\n\n\n    render() {\n\n        return <div onClick={this.onChartClick} style={{ height: `100%`, width: '100%' }}>\n        <ReactEcharts\n            option={this.getBarOption()}\n            style={{ height: `140%`, width: '100%' }}\n        />\n        </div>\n    }\n}"
  },
  {
    "path": "src/components/DataRuns/ThreeLevel/HyperParameters.tsx",
    "content": "import * as React from \"react\";\nimport { IClassifierInfo } from \"service/dataService\"\nimport { getColor } from 'helper';\nimport * as methodsDef from \"assets/methodsDef.json\";\nimport {Icon,Button} from 'antd'\n\nexport interface IProps {\n    classifiers: IClassifierInfo[],\n    selectedMethod: string,\n    compareK:number,\n    onSelectedChange:(method:string,name:string,type:string,range:number[])=>void,\n    alreadySelectedRange:any,\n    mouseOverClassifier:number,\n    height:number,\n    width:number\n}\nexport interface HyperParameterInfo{\n    dim:number,\n    name:string,\n    type:string,\n    min:number,\n    max:number,\n    valueType:string\n}\nexport interface IState {\n    hiddenrow:number,\n    HyperparameterList:HyperParameterInfo[],\n    selectedClassifier:any,\n    selectedMethod:string,\n    classifiers:any,\n    mode:number,\n    visible:boolean\n}\n\nconst d3 = require(\"d3\");\n// Get Datasets\n\nexport default class HyperParameters extends React.Component<IProps, IState>{\n    index = 0;\n    state={\n        hiddenrow:0,\n        HyperparameterList:[],\n        selectedClassifier:[],\n        selectedMethod:\"\",\n        classifiers:[],\n        mode:1,\n        visible:false\n    }\n    box = {\n        width: 200,\n        height: 100,\n        margin: 50,\n        yextragap:8\n    }\n    calculateExceedRow = () =>{\n        let box = this.box;\n        let exceedRow = Math.floor((this.props.height - box.margin) /  (box.height*5/4 + box.margin)) + 0;\n        if(exceedRow<=0){\n            exceedRow = 0;\n        }           \n        return exceedRow;\n    }\n    onUpClick = ()=>{\n        let {hiddenrow} = this.state;\n        if(hiddenrow>0){\n            hiddenrow = hiddenrow -1;\n            console.log(\"change\")\n        console.log(hiddenrow);\n            this.setState({\n                hiddenrow:hiddenrow\n            })\n        }\n    }\n    onDownClick = () =>{\n        let {hiddenrow} = this.state;\n        hiddenrow = hiddenrow + 1;\n        console.log(\"change\")\n        console.log(hiddenrow);\n        this.setState({\n            hiddenrow:hiddenrow\n        })\n    }\n    componentDidMount(){\n        this.prepareData(this.props,this.state);\n    }\n    prepareData(nextProps:IProps,nextStates:IState){\n        let { classifiers, selectedMethod, compareK,alreadySelectedRange } = nextProps\n        let comparedCls = classifiers.slice(0, compareK)\n        let comparedMethods = Array.from(new Set(comparedCls.map(d=>d.method)))\n        \n        if (comparedMethods.length==1){\n            selectedMethod = comparedMethods[0]\n        }\n        classifiers = classifiers.filter(d=>d.method==selectedMethod)\n        function judgeSelect(d:IClassifierInfo){\n            let hpaSelect : boolean = true;\n            if(alreadySelectedRange){\n                let filterkeys = Object.keys(alreadySelectedRange);\n                if(filterkeys.length>0){\n                    filterkeys.forEach((name:string,index:number)=>{\n                        if(hpaSelect){\n                            // Avoid endless comparison\n                            if(d.hyperparameters[name]){\n                                let data = d.hyperparameters[name];\n                                if(alreadySelectedRange[name][\"range\"]&&alreadySelectedRange[name][\"range\"].length==2){\n                                    let hpamin = alreadySelectedRange[name][\"range\"][0];\n                                    let hpamax = alreadySelectedRange[name][\"range\"][1];\n\n                                    if(data<hpamin||data>hpamax){\n                                        hpaSelect = false;\n                                    }\n                                }\n                            }else{\n                                hpaSelect = false;\n                            }\n                        }\n                    });\n                }else{hpaSelect=true;}\n            }else{hpaSelect = true;}\n            return hpaSelect;\n        }\n        if (classifiers.length>0) {\n            let HyperparameterList: any[] = [];\n            let idx = 0\n            let methodDef = methodsDef[selectedMethod];\n            methodDef.root_hyperparameters.forEach((p: string) => {\n                let parameter = methodDef['hyperparameters'][p]\n                if (parameter['values']) { //category axis\n                } else if (parameter['range']) {//value axis\n                    if (parameter['range'].length > 1) { //range in the form of [min, max]\n                        HyperparameterList.push({ dim: idx, name: p, type: 'value', min: parameter['range'][0], max: parameter['range'][1], valueType: parameter['type'] })\n                    } else { // range in the form of [max]\n                        HyperparameterList.push({ dim: idx, name: p, type: 'value', min: 0, max: parameter['range'][0], valueType: parameter['type'] })\n                    }\n\n                } else if (parameter['type'] == 'list') { // the hidden layer sizes in MLP\n                    for (let hidden_l = 0; hidden_l < parameter['list_length'].length; hidden_l++) {\n\n                        HyperparameterList.push({\n                            dim: idx + hidden_l, name: `${p}[${hidden_l}]`, type: 'value',\n                            min: 0,\n                            max: parameter['element']['range'][1],\n                            valueType: parameter['type']\n                        })\n                    }\n                    idx = idx + parameter['list_length'].length - 1\n\n                } else {\n                    HyperparameterList.push({\n                        dim: idx, name: p, type: 'value', valueType: parameter['type']\n                    })\n                }\n            })\n            let margin = 40,\n                yextragap = 0,\n                width = ((nextProps.width - 120- margin) / (HyperparameterList.length) - margin)*4/5;\n                //height = ((nextProps.height-margin)/(HyperparameterList.length)-margin-yextragap)*4/5;\n                this.box = {\n                    width: width>150?150:width<100?100:width,\n                    height: 100,\n                    margin,\n                    yextragap\n                }\n            let selectedClassifier : IClassifierInfo[] =[];\n\n            if(compareK>0){\n                selectedClassifier = comparedCls.filter(d=>{\n                    return judgeSelect(d);\n                })\n            }else{\n                selectedClassifier = classifiers.filter(d=>{\n                    return judgeSelect(d);\n                })\n\n            }\n            \n            // button visible checked\n            let box = this.box;\n            let exceedRow = Math.floor((nextProps.height - box.margin) /  (box.height*5/4 + box.margin)) + 0;\n            if(exceedRow<=0){\n                exceedRow = 0;\n            }           \n            let maxRow = HyperparameterList.length;\n            let gap = Math.max(0,maxRow-exceedRow);\n            let newhiddenrow = Math.min(gap,nextStates.hiddenrow);\n            console.log(maxRow,exceedRow,newhiddenrow);\n\n            let visible = nextStates.visible;\n            if(gap>0){\n                visible=true;\n            }else{\n                visible=false;\n            }\n            \n            if(this.props!=nextProps || newhiddenrow!=nextStates.hiddenrow || visible!=nextStates.visible || this.state.HyperparameterList.length!=HyperparameterList.length){\n                this.setState({\n                    selectedClassifier:selectedClassifier,\n                    HyperparameterList:HyperparameterList,\n                    selectedMethod:selectedMethod,\n                    classifiers:classifiers,\n                    mode:1,\n                    hiddenrow:newhiddenrow,\n                    visible:visible,\n                    \n\n                })\n            }\n            \n        }else{\n            if(this.props!=nextProps){\n                this.setState({\n                    mode:1,\n                    visible:false,\n                    hiddenrow:0\n                })\n            }\n        }\n    }\n    shouldComponentUpdate(nextProps:IProps,nextStates:IState){\n        this.prepareData(nextProps,nextStates);\n       \n        \n        return true;\n        \n    }\n    render() {\n            let {selectedClassifier,HyperparameterList,classifiers,selectedMethod,mode,visible} = this.state;\n            visible;\n            let box = this.box;\n            \n\n            let generateButton = () =>{\n                if(false){\n                    return (<foreignObject x={box.width/2-50} y={this.props.height+20} width={100} height={35}>\n                        <div>\n                    <Button type=\"default\" size=\"small\" onClick={this.onUpClick}>\n                        <Icon type=\"up\" />\n                    </Button>\n                    <Button type=\"default\" size=\"small\" onClick={this.onDownClick} >\n                        <Icon type=\"down\"/>\n                    </Button>\n                    </div></foreignObject>\n                    )\n                }else{\n                    return <g />;\n                }\n            }\n        let exceedRow = this.calculateExceedRow();\n        exceedRow=exceedRow+this.state.hiddenrow;\n        if(mode==1){ \n            console.log(\"render hyperparameters\")\n            console.log(HyperparameterList.length)\n            return <g>\n                <g className=\"hyperParameters\">\n                {HyperparameterList.map((hp:HyperParameterInfo, i) => {\n                   // if(i>=exceedRow||i<this.state.hiddenrow){\n                   //     return <g key={selectedMethod+\"_\"+hp.name+\"_g\"+(++this.index)}/>\n                   // }else{\n                        return <HyperParameter\n                            key={selectedMethod+\"_\"+hp.name+\"_hp\"+(++this.index)}\n                            classifiers={classifiers}\n                            hp={hp}\n                            idx={i}\n                            hiddenrow={this.state.hiddenrow}\n                            \n                            box={box}\n                            selectedMethod={selectedMethod}\n                            comparedCls={selectedClassifier}\n                            onSelectedChange={this.props.onSelectedChange}\n                            alreadySelectedRange={this.props.alreadySelectedRange[hp.name]?this.props.alreadySelectedRange[hp.name]:{}}\n                            valueType={hp.valueType}\n                            mouseOverClassifier={this.props.mouseOverClassifier}\n                            />\n                    //}\n                })}\n            </g>\n            {generateButton()} \n            </g>\n        } else {\n            return <g />\n        }\n\n    }\n}\n\n\nexport interface HyProps {\n    classifiers: IClassifierInfo[],\n    selectedMethod: string,\n    hp: any,\n    idx: number,\n    comparedCls: IClassifierInfo[],\n    valueType: string,\n    box: {\n        width: number,\n        height: number,\n        margin: number,\n        yextragap : number\n    },\n    onSelectedChange:(method:string,name:string,type:string,range:number[])=>void,\n    alreadySelectedRange:any,\n    mouseOverClassifier:number,\n    hiddenrow:number\n}\n/**\n * export interface DetailChartProps{\n    width: number,\n    height: number,\n    x: number,\n    y: number,\n    methodDef: IMethod,\n    classifiers : IClassifier[],\n    name:string,\n    min:number,\n    max:number,\n    hyname:string,\n    alreadySelectedRange:number[],\n    hintRange:number[],\n    onSelectedChange:(method:string,name:string,range:number[])=>void,\n    valueType:string\n\n}\n */\n\nclass HyperParameter extends React.Component<HyProps, {}>{\n    TAG = \"HyperParameter_\";\n    componentDidMount() {\n        this.renderD3();\n        let g = d3.select(\"#\" + this.TAG + this.props.idx)\n        let {comparedCls,mouseOverClassifier} = this.props\n        g.selectAll(`circle.dot`)\n            .attr('opacity', 0.2)\n        //if(comparedCls.length>0){\n        //    g.selectAll(`circle.dot`)\n        //    .attr('opacity', 0.2)\n        //}\n        if(mouseOverClassifier==-1){\n            comparedCls.forEach(d=>{\n                g.select(`#_${d.id}`)\n                .attr('opacity', 1)\n            })\n        }else{\n            g.select(`#_${mouseOverClassifier}`)\n            .attr('opacity',1);\n        }\n    }\n    // componentWillUnmount() {\n    //     // d3.select(\"#\" + this.TAG + this.props.idx).remove()\n    // }\n    componentDidUpdate(){\n        let g = d3.select(\"#\" + this.TAG + this.props.idx)\n\n        g.selectAll('*').remove()\n        this.renderD3()\n\n        let {comparedCls,mouseOverClassifier} = this.props\n        g.selectAll(`circle.dot`)\n            .attr('opacity', 0.2)\n        //if(comparedCls.length>0){\n        //    g.selectAll(`circle.dot`)\n        //    .attr('opacity', 0.2)\n        //}\n        if(mouseOverClassifier==-1){\n            comparedCls.forEach(d=>{\n                g.select(`#_${d.id}`)\n                .attr('opacity', 1)\n            })\n        }else{\n            g.select(`#_${mouseOverClassifier}`)\n            .attr('opacity',1);\n        }\n\n    }\n    renderD3() {\n        let { box, hp, classifiers, idx, selectedMethod, onSelectedChange, alreadySelectedRange,valueType } = this.props\n        classifiers.reverse() // reverse so that good classifiers is on the top\n        let scatterData = classifiers.map(cls => {\n            return { hp: cls.hyperparameters[hp.name]||0, score: cls.cv_metric, ...cls }\n        })\n        let methodColor = getColor(selectedMethod)\n\n        let { width, height, margin, yextragap} = box\n        let x = d3.scaleLinear().range([0, width])\n        let y = d3.scaleLinear().range([height, 0]);\n        if(valueType==\"float_exp\"){\n            x = d3.scaleLog().range([0, width])\n        }\n        let yArea = d3.scaleLinear().range([height/4, 0]);\n        x.domain([hp.min, hp.max]);\n        y.domain(d3.extent(classifiers, (cls:IClassifierInfo)=>cls.cv_metric));\n\n        // calculate the area chart\n        const num_step = 20\n        let areaData: number[][] = Array.from(new Array(num_step).keys()).map(d => [])\n        const step = width / num_step\n        scatterData.forEach(d => {\n            if (typeof (d.hp) == 'number') {\n                let rangeIndex = Math.floor((x(d.hp) - 0) / step)\n\n                rangeIndex = rangeIndex >= num_step ? (num_step - 1) : rangeIndex\n                rangeIndex = rangeIndex < 0 ? 0 : rangeIndex;\n                areaData[rangeIndex].push(d.score)\n            }\n        })\n        areaData.unshift(areaData[0])\n\n        //draw\n\n        let svg = d3.select(\"#\" + this.TAG + idx)\n            .append('g')\n            .attr('transform', `translate(${120+idx * (width*5/4 + margin + yextragap)}, ${margin})`)\n\n\n        yArea.domain(d3.extent(areaData, (d: number[]) => d.length))\n\n        let area = d3.area()\n            .x(function (d: any, i: number) { return i*step; })\n            .y1(height*5/4)\n            .y0(function (d: any) { return height + yArea(d.length); })\n            .curve(d3.curveCardinal)\n\n\n        // area performance gradient\n        /*svg.append(\"linearGradient\")\n            .attr(\"id\", `area-gradient-${hp.name}`)\n            .attr(\"gradientUnits\", \"userSpaceOnUse\")\n            .attr(\"x1\", 0).attr(\"y1\", 0)\n            .attr(\"x2\", width).attr(\"y2\", 0)\n            .selectAll(\"stop\")\n            .data(areaData)\n            .enter().append(\"stop\")\n            .attr(\"offset\", (d: any, i: number) => i / num_step)\n            .attr(\"stop-color\", methodColor)\n            .attr('stop-opacity', (d: number[]) => (d.reduce((m, n) => m + n, 0) || 0) / d.length)*/\n\n        //area chart\n        svg.append('g')\n            .attr('class', 'areaGroup')\n            .selectAll('.area')\n            .data([areaData])\n            .enter()\n            .append('path')\n            .attr('class', 'area')\n            .attr('d', area)\n           // .style('fill', `url(#area-gradient-${hp.name})`)\n           .style('fill',methodColor)\n        // brush\n        function brushended() {\n            if (!d3.event.sourceEvent) return; // Only transition after input.\n            if (!d3.event.selection) return; // Ignore empty selections.\n            let d0 = d3.event.selection.map(x.invert);\n            let min = d0[0];\n            let max = d0[1];\n            console.log(\"brush min max\");\n            console.log(min);\n            console.log(max);\n            onSelectedChange(selectedMethod,hp.name,hp.valueType,[min,max]);\n\n        }\n\n\n        let brush : any;\n        let brush_g = svg.append(\"g\")\n                    .attr(\"class\", \"brush\")\n                    .call(brush = d3.brushX()\n                    .extent([[x(hp.min), height], [x(hp.max), height*5/4]]));\n        if(alreadySelectedRange[\"range\"]&&alreadySelectedRange[\"range\"].length==2){\n            brush.move(brush_g,[x(alreadySelectedRange[\"range\"][0]),x(alreadySelectedRange[\"range\"][1])]);\n        }\n        brush.on(\"end\", brushended);\n\n        //scatter chart\n        svg.append('g')\n            .attr('class', 'dotGroup')\n            .selectAll(\".dot\")\n            .data(scatterData)\n            .enter().append(\"circle\")\n            .attr(\"class\", 'dot')\n            .attr('id',(d:any)=>`_${d.id}`)\n            .attr(\"r\", 4)\n            .attr(\"cx\", function (d: any) { return x(d.hp); })\n            .attr(\"cy\", function (d: any) { return y(d.score); })\n            .style('fill', getColor(classifiers[0].method))\n            .attr('stroke', 'white')\n            .attr('stroke-width', 1)\n\n        // Add the X Axis\n        svg.append(\"g\")\n            .attr('class','xAxis')\n            .attr(\"transform\", \"translate(0,\" + height*5/4 + \")\")\n            .call(d3.axisBottom(x).ticks(5));\n        svg.append(\"g\")\n            .attr('class','xAxis_')\n            .attr(\"transform\", \"translate(0,\" + height + \")\")\n            .call(d3.axisBottom(x).ticks(0));\n\n        // x axis lable;\n       /* svg.append(\"text\")\n            .attr(\"transform\",\n                \"translate(\" + (width + 10) + \" ,\" +\n                (height*5/4) + \")\")\n            .style(\"text-anchor\", \"start\")\n            .text(hp.name);*/\n        svg.append(\"text\")\n            .attr(\"transform\",\n                \"translate(\" + (width) + \" ,\" +\n                (height*5/4 + margin*0.75) + \")\")\n            .style(\"text-anchor\", \"end\")\n            .text(hp.name);\n        // Add the Y Axis\n        svg.append(\"g\")\n            .attr('class', 'yAxis')\n            .call(d3.axisLeft(y).ticks(5));\n\n        // text label for the y axis\n        svg.append(\"text\")\n            .attr(\"transform\", \"rotate(-90)\")\n            .attr(\"y\", 0 - 1.5 * margin)\n            .attr(\"x\", 0 - (height / 2))\n            .attr(\"dy\", \"1em\")\n            .style(\"text-anchor\", \"middle\")\n            .text(\"F_score\");\n\n    }\n    render() {\n        return <g id={this.TAG + this.props.idx} />\n    }\n}"
  },
  {
    "path": "src/components/DataRuns/ThreeLevel/HyperPartitions.css",
    "content": ".RadioBox input{vertical-align:middle; margin-bottom:2px; *margin-bottom:2px;}\n\ndiv.tooltip {\n    position: absolute;\n    text-align: left;\n    color: aliceblue;\n    height: 20px;\n    padding: 3px;\n    font: 12px sans-serif;\n    background: rgba(0, 0, 0, 0.671);\n    border: 5px;\n    border-radius: 3px;\n    pointer-events: none;\n  }\n  .link {\n    fill: none;\n    stroke-width: 1.5px;\n  }\n  .bottomright {\n    position: absolute;\n    bottom: 80px;\n    right: 30px;\n    font-size: 18px;\n}\n\n.ant-progress-inner{\n  background-color: #cecdcd\n}"
  },
  {
    "path": "src/components/DataRuns/ThreeLevel/HyperPartitions.tsx",
    "content": "import * as React from \"react\";\nimport { IHyperpartitionInfo, IClassifierInfo } from \"service/dataService\"\nimport { getColor } from \"helper\";\n//import {Checkbox} from \"antd\";\nimport \"./HyperPartitions.css\";\nimport {Button,Icon} from 'antd';\n\n// import { IDatarun } from \"types\";\nconst d3 = require(\"d3\");\nexport interface IProps {\n    hyperpartitions: IHyperpartitionInfo[],\n    // datarun: IDatarun,\n    datarunID: number|null,\n    selectedMethod: string,\n    classifiers: IClassifierInfo[],\n    compareK: number,\n    hyperpartitionsSelected:number[],\n    onHpsCheckBoxChange: (e:any)=>void,\n    width:number,\n    height:number,\n    onMouseOverClassifier:(e:number)=>void,\n    mouseOverClassifier:number\n\n}\nexport interface IState {\n    hiddencol:number,\n    visible:boolean,\n    leftdisabled:boolean,\n    rightdisabled:boolean\n}\nexport default class HyperPartitions extends React.Component<IProps, IState>{\n    state={\n        hiddencol:0,\n        visible:false,\n        leftdisabled:false,\n        rightdisabled:false\n    }\n    public hyperpartitionBox = {\n        height: 20,\n        gap: 8,\n        width: 160\n    }\n    numPerRow = 14\n    index= 0;\n    lastArray:Array<any>= [];\n    onLeftHp = () =>{\n        let hiddencol = this.state.hiddencol;\n        if(hiddencol<0){\n            hiddencol = 0;\n        }else if(hiddencol>0){\n            hiddencol=hiddencol-1;\n        }\n        this.setState({\n            hiddencol:hiddencol\n        })\n    }\n    onRightHp = () =>{\n        let hiddencol = this.state.hiddencol;\n        hiddencol=hiddencol+1;\n        this.setState({\n            hiddencol:hiddencol\n        })\n    }\n    public renderD3(hpsInfo: Array<any>, maxLen: number, selectedMethod: string, hyperpartitionsSelected:any,hiddencol:number,comparedCls:any,nowProps:IProps) {\n            console.log(\"rerender hyperpartitions\");\n            /*if(this.index>=1){\n                console.log(\"end\");\n                return;\n            }else{\n                this.index++;\n            }*/\n            // let num_all_hp = hpsInfo.length\n\n            hpsInfo = hpsInfo.filter(d=>d.method==selectedMethod).filter(d => d.sortedCls.length > 0);\n            console.log(\"len\",hpsInfo.length);\n            \n            let { height, width, gap } = this.hyperpartitionBox\n\n            let trans = d3.transition()\n                    .duration(1000)\n                    .ease(d3.easeLinear);\n\n            let x = d3.scaleBand()\n                .rangeRound([0, width])\n                .paddingInner(0.05);\n\n            let y = d3.scaleLinear()\n                .rangeRound([height, 0]);\n            x.domain(Array.from(Array(maxLen).keys()))\n            y.domain([0, 1]);\n\n            let exceedrow = -1;\n            let maxrow = 0;\n            let nowrow = 0;\n            let lastposx = gap+width*0.5;\n\n            let lastposy = 3*height+gap;\n            //let verticalnum = 0;\n            //let maxverticalnum = 10;\n\n            let pos = [[lastposx, lastposy]]\n            let bundleData : any[]= [];\n            for (let i = 0; i < hpsInfo.length; i++) {\n                let currentPos = [0, 0]\n                //next pos x not changed, y changed\n                if(i!=0)lastposx = lastposx + width * 1.5;\n                currentPos = [lastposx, lastposy];\n                \n                \n                \n                if (lastposx+ width * 1.5 > nowProps.width) {\n                    lastposy = lastposy + (2 * height + gap);\n                    nowrow ++;\n                    if(lastposy + (2 * height + gap)>nowProps.height && exceedrow==-1){\n                        exceedrow = nowrow;\n                    }\n                    lastposx = gap+width*0.5;\n                    currentPos = [lastposx, lastposy]\n                }\n                pos.push(currentPos)\n                bundleData.push({\n                    ...hpsInfo[i],\n                    pos:currentPos,\n                    col:nowrow\n                })\n            }\n            maxrow = nowrow+1;\n            //console.log(\"maxcol exceedcol\");\n            //console.log(maxcol);\n            //console.log(exceedcol)\n            if(exceedrow==-1){\n                let newhiddencol = 0;\n                if(newhiddencol != hiddencol || this.state.visible!=false){\n                    this.setState({\n                        hiddencol:0,\n                        visible:false\n                    })\n                }\n                hiddencol = newhiddencol;\n            }else{\n                let leftdisabled = hiddencol<=0;\n                let rightdisabled = hiddencol>=maxrow-exceedrow;\n                let newhiddencol = hiddencol;\n                if(newhiddencol<=0){\n                    newhiddencol=0;\n                }\n                if(newhiddencol>=maxrow-exceedrow){\n                    newhiddencol=maxrow-exceedrow;\n                }\n                if(this.state.visible != true || this.state.leftdisabled != leftdisabled || this.state.rightdisabled!=rightdisabled || this.state.hiddencol!=newhiddencol){\n                    this.setState(\n                        {\n                            visible:true,\n                            leftdisabled:leftdisabled,\n                            rightdisabled:rightdisabled,\n                            hiddencol:newhiddencol\n                        }\n                    )\n                }\n                hiddencol = newhiddencol;\n                \n            }\n            if(exceedrow!=-1){\n                exceedrow=hiddencol+exceedrow;\n            }else{\n                exceedrow=maxrow+1;\n            }\n            //console.log(\"hiddencol\");\n           // console.log(hiddencol);\n            bundleData.forEach((d:any)=>{\n                if(d.col<hiddencol){\n                    d.pos[1]=d.pos[1]-2*height-gap-(2 * height + gap)*(hiddencol);\n                }else{\n                    if(d.col>=exceedrow){\n                        d.pos[1]=d.pos[1]-(2 * height + gap)*(d.col)+nowProps.height+(2 * height + gap)*(d.col-exceedrow);\n                     }else{\n                        d.pos[1]=d.pos[1]-(2 * height + gap)*(hiddencol);\n                     }\n\n                }\n            })\n            //enter\n            let strokeWidth = 1\n\n            let hps = d3\n                .select('g.HyperPartitions')\n                .selectAll(`g.hpGroup`)\n                .data(bundleData,function(d:any){\n                    return d.id;\n                })\n                console.log(hps);\n                console.log(hps.enter().size());\n                console.log(hps.size());\n                console.log(hps.exit().size());\n            //--------------Enter Phase-------------------//\n            let hpGroupEnter = hps\n                .enter()\n                .append(\"g\")\n                .attr('class', 'hpGroup')\n                .attr(\"transform\",\n                    (d: any, i: number) => {\n                        return `translate(${d.pos[0]},${d.pos[1]})`\n                    }\n                );\n            hpGroupEnter.append('rect')\n                .attr('class', \"out_hyperPartition\")\n                .attr('height', (d: any) => d.method == selectedMethod ? (height + 2 * strokeWidth) : gap)\n                .attr('y', (d: any) => d.method == selectedMethod ? (-strokeWidth - height) : (gap))\n                .attr('x', -strokeWidth)\n                .attr('width', (d: any) => d.method == selectedMethod ? (width + 2 * strokeWidth) : gap)\n                .style('fill', (d: any) => d.method == selectedMethod ? 'none' : getColor(d.method))\n                .style('stroke', 'gray')\n                .style('stroke-width', strokeWidth);\n            //ENTER + UPDATE\n            //TEXT ENTER\n            let textData = hpGroupEnter.merge(hps).filter((d: any) => d.method == selectedMethod)\n            .selectAll('g.caption')\n            .data((d:any)=>[d],(d:any)=>{\n                d.id\n            });\n            let textEnter = textData\n                    .enter()\n                    .append('g')\n                    .attr('class', 'caption')\n            textEnter.append('text')\n                .attr('class', \"num_cls\")\n                .attr('x', (d: any) => 1+width * d.sortedCls.length / maxLen - 2)\n                .attr('y', -1)\n                .text((d: any) => d.sortedCls.length)\n                .attr('text-anchor', 'start')\n\n\n            textEnter.append('text')\n                .attr('class', \"best_score\")\n                // .attr('x', (d:any)=>width*d.scores.length/maxLen)\n                .attr('x', -gap)\n                .attr('y', 0)\n                .attr('text-anchor', 'end')\n                .text((d: any) => d.bestScore >= 0 ? d.bestScore.toFixed(3) : '')\n\n                let generateText = (d:any)=>{\n                    let selected=\"\";\n                    if(hyperpartitionsSelected.indexOf(d.id)>-1){\n                        selected=\"checked\";\n                    }\n\n                    return  `<div class=\"RadioBox\"\n                        style='text-overflow: ellipsis;\n                        width: ${width}px;\n                        height: ${height}px;\n                        overflow:hidden;\n                        white-space:nowrap';\n                        padding: 0px;\n                    >\n                    <input type=\"radio\" value=\"${d.id}\" ${selected} /> <label> ${d.hyperpartition_string}</label>\n                    </div>`\n                };\n                 //Create SVG element\n                let tooltip = d3.select(\"#tooltip\");\n                //let top_methods = d3.select(\"#methodstop\");\n\n                if(tooltip.empty()){\n                    tooltip = d3.select(\"body\").append(\"div\")\n                    .attr(\"class\", \"tooltip\")\n                    .attr(\"id\",\"tooltip\")\n                    .style(\"opacity\", 0)\n                    .style(\"left\",  \"0px\")\n                    .style(\"top\",  \"0px\");;\n                }\n\n            textEnter.append('g')\n                .attr('class', 'hp_name')\n                .attr('transform', `translate(${0}, ${0})`)\n                .append('foreignObject')\n                .attr('width', width)\n                .attr('height', height)\n                .append('xhtml:div')\n                .attr('class',  'div_caption')\n                .html(generateText)\n                .on(\"click\",(d:any)=>{\n                    nowProps.onHpsCheckBoxChange(d.id);\n                }).on(\"mouseover\",(d:any)=>{\n                    let length = d.hyperpartition_string.length * 6.5 + 15;\n                    tooltip\n                    .style(\"width\",length+\"px\")\n                    .style(\"left\", (d3.event.pageX) + \"px\")\n                    .style(\"top\", (d3.event.pageY - 28) + \"px\");\n                    tooltip.style(\"opacity\", 0.7).html(d.hyperpartition_string)\n\n                })\n                .on(\"mouseout\",(d:any)=>{\n                    tooltip\n                    .style(\"opacity\", 0);\n\n                })\n\n\n\n                /*\n            return (<foreignObject\n                        key={name+\"_text_\"+i}\n                        x={ this.methodBoxAttr.x +\n                            Math.floor(i / 7)  * (this.methodBoxAttr.width + 2*this.methodBoxAttr.gap)}\n                        y={this.methodBoxAttr.y +\n                            (i % 7)* (this.methodBoxAttr.height + this.methodBoxAttr.gap) - this.methodBoxAttr.gap}\n                        width={this.methodBoxAttr.checkboxWidth}\n                        height={this.methodBoxAttr.checkboxHeight}>\n\n                        </foreignObject>\n                    )*/\n            //UPDATE\n            hps.transition(trans)\n                .attr(\"transform\",\n                    (d: any, i: number) => {\n                        return `translate(${d.pos[0]},${d.pos[1]})`\n\n                })\n\n\n            //HPGROUP UPDATE\n            //CLASSIFIER REMOVE\n            hpGroupEnter.merge(hps).filter((d: any) => d.method != selectedMethod)\n                .selectAll('.hpBar')\n                .transition(trans)\n                .attr('width', 0)\n                .attr('height', 0)\n                .attr('x', x(0))\n                .attr('y', height)\n                .remove()\n            // ENTER + UPDATE\n            let classifierSelect = hpGroupEnter.merge(hps).filter((d: any) => d.method == selectedMethod)\n                .selectAll('.hpBar')\n                .data((d: any) => {\n                    return d.sortedCls\n                },function(d:any){\n                    return \"cls\"+d.id;\n                });\n\n                let selectOpacity = (d:any)=>{\n\n                    if(nowProps.mouseOverClassifier==d.id){\n                        return 1;\n                    }else{\n                        if(nowProps.mouseOverClassifier==-1){\n                            if(comparedCls.length>0){\n                                let flag = false;\n                                comparedCls.forEach((cls:any)=>{\n                                    if(cls.id == d.id){\n                                        flag = true;\n                                    }\n                                })\n                                if(flag){\n                                    return 1;\n                                }else{\n                                    return 0.2;\n                                }\n                            }else{\n                                return 1;\n                            }\n                        }\n                        else{\n                            return 0.2;\n                        }\n                    }\n\n                }\n\n               \n                //CLASSIFIER ENTER\n                classifierSelect.enter().append(\"rect\")\n                .attr(\"class\", \"hpBar\")\n                .attr('id', (d:any)=>`_${d.id}`)\n                .style('fill', function (d: any) {\n                    return getColor(selectedMethod)\n                })\n                .attr('opacity',selectOpacity)\n                .on(\"mouseover\",(d:any)=>{\n                    nowProps.onMouseOverClassifier(d.id);\n                    tooltip\n                    .style(\"width\",\"40px\")\n                    .style(\"left\", (d3.event.pageX) + \"px\")\n                    .style(\"top\", (d3.event.pageY - 28) + \"px\");\n                    tooltip.style(\"opacity\", 0.7).html(d.cv_metric.toFixed(3))\n\n                })\n                .on(\"mouseout\",(d:any)=>{\n                    nowProps.onMouseOverClassifier(-1);\n                    tooltip\n                    .style(\"opacity\", 0);\n\n                })\n                .attr(\"x\", (d: any, i: number) => x(0))\n                .attr(\"y\", (d: any) => 0 )\n                .attr(\"width\", 0)\n                .attr(\"height\", 0)\n\n                .transition(trans)\n                .attr(\"x\", (d: any, i: number) => x(i))\n                .attr(\"y\", (d: any) => y(d.cv_metric) - height)\n                .attr(\"width\", x.bandwidth())\n                .attr(\"height\", (d: any) => (height - y(d.cv_metric)))\n                .attr('opacity',selectOpacity)\n                //CLASSIFIER UPDATE\n                classifierSelect.transition(trans)\n                .attr(\"x\", (d: any, i: number) => x(i))\n                .attr(\"y\", (d: any) => y(d.cv_metric) - height)\n                .attr(\"width\", x.bandwidth())\n                .attr(\"height\", (d: any) => (height - y(d.cv_metric)))\n                .attr('opacity',selectOpacity)\n                classifierSelect.exit().remove();\n            //UPDATE\n            hps.selectAll('.out_hyperPartition')\n                .transition(trans)\n                .attr('height', (d: any) => d.method == selectedMethod ? (height + 2 * strokeWidth) : gap)\n                .attr('y', (d: any) => d.method == selectedMethod ? (-strokeWidth - height) : (gap))\n                .attr('x', -strokeWidth)\n                .attr('width', (d: any) => d.method == selectedMethod ? (width + 2 * strokeWidth) : gap)\n                .style('fill', (d: any) => d.method == selectedMethod ? 'none' : getColor(d.method))\n                .style('stroke', 'gray')\n                .style('stroke-width', strokeWidth)\n            //ENTER + UPDATE\n            //TEXT UPDATE\n            let textUpdate = textData;\n            textUpdate.exit()\n                .transition(trans)\n                .attr('opacity', 1e-6)\n                .remove()\n\n            textUpdate.selectAll('text.num_cls')\n                .attr('x', (d: any) => 1+width * d.sortedCls.length / maxLen - 2)\n                .attr('y', -1)\n                .text((d: any) => {\n                    //console.log(d.id+\":\"+d.sortedCls.length);\n                    return d.sortedCls.length\n                }\n                )\n                .attr('text-anchor', 'start')\n            textUpdate.selectAll('text.best_score')\n                // .attr('x', (d:any)=>width*d.scores.length/maxLen)\n                .attr('x', -gap)\n                .attr('y', 0)\n                .attr('text-anchor', 'end')\n                .text((d: any) => d.bestScore >= 0 ? d.bestScore.toFixed(3) : '')\n            textUpdate.selectAll('g.hp_name')\n                .attr('transform', `translate(${0}, ${0})`)\n                .select('foreignObject')\n                .attr('width', width)\n                .attr('height', height)\n                .select('.div_caption')\n                .html(generateText).attr('opacity', 1e-6)\n                .transition(trans)\n                .attr('opacity', 1)\n\n            hps.filter((d: any) => d.method != selectedMethod)\n                .selectAll('g.caption')\n                .transition(trans)\n                .attr('opacity', 1e-6)\n                .remove()\n\n            // exit()\n            hps.exit()\n            //.transition(trans)\n            //.attr('opacity', 1e-6)\n            .remove()\n\n\n    }\n\n\n    public sortHpByperformance(props: IProps) {\n        let { hyperpartitions: hps, classifiers, selectedMethod } = props\n        // cls = cls.filter(d=>d.method==selectedMethod)\n        // hps = hps.filter(d=>d.method==selectedMethod)\n        let hpsInfo = hps.map(hp => {\n            let filteredCls = classifiers\n                .filter(\n                    cls => cls.hyperpartition_id == hp.id\n                )\n            let sortedCls = filteredCls.sort((a, b) => (b.cv_metric - a.cv_metric))\n            return {\n                ...hp,\n                bestScore: Math.max(...sortedCls.map(d=>d.cv_metric)),\n                sortedCls\n            }\n        })\n        hpsInfo.sort((a, b) => (b.bestScore - a.bestScore))\n        let maxLen = Math.max(...hpsInfo.map(d => d.sortedCls.length))\n        if (maxLen < 0) maxLen = 0\n\n\n        // let filterHps = hps.filter(d => d.method == selectedMethod)\n        // let filterHpsInfo = hpsInfo.filter(d => d.method == selectedMethod)\n\n        return { hps, hpsInfo, maxLen, selectedMethod }\n    }\n    componentDidMount() {\n        let { maxLen, hpsInfo, selectedMethod } = this.sortHpByperformance(this.props)\n\n        let { compareK, classifiers,hyperpartitionsSelected} = this.props\n        let comparedCls = classifiers.slice(0, compareK)\n        let comparedMethods = Array.from(new Set(comparedCls.map(d=>d.method)))\n        if (comparedMethods.length==1){\n            selectedMethod = comparedMethods[0]\n        }\n        if(hpsInfo.length>0){\n            this.renderD3(hpsInfo, maxLen, selectedMethod,hyperpartitionsSelected,this.state.hiddencol,comparedCls,this.props)\n        }\n        /*\n        if (comparedMethods.length>=1|| mouseOverClassifier!=-1){\n            let g = d3.select('g.HyperPartitions')\n            g.selectAll('rect.hpBar')\n            .attr('opacity', 0.2)\n            if(mouseOverClassifier==-1 && comparedMethods.length>=1){\n                comparedCls.forEach(cls=>{\n                    g.select(`rect#_${cls.id}`)\n                    .attr('opacity', 1)\n                })\n            }else if(mouseOverClassifier!=-1){\n                g.select(`rect#_${mouseOverClassifier}`)\n                    .attr('opacity', 1)\n            }\n        }else{\n            let g = d3.select('g.HyperPartitions')\n            g.selectAll('rect.hpBar')\n            .attr('opacity', 1)\n        }*/\n    }\n    shouldComponentUpdate(nextProps: IProps, nextStates: IState) {\n\n        let { maxLen, hpsInfo, selectedMethod } = this.sortHpByperformance(nextProps)\n        let { compareK, classifiers,hyperpartitionsSelected} = nextProps\n        let comparedCls = classifiers.slice(0, compareK)\n        let comparedMethods = Array.from(new Set(comparedCls.map(d=>d.method)))\n        if (comparedMethods.length==1){\n            selectedMethod = comparedMethods[0]\n        }\n\n        if (this.props != nextProps || this.props.hyperpartitions.length == 0 || nextStates.hiddencol != this.state.hiddencol) { //update\n            d3.selectAll(`.caption`).remove()\n            this.renderD3(hpsInfo, maxLen, selectedMethod,hyperpartitionsSelected,nextStates.hiddencol,comparedCls,nextProps)\n        }\n        //if(this.props.datarunID!=nextProps.datarunID){//remove and redraw\n            //d3.select(`.HyperPartitions`).selectAll('*').remove()\n        //    this.renderD3(hpsInfo, maxLen, selectedMethod,hyperpartitionsSelected)\n        //}\n        //\n        /*\n        if (comparedMethods.length>=1 || mouseOverClassifier!=-1){\n            let g = d3.selectAll('g.hpGroup')\n            console.info('d3, compare, hyperpartition', comparedMethods, comparedCls)\n            g.selectAll('rect.hpBar')\n            .attr('opacity', 0.2)\n\n            if(mouseOverClassifier==-1){\n                comparedCls.forEach(cls=>{\n                    g.select(`rect#_${cls.id}`)\n                    .attr('opacity', 1)\n                })\n            }else{\n                g.select(`rect#_${mouseOverClassifier}`)\n                    .attr('opacity', 1)\n            }\n        }else{\n            let g = d3.select('g.HyperPartitions')\n            g.selectAll('rect.hpBar')\n            .attr('opacity', 1)\n        }*/\n\n        return true\n    }\n    //componentWillUpdate(){\n    //     this.renderD3()\n    // }\n    render() {\n\n        // let rectWidth = Math.max(\n        //     ...hpsInfo.map(\n        //         d=>d.hyperpartition_string.length*fontSize\n        //     )\n        // )\n        //console.log(\"render hiddencol\");\n        //console.log(this.state.hiddencol);\n        let generateButton = () =>{\n            if(this.state.visible){\n            return (<foreignObject x={this.props.width-60-35} y={this.props.height/2-35} width={35} height={70}>\n                <div>\n\n               <Button type=\"default\" size=\"small\" onClick={this.onLeftHp} disabled={this.state.leftdisabled}>\n                <Icon type=\"up\" />\n              </Button>\n              <Button type=\"default\" size=\"small\" onClick={this.onRightHp} disabled={this.state.rightdisabled}>\n                <Icon type=\"down\" />\n              </Button>\n              </div></foreignObject>\n              )\n            }else{\n                return <g />\n            }\n\n        }\n        return (<g>{generateButton()}\n        <g className={`HyperPartitions`}/></g>)\n    }\n}\n\n"
  },
  {
    "path": "src/components/DataRuns/ThreeLevel/Methods.css",
    "content": ".methods{\n    overflow-y: scroll;\n    padding: 10px;\n}\n\n.usedMethodContainer{\n    padding: 3px 8px;\n    float: left;\n}\n\n.method{\n    border: .4px solid rgba(0,0,0, 0.2);\n    box-shadow: 0 1px 1px 0 rgba(0,0,0,0.06);\n    /* height: ${100/methods.length}% */\n    height: 100%;\n    padding: 2px 5px;\n}\n\n.unusedMethod{\n    border: 2px dashed rgba(0,0,0, 0.3);\n    box-shadow: 0 1px 1px 0 rgba(0,0,0,0.06);\n    padding: 2px 5px;\n    margin: 5px;\n    float: left;\n}\n\ndiv.tooltip {\n    position: absolute;\n    text-align: left;\n    color: aliceblue;\n    width: 180px;\n    height: 80px;\n    padding: 10px;\n    font: 12px sans-serif;\n    background: rgba(0, 0, 0, 0.671);\n    border: 10px;\n    border-radius: 5px;\n    pointer-events: none;\n  }\n  .link {\n    fill: none;\n    stroke-width: 1.5px;\n  }\n  .bottomright {\n    position: absolute;\n    bottom: 80px;\n    right: 30px;\n    font-size: 18px;\n}"
  },
  {
    "path": "src/components/DataRuns/ThreeLevel/Methods.tsx",
    "content": "import * as React from \"react\";\nimport { IClassifier, IMethod,  } from \"types\";\nimport { getColor } from \"helper\";\nimport * as methodsDef from \"assets/methodsDef.json\";\nimport {IHyperpartitionInfo, IClassifierInfo,IRecommendationResult} from 'service/dataService';\nimport { Checkbox,Tooltip,Progress } from 'antd';\nimport \"./Methods.css\";\n//import * as hint from \"assets/small_hint.png\"\nconst d3 = require(\"d3\");\n\nexport interface IProps {\n    classifiers: IClassifierInfo[],\n    onSelectMethod: (methodName:string)=>void,\n    usedMethods: string[],\n    unusedMethods: string[],\n    width: number,\n    height:number,\n    displaymode:number,\n    selectedMethod: string,\n    hyperpartitions: IHyperpartitionInfo[],\n    configsMethod : string[],\n    onMethodsCheckBoxChange: (e:any)=>void\n    compareK:number,\n    methodSelected:any,\n    recommendationResult:IRecommendationResult\n}\n\nexport interface IState {\n\n}\n\n\nexport default class methods extends React.Component<IProps, IState>{\n    public gap = 20\n    width = (this.props.width - 2*this.gap)/2>20?(this.props.width - 2*this.gap)/2:20;\n    // public height = (window.innerHeight * 0.94 * 0.9 - this.gap) / (Object.keys(methodsDef).length * 0.5) - this.gap\n    public methodBoxAttr = {\n        // width : 70,\n        height: this.width * 0.4,\n        width: this.width,\n        gap: this.gap,\n        x: this.gap,\n        y: this.gap,\n        checkboxY: 2,\n        checkboxWidth: 75,\n        checkboxHeight: 30,\n        yextragap:20\n    }\n    public getbestperformance(list: IClassifier[]) {\n        if (list.length > 0) {\n            let classifierPerformance: number[] = list.map((classifier: IClassifier) => {\n                let performance = parseFloat(classifier['performance'].split(' +- ')[0]);\n                return performance;\n            });\n            classifierPerformance.sort(function (a: any, b: any) {\n                return b - a;\n            });\n            return classifierPerformance[0];\n        } else {\n            return 0;\n        }\n\n    }\n    public getmaxnum(classifiers: IClassifierInfo[]) {\n        let step = 0.1;\n        let data: number[] = [];\n\n        for (let i = 0; i < 1 / step; i++) {\n            data.push(0)\n        }\n        let bestperformance = 0;\n        classifiers.forEach((classifier: IClassifierInfo) => {\n            let performance = classifier['cv_metric'];\n            if (performance > bestperformance) {\n                bestperformance = performance;\n            }\n            let rangeIdx = Math.floor(performance / step)\n            data[rangeIdx] = data[rangeIdx] + 1\n        });\n        let maxvalue = 0;\n        data.forEach((p: any) => {\n            if (p > maxvalue) {\n                maxvalue = p;\n            }\n        })\n        return maxvalue;\n    }\n    componentDidUpdate(){\n        let {classifiers, compareK } = this.props\n        let comparedCls = classifiers.slice(0, compareK)\n\n        let comparedMethods = Array.from(new Set(comparedCls.map(d=>d.method)))\n        if(compareK>0){\n            d3.selectAll('g.algorithm')\n            .attr('opacity', 0.5)\n\n            comparedMethods.forEach((methodName:string)=>{\n                d3.select(`g#LineChart_${methodName}`)\n                .attr('opacity', 1)\n            })\n        }else{\n            d3.selectAll('g.algorithm')\n            .attr('opacity', 1)\n        }\n\n\n    }\n    render() {\n        let { classifiers, usedMethods, unusedMethods, hyperpartitions,methodSelected,width,height,displaymode} = this.props\n        //this.width = (this.props.width - 7*this.gap)/2>20?(this.props.width - 7*this.gap)/2:20;\n        // public height = (window.innerHeight * 0.94 * 0.9 - this.gap) / (Object.keys(methodsDef).length * 0.5) - this.gap\n        /*this.methodBoxAttr = {\n            // width : 70,\n            height: this.width * 0.6,\n            width: this.width,\n            gap: this.gap,\n            x: 2*this.gap,\n            y: 2*this.gap,\n            checkboxY: 2,\n            checkboxWidth: 100,\n            checkboxHeight: 30,\n            yextragap:20\n        }*/\n        console.log(width);\n        console.log(height);\n        // Calculate Layout\n        let refwidth = 1600;\n        let refheight = 714.84;\n        let oneboxwidth:number = 215/refwidth*width;\n        let oneboxgap :number = 25/215*oneboxwidth;\n        let oneboxinnerwidth:number = oneboxwidth -2* oneboxgap;\n        let oneboxheight :number = 320/refheight*height;\n        let oneboxygap :number = 120/320*oneboxheight;\n        let oneboxinnerheight:number = oneboxheight - 2*oneboxgap - oneboxygap;\n        this.methodBoxAttr = {\n            // width : 70,\n            height: oneboxinnerheight  ,\n            width: oneboxinnerwidth ,\n            gap: oneboxgap,\n            x: 40/25*oneboxgap,\n            y: 100/25*oneboxgap,\n            checkboxY: 2,\n            checkboxWidth: 100,\n            checkboxHeight: 30,\n            yextragap:oneboxygap\n        }\n        if(displaymode==1){\n            let refwidth = 1600;\n            let refheight = 348;\n            let oneboxwidth:number = 215/refwidth*width;\n            let oneboxgap :number = 25/215*oneboxwidth;\n            let oneboxinnerwidth:number = oneboxwidth -2* oneboxgap;\n            let oneboxheight :number = 160/refheight*height;\n            let oneboxygap :number = 20/160*oneboxheight;\n            let oneboxinnerheight:number = oneboxheight - 2*oneboxgap - oneboxygap;\n            this.methodBoxAttr = {\n                // width : 70,\n                height: oneboxinnerheight  ,\n                width: oneboxinnerwidth ,\n                gap: oneboxgap,\n                x: 40/25*oneboxgap,\n                y: 50/25*oneboxgap,\n                checkboxY: 2,\n                checkboxWidth: 100,\n                checkboxHeight: 30,\n                yextragap:oneboxygap\n            }\n        }else if(displaymode==2){\n            let refwidth = 1600;\n            //let refheight = 232;\n            let oneboxwidth:number = 215/refwidth*width;\n            let oneboxgap :number = 25/215*oneboxwidth;\n            let oneboxinnerwidth:number = oneboxwidth -2* oneboxgap;\n            let oneboxheight :number = 160/348*height;\n            let oneboxygap :number = 0;\n            let oneboxinnerheight:number = oneboxheight - 2*oneboxgap - oneboxygap;\n            this.methodBoxAttr = {\n                // width : 70,\n                height: oneboxinnerheight  ,\n                width: oneboxinnerwidth ,\n                gap: oneboxgap,\n                x: 40/25*oneboxgap,\n                y: 50/25*oneboxgap,\n                checkboxY: 2,\n                checkboxWidth: 100,\n                checkboxHeight: 30,\n                yextragap:oneboxygap\n            }\n        }\n        \n        /**\n         * checkboxHeight: 30\n            checkboxWidth: 100\n            checkboxY: 2\n            gap: 20\n            height: 68.76923076923076\n            width: 114.61538461538461\n            x: 40\n            y: 40\n            yextragap: 20\n         * \n         */\n        console.log(this.methodBoxAttr);\n\n        let performance = usedMethods.map((name: string, i: number) => {\n            return {\n                bestScore: Math.max(\n                    ...classifiers.filter(\n                            (d:any)=>d.method==name\n                        ).map(\n                            d=>d['cv_metric']\n                        )\n                ),\n                name: name\n            };\n        });\n        performance.sort(function (a: any, b: any) {\n            return b.bestScore - a.bestScore;\n        });\n        let sortedusedMethods = performance.map((d: any) => {\n            return d.name;\n        });\n        let maxnum = Math.max(\n            ...usedMethods.map(\n                (name:string)=>this.getmaxnum(classifiers.filter(d=>d.method==name))\n        ))\n        // // calculate the max num\n        // sortedusedMethods.forEach((name: string, i: number)=>{\n        //     let num = this.getmaxnum(datarun[name]);\n        //     if(num>maxnum){\n        //         maxnum=num;\n        //     }\n        // });\n        let maxrow = Math.floor((width-this.methodBoxAttr.x)/(this.methodBoxAttr.width+2*this.methodBoxAttr.gap));\n        if(maxrow<=1){\n            maxrow = 1;\n        }\n        let getXcorr = (i:number) =>{\n            return  this.methodBoxAttr.x +  (i % maxrow)* (this.methodBoxAttr.width + 2*this.methodBoxAttr.gap)\n        }\n        let getYcorr = (i:number) =>{\n            return this.methodBoxAttr.y + Math.floor(i / maxrow) * (this.methodBoxAttr.height + this.methodBoxAttr.gap+ this.methodBoxAttr.yextragap)\n        }\n        return <g className=\"methods\" >\n                    {sortedusedMethods.concat(unusedMethods).map((name: string, i: number) => {\n                            /*let checked = false;\n                            let configsMethod : string[] = this.props.configsMethod;\n                            if(configsMethod.indexOf(name)>-1){\n                                    checked= true;\n                            };*/\n                            let checked = false;\n                            let indeterminate = false;\n                            let disabled = false;\n                            if(methodSelected[name]){\n                                checked = methodSelected[name].checked;\n                                indeterminate = methodSelected[name].indeterminate;\n                                disabled = methodSelected[name].disabled;\n                            }\n\n                            return (<foreignObject\n                                        key={name+\"_text_\"+i}\n                                        x={ getXcorr(i) - 15}\n                                        y={getYcorr(i)- 20}\n                                        width={this.methodBoxAttr.checkboxWidth}\n                                        height={this.methodBoxAttr.checkboxHeight}>\n\n                                       <Checkbox\n                                        key={name+\"_checkbox_\"+(i)}\n                                        checked={checked}\n                                        indeterminate={indeterminate}\n                                        disabled={disabled}\n                                        value={name}\n                                        onChange={this.props.onMethodsCheckBoxChange} >\n                                        {/*<Tag color={getColor(name)}>{name}</Tag>*/}\n                                        <Tooltip title={methodsDef[name].fullname}>\n                                            <span>{name}</span>\n                                            </Tooltip>\n                                        </Checkbox>\n\n                                        </foreignObject>\n                                  )\n                    })}\n            <g className=\"usedMethods\">\n                {sortedusedMethods.map((name: string, i: number) => {\n                    const methodDef = methodsDef[name];\n                    // let  testin = selectedMethodName.indexOf(name);\n                    let selected = (name==this.props.selectedMethod)\n                    let index = this.props.recommendationResult.result.indexOf(name);\n                    let flower = 0;\n                    if(index>=0&&index<=2){\n                        flower = 3-index;\n                    }\n                    let filterclassifier = classifiers.filter((d:any)=>d.method==name);\n                    let filterhyperpartitions = hyperpartitions.filter((d:IHyperpartitionInfo)=>d.method==name);\n                    let usedHpID = Array.from(new Set(filterclassifier.map(d=>d.hyperpartition_id)));\n                    //let usedhpidlen = usedHpID.length;\n                    let filterhyperpartitionslen = filterhyperpartitions.length;\n                    if(filterhyperpartitionslen==0){\n                        filterhyperpartitionslen=1;\n                    }\n                     const progressHyperpartiton = (percent:number)=>{\n                        return `${usedHpID.length}/${filterhyperpartitions.length}`\n                    }\n\n                    // if (testin > -1) {\n                    //     selected = true;\n                    // }\n                    //const classifier_num = datarun[name].length;\n                    //const top_width = classifier_num*6+60;\n                    // this.index++;\n                    return (<g key={name + \"_g_linechart_\" + i}>\n                        \n                        <LineChart key={name + \"_used_\" + i}\n                            // x={this.methodBoxAttr.x+i*(this.methodBoxAttr.width+this.methodBoxAttr.gap)}\n                            // y={this.methodBoxAttr.y}\n                            x={getXcorr(i)}\n                            y={getYcorr(i)}\n                            width={this.methodBoxAttr.width}\n                            height={this.methodBoxAttr.height}\n                            methodDef={methodDef}\n                            classifiers={filterclassifier}\n                            name={name}\n                            totallen={maxnum}\n                            onClick={this.props.onSelectMethod}\n                            selected={selected}\n                            hyperpartitoins = {filterhyperpartitions}\n                            flower={flower}\n                        />\n                        <foreignObject key={name + \"_progressbar_\" + i} x={\n                                getXcorr(i) + this.methodBoxAttr.width-20\n                            }\n                            y={\n                                getYcorr(i) + this.methodBoxAttr.height-20\n                            } width={40} height={40}\n                            >\n                        <Progress\n                        type=\"circle\"\n                        percent={100*usedHpID.length/filterhyperpartitionslen}\n                        format={progressHyperpartiton}\n                        width={40}\n                        strokeWidth={10}\n                        />\n                        </foreignObject>\n                        \n                        \n                        </g>)\n\n                })}\n            </g>\n            <g className=\"unusedMethods\">{\n                unusedMethods.map((name: string, i: number) => {\n                    let index = i + usedMethods.length;\n                    let index2 = this.props.recommendationResult.result.indexOf(name);\n                    let flower = 0;\n                    if(index2>=0&&index2<=2){\n                        flower = 3-index2;\n                    }\n                    let flowerlist = [];\n                    for(let i = 1;i<=flower;i++){\n                        flowerlist.push(i);\n                    }\n                    return (<g\n                        key={name + '_unused'}\n                        transform={`translate(\n                    ${\n                           getXcorr(index)\n                            },\n                    ${\n                            getYcorr(index)\n                            }\n                )`}\n                    >\n                        <rect\n                            strokeDasharray=\"5,5\"\n                            width={this.methodBoxAttr.width}\n                            height={this.methodBoxAttr.height}\n                            fill=\"white\" strokeWidth={2} stroke=\"#E0D6D4\" />\n                        {flowerlist.map((d:number)=>{\n                            return <image key={name+\"_flower_\"+d} opacity={0.5} xlinkHref=\"small_hint.png\" x={this.methodBoxAttr.width-15*d} y={0} width={15} height={15}/>}\n                            )}\n                        {/*<text\n                            x={this.methodBoxAttr.width}\n                            y={this.methodBoxAttr.height}\n                            textAnchor=\"end\"\n                        >\n                            {name}\n                        </text>*/}\n                    </g>)\n                })\n            } </g>\n        </g>\n    }\n}\n\nexport interface LineChartProps {\n    width: number,\n    height: number,\n    x: number,\n    y: number,\n    methodDef: IMethod,\n    classifiers: IClassifierInfo[],\n    name: string,\n    totallen?: number,\n    methodName?: string,\n    onClick:(a:string)=>void,\n    selected?: boolean,\n    hyperpartitoins: IHyperpartitionInfo[],\n    flower:number\n\n}\n\nclass LineChart extends React.Component<LineChartProps, {}>{\n    TAG = \"LineChart_\";\n    componentDidMount() {\n        this.renderD3();\n    }\n    componentDidUpdate(){\n        let g = d3.select(\"#\" +this.TAG + this.props.name)\n\n        g.selectAll('*').remove()\n        this.renderD3();\n    }\n    renderD3() {\n        // Get Datasets\n        const { methodDef, classifiers, totallen, selected } = this.props;\n       // let usedHpID = Array.from(new Set(classifiers.map(d=>d.hyperpartition_id)))\n        let step = 0.1;\n        let data: number[] = [];\n\n        for (let i = 0; i < 1 / step; i++) {\n            data.push(0)\n        }\n        let bestperformance = 0;\n        classifiers.forEach((classifier: IClassifierInfo) => {\n            let performance = classifier['cv_metric'];\n            if (performance > bestperformance) {\n                bestperformance = performance;\n            }\n            let rangeIdx = Math.floor(performance / step)\n            data[rangeIdx] = data[rangeIdx] + 1\n        });\n        let total = 0;\n        let bestindex = 0;\n        // let frequentindex = 0;\n        let maxfrequency = 0;\n        data.forEach((d: any, i: any) => {\n            if (d > 0 && i > bestindex) {\n                bestindex = i;\n            }\n            if (d > maxfrequency) {\n                // frequentindex=i;\n                maxfrequency = d;\n            }\n            total += d;\n        });\n        total;\n        //let yAxisData: string[] = []\n        //for (let i = 0; i <= 1 / step; i++) {\n        //    yAxisData.push(`${(i * step).toFixed(2)}`)\n        //}\n\n        // g\n        // Set the dimensions of the canvas / graph\n        //let\tmargin = {top: 0, right: 0, bottom: 0, left: 0},\n        let margin = { top: 0, right: 2, bottom: 0, left: 2 },\n            width = this.props.width - margin.left - margin.right,\n            height = this.props.height - margin.top - margin.bottom,\n            top_margin = { top: this.props.y, left: this.props.x };\n        console.log(height);\n        // Set the ranges\n        // let\txScale = d3.scaleLinear().range([0, width]);\n        let yScale = d3.scaleBand()\n            .rangeRound([height, 0])\n            .paddingInner(0.1);\n        let\tyScale2 = d3.scaleLinear().range([height, 0]);\n        yScale2.domain([0, 1]);\n        let xScale = d3.scaleLinear().range([0, width]);\n\n\n        xScale.domain([0, totallen]);\n        yScale.domain(data.map((d, i) => i/10));\n        //console.log(data.map((d, i) => i/10))\n        //Create SVG element\n       // let tooltip = d3.select(\"#tooltip\");\n        //let top_methods = d3.select(\"#methodstop\");\n        /*\n        if (tooltip.empty()) {\n            tooltip = d3.select(\"body\").append(\"div\")\n                .attr(\"class\", \"tooltip\")\n                .attr(\"id\", \"tooltip\")\n                .style(\"opacity\", 0)\n                .style(\"left\", \"0px\")\n                .style(\"top\", \"0px\");;\n        }*/\n        let top_svg = d3.select(\"#\" + this.TAG + this.props.name).attr(\"width\", width + margin.left + margin.right)\n            .attr(\"height\", height + margin.top + margin.bottom).attr(\"transform\", \"translate(\" + top_margin.left + \",\" + top_margin.top + \")\")\n            // .on(\"click\",()=>{onClick(this.props.name)})\n            .on(\"mousemove\", function (d: any) {\n                    /*\n                tooltip.transition()\n                    .duration(100)\n                    .style(\"left\", (d3.event.pageX) + \"px\")\n                    .style(\"top\", (d3.event.pageY - 28) + \"px\");\n                tooltip.style(\"opacity\", 0.7).html(methodDef.fullname + \"<br/>\" + \"best performance:\" + bestperformance.toFixed(2) + \"<br/>\" + \"trial number:\" + total)\n                    */\n            })\n\n            .on(\"mouseout\", function (d: any) {\n               // tooltip\n               //     .style(\"opacity\", 0);\n            });;\n        top_svg.append(\"rect\")\n            .attr('class', `${this.props.name} methodRect`)\n            .attr(\"x\", 0)\n            .attr(\"y\", 0)\n            .attr(\"width\", width + margin.left + margin.right)\n            .attr(\"height\", height + margin.top + margin.bottom)\n            .attr(\"fill\", \"white\")\n            .attr(\"stroke-width\", 2)\n            .attr(\"stroke\", selected ? \"#A4A0A0\" : \"#E0D6D4\")\n            .on('click', ()=>{\n                d3.selectAll('rect.methodRect')\n                    .attr(\"stroke\", \"#E0D6D4\")\n                d3.select(`rect.${this.props.name}`)\n                    .attr('stroke', \"#A4A0A0\")\n                    .attr(\"stroke-width\", 3)\n                this.props.onClick(this.props.name)\n            })\n\n        let svg = top_svg.append(\"g\").attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");\n\n\n        // var line = d3.line()\n        // .x(function(d:any, i:any) { return xScale(d); }) // set the x values for the line generator\n        // .y(function(d:any,i:any) { return yScale((i)*step); }) // set the y values for the line generator\n        // .curve(d3.curveMonotoneX) // apply smoothing to the line\n\n\n        // function generateArray(index: number) {\n        //     let data: any[] = [];\n        //     data.push({ x: 0, y: index * step });\n        //     data.push({ x: totallen, y: index * step });\n        //     return data;\n        // }\n\n        // var straightline = d3.line()\n        //     .x(function (d: any, i: any) { return xScale(d.x); }) // set the x values for the line generator\n        //     .y(function (d: any, i: any) { return yScale(d.y); }) // set the y values for the line generator\n        // svg.append(\"path\")\n        //     .datum(generateArray(bestindex))\n        //     .attr(\"class\", \"line\")\n        //     .attr(\"fill\", \"none\")\n        //     .attr(\"stroke\", \"#E0D6D4\")\n        //     .attr(\"stroke-width\", 2)\n        //     .attr(\"stroke-dasharray\", \"5,5\")\n        //     .attr(\"d\", straightline);\n        // svg.append(\"path\")\n        //     .datum(generateArray(frequentindex))\n        //     .attr(\"class\", \"line\")\n        //     .attr(\"fill\",\"none\")\n        //     .attr(\"stroke\",\"#E0D6D4\")\n        //     .attr(\"stroke-width\",2)\n        //     .attr(\"stroke-dasharray\",\"5,5\")\n        //     .attr(\"d\", straightline);\n        svg.selectAll('.method_bar')\n            .data(data)\n            .enter()\n            .append(\"rect\")\n            .attr(\"class\", \"method_bar\")\n            .style(\"fill\", getColor(methodDef.name))\n            .attr(\"x\", 0)\n            .attr(\"y\", (d: any, i: number) => (\n                yScale(i/10)\n            ))\n            .attr(\"width\", (d: any) => xScale(d))\n            .attr(\"height\", yScale.bandwidth())\n\n     let text1 = svg.append(\"text\")\n            .attr(\"class\", \"method_name\")\n            .attr('x', width-2.5)\n        //    .attr('y', height-12)\n            .attr('y',-3)\n            .attr('text-anchor', \"end\")\n        //    .attr('filter',\"url(#solid)\")\n            .text(`${\" \"+bestperformance.toFixed(3)+\" \"} `)\n\n\n    let text2=svg.append(\"text\")\n            .attr(\"class\", \"method_name\")\n            .attr('x', width-55)\n        //    .attr('y', height-12)\n            .attr('y',-3)\n            .attr('text-anchor', \"end\")\n        //    .attr('filter',\"url(#solid)\")\n            .text(`${\" \"+classifiers.length+\" \"}`)\n\n    var bbox1 = text1.node().getBBox();\n\n    svg.append(\"rect\")\n    .attr(\"x\", bbox1.x-2.5)\n    .attr(\"y\", bbox1.y)\n    .attr(\"width\", bbox1.width+5)\n    .attr(\"height\", bbox1.height)\n    .style(\"fill\", \"#ccc\")\n    .style(\"fill-opacity\", \".0\")\n    .style(\"stroke\", selected ? \"#A4A0A0\" : \"#E0D6D4\")\n    .style(\"stroke-width\", \"1.5px\");\n    var bbox2 = text2.node().getBBox();\n\n    svg.append(\"rect\")\n    .attr(\"x\", bbox2.x-2.5)\n    .attr(\"y\", bbox2.y)\n    .attr(\"width\", bbox2.width+5)\n    .attr(\"height\", bbox2.height)\n    .style(\"fill\", \"#ccc\")\n    .style(\"fill-opacity\", \".0\")\n    .style(\"stroke\", selected ? \"#A4A0A0\" : \"#E0D6D4\")\n    .style(\"stroke-width\", \"1.5px\");\n       /* svg.append(\"text\")\n            .attr(\"class\", \"best_score\")\n            .attr('x', width)\n            .attr('y', height )\n            .attr('text-anchor', \"end\")\n            .text(`best: ${bestperformance.toFixed(3)}`)*/\n        /*svg.append('text')\n            .attr('class', 'hps')\n            .attr(\"transform\", `translate(${width+margin.left},${height/2}) rotate(${90})`)\n            .attr('text-anchor', 'middle')\n            .text(`hp:${usedHpID.length}/${hyperpartitoins.length}`)*/\n        for(let i = 1;i<=this.props.flower;i++){\n            svg.append('image')\n                .attr('width',15)\n                .attr('height',15)\n                .attr('opacity',0.5)\n                .attr('xlink:href',\"small_hint.png\")\n                .attr('x',width-15*i)\n                .attr('y',0);\n        }\n        // // Add the X Axis\n        // svg.append(\"g\")\n        //     .attr(\"transform\", \"translate(0,\" + height + \")\")\n        //     .call(d3.axisBottom(xScale));\n\n        // Add the Y Axis\n        let yAxisData = [0.0,0.2,0.4,0.6,0.8];\n        let yAxisNumerical = [0.0,0.2,0.4,0.6,0.8];\n        if(height>90){\n            yAxisData = [];\n            yAxisNumerical = [];\n            for(let i = 0; i<10;i++){\n                yAxisNumerical.push(i/10);\n                yAxisData.push((i*10)/100);\n            }\n        }\n        svg.append(\"g\")\n            .attr('transform', `translate(${-margin.left}, 0)`)\n            .call(d3.axisLeft(yScale2).tickSize(0).tickPadding(9).tickValues(yAxisData).tickFormat(function (d:any,i:number) {\n                            return yAxisNumerical[i];\n                       }))\n\n        svg.append(\"g\")\n            .attr('transform', `translate(${-margin.left}, 0)`)\n            .call(d3.axisLeft(yScale2).tickValues([0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9]).tickFormat(function (d:any,i:number) {\n                            return \"\";\n                       }))\n\n\n    }\n    render() {\n        const { name } = this.props;\n        return <g> {/*<defs>\n                <filter x=\"0\" y=\"0\" width=\"1\" height=\"1\" id=\"solid\">\n                <feFlood flood-color=\"gray\"/>\n                <feComposite in=\"SourceGraphic\" operator=\"xor\"/>\n                </filter>\n            </defs>*/}<g id={this.TAG + name} className='algorithm'/>\n                   \n        </g>\n    }\n}\n\n// class LineChart2 extends React.Component<LineChartProps, {}>{\n//     TAG = \"LineChart_\";\n//     componentDidMount() {\n//         this.renderD3();\n//     }\n//     renderD3() {\n//         // Get Datasets\n//         const { methodDef, classifiers,totallen,selected } = this.props;\n//         let step = 0.1;\n//         let data:number[] = [];\n\n//         for (let i =0; i<=1/step; i++){\n//             data.push(0)\n//         }\n//         let bestperformance = 0;\n//         classifiers.forEach((classifier:IClassifier)=>{\n//             let performance = parseFloat(classifier['performance'].split(' +- ')[0]);\n//             if(performance>bestperformance){\n//                 bestperformance=performance;\n//             }\n//             let rangeIdx = Math.floor(performance/step)\n//             data[rangeIdx] = data[rangeIdx]+1\n//         });\n//         let total = 0;\n//         let bestindex = 0;\n//         // let frequentindex = 0;\n//         // let maxfrequency = 0;\n//         data.forEach((d:any,i:any)=>{\n//             if(d>0&&i>bestindex){\n//                 bestindex=i;\n//             }\n//             // if(d>maxfrequency){\n//             //     // frequentindex=i;\n//             //     maxfrequency=d;\n//             // }\n//             total+=d;\n//         });\n//         //total;\n//         let yAxisData:string[] = []\n//         for (let i =0; i<=1/step; i++){\n//             yAxisData.push(`${(i*step).toFixed(2)}`)\n//         }\n\n//         // g\n//         // Set the dimensions of the canvas / graph\n//         //let\tmargin = {top: 0, right: 0, bottom: 0, left: 0},\n//         let\tmargin = {top: 1, right: 1, bottom: 1, left: 1},\n//             width = this.props.width - margin.left - margin.right,\n//             height = this.props.height - margin.top - margin.bottom,\n//             top_margin = {top:this.props.y,left:this.props.x};\n\n//         // Set the ranges\n//         let\txScale = d3.scaleLinear().range([0, width]);\n//         let\tyScale = d3.scaleLinear().range([height, 0]);\n\n\n//         xScale.domain([0, totallen]);\n//         yScale.domain([0, 1]);\n//         //Create SVG element\n//         let tooltip = d3.select(\"#tooltip\");\n//         //let top_methods = d3.select(\"#methodstop\");\n\n//         if(tooltip.empty()){\n//             tooltip = d3.select(\"body\").append(\"div\")\n//             .attr(\"class\", \"tooltip\")\n//             .attr(\"id\",\"tooltip\")\n//             .style(\"opacity\", 0)\n//             .style(\"left\",  \"0px\")\n//               .style(\"top\",  \"0px\");;\n//         }\n//         let top_svg = d3.select(\"#\"+this.TAG+this.props.name).attr(\"width\", width + margin.left + margin.right)\n//         .attr(\"height\", height + margin.top + margin.bottom).attr(\"transform\", \"translate(\" + top_margin.left + \",\" + top_margin.top + \")\")\n//         // .on(\"click\",()=>{onClick(this.props.name)})\n//         .on(\"mousemove\", function(d:any) {\n\n//             tooltip.transition()\n//               .duration(100)\n//               .style(\"left\", (d3.event.pageX) + \"px\")\n//               .style(\"top\", (d3.event.pageY - 28) + \"px\");\n//               tooltip.style(\"opacity\", 0.7).html(methodDef.fullname+\"<br/>\"+\"best performance:\"+bestperformance.toFixed(2) + \"<br/>\" + \"trial number:\"+total)\n\n//             })\n\n//           .on(\"mouseout\", function(d:any) {\n//             tooltip\n//               .style(\"opacity\", 0);\n//             });;\n//         top_svg.append(\"rect\")\n//         .attr(\"x\",0)\n//         .attr(\"y\",0)\n//         .attr(\"width\", width + margin.left + margin.right)\n//         .attr(\"height\",height + margin.top + margin.bottom)\n//         .attr(\"fill\",\"white\")\n//         .attr(\"stroke-width\",2)\n//         .attr(\"stroke\",selected?\"#A4A0A0\":\"#E0D6D4\")\n//         ;\n//         let svg = top_svg.append(\"g\").attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");\n\n\n//         let line = d3.line()\n//         .x(function(d:any, i:any) { return xScale(d); }) // set the x values for the line generator\n//         .y(function(d:any,i:any) { return yScale((i)*step); }) // set the y values for the line generator\n//         .curve(d3.curveMonotoneX) // apply smoothing to the line\n\n//         let area = d3.area()\n//         .y(function(d:any) { return yScale(d) })\n//         .x0(0)\n//         .x1(function(d:any) { return xScale(d); })\n\n//         console.info(area, line)\n\n//         function generateArray(index:number){\n//             let data:any[] = [];\n//             data.push({x:0,y:index*step});\n//             data.push({x:totallen,y:index*step});\n//             return data;\n//         }\n\n//         var straightline = d3.line()\n//             .x(function(d:any, i:any) { return xScale(d.x); }) // set the x values for the line generator\n//             .y(function(d:any,i:any) { return yScale(d.y); }) // set the y values for the line generator\n//         svg.append(\"path\")\n//             .datum(generateArray(bestindex))\n//             .attr(\"class\", \"line\")\n//             .attr(\"fill\",\"none\")\n//             .attr(\"stroke\",\"#E0D6D4\")\n//             .attr(\"stroke-width\",2)\n//             .attr(\"stroke-dasharray\",\"5,5\")\n//             .attr(\"d\", straightline);\n//         // svg.append(\"path\")\n//         //     .datum(generateArray(frequentindex))\n//         //     .attr(\"class\", \"line\")\n//         //     .attr(\"fill\",\"none\")\n//         //     .attr(\"stroke\",\"#E0D6D4\")\n//         //     .attr(\"stroke-width\",2)\n//         //     .attr(\"stroke-dasharray\",\"5,5\")\n//         //     .attr(\"d\", straightline);\n//         svg.append(\"path\")\n//             .datum(data)\n//             .attr(\"class\", \"line\")\n//             .attr(\"fill\",\"none\")\n//             .attr(\"stroke\",getColor(methodDef.name))\n//             .attr(\"stroke-width\",2)\n//             .attr(\"d\", line);\n\n//         // svg.append(\"path\")\n//         //     .datum(data)\n//         //     .attr(\"class\", \"line\")\n//         //     .attr(\"fill\",getColor(methodDef.name))\n//         //     .attr(\"d\", area);\n\n//         svg.append(\"text\")\n//             .attr(\"class\", \"hp_name\")\n//             .attr('x', width)\n//             .attr('y', height)\n//             .attr('text-anchor', \"end\")\n//             .text(this.props.name)\n//       }\n//     render() {\n//         const {name}=this.props;\n//         return <g id={this.TAG+name}/>\n//     }\n// }"
  },
  {
    "path": "src/components/DataRuns/ThreeLevel/ThreeLevel.css",
    "content": ".svgWrapper{\n    width: 100%;\n    border-top: 6px solid rgba(0,0,0, 0.4);\n}"
  },
  {
    "path": "src/components/DataRuns/ThreeLevel/ThreeLevel.tsx",
    "content": "import * as React from \"react\";\nimport Methods from './Methods';\nimport HyperPartitions from \"./HyperPartitions\";\nimport HyperParameters from \"./HyperParameters\";\nimport {\n    IHyperpartitionInfo, IClassifierInfo, IConfigsInfo,\n    getDatarunConfigs, IUpdateDatarunConfig, ICommonResponse,\n    updateDatarunConfigs, IClickEvent, IRecommendationResult\n} from 'service/dataService';\nimport { IDatarun } from \"types\";\nimport * as methodsDef from \"assets/methodsDef.json\";\nimport { message, Icon } from 'antd';\nimport { getColor } from 'helper';\nimport GenerateSvg from '../../Utils/GenerateSvg';\nimport './ThreeLevel.css'\n\nexport interface IProps {\n    height: number,\n    datarun: IDatarun,\n    datasetID: number | null,\n    datarunID: number | null,\n    setDatarunID: (id: number) => void,\n    hyperpartitions: IHyperpartitionInfo[],\n    classifiers: IClassifierInfo[],\n    compareK: number,\n    recommendationResult: IRecommendationResult,\n    postClickEvent: (e: IClickEvent) => void\n}\n\nexport interface IState {\n    selectedMethod: string,\n    configsBudget: number,\n    configsMethod: string[],\n    loading: boolean,\n    methodSelected: any,\n    hyperparametersRangeAlreadySelected: any,\n    hyperpartitionsAlreadySelected: number[],\n    mouseOverClassifier: number,\n    displaymode: number,\n    methodCoords: any, \n    classifiers: any\n}\n\nexport default class ThreeLevel extends React.Component<IProps, IState>{\n    index = 0\n    constructor(props: IProps) {\n        super(props)\n        this.onSelectMethod = this.onSelectMethod.bind(this)\n        this.state = {\n            selectedMethod: '',\n            configsBudget: 100,\n            configsMethod: [],\n            loading: false,\n            methodSelected: {},\n            hyperparametersRangeAlreadySelected: {},\n            hyperpartitionsAlreadySelected: [],\n            mouseOverClassifier: -1,\n            displaymode: 0,\n            classifiers: [],\n            methodCoords: {\n                svgHeight: window.innerHeight * 0.74,\n                svgWidth: window.innerWidth * 5 / 6,\n                methodHeight: window.innerWidth * 5 / 6,\n                hyperPartHeight: window.innerHeight / 2,\n                hyperParamWidth: window.innerWidth * 5 / 6,\n                hyperParamHeight: window.innerHeight * 0.74 / 2,\n                hyperPartWidth: window.innerWidth * 5 / 6,\n                headerHeight: 10,\n                textLeft: 40,\n                hpTabLeft: 145,\n                hyTabLeft: 156\n\n            }\n\n        }\n    }\n\n    onSelectMethod(methodName: string) {\n        console.info('select method', methodName);\n        let eventlog: IClickEvent = {\n            type: \"method\",\n            description: {\n                action: \"selected\",\n                name: methodName\n            },\n            time: new Date().toString()\n        }\n        this.props.postClickEvent(eventlog);\n        let displaymode = this.state.displaymode;\n        if (displaymode == 0) {\n            displaymode = 1;\n        }\n        this.setState({ selectedMethod: methodName, displaymode: displaymode })\n    }\n\n    componentDidMount() {\n        this.getCurrentConfigs();\n        this.setMethodHeight();\n        this.getClassifiers();\n    }\n\n    onBudgetChange = (budget: any) => {\n        this.setState({ configsBudget: budget });\n    }\n\n    getCurrentConfigs = () => {\n        if (this.props.datarunID != null) {\n            let promise: Promise<IConfigsInfo>;\n            let datarunID: number = this.props.datarunID ? this.props.datarunID : 0;\n            promise = getDatarunConfigs(datarunID);\n            promise.then(configs => {\n                this.setState({\n                    configsMethod: configs.methods,\n                    configsBudget: configs.budget\n                })\n            })\n        }\n    }\n\n    updateCurrentDataRun = () => {\n        // get configs from server ;\n        // submit configs in this view\n        // switch to the new datarun.\n        let methods = this.state.configsMethod;\n        //let budget = this.state.configsBudget;\n        if (this.props.datarunID != null) {\n            let promise: Promise<IConfigsInfo>;\n            let datarunID: number = this.props.datarunID ? this.props.datarunID : 0;\n            promise = getDatarunConfigs(datarunID);\n            promise\n                .then(configs => {\n                    configs.methods = methods;\n                    //configs.budget = budget;\n                    this.setState({ loading: true });\n\n                    let submitconfigs: IUpdateDatarunConfig = {};\n                    submitconfigs.configs = configs;\n                    submitconfigs.method_configs = this.state.hyperparametersRangeAlreadySelected;\n                    if (this.state.hyperpartitionsAlreadySelected.length > 0) {\n                        submitconfigs.hyperpartitions = this.state.hyperpartitionsAlreadySelected;\n                    }\n                    let promise: Promise<ICommonResponse> = updateDatarunConfigs(datarunID, submitconfigs);\n                    //const promise = this.props.onSubmit(this.state.configs);\n                    console.log(\"update data run in methods view\");\n                    console.log(configs);\n                    promise.then(status => {\n                        if (status.success == true) {\n                            message.success(\"Update Configs Successfully.\");\n                        } else {\n                            message.error(\"Update Configs Failed.\");\n                        }\n                        this.setState({ loading: false });\n                    }).catch(error => {\n                        console.log(error);\n                        message.error(\"Update Configs Failed.\");\n                        this.setState({ loading: false });\n\n                    });\n                })\n                .catch(error => {\n                    console.log(error);\n                });\n        }\n    }\n\n    fetchHpId = (method: string) => {\n        let hp = this.props.hyperpartitions;\n        return hp.filter((d: any) => d.method == method).map((d: any) => d.id);\n    }\n\n    onMethodsCheckBoxChange = (e: any) => {\n        let checked = e.target.checked;\n        let value = e.target.value;\n        let methodSelected = this.state.methodSelected;\n        let configsHyperpartitions: number[] = this.state.hyperpartitionsAlreadySelected;\n        console.log(\"onMethodsCheckBoxChange\")\n        if (methodSelected[value]) {\n            if (checked == false) {\n                //un selected\n                let configsMethod: string[] = this.state.configsMethod;\n                let index = configsMethod.indexOf(value);\n                if (index > -1) {\n                    configsMethod.splice(index, 1);\n                }\n\n\n                methodSelected[value].checked = false;\n                methodSelected[value].indeterminate = false;\n                methodSelected[value].disabled = false;\n                let hpid = this.fetchHpId(value);\n                configsHyperpartitions = configsHyperpartitions.filter((d: number) => hpid.indexOf(d) < 0);\n\n                this.setState({\n                    hyperpartitionsAlreadySelected: configsHyperpartitions,\n                    methodSelected: methodSelected,\n                    configsMethod: configsMethod\n\n                });\n\n            } else {\n                let configsMethod: string[] = this.state.configsMethod;\n                configsMethod.push(value);\n                methodSelected[value].checked = true;\n                methodSelected[value].indeterminate = false;\n                methodSelected[value].disabled = false;\n                let hpid = this.fetchHpId(value);\n                configsHyperpartitions = Array.from(new Set(configsHyperpartitions.concat(hpid)));\n                this.setState({\n                    hyperpartitionsAlreadySelected: configsHyperpartitions,\n                    methodSelected: methodSelected,\n                    configsMethod: configsMethod\n\n                });\n\n\n            }\n            let action = \"selected\";\n            if (checked == false) {\n                action = \"unselected\";\n            }\n            let eventlog: IClickEvent = {\n                type: \"methodcheckbox\",\n                description: {\n                    action: action,\n                    methodname: value\n                },\n                time: new Date().toString()\n            }\n            this.props.postClickEvent(eventlog);\n            this.updateCurrentDataRun();\n        }\n    }\n\n    onHyperpartitionCheckBoxChange = (id: number) => {\n        let checked: boolean = !(this.state.hyperpartitionsAlreadySelected.indexOf(id) > -1);\n        let value = id;\n        if (checked == false) {\n            // un selected\n            let configsHyperpartitions: number[] = this.state.hyperpartitionsAlreadySelected;\n            let index = configsHyperpartitions.indexOf(value);\n            if (index > -1) {\n                configsHyperpartitions.splice(index, 1);\n                let hp: any = this.props.hyperpartitions.filter((d: any) => d.id == value);\n                let method = hp[0].method;\n                let hpid = this.fetchHpId(method);\n                let judgeSet = hpid.filter((d: any) => configsHyperpartitions.indexOf(d) > -1);\n                let methodSelected = this.state.methodSelected;\n                let configsMethod: string[] = this.state.configsMethod;\n\n                if (judgeSet.length > 0) {\n                    // Fetch method intersect hpid\n                    // method unselected\n                    methodSelected[method].checked = false;\n                    methodSelected[method].indeterminate = true;\n                } else {\n                    methodSelected[method].checked = false;\n                    methodSelected[method].indeterminate = false;\n                    let index = configsMethod.indexOf(method);\n                    if (index > -1) {\n                        configsMethod.splice(index, 1);\n                    }\n                }\n                this.setState({\n                    hyperpartitionsAlreadySelected: configsHyperpartitions,\n                    methodSelected: methodSelected,\n                    configsMethod: configsMethod\n\n                });\n\n            }\n        } else {\n            let configsHyperpartitions: number[] = this.state.hyperpartitionsAlreadySelected;\n            configsHyperpartitions.push(value);\n            let hp: any = this.props.hyperpartitions.filter((d: any) => d.id == value);\n            let method = hp[0].method;\n            let hpid = this.fetchHpId(method);\n            let judgeSet = Array.from(new Set(configsHyperpartitions.concat(hpid)));\n            let methodSelected = this.state.methodSelected;\n            let configsMethod: string[] = this.state.configsMethod;\n            configsMethod = Array.from(new Set(configsMethod.concat([method])));\n\n            if (judgeSet.length == configsHyperpartitions.length) {\n                //selected\n                methodSelected[method].checked = true;\n                methodSelected[method].indeterminate = false;\n            } else {\n                methodSelected[method].checked = false;\n                methodSelected[method].indeterminate = true;\n            }\n\n            this.setState({\n                hyperpartitionsAlreadySelected: configsHyperpartitions,\n                methodSelected: methodSelected,\n                configsMethod: configsMethod\n            });\n\n\n        }\n        let action = \"selected\";\n        if (checked == false) {\n            action = \"unselected\";\n        }\n        let eventlog: IClickEvent = {\n            type: \"hyperpartitioncheckbox\",\n            description: {\n                action: action,\n                hpid: value\n            },\n            time: new Date().toString()\n        }\n        this.props.postClickEvent(eventlog);\n        this.updateCurrentDataRun();\n    }\n\n    onBrushSelected = (methodname: string, hpaName: string, hpatype: string, range: number[]) => {\n        let { hyperparametersRangeAlreadySelected } = this.state;\n        let update: boolean = false;\n        if (hpatype == \"int\") {\n            range[0] = Math.floor(range[0]);\n            range[1] = Math.ceil(range[1]);\n        }\n        if (!hyperparametersRangeAlreadySelected[methodname]) {\n            hyperparametersRangeAlreadySelected[methodname] = {};\n        }\n        if (hyperparametersRangeAlreadySelected[methodname][hpaName] && hyperparametersRangeAlreadySelected[methodname][hpaName][\"range\"]) {\n            if (hyperparametersRangeAlreadySelected[methodname][hpaName][\"range\"][0] == range[0] && hyperparametersRangeAlreadySelected[methodname][hpaName][\"range\"][1] == range[1]) {\n                // nothing\n            } else {\n                update = true;\n            }\n        } else {\n            if (range.length > 0) {\n                update = true;\n\n            }\n        }\n        if (update) {\n\n            hyperparametersRangeAlreadySelected[methodname][hpaName] = { \"type\": hpatype, \"range\": range };\n            console.log(hyperparametersRangeAlreadySelected);\n            this.setState({\n                hyperparametersRangeAlreadySelected: hyperparametersRangeAlreadySelected\n            });\n            let action = \"updated\";\n\n            let eventlog: IClickEvent = {\n                type: \"hyperparametersRange\",\n                description: {\n                    action: action,\n                    range: range,\n                    type: hpatype,\n                    hyname: hpaName,\n                    methodname: methodname\n                },\n                time: new Date().toString()\n            }\n            this.props.postClickEvent(eventlog);\n            this.updateCurrentDataRun();\n        }\n\n    }\n\n    componentWillReceiveProps(nextProps: IProps) {\n        if (this.state.loading == false) {\n            let { hyperpartitions } = nextProps;\n            let methodhistogram: any = {};\n            let methodSelected: any = {};\n            let mode = 1;\n            let hyperpartitionsAlreadySelected: number[] = [];\n\n            if (mode == 0) {\n                hyperpartitionsAlreadySelected = hyperpartitions.map((d: any) => {\n                    return d.id;\n                });\n            } else if (mode == 1) {\n                hyperpartitionsAlreadySelected = hyperpartitions.filter((d: any) => d.status != \"errored\").map((d: any) => {\n                    return d.id;\n                });\n            }\n\n            Object.keys(methodsDef).forEach((d: string) => {\n                if (!methodhistogram[d]) {\n                    methodhistogram[d] = { total: 0, enable: 0 };\n                }\n            });\n            hyperpartitions.forEach((d: any) => {\n                if (!methodhistogram[d.method]) {\n                    methodhistogram[d.method] = { total: 0, enable: 0 };\n                    console.log(\"unknown method : \" + d.method);\n                }\n                if (!(d.status == \"errored\")) {\n                    methodhistogram[d.method].total++;\n                    methodhistogram[d.method].enable++;\n                } else {\n                    methodhistogram[d.method].total++;\n                }\n\n            });\n            Object.keys(methodhistogram).forEach((d: string) => {\n                if (mode == 0) {\n                    if (methodhistogram[d].total == 0) {\n                        methodSelected[d] = { checked: false, disabled: true, indeterminate: false };\n                    } else {\n                        methodSelected[d] = { checked: true, disabled: false, indeterminate: false };\n                    }\n                } else if (mode == 1) {\n                    if (methodhistogram[d].total == 0) {\n                        methodSelected[d] = { checked: false, disabled: true, indeterminate: false };\n                    } else if (methodhistogram[d].enable == 0) {\n                        methodSelected[d] = { checked: false, disabled: false, indeterminate: false };\n                    } else if (methodhistogram[d].total == methodhistogram[d].enable) {\n                        methodSelected[d] = { checked: true, disabled: false, indeterminate: false };\n                    } else {\n                        methodSelected[d] = { checked: false, disabled: false, indeterminate: true };\n                    }\n                }\n            });\n            let selectedMethod = this.state.selectedMethod;\n            this.setState({\n                methodSelected: methodSelected,\n                hyperpartitionsAlreadySelected: hyperpartitionsAlreadySelected,\n                selectedMethod: selectedMethod\n            });\n        }\n    }\n\n    onMouseOverClassifier = (classifierid: number) => {\n        if (this.state.mouseOverClassifier != classifierid) {\n            if (classifierid != -1) {\n                let action = \"mouseover\";\n\n                let eventlog: IClickEvent = {\n                    type: \"classifier\",\n                    description: {\n                        action: action,\n                        classifierid: classifierid\n                    },\n                    time: new Date().toString()\n                }\n\n                this.props.postClickEvent(eventlog);\n            }\n\n            this.setState({\n                mouseOverClassifier: classifierid\n            })\n        }\n    }\n\n    onMethodButtonClick = () => {\n        let { displaymode } = this.state;\n        this.setMethodHeight();\n        if (displaymode == 0) {\n            let eventlog: IClickEvent = {\n                type: \"hyperpartitionsView\",\n                description: {\n                    action: \"more\",\n                },\n                time: new Date().toString()\n            }\n            this.props.postClickEvent(eventlog);\n            this.setState({\n                displaymode: 1\n            });\n        } else {\n            let eventlog: IClickEvent = {\n                type: \"hyperpartitionsView\",\n                description: {\n                    action: \"hide\",\n                },\n                time: new Date().toString()\n            }\n            this.props.postClickEvent(eventlog);\n            this.setState({\n                displaymode: 0\n            });\n        }\n    }\n\n    onHyperpartitionButtonClick = () => {\n        let { displaymode } = this.state;\n        if (displaymode == 1) {\n            let eventlog: IClickEvent = {\n                type: \"hyperparametersView\",\n                description: {\n                    action: \"more\",\n                },\n                time: new Date().toString()\n            }\n            this.props.postClickEvent(eventlog);\n            this.setState({\n                displaymode: 2\n            });\n        } else {\n            let eventlog: IClickEvent = {\n                type: \"hyperparametersView\",\n                description: {\n                    action: \"hide\",\n                },\n                time: new Date().toString()\n            }\n            this.props.postClickEvent(eventlog);\n            this.setState({\n                displaymode: 1\n            });\n        }\n    }\n\n    setMethodHeight() {\n        let { displaymode, methodCoords } = this.state,\n            methodHeight = methodCoords.svgHeight;\n\n        switch (displaymode) {\n            case 0: {\n                return methodHeight;\n            }\n            case 1: {\n                return methodHeight = methodCoords.svgHeight / 2;\n            }\n            case 2: {\n                return methodHeight = methodCoords.svgHeight * 1.3 / 3;\n            }\n            default: {\n                return methodHeight;\n            }\n        }\n    }\n\n    setHyperPartitionsHeight() {\n        let { displaymode, methodCoords } = this.state,\n            hyperPartHeight = methodCoords.svgHeight / 2;\n\n        switch (displaymode) {\n            case 0: {\n                return hyperPartHeight = 100;\n            }\n            case 2: {\n                return hyperPartHeight = methodCoords.svgHeight * 0.7 / 3;\n            }\n            default: {\n                return hyperPartHeight;\n            }\n        }\n    }\n\n    generateTag(box: any, name: string) {\n        let { width, height, x, y } = box;\n        const groupProps = {\n            shape: {\n                className: \"tag\",\n                transform: `translate(${x},${y})`\n            },\n            rect: {\n                width: width,\n                height: height,\n                style: { fill: getColor(name) },\n                rx: 5,\n                ry: 5\n            },\n            textProps: {\n                y: height - 5,\n                x: width / 2,\n                textAnchor: \"middle\",\n                style: { fill: \"white\" }\n            }\n        }\n\n        return name !== '' ?\n            <g {...groupProps.shape}>\n                <rect {...groupProps.rect} />\n                <text {...groupProps.textProps}>{name}</text>\n            </g> : <g className=\"tag\" />\n    }\n\n    generateRect(box: any, mode: number, eventCallback: () => void) {\n        const rectProps = {\n            x: box.x,\n            y: box.y,\n            width: box.width,\n            height: box.height,\n            fill: \"rgb(250,250,250)\",\n            rx: 3,\n            ry: 3,\n            stroke: \"rgb(217,217,217\",\n            strokeWidth: \"1.5px\",\n            style: { cursor: \"pointer\" }\n        }\n\n        const foreigObjProps = {\n            x: box.x + 10,\n            y: box.y + 3,\n            width: 35,\n            height: 35\n        }\n\n        const iconDir = mode === 0 ? 'right' : 'down';\n\n        return mode === 0 || mode === 1 ?\n            <g>\n                <rect {...rectProps} />\n                <foreignObject {...foreigObjProps}>\n                    <Icon type={iconDir} />\n                </foreignObject>\n            </g> : <g />\n    }\n\n    generateHyperpartitionText() {\n        const methodHeight = this.setMethodHeight();\n        const hyperPartHeight = this.setHyperPartitionsHeight();\n        const { selectedMethod } = this.state;\n        const {\n            headerHeight,\n            textLeft,\n            hpTabLeft,\n            hyperPartWidth\n        } = this.state.methodCoords;\n\n        const groupProps = {\n            transform: `translate(${0}, ${methodHeight + headerHeight})`,\n            width: hyperPartWidth,\n            height: hyperPartHeight,\n            onClick: this.onMethodButtonClick\n        }\n\n        const textProps = {\n            textAnchor: \"start\",\n            x: textLeft,\n            y: 10,\n            style: {\n                font: \"bold 16px sans-serif\",\n                display: \"inline\"\n            }\n        }\n\n        return (\n            <g>\n                <g {...groupProps} >\n                    {this.generateRect({\n                        x: 10,\n                        y: -9,\n                        width: hyperPartWidth - 68,\n                        height: 28\n                    }, 0, this.onMethodButtonClick)}\n                    <text {...textProps}>HyperPartitions of</text>\n                    {this.generateTag({\n                        x: textLeft + hpTabLeft,\n                        y: -6,\n                        width: 40,\n                        height: 20\n                    }, selectedMethod)}\n                </g>\n            </g>\n        )\n    }\n\n    getClassifiers() {\n        let { classifiers } = this.props;\n        classifiers = classifiers.sort((a, b) => b.cv_metric - a.cv_metric);\n        this.setState({\n            classifiers\n        });\n    }\n\n    generateHyperpartition() {\n        const { selectedMethod, classifiers, methodCoords } = this.state;\n        const { headerHeight, textLeft, hpTabLeft, hyperPartWidth } = methodCoords;\n        const { hyperpartitions, datarunID, compareK } = this.props;\n\n        const hyperPartHeight = this.setHyperPartitionsHeight();\n        const methodHeight = this.setMethodHeight();\n\n        const rectProps = {\n            x: 0,\n            y: 30,\n            width: hyperPartWidth,\n            height: hyperPartHeight - 30\n        }\n\n        const groupProps = {\n            transform: `translate(${0}, ${headerHeight + methodHeight})`,\n            width: hyperPartWidth,\n            height: hyperPartHeight\n        }\n        return (\n            <g>\n                <defs>\n                    <clipPath id=\"mask_hyperpartitions\">\n                        <rect {...rectProps} />\n                    </clipPath>\n                </defs>\n                <g {...groupProps}>\n                    <g onClick={this.onMethodButtonClick}>\n                        {this.generateRect({\n                            x: 10,\n                            y: -9,\n                            width: hyperPartWidth - 68,\n                            height: 28\n                        }, 1, this.onMethodButtonClick)}\n                        <text\n                            textAnchor=\"start\"\n                            x={textLeft}\n                            y={10}\n                            style={{ font: \"bold 16px sans-serif\", display: \"inline\" }}\n                        >HyperPartitions of </text>\n                        {this.generateTag({\n                            x: textLeft + hpTabLeft,\n                            y: -6,\n                            width: 40,\n                            height: 20\n\n                        }, selectedMethod)}\n                    </g>\n                    <g clipPath={\"url(#mask_hyperpartitions)\"}>\n                        <HyperPartitions\n                            hyperpartitions={hyperpartitions}\n                            datarunID={datarunID}\n                            selectedMethod={selectedMethod}\n                            classifiers={classifiers}\n                            compareK={compareK}\n                            hyperpartitionsSelected={this.state.hyperpartitionsAlreadySelected}\n                            width={hyperPartWidth}\n                            height={hyperPartHeight}\n                            onHpsCheckBoxChange={this.onHyperpartitionCheckBoxChange}\n                            onMouseOverClassifier={this.onMouseOverClassifier}\n                            mouseOverClassifier={this.state.mouseOverClassifier}\n                        />\n                    </g>\n                </g>\n            </g>\n        )\n    }\n\n    generateHyperparameterText() {\n        const {\n            headerHeight,\n            hyTabLeft,\n            textLeft,\n            hyperPartWidth,\n            hyperParamWidth\n        } = this.state.methodCoords;\n\n        const { selectedMethod } = this.state;\n\n        let methodHeight = this.setMethodHeight();\n        let hyperPartHeight = this.setHyperPartitionsHeight();\n\n        const shapeProps = {\n            transform: `translate(${0}, ${methodHeight + headerHeight + hyperPartHeight})`,\n            width: hyperPartWidth,\n            height: hyperPartHeight,\n            onClick: this.onHyperpartitionButtonClick\n        }\n\n        const textProps = {\n            textAnchor: \"start\",\n            x: textLeft,\n            y: 10,\n            style: { font: \"bold 16px sans-serif\" }\n        };\n\n        return (\n            <g>\n                <g {...shapeProps}>\n                    {this.generateRect({\n                        x: 10,\n                        y: -9,\n                        width: hyperParamWidth - 68,\n                        height: 28\n                    }, 0, this.onHyperpartitionButtonClick)}\n                    <text {...textProps}>HyperParameters of</text>\n                    {this.generateTag({\n                        x: textLeft + hyTabLeft,\n                        y: -6,\n                        width: 40,\n                        height: 20\n\n                    }, selectedMethod)}\n                </g>\n            </g>\n        )\n    }\n\n    generateHyperparameter() {\n        const {\n            headerHeight,\n            textLeft,\n            hyTabLeft,\n            hyperParamWidth,\n            hyperParamHeight\n        } = this.state.methodCoords;\n\n        const {\n            selectedMethod,\n            classifiers\n        } = this.state;\n\n        const { compareK } = this.props;\n        let hyperPartHeight = this.setHyperPartitionsHeight();\n        let methodHeight = this.setMethodHeight();\n\n        const shapeProps = {\n            transform: `translate(${0}, ${headerHeight + methodHeight + hyperPartHeight + 35})`,\n            clipPath: \"url(#mask_hyperparameters)\",\n        }\n        const rectProps = {\n            x: 0,\n            y: -10,\n            width:hyperParamWidth + 200,\n            height:hyperParamHeight + 100\n        }\n\n        return (\n            <g>\n                <defs>\n                    <clipPath id=\"mask_hyperparameters\">\n                        <rect {...rectProps} />\n                    </clipPath>\n                </defs>\n                <g {...shapeProps}>\n                    <g onClick={this.onHyperpartitionButtonClick}>\n                        {this.generateRect({\n                            x: 10,\n                            y: -9,\n                            width: hyperParamWidth - 68,\n                            height: 28\n                        }, 1, this.onHyperpartitionButtonClick)}\n                        <text\n                            textAnchor=\"start\"\n                            x={textLeft}\n                            y={10}\n                            style={{ font: \"bold 16px sans-serif\" }}\n                        >HyperParameters of</text>\n                        {this.generateTag({\n                            x: textLeft + hyTabLeft,\n                            y: -6,\n                            width: 40,\n                            height: 20\n\n                        }, selectedMethod)}\n                    </g>\n                    <HyperParameters\n                        classifiers={classifiers}\n                        selectedMethod={selectedMethod}\n                        compareK={compareK}\n                        alreadySelectedRange={this.state.hyperparametersRangeAlreadySelected[selectedMethod] ? this.state.hyperparametersRangeAlreadySelected[selectedMethod] : {}}\n                        onSelectedChange={this.onBrushSelected}\n                        mouseOverClassifier={this.state.mouseOverClassifier}\n                        height={hyperParamHeight}\n                        width={hyperParamWidth}\n                    />\n                </g>\n            </g>\n        )\n    }\n    render() {\n        const { methodCoords } = this.state;\n        const textLeft = methodCoords.textLeft;\n\n        let {\n            datarun,\n            hyperpartitions,\n            compareK\n        } = this.props;\n\n        let { displaymode, classifiers } = this.state;\n\n        let usedMethods: string[] = Object.keys(datarun);\n        let unusedMethods = Object.keys(methodsDef).filter((name: string) => usedMethods.indexOf(name) < 0);\n        let svgWidth = methodCoords.svgWidth;\n        let methodHeight = this.setMethodHeight();\n\n        const generateRectProps = {\n            x: 10,\n            y: -9,\n            width: svgWidth - 68,\n            height: 28\n        }\n        \n        const textProps = {\n            textAnchor:\"start\", \n            x:textLeft,\n            y:10,\n            style:{ font: \"bold 16px sans-serif\" },\n        }\n\n        return (\n            <div className=\"svgWrapper\" style={{height: `${this.props.height}%`}}>\n                <GenerateSvg id=\"svgChart\">\n                    <g transform={`translate(${0}, ${this.state.methodCoords.headerHeight})`}>\n                        {this.generateRect({...generateRectProps }, 1, () => { })}\n                        <text {...textProps}>Algorithms</text>\n                        <Methods\n                            classifiers={classifiers}\n                            width={svgWidth}\n                            height={methodHeight}\n                            displaymode={displaymode}\n                            onSelectMethod={this.onSelectMethod}\n                            selectedMethod={this.state.selectedMethod}\n                            usedMethods={usedMethods}\n                            unusedMethods={unusedMethods}\n                            hyperpartitions={hyperpartitions}\n                            configsMethod={this.state.configsMethod}\n                            methodSelected={this.state.methodSelected}\n                            onMethodsCheckBoxChange={this.onMethodsCheckBoxChange}\n                            compareK={compareK}\n                            recommendationResult={this.props.recommendationResult}\n                        />\n                    </g>\n                    {displaymode == 1 || displaymode == 2 ? this.generateHyperpartition() : this.generateHyperpartitionText()}\n                    {displaymode == 2 ? this.generateHyperparameter() : displaymode == 1 ? this.generateHyperparameterText() : <g />}\n                </GenerateSvg>\n            </div>\n        )\n    }\n}"
  },
  {
    "path": "src/components/DataRuns/ThreeLevel/index.tsx",
    "content": "import ThreeLevel from './ThreeLevel'\nexport  default ThreeLevel;"
  },
  {
    "path": "src/components/DataRuns/ThreeLevel_Horizontal/HyperParameters.tsx",
    "content": "import * as React from \"react\";\nimport { IClassifierInfo } from \"service/dataService\"\nimport { getColor } from 'helper';\nimport * as methodsDef from \"assets/methodsDef.json\";\nimport {Icon,Button} from 'antd'\n\nexport interface IProps {\n    classifiers: IClassifierInfo[],\n    selectedMethod: string,\n    compareK:number,\n    onSelectedChange:(method:string,name:string,type:string,range:number[])=>void,\n    alreadySelectedRange:any,\n    mouseOverClassifier:number,\n    height:number\n}\nexport interface HyperParameterInfo{\n    dim:number,\n    name:string,\n    type:string,\n    min:number,\n    max:number,\n    valueType:string\n}\nexport interface IState {\n    hiddenrow:number,\n    HyperparameterList:HyperParameterInfo[],\n    selectedClassifier:any,\n    selectedMethod:string,\n    classifiers:any,\n    mode:number,\n    visible:boolean\n}\n\nconst d3 = require(\"d3\");\n// Get Datasets\n\nexport default class HyperParameters extends React.Component<IProps, IState>{\n    index = 0;\n    state={\n        hiddenrow:0,\n        HyperparameterList:[],\n        selectedClassifier:[],\n        selectedMethod:\"\",\n        classifiers:[],\n        mode:1,\n        visible:false\n    }\n    box = {\n        width: 200,\n        height: 100,\n        margin: 50,\n        yextragap:8\n    }\n    calculateExceedRow = () =>{\n        let box = this.box;\n        let exceedRow = Math.floor((this.props.height - box.margin) /  (box.height*5/4 + box.margin)) + 0;\n        if(exceedRow<=0){\n            exceedRow = 0;\n        }           \n        return exceedRow;\n    }\n    onUpClick = ()=>{\n        let {hiddenrow} = this.state;\n        if(hiddenrow>0){\n            hiddenrow = hiddenrow -1;\n            console.log(\"change\")\n        console.log(hiddenrow);\n            this.setState({\n                hiddenrow:hiddenrow\n            })\n        }\n    }\n    onDownClick = () =>{\n        let {hiddenrow} = this.state;\n        hiddenrow = hiddenrow + 1;\n        console.log(\"change\")\n        console.log(hiddenrow);\n        this.setState({\n            hiddenrow:hiddenrow\n        })\n    }\n    componentDidMount(){\n        this.prepareData(this.props,this.state);\n    }\n    prepareData(nextProps:IProps,nextStates:IState){\n        let { classifiers, selectedMethod, compareK,alreadySelectedRange } = nextProps\n        let comparedCls = classifiers.slice(0, compareK)\n        let comparedMethods = Array.from(new Set(comparedCls.map(d=>d.method)))\n        \n        if (comparedMethods.length==1){\n            selectedMethod = comparedMethods[0]\n        }\n        classifiers = classifiers.filter(d=>d.method==selectedMethod)\n        function judgeSelect(d:IClassifierInfo){\n            let hpaSelect : boolean = true;\n            if(alreadySelectedRange){\n                let filterkeys = Object.keys(alreadySelectedRange);\n                if(filterkeys.length>0){\n                    filterkeys.forEach((name:string,index:number)=>{\n                        if(hpaSelect){\n                            // Avoid endless comparison\n                            if(d.hyperparameters[name]){\n                                let data = d.hyperparameters[name];\n                                if(alreadySelectedRange[name][\"range\"]&&alreadySelectedRange[name][\"range\"].length==2){\n                                    let hpamin = alreadySelectedRange[name][\"range\"][0];\n                                    let hpamax = alreadySelectedRange[name][\"range\"][1];\n\n                                    if(data<hpamin||data>hpamax){\n                                        hpaSelect = false;\n                                    }\n                                }\n                            }else{\n                                hpaSelect = false;\n                            }\n                        }\n                    });\n                }else{hpaSelect=true;}\n            }else{hpaSelect = true;}\n            return hpaSelect;\n        }\n        if (classifiers.length>0) {\n            let HyperparameterList: any[] = [];\n            let idx = 0\n            let methodDef = methodsDef[selectedMethod];\n            methodDef.root_hyperparameters.forEach((p: string) => {\n                let parameter = methodDef['hyperparameters'][p]\n                if (parameter['values']) { //category axis\n                } else if (parameter['range']) {//value axis\n                    if (parameter['range'].length > 1) { //range in the form of [min, max]\n                        HyperparameterList.push({ dim: idx, name: p, type: 'value', min: parameter['range'][0], max: parameter['range'][1], valueType: parameter['type'] })\n                    } else { // range in the form of [max]\n                        HyperparameterList.push({ dim: idx, name: p, type: 'value', min: 0, max: parameter['range'][0], valueType: parameter['type'] })\n                    }\n\n                } else if (parameter['type'] == 'list') { // the hidden layer sizes in MLP\n                    for (let hidden_l = 0; hidden_l < parameter['list_length'].length; hidden_l++) {\n\n                        HyperparameterList.push({\n                            dim: idx + hidden_l, name: `${p}[${hidden_l}]`, type: 'value',\n                            min: 0,\n                            max: parameter['element']['range'][1],\n                            valueType: parameter['type']\n                        })\n                    }\n                    idx = idx + parameter['list_length'].length - 1\n\n                } else {\n                    HyperparameterList.push({\n                        dim: idx, name: p, type: 'value', valueType: parameter['type']\n                    })\n                }\n            })\n            let margin = 40,\n                yextragap = 30,\n                height = ((nextProps.height-margin)/(HyperparameterList.length)-margin-yextragap)*4/5;\n                this.box = {\n                    width: 200,\n                    height: height>100?100:height,\n                    margin,\n                    yextragap\n                }\n            let selectedClassifier : IClassifierInfo[] =[];\n\n            if(compareK>0){\n                selectedClassifier = comparedCls.filter(d=>{\n                    return judgeSelect(d);\n                })\n            }else{\n                selectedClassifier = classifiers.filter(d=>{\n                    return judgeSelect(d);\n                })\n\n            }\n            \n            // button visible checked\n            let box = this.box;\n            let exceedRow = Math.floor((nextProps.height - box.margin) /  (box.height*5/4 + box.margin)) + 0;\n            if(exceedRow<=0){\n                exceedRow = 0;\n            }           \n            let maxRow = HyperparameterList.length;\n            let gap = Math.max(0,maxRow-exceedRow);\n            let newhiddenrow = Math.min(gap,nextStates.hiddenrow);\n            console.log(maxRow,exceedRow,newhiddenrow);\n\n            let visible = nextStates.visible;\n            if(gap>0){\n                visible=true;\n            }else{\n                visible=false;\n            }\n            \n            if(this.props!=nextProps || newhiddenrow!=nextStates.hiddenrow || visible!=nextStates.visible || this.state.HyperparameterList.length!=HyperparameterList.length){\n                this.setState({\n                    selectedClassifier:selectedClassifier,\n                    HyperparameterList:HyperparameterList,\n                    selectedMethod:selectedMethod,\n                    classifiers:classifiers,\n                    mode:1,\n                    hiddenrow:newhiddenrow,\n                    visible:visible,\n                    \n\n                })\n            }\n            \n        }else{\n            if(this.props!=nextProps){\n                this.setState({\n                    mode:1,\n                    visible:false,\n                    hiddenrow:0\n                })\n            }\n        }\n    }\n    shouldComponentUpdate(nextProps:IProps,nextStates:IState){\n        this.prepareData(nextProps,nextStates);\n       \n        \n        return true;\n        \n    }\n    render() {\n            let {selectedClassifier,HyperparameterList,classifiers,selectedMethod,mode,visible} = this.state;\n\n            let box = this.box;\n            \n\n            let generateButton = () =>{\n                if(visible){\n                    return (<foreignObject x={box.width/2-50} y={this.props.height+20} width={100} height={35}>\n                        <div>\n                    <Button type=\"default\" size=\"small\" onClick={this.onUpClick}>\n                        <Icon type=\"up\" />\n                    </Button>\n                    <Button type=\"default\" size=\"small\" onClick={this.onDownClick} >\n                        <Icon type=\"down\"/>\n                    </Button>\n                    </div></foreignObject>\n                    )\n                }else{\n                    return <g />;\n                }\n            }\n        let exceedRow = this.calculateExceedRow();\n        exceedRow=exceedRow+this.state.hiddenrow;\n        if(mode==1){ \n            console.log(\"render hyperparameters\")\n            console.log(HyperparameterList.length)\n            return <g>\n                <g className=\"hyperParameters\">\n                {HyperparameterList.map((hp:HyperParameterInfo, i) => {\n                    if(i>=exceedRow||i<this.state.hiddenrow){\n                        return <g key={selectedMethod+\"_\"+hp.name+\"_g\"+(++this.index)}/>\n                    }else{\n                        return <HyperParameter\n                            key={selectedMethod+\"_\"+hp.name+\"_hp\"+(++this.index)}\n                            classifiers={classifiers}\n                            hp={hp}\n                            idx={i-this.state.hiddenrow}\n                            hiddenrow={this.state.hiddenrow}\n                            \n                            box={box}\n                            selectedMethod={selectedMethod}\n                            comparedCls={selectedClassifier}\n                            onSelectedChange={this.props.onSelectedChange}\n                            alreadySelectedRange={this.props.alreadySelectedRange[hp.name]?this.props.alreadySelectedRange[hp.name]:{}}\n                            valueType={hp.valueType}\n                            mouseOverClassifier={this.props.mouseOverClassifier}\n                            />\n                    }\n                })}\n            </g>\n            {generateButton()} \n            </g>\n        } else {\n            return <g />\n        }\n\n    }\n}\n\n\nexport interface HyProps {\n    classifiers: IClassifierInfo[],\n    selectedMethod: string,\n    hp: any,\n    idx: number,\n    comparedCls: IClassifierInfo[],\n    valueType: string,\n    box: {\n        width: number,\n        height: number,\n        margin: number,\n        yextragap : number\n    },\n    onSelectedChange:(method:string,name:string,type:string,range:number[])=>void,\n    alreadySelectedRange:any,\n    mouseOverClassifier:number,\n    hiddenrow:number\n}\n/**\n * export interface DetailChartProps{\n    width: number,\n    height: number,\n    x: number,\n    y: number,\n    methodDef: IMethod,\n    classifiers : IClassifier[],\n    name:string,\n    min:number,\n    max:number,\n    hyname:string,\n    alreadySelectedRange:number[],\n    hintRange:number[],\n    onSelectedChange:(method:string,name:string,range:number[])=>void,\n    valueType:string\n\n}\n */\n\nclass HyperParameter extends React.Component<HyProps, {}>{\n    TAG = \"HyperParameter_\";\n    componentDidMount() {\n        this.renderD3();\n        let g = d3.select(\"#\" + this.TAG + this.props.idx)\n        let {comparedCls,mouseOverClassifier} = this.props\n        g.selectAll(`circle.dot`)\n            .attr('opacity', 0.2)\n        //if(comparedCls.length>0){\n        //    g.selectAll(`circle.dot`)\n        //    .attr('opacity', 0.2)\n        //}\n        if(mouseOverClassifier==-1){\n            comparedCls.forEach(d=>{\n                g.select(`#_${d.id}`)\n                .attr('opacity', 1)\n            })\n        }else{\n            g.select(`#_${mouseOverClassifier}`)\n            .attr('opacity',1);\n        }\n    }\n    // componentWillUnmount() {\n    //     // d3.select(\"#\" + this.TAG + this.props.idx).remove()\n    // }\n    componentDidUpdate(){\n        let g = d3.select(\"#\" + this.TAG + this.props.idx)\n\n        g.selectAll('*').remove()\n        this.renderD3()\n\n        let {comparedCls,mouseOverClassifier} = this.props\n        g.selectAll(`circle.dot`)\n            .attr('opacity', 0.2)\n        //if(comparedCls.length>0){\n        //    g.selectAll(`circle.dot`)\n        //    .attr('opacity', 0.2)\n        //}\n        if(mouseOverClassifier==-1){\n            comparedCls.forEach(d=>{\n                g.select(`#_${d.id}`)\n                .attr('opacity', 1)\n            })\n        }else{\n            g.select(`#_${mouseOverClassifier}`)\n            .attr('opacity',1);\n        }\n\n    }\n    renderD3() {\n        let { box, hp, classifiers, idx, selectedMethod, onSelectedChange, alreadySelectedRange,valueType } = this.props\n        classifiers.reverse() // reverse so that good classifiers is on the top\n        let scatterData = classifiers.map(cls => {\n            return { hp: cls.hyperparameters[hp.name]||0, score: cls.cv_metric, ...cls }\n        })\n        let methodColor = getColor(selectedMethod)\n\n        let { width, height, margin, yextragap} = box\n        let x = d3.scaleLinear().range([0, width])\n        let y = d3.scaleLinear().range([height, 0]);\n        if(valueType==\"float_exp\"){\n            x = d3.scaleLog().range([0, width])\n        }\n        let yArea = d3.scaleLinear().range([height/4, 0]);\n        x.domain([hp.min, hp.max]);\n        y.domain(d3.extent(classifiers, (cls:IClassifierInfo)=>cls.cv_metric));\n\n        // calculate the area chart\n        const num_step = 20\n        let areaData: number[][] = Array.from(new Array(num_step).keys()).map(d => [])\n        const step = width / num_step\n        scatterData.forEach(d => {\n            if (typeof (d.hp) == 'number') {\n                let rangeIndex = Math.floor((x(d.hp) - 0) / step)\n\n                rangeIndex = rangeIndex >= num_step ? (num_step - 1) : rangeIndex\n                rangeIndex = rangeIndex < 0 ? 0 : rangeIndex;\n                areaData[rangeIndex].push(d.score)\n            }\n        })\n        areaData.unshift(areaData[0])\n\n        //draw\n\n        let svg = d3.select(\"#\" + this.TAG + idx)\n            .append('g')\n            .attr('transform', `translate(${0}, ${margin + idx * (height*5/4 + margin + yextragap)})`)\n\n\n\n        yArea.domain(d3.extent(areaData, (d: number[]) => d.length))\n\n        let area = d3.area()\n            .x(function (d: any, i: number) { return i*step; })\n            .y1(height*5/4)\n            .y0(function (d: any) { return height + yArea(d.length); })\n            .curve(d3.curveCardinal)\n\n\n        // area performance gradient\n        /*svg.append(\"linearGradient\")\n            .attr(\"id\", `area-gradient-${hp.name}`)\n            .attr(\"gradientUnits\", \"userSpaceOnUse\")\n            .attr(\"x1\", 0).attr(\"y1\", 0)\n            .attr(\"x2\", width).attr(\"y2\", 0)\n            .selectAll(\"stop\")\n            .data(areaData)\n            .enter().append(\"stop\")\n            .attr(\"offset\", (d: any, i: number) => i / num_step)\n            .attr(\"stop-color\", methodColor)\n            .attr('stop-opacity', (d: number[]) => (d.reduce((m, n) => m + n, 0) || 0) / d.length)*/\n\n        //area chart\n        svg.append('g')\n            .attr('class', 'areaGroup')\n            .selectAll('.area')\n            .data([areaData])\n            .enter()\n            .append('path')\n            .attr('class', 'area')\n            .attr('d', area)\n           // .style('fill', `url(#area-gradient-${hp.name})`)\n           .style('fill',methodColor)\n        // brush\n        function brushended() {\n            if (!d3.event.sourceEvent) return; // Only transition after input.\n            if (!d3.event.selection) return; // Ignore empty selections.\n            let d0 = d3.event.selection.map(x.invert);\n            let min = d0[0];\n            let max = d0[1];\n            console.log(\"brush min max\");\n            console.log(min);\n            console.log(max);\n            onSelectedChange(selectedMethod,hp.name,hp.valueType,[min,max]);\n\n        }\n\n\n        let brush : any;\n        let brush_g = svg.append(\"g\")\n                    .attr(\"class\", \"brush\")\n                    .call(brush = d3.brushX()\n                    .extent([[x(hp.min), height], [x(hp.max), height*5/4]]));\n        if(alreadySelectedRange[\"range\"]&&alreadySelectedRange[\"range\"].length==2){\n            brush.move(brush_g,[x(alreadySelectedRange[\"range\"][0]),x(alreadySelectedRange[\"range\"][1])]);\n        }\n        brush.on(\"end\", brushended);\n\n        //scatter chart\n        svg.append('g')\n            .attr('class', 'dotGroup')\n            .selectAll(\".dot\")\n            .data(scatterData)\n            .enter().append(\"circle\")\n            .attr(\"class\", 'dot')\n            .attr('id',(d:any)=>`_${d.id}`)\n            .attr(\"r\", 4)\n            .attr(\"cx\", function (d: any) { return x(d.hp); })\n            .attr(\"cy\", function (d: any) { return y(d.score); })\n            .style('fill', getColor(classifiers[0].method))\n            .attr('stroke', 'white')\n            .attr('stroke-width', 1)\n\n        // Add the X Axis\n        svg.append(\"g\")\n            .attr('class','xAxis')\n            .attr(\"transform\", \"translate(0,\" + height*5/4 + \")\")\n            .call(d3.axisBottom(x).ticks(5));\n        svg.append(\"g\")\n            .attr('class','xAxis_')\n            .attr(\"transform\", \"translate(0,\" + height + \")\")\n            .call(d3.axisBottom(x).ticks(0));\n\n        // x axis lable;\n       /* svg.append(\"text\")\n            .attr(\"transform\",\n                \"translate(\" + (width + 10) + \" ,\" +\n                (height*5/4) + \")\")\n            .style(\"text-anchor\", \"start\")\n            .text(hp.name);*/\n        svg.append(\"text\")\n            .attr(\"transform\",\n                \"translate(\" + (width) + \" ,\" +\n                (height*5/4 + margin*0.75) + \")\")\n            .style(\"text-anchor\", \"end\")\n            .text(hp.name);\n        // Add the Y Axis\n        svg.append(\"g\")\n            .attr('class', 'yAxis')\n            .call(d3.axisLeft(y).ticks(5));\n\n        // text label for the y axis\n        svg.append(\"text\")\n            .attr(\"transform\", \"rotate(-90)\")\n            .attr(\"y\", 0 - 1.5 * margin)\n            .attr(\"x\", 0 - (height / 2))\n            .attr(\"dy\", \"1em\")\n            .style(\"text-anchor\", \"middle\")\n            .text(\"F_score\");\n\n    }\n    render() {\n        return <g id={this.TAG + this.props.idx} />\n    }\n}"
  },
  {
    "path": "src/components/DataRuns/ThreeLevel_Horizontal/HyperPartitions.css",
    "content": ".RadioBox input{vertical-align:middle; margin-bottom:2px; *margin-bottom:2px;}\n\ndiv.tooltip {\n    position: absolute;\n    text-align: left;\n    color: aliceblue;\n    height: 20px;\n    padding: 3px;\n    font: 12px sans-serif;\n    background: rgba(0, 0, 0, 0.671);\n    border: 5px;\n    border-radius: 3px;\n    pointer-events: none;\n  }\n  .link {\n    fill: none;\n    stroke-width: 1.5px;\n  }\n  .bottomright {\n    position: absolute;\n    bottom: 80px;\n    right: 30px;\n    font-size: 18px;\n}\n\n.ant-progress-inner{\n  background-color: #cecdcd\n}"
  },
  {
    "path": "src/components/DataRuns/ThreeLevel_Horizontal/HyperPartitions.tsx",
    "content": "import * as React from \"react\";\nimport { IHyperpartitionInfo, IClassifierInfo } from \"service/dataService\"\nimport { getColor } from \"helper\";\n//import {Checkbox} from \"antd\";\nimport \"./HyperPartitions.css\";\nimport {Button,Icon} from 'antd';\n\n// import { IDatarun } from \"types\";\nconst d3 = require(\"d3\");\nexport interface IProps {\n    hyperpartitions: IHyperpartitionInfo[],\n    // datarun: IDatarun,\n    datarunID: number|null,\n    selectedMethod: string,\n    classifiers: IClassifierInfo[],\n    compareK: number,\n    hyperpartitionsSelected:number[],\n    onHpsCheckBoxChange: (e:any)=>void,\n    width:number,\n    height:number,\n    onMouseOverClassifier:(e:number)=>void,\n    mouseOverClassifier:number\n\n}\nexport interface IState {\n    hiddencol:number,\n    visible:boolean,\n    leftdisabled:boolean,\n    rightdisabled:boolean\n}\nexport default class HyperPartitions extends React.Component<IProps, IState>{\n    state={\n        hiddencol:0,\n        visible:false,\n        leftdisabled:false,\n        rightdisabled:false\n    }\n    public hyperpartitionBox = {\n        height: 20,\n        gap: 8,\n        width: 160\n    }\n    numPerRow = 14\n    index= 0;\n    lastArray:Array<any>= [];\n    onLeftHp = () =>{\n        let hiddencol = this.state.hiddencol;\n        if(hiddencol<0){\n            hiddencol = 0;\n        }else if(hiddencol>0){\n            hiddencol=hiddencol-1;\n        }\n        this.setState({\n            hiddencol:hiddencol\n        })\n    }\n    onRightHp = () =>{\n        let hiddencol = this.state.hiddencol;\n        hiddencol=hiddencol+1;\n        this.setState({\n            hiddencol:hiddencol\n        })\n    }\n    public renderD3(hpsInfo: Array<any>, maxLen: number, selectedMethod: string, hyperpartitionsSelected:any,hiddencol:number,comparedCls:any,nowProps:IProps) {\n            console.log(\"rerender hyperpartitions\");\n            /*if(this.index>=1){\n                console.log(\"end\");\n                return;\n            }else{\n                this.index++;\n            }*/\n            // let num_all_hp = hpsInfo.length\n\n            hpsInfo = hpsInfo.filter(d=>d.method==selectedMethod).filter(d => d.sortedCls.length > 0);\n            console.log(\"len\",hpsInfo.length);\n            \n            let { height, width, gap } = this.hyperpartitionBox\n\n            let trans = d3.transition()\n                    .duration(1000)\n                    .ease(d3.easeLinear);\n\n            let x = d3.scaleBand()\n                .rangeRound([0, width])\n                .paddingInner(0.05);\n\n            let y = d3.scaleLinear()\n                .rangeRound([height, 0]);\n            x.domain(Array.from(Array(maxLen).keys()))\n            y.domain([0, 1]);\n\n            let exceedcol = -1;\n            let maxcol = 0;\n            let nowcol = 0;\n            let lastposx = gap+width*0.5;\n\n            let lastposy = height;\n            let horizontalnum = 0;\n            let maxhorizontalnum = 10;\n\n            let pos = [[lastposx, lastposy]]\n            let bundleData : any[]= [];\n            for (let i = 0; i < hpsInfo.length; i++) {\n                let currentPos = [0, 0]\n                if (hpsInfo[i].method == selectedMethod) {\n                    //next pos x not changed, y changed\n                    lastposy = lastposy + (2 * height + gap);\n                    currentPos = [lastposx, lastposy]\n                    horizontalnum = 0;\n                } else {\n                    if(horizontalnum == 0){\n                        lastposy = lastposy + (2*gap);\n                    }\n                    if(horizontalnum<maxhorizontalnum){\n                         //next pos x changed, y not changed\n                        currentPos = [lastposx + (2*gap*horizontalnum), lastposy]\n                        horizontalnum++;\n                    }else{\n                        lastposy = lastposy + (2*gap);\n                        currentPos = [lastposx, lastposy]\n                        horizontalnum = 1;\n                    }\n\n                }\n                if (lastposy > nowProps.height) {\n                    lastposx = lastposx + width * 1.5;\n                    nowcol ++;\n                    if(lastposx + width*1.5>nowProps.width && exceedcol==-1){\n                        exceedcol = nowcol;\n                    }\n\n\n                    lastposy = height + (\n                        hpsInfo[i].method == selectedMethod?\n                        (2 * height + gap)\n                        :(2*gap)\n                    );\n                    currentPos = [lastposx, lastposy]\n                }\n                pos.push(currentPos)\n                bundleData.push({\n                    ...hpsInfo[i],\n                    pos:currentPos,\n                    col:nowcol\n                })\n            }\n            maxcol = nowcol+1;\n            //console.log(\"maxcol exceedcol\");\n            //console.log(maxcol);\n            //console.log(exceedcol)\n            if(exceedcol==-1){\n                let newhiddencol = 0;\n                if(newhiddencol != hiddencol || this.state.visible!=false){\n                    this.setState({\n                        hiddencol:0,\n                        visible:false\n                    })\n                }\n                hiddencol = newhiddencol;\n            }else{\n                let leftdisabled = hiddencol<=0;\n                let rightdisabled = hiddencol>=maxcol-exceedcol;\n                let newhiddencol = hiddencol;\n                if(newhiddencol<=0){\n                    newhiddencol=0;\n                }\n                if(newhiddencol>=maxcol-exceedcol){\n                    newhiddencol=maxcol-exceedcol;\n                }\n                if(this.state.visible != true || this.state.leftdisabled != leftdisabled || this.state.rightdisabled!=rightdisabled || this.state.hiddencol!=newhiddencol){\n                    this.setState(\n                        {\n                            visible:true,\n                            leftdisabled:leftdisabled,\n                            rightdisabled:rightdisabled,\n                            hiddencol:newhiddencol\n                        }\n                    )\n                }\n                hiddencol = newhiddencol;\n                \n            }\n            if(exceedcol!=-1){\n                exceedcol=hiddencol+exceedcol;\n            }else{\n                exceedcol=maxcol+1;\n            }\n            //console.log(\"hiddencol\");\n           // console.log(hiddencol);\n            bundleData.forEach((d:any)=>{\n                if(d.col<hiddencol){\n                    d.pos[0]=d.pos[0]-gap-width*0.5-width*1.5*(hiddencol);\n                }else{\n                    if(d.col>=exceedcol){\n                        d.pos[0]=d.pos[0]-width*1.5*(d.col)+nowProps.width+width*1.5*(d.col-exceedcol);\n                     }else{\n                        d.pos[0]=d.pos[0]-width*1.5*(hiddencol);\n                     }\n\n                }\n            })\n            //enter\n            let strokeWidth = 1\n\n            let hps = d3\n                .select('g.HyperPartitions')\n                .selectAll(`g.hpGroup`)\n                .data(bundleData,function(d:any){\n                    return d.id;\n                })\n                console.log(hps);\n                console.log(hps.enter().size());\n                console.log(hps.size());\n                console.log(hps.exit().size());\n            //--------------Enter Phase-------------------//\n            let hpGroupEnter = hps\n                .enter()\n                .append(\"g\")\n                .attr('class', 'hpGroup')\n                .attr(\"transform\",\n                    (d: any, i: number) => {\n                        return `translate(${d.pos[0]},${d.pos[1]})`\n                    }\n                );\n            hpGroupEnter.append('rect')\n                .attr('class', \"out_hyperPartition\")\n                .attr('height', (d: any) => d.method == selectedMethod ? (height + 2 * strokeWidth) : gap)\n                .attr('y', (d: any) => d.method == selectedMethod ? (-strokeWidth - height) : (gap))\n                .attr('x', -strokeWidth)\n                .attr('width', (d: any) => d.method == selectedMethod ? (width + 2 * strokeWidth) : gap)\n                .style('fill', (d: any) => d.method == selectedMethod ? 'none' : getColor(d.method))\n                .style('stroke', 'gray')\n                .style('stroke-width', strokeWidth);\n            //ENTER + UPDATE\n            //TEXT ENTER\n            let textData = hpGroupEnter.merge(hps).filter((d: any) => d.method == selectedMethod)\n            .selectAll('g.caption')\n            .data((d:any)=>[d],(d:any)=>{\n                d.id\n            });\n            let textEnter = textData\n                    .enter()\n                    .append('g')\n                    .attr('class', 'caption')\n            textEnter.append('text')\n                .attr('class', \"num_cls\")\n                .attr('x', (d: any) => 1+width * d.sortedCls.length / maxLen - 2)\n                .attr('y', -1)\n                .text((d: any) => d.sortedCls.length)\n                .attr('text-anchor', 'start')\n\n\n            textEnter.append('text')\n                .attr('class', \"best_score\")\n                // .attr('x', (d:any)=>width*d.scores.length/maxLen)\n                .attr('x', -gap)\n                .attr('y', 0)\n                .attr('text-anchor', 'end')\n                .text((d: any) => d.bestScore >= 0 ? d.bestScore.toFixed(3) : '')\n\n                let generateText = (d:any)=>{\n                    let selected=\"\";\n                    if(hyperpartitionsSelected.indexOf(d.id)>-1){\n                        selected=\"checked\";\n                    }\n\n                    return  `<div class=\"RadioBox\"\n                        style='text-overflow: ellipsis;\n                        width: ${width}px;\n                        height: ${height}px;\n                        overflow:hidden;\n                        white-space:nowrap';\n                        padding: 0px;\n                    >\n                    <input type=\"radio\" value=\"${d.id}\" ${selected} /> <label> ${d.hyperpartition_string}</label>\n                    </div>`\n                };\n                 //Create SVG element\n                let tooltip = d3.select(\"#tooltip\");\n                //let top_methods = d3.select(\"#methodstop\");\n\n                if(tooltip.empty()){\n                    tooltip = d3.select(\"body\").append(\"div\")\n                    .attr(\"class\", \"tooltip\")\n                    .attr(\"id\",\"tooltip\")\n                    .style(\"opacity\", 0)\n                    .style(\"left\",  \"0px\")\n                    .style(\"top\",  \"0px\");;\n                }\n\n            textEnter.append('g')\n                .attr('class', 'hp_name')\n                .attr('transform', `translate(${0}, ${0})`)\n                .append('foreignObject')\n                .attr('width', width)\n                .attr('height', height)\n                .append('xhtml:div')\n                .attr('class',  'div_caption')\n                .html(generateText)\n                .on(\"click\",(d:any)=>{\n                    nowProps.onHpsCheckBoxChange(d.id);\n                }).on(\"mouseover\",(d:any)=>{\n                    let length = d.hyperpartition_string.length * 6.5 + 15;\n                    tooltip\n                    .style(\"width\",length+\"px\")\n                    .style(\"left\", (d3.event.pageX) + \"px\")\n                    .style(\"top\", (d3.event.pageY - 28) + \"px\");\n                    tooltip.style(\"opacity\", 0.7).html(d.hyperpartition_string)\n\n                })\n                .on(\"mouseout\",(d:any)=>{\n                    tooltip\n                    .style(\"opacity\", 0);\n\n                })\n\n\n\n                /*\n            return (<foreignObject\n                        key={name+\"_text_\"+i}\n                        x={ this.methodBoxAttr.x +\n                            Math.floor(i / 7)  * (this.methodBoxAttr.width + 2*this.methodBoxAttr.gap)}\n                        y={this.methodBoxAttr.y +\n                            (i % 7)* (this.methodBoxAttr.height + this.methodBoxAttr.gap) - this.methodBoxAttr.gap}\n                        width={this.methodBoxAttr.checkboxWidth}\n                        height={this.methodBoxAttr.checkboxHeight}>\n\n                        </foreignObject>\n                    )*/\n            //UPDATE\n            hps.transition(trans)\n                .attr(\"transform\",\n                    (d: any, i: number) => {\n                        return `translate(${d.pos[0]},${d.pos[1]})`\n\n                })\n\n\n            //HPGROUP UPDATE\n            //CLASSIFIER REMOVE\n            hpGroupEnter.merge(hps).filter((d: any) => d.method != selectedMethod)\n                .selectAll('.hpBar')\n                .transition(trans)\n                .attr('width', 0)\n                .attr('height', 0)\n                .attr('x', x(0))\n                .attr('y', height)\n                .remove()\n            // ENTER + UPDATE\n            let classifierSelect = hpGroupEnter.merge(hps).filter((d: any) => d.method == selectedMethod)\n                .selectAll('.hpBar')\n                .data((d: any) => {\n                    return d.sortedCls\n                },function(d:any){\n                    return \"cls\"+d.id;\n                });\n\n                let selectOpacity = (d:any)=>{\n\n                    if(nowProps.mouseOverClassifier==d.id){\n                        return 1;\n                    }else{\n                        if(nowProps.mouseOverClassifier==-1){\n                            if(comparedCls.length>0){\n                                let flag = false;\n                                comparedCls.forEach((cls:any)=>{\n                                    if(cls.id == d.id){\n                                        flag = true;\n                                    }\n                                })\n                                if(flag){\n                                    return 1;\n                                }else{\n                                    return 0.2;\n                                }\n                            }else{\n                                return 1;\n                            }\n                        }\n                        else{\n                            return 0.2;\n                        }\n                    }\n\n                }\n\n               \n                //CLASSIFIER ENTER\n                classifierSelect.enter().append(\"rect\")\n                .attr(\"class\", \"hpBar\")\n                .attr('id', (d:any)=>`_${d.id}`)\n                .style('fill', function (d: any) {\n                    return getColor(selectedMethod)\n                })\n                .attr('opacity',selectOpacity)\n                .on(\"mouseover\",(d:any)=>{\n                    nowProps.onMouseOverClassifier(d.id);\n                    tooltip\n                    .style(\"width\",\"40px\")\n                    .style(\"left\", (d3.event.pageX) + \"px\")\n                    .style(\"top\", (d3.event.pageY - 28) + \"px\");\n                    tooltip.style(\"opacity\", 0.7).html(d.cv_metric.toFixed(3))\n\n                })\n                .on(\"mouseout\",(d:any)=>{\n                    nowProps.onMouseOverClassifier(-1);\n                    tooltip\n                    .style(\"opacity\", 0);\n\n                })\n                .attr(\"x\", (d: any, i: number) => x(0))\n                .attr(\"y\", (d: any) => 0 )\n                .attr(\"width\", 0)\n                .attr(\"height\", 0)\n\n                .transition(trans)\n                .attr(\"x\", (d: any, i: number) => x(i))\n                .attr(\"y\", (d: any) => y(d.cv_metric) - height)\n                .attr(\"width\", x.bandwidth())\n                .attr(\"height\", (d: any) => (height - y(d.cv_metric)))\n                .attr('opacity',selectOpacity)\n                //CLASSIFIER UPDATE\n                classifierSelect.transition(trans)\n                .attr(\"x\", (d: any, i: number) => x(i))\n                .attr(\"y\", (d: any) => y(d.cv_metric) - height)\n                .attr(\"width\", x.bandwidth())\n                .attr(\"height\", (d: any) => (height - y(d.cv_metric)))\n                .attr('opacity',selectOpacity)\n                classifierSelect.exit().remove();\n            //UPDATE\n            hps.selectAll('.out_hyperPartition')\n                .transition(trans)\n                .attr('height', (d: any) => d.method == selectedMethod ? (height + 2 * strokeWidth) : gap)\n                .attr('y', (d: any) => d.method == selectedMethod ? (-strokeWidth - height) : (gap))\n                .attr('x', -strokeWidth)\n                .attr('width', (d: any) => d.method == selectedMethod ? (width + 2 * strokeWidth) : gap)\n                .style('fill', (d: any) => d.method == selectedMethod ? 'none' : getColor(d.method))\n                .style('stroke', 'gray')\n                .style('stroke-width', strokeWidth)\n            //ENTER + UPDATE\n            //TEXT UPDATE\n            let textUpdate = textData;\n            textUpdate.exit()\n                .transition(trans)\n                .attr('opacity', 1e-6)\n                .remove()\n\n            textUpdate.selectAll('text.num_cls')\n                .attr('x', (d: any) => 1+width * d.sortedCls.length / maxLen - 2)\n                .attr('y', -1)\n                .text((d: any) => {\n                    //console.log(d.id+\":\"+d.sortedCls.length);\n                    return d.sortedCls.length\n                }\n                )\n                .attr('text-anchor', 'start')\n            textUpdate.selectAll('text.best_score')\n                // .attr('x', (d:any)=>width*d.scores.length/maxLen)\n                .attr('x', -gap)\n                .attr('y', 0)\n                .attr('text-anchor', 'end')\n                .text((d: any) => d.bestScore >= 0 ? d.bestScore.toFixed(3) : '')\n            textUpdate.selectAll('g.hp_name')\n                .attr('transform', `translate(${0}, ${0})`)\n                .select('foreignObject')\n                .attr('width', width)\n                .attr('height', height)\n                .select('.div_caption')\n                .html(generateText).attr('opacity', 1e-6)\n                .transition(trans)\n                .attr('opacity', 1)\n\n            hps.filter((d: any) => d.method != selectedMethod)\n                .selectAll('g.caption')\n                .transition(trans)\n                .attr('opacity', 1e-6)\n                .remove()\n\n            // exit()\n            hps.exit()\n            //.transition(trans)\n            //.attr('opacity', 1e-6)\n            .remove()\n\n\n    }\n\n\n    public sortHpByperformance(props: IProps) {\n        let { hyperpartitions: hps, classifiers, selectedMethod } = props\n        // cls = cls.filter(d=>d.method==selectedMethod)\n        // hps = hps.filter(d=>d.method==selectedMethod)\n        let hpsInfo = hps.map(hp => {\n            let filteredCls = classifiers\n                .filter(\n                    cls => cls.hyperpartition_id == hp.id\n                )\n            let sortedCls = filteredCls.sort((a, b) => (b.cv_metric - a.cv_metric))\n            return {\n                ...hp,\n                bestScore: Math.max(...sortedCls.map(d=>d.cv_metric)),\n                sortedCls\n            }\n        })\n        hpsInfo.sort((a, b) => (b.bestScore - a.bestScore))\n        let maxLen = Math.max(...hpsInfo.map(d => d.sortedCls.length))\n        if (maxLen < 0) maxLen = 0\n\n\n        // let filterHps = hps.filter(d => d.method == selectedMethod)\n        // let filterHpsInfo = hpsInfo.filter(d => d.method == selectedMethod)\n\n        return { hps, hpsInfo, maxLen, selectedMethod }\n    }\n    componentDidMount() {\n        let { maxLen, hpsInfo, selectedMethod } = this.sortHpByperformance(this.props)\n\n        let { compareK, classifiers,hyperpartitionsSelected} = this.props\n        let comparedCls = classifiers.slice(0, compareK)\n        let comparedMethods = Array.from(new Set(comparedCls.map(d=>d.method)))\n        if (comparedMethods.length==1){\n            selectedMethod = comparedMethods[0]\n        }\n        if(hpsInfo.length>0){\n            this.renderD3(hpsInfo, maxLen, selectedMethod,hyperpartitionsSelected,this.state.hiddencol,comparedCls,this.props)\n        }\n        /*\n        if (comparedMethods.length>=1|| mouseOverClassifier!=-1){\n            let g = d3.select('g.HyperPartitions')\n            g.selectAll('rect.hpBar')\n            .attr('opacity', 0.2)\n            if(mouseOverClassifier==-1 && comparedMethods.length>=1){\n                comparedCls.forEach(cls=>{\n                    g.select(`rect#_${cls.id}`)\n                    .attr('opacity', 1)\n                })\n            }else if(mouseOverClassifier!=-1){\n                g.select(`rect#_${mouseOverClassifier}`)\n                    .attr('opacity', 1)\n            }\n        }else{\n            let g = d3.select('g.HyperPartitions')\n            g.selectAll('rect.hpBar')\n            .attr('opacity', 1)\n        }*/\n    }\n    shouldComponentUpdate(nextProps: IProps, nextStates: IState) {\n\n        let { maxLen, hpsInfo, selectedMethod } = this.sortHpByperformance(nextProps)\n        let { compareK, classifiers,hyperpartitionsSelected} = nextProps\n        let comparedCls = classifiers.slice(0, compareK)\n        let comparedMethods = Array.from(new Set(comparedCls.map(d=>d.method)))\n        if (comparedMethods.length==1){\n            selectedMethod = comparedMethods[0]\n        }\n\n        if (this.props != nextProps || this.props.hyperpartitions.length == 0 || nextStates.hiddencol != this.state.hiddencol) { //update\n            d3.selectAll(`.caption`).remove()\n            this.renderD3(hpsInfo, maxLen, selectedMethod,hyperpartitionsSelected,nextStates.hiddencol,comparedCls,nextProps)\n        }\n        //if(this.props.datarunID!=nextProps.datarunID){//remove and redraw\n            //d3.select(`.HyperPartitions`).selectAll('*').remove()\n        //    this.renderD3(hpsInfo, maxLen, selectedMethod,hyperpartitionsSelected)\n        //}\n        //\n        /*\n        if (comparedMethods.length>=1 || mouseOverClassifier!=-1){\n            let g = d3.selectAll('g.hpGroup')\n            console.info('d3, compare, hyperpartition', comparedMethods, comparedCls)\n            g.selectAll('rect.hpBar')\n            .attr('opacity', 0.2)\n\n            if(mouseOverClassifier==-1){\n                comparedCls.forEach(cls=>{\n                    g.select(`rect#_${cls.id}`)\n                    .attr('opacity', 1)\n                })\n            }else{\n                g.select(`rect#_${mouseOverClassifier}`)\n                    .attr('opacity', 1)\n            }\n        }else{\n            let g = d3.select('g.HyperPartitions')\n            g.selectAll('rect.hpBar')\n            .attr('opacity', 1)\n        }*/\n\n        return true\n    }\n    //componentWillUpdate(){\n    //     this.renderD3()\n    // }\n    render() {\n\n        // let rectWidth = Math.max(\n        //     ...hpsInfo.map(\n        //         d=>d.hyperpartition_string.length*fontSize\n        //     )\n        // )\n        //console.log(\"render hiddencol\");\n        //console.log(this.state.hiddencol);\n        let generateButton = () =>{\n            if(this.state.visible){\n            return (<foreignObject x={this.props.width/2-50} y={this.props.height+20} width={100} height={35}>\n                <div>\n\n               <Button type=\"default\" size=\"small\" onClick={this.onLeftHp} disabled={this.state.leftdisabled}>\n                <Icon type=\"left\" />\n              </Button>\n              <Button type=\"default\" size=\"small\" onClick={this.onRightHp} disabled={this.state.rightdisabled}>\n                <Icon type=\"right\" />\n              </Button>\n              </div></foreignObject>\n              )\n            }else{\n                return <g />\n            }\n\n        }\n        return (<g>{generateButton()}\n        <g className={`HyperPartitions`}/></g>)\n    }\n}\n\n"
  },
  {
    "path": "src/components/DataRuns/ThreeLevel_Horizontal/Methods.css",
    "content": ".methods{\n    overflow-y: scroll;\n    padding: 10px;\n}\n\n.usedMethodContainer{\n    padding: 3px 8px;\n    float: left;\n}\n\n.method{\n    border: .4px solid rgba(0,0,0, 0.2);\n    box-shadow: 0 1px 1px 0 rgba(0,0,0,0.06);\n    /* height: ${100/methods.length}% */\n    height: 100%;\n    padding: 2px 5px;\n}\n\n.unusedMethod{\n    border: 2px dashed rgba(0,0,0, 0.3);\n    box-shadow: 0 1px 1px 0 rgba(0,0,0,0.06);\n    padding: 2px 5px;\n    margin: 5px;\n    float: left;\n}\n\ndiv.tooltip {\n    position: absolute;\n    text-align: left;\n    color: aliceblue;\n    width: 180px;\n    height: 80px;\n    padding: 10px;\n    font: 12px sans-serif;\n    background: rgba(0, 0, 0, 0.671);\n    border: 10px;\n    border-radius: 5px;\n    pointer-events: none;\n  }\n  .link {\n    fill: none;\n    stroke-width: 1.5px;\n  }\n  .bottomright {\n    position: absolute;\n    bottom: 80px;\n    right: 30px;\n    font-size: 18px;\n}"
  },
  {
    "path": "src/components/DataRuns/ThreeLevel_Horizontal/Methods.tsx",
    "content": "import * as React from \"react\";\nimport { IClassifier, IMethod,  } from \"types\";\nimport { getColor } from \"helper\";\nimport * as methodsDef from \"assets/methodsDef.json\";\nimport {IHyperpartitionInfo, IClassifierInfo,IRecommendationResult} from 'service/dataService';\nimport { Checkbox,Tooltip,Progress } from 'antd';\nimport \"./Methods.css\";\n//import * as hint from \"assets/small_hint.png\"\nconst d3 = require(\"d3\");\n\nexport interface IProps {\n    classifiers: IClassifierInfo[],\n    onSelectMethod: (methodName:string)=>void,\n    usedMethods: string[],\n    unusedMethods: string[],\n    width: number,\n    selectedMethod: string,\n    hyperpartitions: IHyperpartitionInfo[],\n    configsMethod : string[],\n    onMethodsCheckBoxChange: (e:any)=>void\n    compareK:number,\n    methodSelected:any,\n    recommendationResult:IRecommendationResult\n}\n\nexport interface IState {\n\n}\n\n\nexport default class methods extends React.Component<IProps, IState>{\n    public gap = 20\n    width = (this.props.width - 2*this.gap)/2>20?(this.props.width - 2*this.gap)/2:20;\n    // public height = (window.innerHeight * 0.94 * 0.9 - this.gap) / (Object.keys(methodsDef).length * 0.5) - this.gap\n    public methodBoxAttr = {\n        // width : 70,\n        height: this.width * 0.4,\n        width: this.width,\n        gap: this.gap,\n        x: this.gap,\n        y: this.gap,\n        checkboxY: 2,\n        checkboxWidth: 75,\n        checkboxHeight: 30,\n        yextragap:20\n    }\n    public getbestperformance(list: IClassifier[]) {\n        if (list.length > 0) {\n            let classifierPerformance: number[] = list.map((classifier: IClassifier) => {\n                let performance = parseFloat(classifier['performance'].split(' +- ')[0]);\n                return performance;\n            });\n            classifierPerformance.sort(function (a: any, b: any) {\n                return b - a;\n            });\n            return classifierPerformance[0];\n        } else {\n            return 0;\n        }\n\n    }\n    public getmaxnum(classifiers: IClassifierInfo[]) {\n        let step = 0.1;\n        let data: number[] = [];\n\n        for (let i = 0; i < 1 / step; i++) {\n            data.push(0)\n        }\n        let bestperformance = 0;\n        classifiers.forEach((classifier: IClassifierInfo) => {\n            let performance = classifier['cv_metric'];\n            if (performance > bestperformance) {\n                bestperformance = performance;\n            }\n            let rangeIdx = Math.floor(performance / step)\n            data[rangeIdx] = data[rangeIdx] + 1\n        });\n        let maxvalue = 0;\n        data.forEach((p: any) => {\n            if (p > maxvalue) {\n                maxvalue = p;\n            }\n        })\n        return maxvalue;\n    }\n    componentDidUpdate(){\n        let {classifiers, compareK } = this.props\n        let comparedCls = classifiers.slice(0, compareK)\n\n        let comparedMethods = Array.from(new Set(comparedCls.map(d=>d.method)))\n        if(compareK>0){\n            d3.selectAll('g.algorithm')\n            .attr('opacity', 0.5)\n\n            comparedMethods.forEach((methodName:string)=>{\n                d3.select(`g#LineChart_${methodName}`)\n                .attr('opacity', 1)\n            })\n        }else{\n            d3.selectAll('g.algorithm')\n            .attr('opacity', 1)\n        }\n\n\n    }\n    render() {\n        let { classifiers, usedMethods, unusedMethods, hyperpartitions,methodSelected} = this.props\n        this.width = (this.props.width - 7*this.gap)/2>20?(this.props.width - 7*this.gap)/2:20;\n        // public height = (window.innerHeight * 0.94 * 0.9 - this.gap) / (Object.keys(methodsDef).length * 0.5) - this.gap\n        this.methodBoxAttr = {\n            // width : 70,\n            height: this.width * 0.6,\n            width: this.width,\n            gap: this.gap,\n            x: 2*this.gap,\n            y: 2*this.gap,\n            checkboxY: 2,\n            checkboxWidth: 100,\n            checkboxHeight: 30,\n            yextragap:20\n        }\n\n\n        let performance = usedMethods.map((name: string, i: number) => {\n            return {\n                bestScore: Math.max(\n                    ...classifiers.filter(\n                            (d:any)=>d.method==name\n                        ).map(\n                            d=>d['cv_metric']\n                        )\n                ),\n                name: name\n            };\n        });\n        performance.sort(function (a: any, b: any) {\n            return b.bestScore - a.bestScore;\n        });\n        let sortedusedMethods = performance.map((d: any) => {\n            return d.name;\n        });\n        let maxnum = Math.max(\n            ...usedMethods.map(\n                (name:string)=>this.getmaxnum(classifiers.filter(d=>d.method==name))\n        ))\n        // // calculate the max num\n        // sortedusedMethods.forEach((name: string, i: number)=>{\n        //     let num = this.getmaxnum(datarun[name]);\n        //     if(num>maxnum){\n        //         maxnum=num;\n        //     }\n        // });\n\n        return <g className=\"methods\" >\n                    {sortedusedMethods.concat(unusedMethods).map((name: string, i: number) => {\n                            /*let checked = false;\n                            let configsMethod : string[] = this.props.configsMethod;\n                            if(configsMethod.indexOf(name)>-1){\n                                    checked= true;\n                            };*/\n                            let checked = false;\n                            let indeterminate = false;\n                            let disabled = false;\n                            if(methodSelected[name]){\n                                checked = methodSelected[name].checked;\n                                indeterminate = methodSelected[name].indeterminate;\n                                disabled = methodSelected[name].disabled;\n                            }\n\n                            return (<foreignObject\n                                        key={name+\"_text_\"+i}\n                                        x={ this.methodBoxAttr.x +\n                                            Math.floor(i / 7)  * (this.methodBoxAttr.width + 2*this.methodBoxAttr.gap) - 15}\n                                        y={this.methodBoxAttr.y +\n                                            (i % 7)* (this.methodBoxAttr.height + this.methodBoxAttr.gap+ this.methodBoxAttr.yextragap) - this.methodBoxAttr.gap}\n                                        width={this.methodBoxAttr.checkboxWidth}\n                                        height={this.methodBoxAttr.checkboxHeight}>\n\n                                       <Checkbox\n                                        key={name+\"_checkbox_\"+(i)}\n                                        checked={checked}\n                                        indeterminate={indeterminate}\n                                        disabled={disabled}\n                                        value={name}\n                                        onChange={this.props.onMethodsCheckBoxChange} >\n                                        {/*<Tag color={getColor(name)}>{name}</Tag>*/}\n                                        <Tooltip title={methodsDef[name].fullname}>\n                                            <span>{name}</span>\n                                            </Tooltip>\n                                        </Checkbox>\n\n                                        </foreignObject>\n                                  )\n                    })}\n            <g className=\"usedMethods\">\n                {sortedusedMethods.map((name: string, i: number) => {\n                    const methodDef = methodsDef[name];\n                    // let  testin = selectedMethodName.indexOf(name);\n                    let selected = (name==this.props.selectedMethod)\n                    let index = this.props.recommendationResult.result.indexOf(name);\n                    let flower = 0;\n                    if(index>=0&&index<=2){\n                        flower = 3-index;\n                    }\n                    let filterclassifier = classifiers.filter((d:any)=>d.method==name);\n                    let filterhyperpartitions = hyperpartitions.filter((d:IHyperpartitionInfo)=>d.method==name);\n                    let usedHpID = Array.from(new Set(filterclassifier.map(d=>d.hyperpartition_id)));\n                    //let usedhpidlen = usedHpID.length;\n                    let filterhyperpartitionslen = filterhyperpartitions.length;\n                    if(filterhyperpartitionslen==0){\n                        filterhyperpartitionslen=1;\n                    }\n                     const progressHyperpartiton = (percent:number)=>{\n                        return `${usedHpID.length}/${filterhyperpartitions.length}`\n                    }\n\n                    // if (testin > -1) {\n                    //     selected = true;\n                    // }\n                    //const classifier_num = datarun[name].length;\n                    //const top_width = classifier_num*6+60;\n                    // this.index++;\n                    return (<g key={name + \"_g_linechart_\" + i}>\n                        \n                        <LineChart key={name + \"_used_\" + i}\n                            // x={this.methodBoxAttr.x+i*(this.methodBoxAttr.width+this.methodBoxAttr.gap)}\n                            // y={this.methodBoxAttr.y}\n                            x={\n                                this.methodBoxAttr.x +\n                                Math.floor(i / 7)  * (this.methodBoxAttr.width + 2*this.methodBoxAttr.gap)\n                            }\n                            y={\n                                this.methodBoxAttr.y +\n                                (i % 7)* (this.methodBoxAttr.height + this.methodBoxAttr.gap+ this.methodBoxAttr.yextragap)\n                            }\n                            width={this.methodBoxAttr.width}\n                            height={this.methodBoxAttr.height}\n                            methodDef={methodDef}\n                            classifiers={filterclassifier}\n                            name={name}\n                            totallen={maxnum}\n                            onClick={this.props.onSelectMethod}\n                            selected={selected}\n                            hyperpartitoins = {filterhyperpartitions}\n                            flower={flower}\n                        />\n                        <foreignObject key={name + \"_progressbar_\" + i} x={\n                                this.methodBoxAttr.x +\n                                Math.floor(i / 7)  * (this.methodBoxAttr.width + 2*this.methodBoxAttr.gap) + this.methodBoxAttr.width-20\n                            }\n                            y={\n                                this.methodBoxAttr.y +\n                                (i % 7)* (this.methodBoxAttr.height + this.methodBoxAttr.gap+ this.methodBoxAttr.yextragap) + this.methodBoxAttr.height-20\n                            } width={40} height={40}\n                            >\n                        <Progress\n                        type=\"circle\"\n                        percent={100*usedHpID.length/filterhyperpartitionslen}\n                        format={progressHyperpartiton}\n                        width={40}\n                        strokeWidth={10}\n                        />\n                        </foreignObject>\n                        \n                        \n                        </g>)\n\n                })}\n            </g>\n            <g className=\"unusedMethods\">{\n                unusedMethods.map((name: string, i: number) => {\n                    let index = i + usedMethods.length;\n                    let index2 = this.props.recommendationResult.result.indexOf(name);\n                    let flower = 0;\n                    if(index2>=0&&index2<=2){\n                        flower = 3-index2;\n                    }\n                    let flowerlist = [];\n                    for(let i = 1;i<=flower;i++){\n                        flowerlist.push(i);\n                    }\n                    return (<g\n                        key={name + '_unused'}\n                        transform={`translate(\n                    ${\n                            this.methodBoxAttr.x +\n                            Math.floor(index / 7)* (this.methodBoxAttr.width + 2*this.methodBoxAttr.gap)\n                            },\n                    ${\n                            this.methodBoxAttr.y +\n                            (index % 7)  * (this.methodBoxAttr.height + this.methodBoxAttr.gap+ this.methodBoxAttr.yextragap)\n                            }\n                )`}\n                    >\n                        <rect\n                            strokeDasharray=\"5,5\"\n                            width={this.methodBoxAttr.width}\n                            height={this.methodBoxAttr.height}\n                            fill=\"white\" strokeWidth={2} stroke=\"#E0D6D4\" />\n                        {flowerlist.map((d:number)=>{\n                            return <image key={name+\"_flower_\"+d} opacity={0.5} xlinkHref=\"small_hint.png\" x={this.methodBoxAttr.width-15*d} y={0} width={15} height={15}/>}\n                            )}\n                        {/*<text\n                            x={this.methodBoxAttr.width}\n                            y={this.methodBoxAttr.height}\n                            textAnchor=\"end\"\n                        >\n                            {name}\n                        </text>*/}\n                    </g>)\n                })\n            } </g>\n        </g>\n    }\n}\n\nexport interface LineChartProps {\n    width: number,\n    height: number,\n    x: number,\n    y: number,\n    methodDef: IMethod,\n    classifiers: IClassifierInfo[],\n    name: string,\n    totallen?: number,\n    methodName?: string,\n    onClick:(a:string)=>void,\n    selected?: boolean,\n    hyperpartitoins: IHyperpartitionInfo[],\n    flower:number\n\n}\n\nclass LineChart extends React.Component<LineChartProps, {}>{\n    TAG = \"LineChart_\";\n    componentDidMount() {\n        this.renderD3();\n    }\n    componentDidUpdate(){\n        let g = d3.select(\"#\" +this.TAG + this.props.name)\n\n        g.selectAll('*').remove()\n        this.renderD3();\n    }\n    renderD3() {\n        // Get Datasets\n        const { methodDef, classifiers, totallen, selected } = this.props;\n       // let usedHpID = Array.from(new Set(classifiers.map(d=>d.hyperpartition_id)))\n        let step = 0.1;\n        let data: number[] = [];\n\n        for (let i = 0; i < 1 / step; i++) {\n            data.push(0)\n        }\n        let bestperformance = 0;\n        classifiers.forEach((classifier: IClassifierInfo) => {\n            let performance = classifier['cv_metric'];\n            if (performance > bestperformance) {\n                bestperformance = performance;\n            }\n            let rangeIdx = Math.floor(performance / step)\n            data[rangeIdx] = data[rangeIdx] + 1\n        });\n        let total = 0;\n        let bestindex = 0;\n        // let frequentindex = 0;\n        let maxfrequency = 0;\n        data.forEach((d: any, i: any) => {\n            if (d > 0 && i > bestindex) {\n                bestindex = i;\n            }\n            if (d > maxfrequency) {\n                // frequentindex=i;\n                maxfrequency = d;\n            }\n            total += d;\n        });\n        total;\n        let yAxisData: string[] = []\n        for (let i = 0; i <= 1 / step; i++) {\n            yAxisData.push(`${(i * step).toFixed(2)}`)\n        }\n\n        // g\n        // Set the dimensions of the canvas / graph\n        //let\tmargin = {top: 0, right: 0, bottom: 0, left: 0},\n        let margin = { top: 0, right: 2, bottom: 0, left: 2 },\n            width = this.props.width - margin.left - margin.right,\n            height = this.props.height - margin.top - margin.bottom,\n            top_margin = { top: this.props.y, left: this.props.x };\n\n        // Set the ranges\n        // let\txScale = d3.scaleLinear().range([0, width]);\n        let yScale = d3.scaleBand()\n            .rangeRound([height, 0])\n            .paddingInner(0.1);\n        let xScale = d3.scaleLinear().range([0, width]);\n\n\n        xScale.domain([0, totallen]);\n        yScale.domain(data.map((d, i) => i/10));\n        //console.log(data.map((d, i) => i/10))\n        //Create SVG element\n       // let tooltip = d3.select(\"#tooltip\");\n        //let top_methods = d3.select(\"#methodstop\");\n        /*\n        if (tooltip.empty()) {\n            tooltip = d3.select(\"body\").append(\"div\")\n                .attr(\"class\", \"tooltip\")\n                .attr(\"id\", \"tooltip\")\n                .style(\"opacity\", 0)\n                .style(\"left\", \"0px\")\n                .style(\"top\", \"0px\");;\n        }*/\n        let top_svg = d3.select(\"#\" + this.TAG + this.props.name).attr(\"width\", width + margin.left + margin.right)\n            .attr(\"height\", height + margin.top + margin.bottom).attr(\"transform\", \"translate(\" + top_margin.left + \",\" + top_margin.top + \")\")\n            // .on(\"click\",()=>{onClick(this.props.name)})\n            .on(\"mousemove\", function (d: any) {\n                    /*\n                tooltip.transition()\n                    .duration(100)\n                    .style(\"left\", (d3.event.pageX) + \"px\")\n                    .style(\"top\", (d3.event.pageY - 28) + \"px\");\n                tooltip.style(\"opacity\", 0.7).html(methodDef.fullname + \"<br/>\" + \"best performance:\" + bestperformance.toFixed(2) + \"<br/>\" + \"trial number:\" + total)\n                    */\n            })\n\n            .on(\"mouseout\", function (d: any) {\n               // tooltip\n               //     .style(\"opacity\", 0);\n            });;\n        top_svg.append(\"rect\")\n            .attr('class', `${this.props.name} methodRect`)\n            .attr(\"x\", 0)\n            .attr(\"y\", 0)\n            .attr(\"width\", width + margin.left + margin.right)\n            .attr(\"height\", height + margin.top + margin.bottom)\n            .attr(\"fill\", \"white\")\n            .attr(\"stroke-width\", 2)\n            .attr(\"stroke\", selected ? \"#A4A0A0\" : \"#E0D6D4\")\n            .on('click', ()=>{\n                d3.selectAll('rect.methodRect')\n                    .attr(\"stroke\", \"#E0D6D4\")\n                d3.select(`rect.${this.props.name}`)\n                    .attr('stroke', \"#A4A0A0\")\n                    .attr(\"stroke-width\", 3)\n                this.props.onClick(this.props.name)\n            })\n\n        let svg = top_svg.append(\"g\").attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");\n\n\n        // var line = d3.line()\n        // .x(function(d:any, i:any) { return xScale(d); }) // set the x values for the line generator\n        // .y(function(d:any,i:any) { return yScale((i)*step); }) // set the y values for the line generator\n        // .curve(d3.curveMonotoneX) // apply smoothing to the line\n\n\n        // function generateArray(index: number) {\n        //     let data: any[] = [];\n        //     data.push({ x: 0, y: index * step });\n        //     data.push({ x: totallen, y: index * step });\n        //     return data;\n        // }\n\n        // var straightline = d3.line()\n        //     .x(function (d: any, i: any) { return xScale(d.x); }) // set the x values for the line generator\n        //     .y(function (d: any, i: any) { return yScale(d.y); }) // set the y values for the line generator\n        // svg.append(\"path\")\n        //     .datum(generateArray(bestindex))\n        //     .attr(\"class\", \"line\")\n        //     .attr(\"fill\", \"none\")\n        //     .attr(\"stroke\", \"#E0D6D4\")\n        //     .attr(\"stroke-width\", 2)\n        //     .attr(\"stroke-dasharray\", \"5,5\")\n        //     .attr(\"d\", straightline);\n        // svg.append(\"path\")\n        //     .datum(generateArray(frequentindex))\n        //     .attr(\"class\", \"line\")\n        //     .attr(\"fill\",\"none\")\n        //     .attr(\"stroke\",\"#E0D6D4\")\n        //     .attr(\"stroke-width\",2)\n        //     .attr(\"stroke-dasharray\",\"5,5\")\n        //     .attr(\"d\", straightline);\n        svg.selectAll('.method_bar')\n            .data(data)\n            .enter()\n            .append(\"rect\")\n            .attr(\"class\", \"method_bar\")\n            .style(\"fill\", getColor(methodDef.name))\n            .attr(\"x\", 0)\n            .attr(\"y\", (d: any, i: number) => (\n                yScale(i/10)\n            ))\n            .attr(\"width\", (d: any) => xScale(d))\n            .attr(\"height\", yScale.bandwidth())\n\n     let text1 = svg.append(\"text\")\n            .attr(\"class\", \"method_name\")\n            .attr('x', width)\n        //    .attr('y', height-12)\n            .attr('y',-3)\n            .attr('text-anchor', \"end\")\n        //    .attr('filter',\"url(#solid)\")\n            .text(`${bestperformance.toFixed(3)}`)\n\n\n    let text2=svg.append(\"text\")\n            .attr(\"class\", \"method_name\")\n            .attr('x', width-50)\n        //    .attr('y', height-12)\n            .attr('y',-3)\n            .attr('text-anchor', \"end\")\n        //    .attr('filter',\"url(#solid)\")\n            .text(`${classifiers.length}`)\n\n    var bbox1 = text1.node().getBBox();\n\n    svg.append(\"rect\")\n    .attr(\"x\", bbox1.x)\n    .attr(\"y\", bbox1.y)\n    .attr(\"width\", bbox1.width)\n    .attr(\"height\", bbox1.height)\n    .style(\"fill\", \"#ccc\")\n    .style(\"fill-opacity\", \".0\")\n    .style(\"stroke\", \"#666\")\n    .style(\"stroke-width\", \"1.5px\");\n    var bbox2 = text2.node().getBBox();\n\n    svg.append(\"rect\")\n    .attr(\"x\", bbox2.x)\n    .attr(\"y\", bbox2.y)\n    .attr(\"width\", bbox2.width)\n    .attr(\"height\", bbox2.height)\n    .style(\"fill\", \"#ccc\")\n    .style(\"fill-opacity\", \".0\")\n    .style(\"stroke\", \"#666\")\n    .style(\"stroke-width\", \"1.5px\");\n       /* svg.append(\"text\")\n            .attr(\"class\", \"best_score\")\n            .attr('x', width)\n            .attr('y', height )\n            .attr('text-anchor', \"end\")\n            .text(`best: ${bestperformance.toFixed(3)}`)*/\n        /*svg.append('text')\n            .attr('class', 'hps')\n            .attr(\"transform\", `translate(${width+margin.left},${height/2}) rotate(${90})`)\n            .attr('text-anchor', 'middle')\n            .text(`hp:${usedHpID.length}/${hyperpartitoins.length}`)*/\n        for(let i = 1;i<=this.props.flower;i++){\n            svg.append('image')\n                .attr('width',15)\n                .attr('height',15)\n                .attr('opacity',0.5)\n                .attr('xlink:href',\"small_hint.png\")\n                .attr('x',width-15*i)\n                .attr('y',0);\n        }\n        // // Add the X Axis\n        // svg.append(\"g\")\n        //     .attr(\"transform\", \"translate(0,\" + height + \")\")\n        //     .call(d3.axisBottom(xScale));\n\n        // Add the Y Axis\n        svg.append(\"g\")\n            .attr('transform', `translate(${-margin.left}, 0)`)\n            .call(d3.axisLeft(yScale).tickValues([0.1,0.3,0.5,0.7,0.9]).tickFormat(function (d:any) {\n\n                        return d;}))\n\n\n    }\n    render() {\n        const { name } = this.props;\n        return <g> {/*<defs>\n                <filter x=\"0\" y=\"0\" width=\"1\" height=\"1\" id=\"solid\">\n                <feFlood flood-color=\"gray\"/>\n                <feComposite in=\"SourceGraphic\" operator=\"xor\"/>\n                </filter>\n            </defs>*/}<g id={this.TAG + name} className='algorithm'/>\n                   \n        </g>\n    }\n}\n\n// class LineChart2 extends React.Component<LineChartProps, {}>{\n//     TAG = \"LineChart_\";\n//     componentDidMount() {\n//         this.renderD3();\n//     }\n//     renderD3() {\n//         // Get Datasets\n//         const { methodDef, classifiers,totallen,selected } = this.props;\n//         let step = 0.1;\n//         let data:number[] = [];\n\n//         for (let i =0; i<=1/step; i++){\n//             data.push(0)\n//         }\n//         let bestperformance = 0;\n//         classifiers.forEach((classifier:IClassifier)=>{\n//             let performance = parseFloat(classifier['performance'].split(' +- ')[0]);\n//             if(performance>bestperformance){\n//                 bestperformance=performance;\n//             }\n//             let rangeIdx = Math.floor(performance/step)\n//             data[rangeIdx] = data[rangeIdx]+1\n//         });\n//         let total = 0;\n//         let bestindex = 0;\n//         // let frequentindex = 0;\n//         // let maxfrequency = 0;\n//         data.forEach((d:any,i:any)=>{\n//             if(d>0&&i>bestindex){\n//                 bestindex=i;\n//             }\n//             // if(d>maxfrequency){\n//             //     // frequentindex=i;\n//             //     maxfrequency=d;\n//             // }\n//             total+=d;\n//         });\n//         //total;\n//         let yAxisData:string[] = []\n//         for (let i =0; i<=1/step; i++){\n//             yAxisData.push(`${(i*step).toFixed(2)}`)\n//         }\n\n//         // g\n//         // Set the dimensions of the canvas / graph\n//         //let\tmargin = {top: 0, right: 0, bottom: 0, left: 0},\n//         let\tmargin = {top: 1, right: 1, bottom: 1, left: 1},\n//             width = this.props.width - margin.left - margin.right,\n//             height = this.props.height - margin.top - margin.bottom,\n//             top_margin = {top:this.props.y,left:this.props.x};\n\n//         // Set the ranges\n//         let\txScale = d3.scaleLinear().range([0, width]);\n//         let\tyScale = d3.scaleLinear().range([height, 0]);\n\n\n//         xScale.domain([0, totallen]);\n//         yScale.domain([0, 1]);\n//         //Create SVG element\n//         let tooltip = d3.select(\"#tooltip\");\n//         //let top_methods = d3.select(\"#methodstop\");\n\n//         if(tooltip.empty()){\n//             tooltip = d3.select(\"body\").append(\"div\")\n//             .attr(\"class\", \"tooltip\")\n//             .attr(\"id\",\"tooltip\")\n//             .style(\"opacity\", 0)\n//             .style(\"left\",  \"0px\")\n//               .style(\"top\",  \"0px\");;\n//         }\n//         let top_svg = d3.select(\"#\"+this.TAG+this.props.name).attr(\"width\", width + margin.left + margin.right)\n//         .attr(\"height\", height + margin.top + margin.bottom).attr(\"transform\", \"translate(\" + top_margin.left + \",\" + top_margin.top + \")\")\n//         // .on(\"click\",()=>{onClick(this.props.name)})\n//         .on(\"mousemove\", function(d:any) {\n\n//             tooltip.transition()\n//               .duration(100)\n//               .style(\"left\", (d3.event.pageX) + \"px\")\n//               .style(\"top\", (d3.event.pageY - 28) + \"px\");\n//               tooltip.style(\"opacity\", 0.7).html(methodDef.fullname+\"<br/>\"+\"best performance:\"+bestperformance.toFixed(2) + \"<br/>\" + \"trial number:\"+total)\n\n//             })\n\n//           .on(\"mouseout\", function(d:any) {\n//             tooltip\n//               .style(\"opacity\", 0);\n//             });;\n//         top_svg.append(\"rect\")\n//         .attr(\"x\",0)\n//         .attr(\"y\",0)\n//         .attr(\"width\", width + margin.left + margin.right)\n//         .attr(\"height\",height + margin.top + margin.bottom)\n//         .attr(\"fill\",\"white\")\n//         .attr(\"stroke-width\",2)\n//         .attr(\"stroke\",selected?\"#A4A0A0\":\"#E0D6D4\")\n//         ;\n//         let svg = top_svg.append(\"g\").attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");\n\n\n//         let line = d3.line()\n//         .x(function(d:any, i:any) { return xScale(d); }) // set the x values for the line generator\n//         .y(function(d:any,i:any) { return yScale((i)*step); }) // set the y values for the line generator\n//         .curve(d3.curveMonotoneX) // apply smoothing to the line\n\n//         let area = d3.area()\n//         .y(function(d:any) { return yScale(d) })\n//         .x0(0)\n//         .x1(function(d:any) { return xScale(d); })\n\n//         console.info(area, line)\n\n//         function generateArray(index:number){\n//             let data:any[] = [];\n//             data.push({x:0,y:index*step});\n//             data.push({x:totallen,y:index*step});\n//             return data;\n//         }\n\n//         var straightline = d3.line()\n//             .x(function(d:any, i:any) { return xScale(d.x); }) // set the x values for the line generator\n//             .y(function(d:any,i:any) { return yScale(d.y); }) // set the y values for the line generator\n//         svg.append(\"path\")\n//             .datum(generateArray(bestindex))\n//             .attr(\"class\", \"line\")\n//             .attr(\"fill\",\"none\")\n//             .attr(\"stroke\",\"#E0D6D4\")\n//             .attr(\"stroke-width\",2)\n//             .attr(\"stroke-dasharray\",\"5,5\")\n//             .attr(\"d\", straightline);\n//         // svg.append(\"path\")\n//         //     .datum(generateArray(frequentindex))\n//         //     .attr(\"class\", \"line\")\n//         //     .attr(\"fill\",\"none\")\n//         //     .attr(\"stroke\",\"#E0D6D4\")\n//         //     .attr(\"stroke-width\",2)\n//         //     .attr(\"stroke-dasharray\",\"5,5\")\n//         //     .attr(\"d\", straightline);\n//         svg.append(\"path\")\n//             .datum(data)\n//             .attr(\"class\", \"line\")\n//             .attr(\"fill\",\"none\")\n//             .attr(\"stroke\",getColor(methodDef.name))\n//             .attr(\"stroke-width\",2)\n//             .attr(\"d\", line);\n\n//         // svg.append(\"path\")\n//         //     .datum(data)\n//         //     .attr(\"class\", \"line\")\n//         //     .attr(\"fill\",getColor(methodDef.name))\n//         //     .attr(\"d\", area);\n\n//         svg.append(\"text\")\n//             .attr(\"class\", \"hp_name\")\n//             .attr('x', width)\n//             .attr('y', height)\n//             .attr('text-anchor', \"end\")\n//             .text(this.props.name)\n//       }\n//     render() {\n//         const {name}=this.props;\n//         return <g id={this.TAG+name}/>\n//     }\n// }"
  },
  {
    "path": "src/components/DataRuns/ThreeLevel_Horizontal/ThreeLevel.tsx",
    "content": "import * as React from \"react\";\nimport Methods from './Methods';\nimport HyperPartitions from \"./HyperPartitions\";\nimport HyperParameters from \"./HyperParameters\";\nimport { IHyperpartitionInfo, IClassifierInfo, IConfigsInfo,\n    getDatarunConfigs, IUpdateDatarunConfig, ICommonResponse,\n     updateDatarunConfigs, IClickEvent,IRecommendationResult} from 'service/dataService';\nimport { IDatarun } from \"types\";\nimport * as methodsDef from \"assets/methodsDef.json\";\nimport {Button,  message, Icon} from 'antd';\nimport { getColor } from 'helper';\nexport interface IProps {\n    height: number,\n    datarun: IDatarun,\n    datasetID: number | null,\n    datarunID: number | null,\n    setDatarunID: (id: number) => void,\n    hyperpartitions : IHyperpartitionInfo[],\n    classifiers: IClassifierInfo[],\n    compareK: number,\n    recommendationResult:IRecommendationResult,\n    postClickEvent:(e:IClickEvent)=>void\n}\n\nexport interface IState {\n    selectedMethod:string,\n    configsBudget: number,\n    configsMethod : string[],\n    loading: boolean,\n    methodSelected:any,\n    hyperparametersRangeAlreadySelected:any,\n    hyperpartitionsAlreadySelected:number[],\n    mouseOverClassifier:number,\n    displaymode:number\n}\n\nexport default class ThreeLevel extends React.Component<IProps, IState>{\n    index = 0\n    constructor(props: IProps){\n        super(props)\n        this.onSelectMethod = this.onSelectMethod.bind(this)\n        this.state={\n            selectedMethod: '',\n            configsBudget: 100,\n            configsMethod: [],\n            loading: false,\n            methodSelected:{},\n            hyperparametersRangeAlreadySelected:{},\n            hyperpartitionsAlreadySelected:[],\n            mouseOverClassifier:-1,\n            displaymode:0\n\n        }\n    }\n\n    onSelectMethod(methodName:string){\n        console.info('select method', methodName);\n        let eventlog:IClickEvent = {\n            type:\"method\",\n            description:{\n                action:\"selected\",\n                name:methodName\n            },\n            time:new Date().toString()\n        }\n        this.props.postClickEvent(eventlog);\n        this.setState({selectedMethod: methodName})\n    }\n\n    componentDidMount(){\n        this.getCurrentConfigs()\n    }\n\n    onBudgetChange = (budget : any) =>{\n\n        this.setState({configsBudget:budget});\n    }\n    getCurrentConfigs = () =>{\n        if(this.props.datarunID!=null){\n            let promise: Promise<IConfigsInfo>;\n            let datarunID : number= this.props.datarunID?this.props.datarunID:0;\n            promise = getDatarunConfigs(datarunID);\n            promise.then(configs=>{\n                this.setState({\n                    configsMethod:configs.methods,\n                    configsBudget:configs.budget\n                })\n            })\n        }\n    }\n    updateCurrentDataRun = () => {\n        // get configs from server ;\n        // submit configs in this view\n        // switch to the new datarun.\n        let methods = this.state.configsMethod;\n        //let budget = this.state.configsBudget;\n        if(this.props.datarunID!=null){\n            let promise: Promise<IConfigsInfo>;\n            let datarunID : number= this.props.datarunID?this.props.datarunID:0;\n            promise = getDatarunConfigs(datarunID);\n            promise\n                .then(configs => {\n                    configs.methods = methods;\n                    //configs.budget = budget;\n                    this.setState({ loading: true });\n\n                    let submitconfigs : IUpdateDatarunConfig = {};\n                    submitconfigs.configs = configs;\n                    submitconfigs.method_configs = this.state.hyperparametersRangeAlreadySelected;\n                    if(this.state.hyperpartitionsAlreadySelected.length>0){\n                        submitconfigs.hyperpartitions = this.state.hyperpartitionsAlreadySelected;\n                    }\n                    let promise:Promise<ICommonResponse> = updateDatarunConfigs(datarunID,submitconfigs);\n                    //const promise = this.props.onSubmit(this.state.configs);\n                    console.log(\"update data run in methods view\");\n                    console.log(configs);\n                    promise.then(status => {\n                        if(status.success == true){\n                            message.success(\"Update Configs Successfully.\");\n                        }else{\n                            message.error(\"Update Configs Failed.\");\n                        }\n                        this.setState({ loading: false });\n                    }).catch(error=>{\n                        console.log(error);\n                        message.error(\"Update Configs Failed.\");\n                        this.setState({ loading: false});\n\n                    });\n                })\n                .catch(error => {\n                    console.log(error);\n                });\n                }\n       }\n\n\n       \n    fetchHpId = (method:string)=>{\n        let hp = this.props.hyperpartitions;\n        return hp.filter((d:any)=>d.method==method).map((d:any)=>d.id);\n    }\n    onMethodsCheckBoxChange=(e : any)=>{\n        let checked = e.target.checked;\n        let value = e.target.value;\n        let methodSelected = this.state.methodSelected;\n        let configsHyperpartitions :number[] = this.state.hyperpartitionsAlreadySelected;\n        console.log(\"onMethodsCheckBoxChange\")\n        if(methodSelected[value]){\n            if(checked==false){\n                //un selected\n                let configsMethod : string[] = this.state.configsMethod;\n                let index = configsMethod.indexOf(value);\n                if(index>-1){\n                    configsMethod.splice(index, 1);\n                }\n\n\n                methodSelected[value].checked=false;\n                methodSelected[value].indeterminate=false;\n                methodSelected[value].disabled=false;\n                let hpid = this.fetchHpId(value);\n                configsHyperpartitions = configsHyperpartitions.filter((d:number)=>hpid.indexOf(d)<0);\n                \n                this.setState({\n                    hyperpartitionsAlreadySelected:configsHyperpartitions,\n                    methodSelected:methodSelected,\n                    configsMethod:configsMethod\n\n                });\n\n            }else{\n                let configsMethod : string[] = this.state.configsMethod;\n                configsMethod.push(value);\n                methodSelected[value].checked=true;\n                methodSelected[value].indeterminate=false;\n                methodSelected[value].disabled=false;\n                let hpid = this.fetchHpId(value);\n                configsHyperpartitions = Array.from(new Set(configsHyperpartitions.concat(hpid)));\n                this.setState({\n                    hyperpartitionsAlreadySelected:configsHyperpartitions,\n                    methodSelected:methodSelected,\n                    configsMethod:configsMethod\n\n                });\n\n\n            }\n            let action=\"selected\";\n            if(checked==false){\n                action=\"unselected\";\n            }\n            let eventlog:IClickEvent = {\n                type:\"methodcheckbox\",\n                description:{\n                    action:action,\n                    methodname:value\n                },\n                time:new Date().toString()\n            }\n            this.props.postClickEvent(eventlog);\n            this.updateCurrentDataRun();\n        }\n    }\n    onHyperpartitionCheckBoxChange=(id : number)=>{\n        let checked : boolean =!( this.state.hyperpartitionsAlreadySelected.indexOf(id)>-1);\n        let value = id;\n        if(checked==false){\n            // un selected\n            let configsHyperpartitions : number[] = this.state.hyperpartitionsAlreadySelected;\n            let index = configsHyperpartitions.indexOf(value);\n            if(index>-1){\n                configsHyperpartitions.splice(index, 1);\n                let hp :any= this.props.hyperpartitions.filter((d:any)=>d.id==value);\n                let method = hp[0].method;\n                let hpid = this.fetchHpId(method);\n                let judgeSet = hpid.filter((d:any)=>configsHyperpartitions.indexOf(d)>-1);\n                let methodSelected = this.state.methodSelected;\n                let configsMethod : string[] = this.state.configsMethod;\n\n                if(judgeSet.length>0){\n                    // Fetch method intersect hpid\n                    // method unselected\n                    methodSelected[method].checked=false;\n                    methodSelected[method].indeterminate=true;\n                }else{\n                    methodSelected[method].checked=false;\n                    methodSelected[method].indeterminate=false;\n                    let index = configsMethod.indexOf(method);\n                    if(index>-1){\n                        configsMethod.splice(index, 1);\n                    }\n                }\n                this.setState({\n                    hyperpartitionsAlreadySelected:configsHyperpartitions,\n                    methodSelected:methodSelected,\n                    configsMethod:configsMethod\n\n                });\n\n            }\n        }else{\n            let configsHyperpartitions : number[] = this.state.hyperpartitionsAlreadySelected;\n            configsHyperpartitions.push(value);\n            let hp :any= this.props.hyperpartitions.filter((d:any)=>d.id==value);\n            let method = hp[0].method;\n            let hpid = this.fetchHpId(method);\n            let judgeSet = Array.from(new Set(configsHyperpartitions.concat(hpid)));\n            let methodSelected = this.state.methodSelected;\n            let configsMethod : string[] = this.state.configsMethod;\n            configsMethod = Array.from(new Set(configsMethod.concat([method])));\n\n            if(judgeSet.length==configsHyperpartitions.length){\n                //selected\n                methodSelected[method].checked=true;\n                methodSelected[method].indeterminate=false;\n            }else{\n                methodSelected[method].checked=false;\n                methodSelected[method].indeterminate=true;\n            }\n\n            this.setState({\n                hyperpartitionsAlreadySelected:configsHyperpartitions,\n                methodSelected:methodSelected,\n                configsMethod:configsMethod\n            });\n\n\n        }\n        let action=\"selected\";\n        if(checked==false){\n            action=\"unselected\";\n        }\n        let eventlog:IClickEvent = {\n            type:\"hyperpartitioncheckbox\",\n            description:{\n                action:action,\n                hpid:value\n            },\n            time:new Date().toString()\n        }\n        this.props.postClickEvent(eventlog);\n        this.updateCurrentDataRun();\n    }\n    onBrushSelected = (methodname:string, hpaName: string,hpatype:string,range:number[])=>{\n        let {hyperparametersRangeAlreadySelected} = this.state;\n        let update : boolean = false;\n        if(hpatype==\"int\"){\n            range[0]=Math.floor(range[0]);\n            range[1]=Math.ceil(range[1]);\n        }\n        if(!hyperparametersRangeAlreadySelected[methodname]){\n           hyperparametersRangeAlreadySelected[methodname]={};\n        }\n        if(hyperparametersRangeAlreadySelected[methodname][hpaName]&&hyperparametersRangeAlreadySelected[methodname][hpaName][\"range\"]){\n           if(hyperparametersRangeAlreadySelected[methodname][hpaName][\"range\"][0]==range[0]&&hyperparametersRangeAlreadySelected[methodname][hpaName][\"range\"][1]==range[1]){\n               // nothing\n           }else{\n               update = true;\n           }\n        }else{\n            if(range.length>0){\n                update = true;\n\n           }\n        }\n        if(update){\n            \n           hyperparametersRangeAlreadySelected[methodname][hpaName]={\"type\":hpatype,\"range\":range};\n           console.log(hyperparametersRangeAlreadySelected);\n           this.setState({\n               hyperparametersRangeAlreadySelected : hyperparametersRangeAlreadySelected\n           });\n           let action=\"updated\";\n           \n            let eventlog:IClickEvent = {\n                type:\"hyperparametersRange\",\n                description:{\n                    action:action,\n                    range:range,\n                    type:hpatype,\n                    hyname:hpaName,\n                    methodname:methodname\n                },\n                time:new Date().toString()\n            }\n            this.props.postClickEvent(eventlog);\n            this.updateCurrentDataRun();\n        }\n        \n     }\n     componentWillReceiveProps(nextProps : IProps) {\n        if(this.state.loading==false){\n            let {hyperpartitions} = nextProps;\n            let methodhistogram:any ={};\n            let methodSelected:any={};\n            let mode = 1;\n            let hyperpartitionsAlreadySelected:number[] = [];\n            if(mode==0){\n                hyperpartitionsAlreadySelected = hyperpartitions.map((d:any)=>{\n                    return d.id;\n                });\n            }else if(mode==1){\n                hyperpartitionsAlreadySelected = hyperpartitions.filter((d:any)=>d.status!=\"errored\").map((d:any)=>{\n                    return d.id;\n                });\n            }\n\n            Object.keys(methodsDef).forEach((d:string)=>{\n                if(!methodhistogram[d]){\n                    methodhistogram[d]={total:0,enable:0};\n                }\n            });\n            hyperpartitions.forEach((d:any)=>{\n                if(!methodhistogram[d.method]){\n                    methodhistogram[d.method]={total:0,enable:0};\n                    console.log(\"unknown method : \"+d.method);\n                }\n                if(!(d.status==\"errored\")){\n                    methodhistogram[d.method].total++;\n                    methodhistogram[d.method].enable++;\n                }else{\n                    methodhistogram[d.method].total++;\n                }\n\n            });\n            Object.keys(methodhistogram).forEach((d:string)=>{\n                // 0 -> simple selection:\n                // 1 -> complex selection:\n                if(mode==0){\n                    if(methodhistogram[d].total==0){\n                        methodSelected[d] = {checked:false,disabled:true,indeterminate:false};\n                    }else{\n                        methodSelected[d] = {checked:true,disabled:false,indeterminate:false};\n                    }\n                }else if(mode==1){\n                    if(methodhistogram[d].total==0){\n                        methodSelected[d] = {checked:false,disabled:true,indeterminate:false};\n                    }else if(methodhistogram[d].enable==0){\n                        methodSelected[d] = {checked:false,disabled:false,indeterminate:false};\n                    }else if(methodhistogram[d].total == methodhistogram[d].enable){\n                        methodSelected[d] = {checked:true,disabled:false,indeterminate:false};\n                    }else{\n                        methodSelected[d] = {checked:false,disabled:false,indeterminate:true};\n                    }\n                }\n            });\n            let selectedMethod = this.state.selectedMethod;\n            //if(this.props.datarunID!=nextProps.datarunID){\n            //    selectedMethod = \"\";\n            //}\n            this.setState({\n                methodSelected:methodSelected,\n                hyperpartitionsAlreadySelected:hyperpartitionsAlreadySelected,\n                selectedMethod:selectedMethod\n            });\n            //this.getCurrentConfigs();\n        }\n    }\n    onMouseOverClassifier = (classifierid:number)=>{\n        if(this.state.mouseOverClassifier!=classifierid){\n            if(classifierid!=-1){\n                let action=\"mouseover\";\n            \n                let eventlog:IClickEvent = {\n                    type:\"classifier\",\n                    description:{\n                        action:action,\n                        classifierid:classifierid\n                    },\n                    time:new Date().toString()\n                }\n                this.props.postClickEvent(eventlog);\n            }\n            this.setState({\n                mouseOverClassifier:classifierid\n            })\n        }\n    }\n    onMethodButtonClick = () =>{\n        console.log(\"onMethodButtonClick\");\n        let {displaymode} = this.state;\n        if(displaymode==0){\n            let eventlog:IClickEvent = {\n                type:\"hyperpartitionsView\",\n                description:{\n                    action:\"more\",\n                },\n                time:new Date().toString()\n            }\n            this.props.postClickEvent(eventlog);\n            this.setState({\n                displaymode:1\n            });\n        }else{\n            let eventlog:IClickEvent = {\n                type:\"hyperpartitionsView\",\n                description:{\n                    action:\"hide\",\n                },\n                time:new Date().toString()\n            }\n            this.props.postClickEvent(eventlog);\n            this.setState({\n                displaymode:0\n            });\n        }\n    }\n    onHyperpartitionButtonClick = () =>{\n        console.log(\"onHyperpartitionButtonClick\");\n        let {displaymode} = this.state;\n        if(displaymode==1){\n            let eventlog:IClickEvent = {\n                type:\"hyperparametersView\",\n                description:{\n                    action:\"more\",\n                },\n                time:new Date().toString()\n            }\n            this.props.postClickEvent(eventlog);\n            this.setState({\n                displaymode:2\n            });\n        }else{\n            let eventlog:IClickEvent = {\n                type:\"hyperparametersView\",\n                description:{\n                    action:\"hide\",\n                },\n                time:new Date().toString()\n            }\n            this.props.postClickEvent(eventlog);\n            this.setState({\n                displaymode:1\n            });\n        }\n    }\n    render(){\n        let {datarun, hyperpartitions, classifiers, datarunID, compareK} = this.props\n        classifiers = classifiers.sort(\n            (a,b)=>b.cv_metric-a.cv_metric\n        ) // best performance in the front\n        let {selectedMethod,displaymode} = this.state\n        let usedMethods: string[] = Object.keys(datarun);\n        let unusedMethods = Object.keys(methodsDef)\n            .filter(\n                (name: string) => usedMethods.indexOf(name) < 0\n            )\n        let svgWidth = window.innerWidth*5/6,\n        width1 = svgWidth*3/13,\n        gapbetween = 70,\n        width2 = svgWidth*0.8/2,\n       // width3 = svgWidth*1/7,\n       width3 = 220,\n        headerHeight = 10\n        let svgHeight = window.innerHeight * 0.74;\n        // let generateTag = (box:any,name:string)=>{\n        //     if(name!=\"\"){\n        //         let width = box.width;\n        //         let height = box.height;\n        //         let x = box.x;\n        //         let y = box.y;\n        //         return  <foreignObject x={x} y={y} width={width} height={height}><Tag color={getColor(name)}>{name}</Tag></foreignObject>\n        //     }else{\n        //         return <g />\n        //     }\n        // }\n        let generateTag = (box:any,name:string)=>{\n                if(name!=\"\"){\n                    let {width, height, x, y}  = box;\n                    return  <g className=\"tag\" transform={`translate(${x},${y})`}>\n                        <rect width={width} height={height} style={{fill:getColor(name)}} rx={5} ry={5}/>\n                        <text y={height-5} x={width/2} textAnchor=\"middle\" style={{fill: \"white\"}}>{name}</text>\n                    </g>\n                }else{\n                    return <g className=\"tag\"/>\n                }\n            }\n       let generateButton = (box:any,mode:number,eventCallback:()=>void) =>{\n            // mode == 0   show me more\n            // mode == 1   hide\n            // mode any other value  nothing\n            if(mode==0){\n                 return <foreignObject x={box.x} y={box.y} width={box.width} height={box.height}> \n                <Button type=\"default\" onClick={eventCallback} size=\"small\">\n                    More<Icon type=\"double-right\" />\n                </Button>\n                </foreignObject>\n            }else if(mode==1){\n                return  <foreignObject x={box.x} y={box.y} width={box.width} height={box.height}> \n                <Button type=\"default\" onClick={eventCallback} size=\"small\">\n                   <Icon type=\"double-left\" /> Hide\n                </Button>\n                </foreignObject>\n            }else{\n               return  <g />\n            }\n        }\n        let generateHyperpartition = () => {\n            let buttonMode = 0;\n            if(displaymode==2){\n                buttonMode = 1;\n            }\n            buttonMode;\n            return  (<g><defs>\n            <clipPath id=\"mask_hyperpartitions\">\n            <rect x={0} y={-10} width={width2-60} height={svgHeight+100} />\n            </clipPath>\n            </defs>\n            <g transform={`translate(${width1+gapbetween}, ${headerHeight})`} clipPath={\"url(#mask_hyperpartitions)\"} width={width2} height={svgHeight}>\n            <text\n                textAnchor=\"middle\"\n                x={width2/3}\n                y={10}\n                style={{ font: \"bold 16px sans-serif\" , display:\"inline\" }}\n            >HyperPartitions of </text>\n            {generateTag({\n                x:width2/3 + 80,\n                y:-6,\n                width:40,\n                height:20\n\n            },selectedMethod)}\n                <HyperPartitions\n                hyperpartitions={hyperpartitions}\n                // datarun={datarun}\n                datarunID={datarunID}\n                selectedMethod={selectedMethod}\n                classifiers={classifiers}\n                compareK={compareK}\n                hyperpartitionsSelected={this.state.hyperpartitionsAlreadySelected}\n                width={width2}\n                height={svgHeight}\n                onHpsCheckBoxChange={this.onHyperpartitionCheckBoxChange}\n                onMouseOverClassifier={this.onMouseOverClassifier}\n                mouseOverClassifier={this.state.mouseOverClassifier}\n                />\n                \n            \n            </g>\n            {generateButton({\n                    x:width1+width2+gapbetween-60,\n                    y:svgHeight/2+headerHeight,\n                    width:150,\n                    height:35\n                },buttonMode,this.onHyperpartitionButtonClick)}</g>)\n        }\n        let generateHyperparameter = () => {\n            \n            return <g><defs>\n            <clipPath id=\"mask_hyperparameters\">\n            <rect x={-60} y={-10} width={width3+200} height={svgHeight+100}/>\n            </clipPath>\n            </defs>\n            <g transform={`translate(${width1+width2+2*gapbetween+60}, ${headerHeight})`} clipPath={\"url(#mask_hyperparameters)\"}>\n            <text\n                textAnchor=\"middle\"\n                x={width3/3}\n                y={10}\n                style={{ font: \"bold 16px sans-serif\" }}\n            >HyperParameters of</text>\n             {generateTag({\n                x:width3/3 + 89,\n                y:-6,\n                width:40,\n                height:20\n\n            },selectedMethod)}\n            <HyperParameters\n                classifiers={classifiers}\n                selectedMethod={selectedMethod}\n                compareK={compareK}\n                alreadySelectedRange={this.state.hyperparametersRangeAlreadySelected[selectedMethod]?this.state.hyperparametersRangeAlreadySelected[selectedMethod]:{}}\n                onSelectedChange={this.onBrushSelected}\n                mouseOverClassifier={this.state.mouseOverClassifier}\n                height={svgHeight}\n                />\n               \n            </g></g>\n        }\n         let methodbuttonMode = 0;\n            if(displaymode==1){\n                methodbuttonMode = 1;\n            }else if(displaymode==2){\n                methodbuttonMode = -1;\n            }\n        // console.log(\"three level render\");\n        // console.log(this.state.hyperpartitionsAlreadySelected);\n        return <div\n            style={{\n                height: `${this.props.height}%`,\n                width: '100%',\n                borderTop: \".6px solid rgba(0,0,0, 0.4)\"\n                }}\n            >\n            <svg\n            style={{ height: '100%', width: '100%' }}\n            id=\"svgChart\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n            >\n            <g transform={`translate(${0}, ${headerHeight})`}>\n            <text\n                textAnchor=\"middle\"\n                x={width1/2}\n                y={10}\n                style={{ font: \"bold 16px sans-serif\" }}\n            >Algorithms</text>\n            <Methods\n                classifiers={classifiers}\n                width = {width1}\n                onSelectMethod={this.onSelectMethod}\n                selectedMethod = {this.state.selectedMethod}\n                usedMethods = {usedMethods}\n                unusedMethods = {unusedMethods}\n                hyperpartitions={hyperpartitions}\n                configsMethod = {this.state.configsMethod}\n                methodSelected = {this.state.methodSelected}\n                onMethodsCheckBoxChange = {this.onMethodsCheckBoxChange}\n                compareK={compareK}\n                recommendationResult={this.props.recommendationResult}\n            />\n            { /*<foreignObject x={width1-30} y={svgHeight/2} width={150} height={35}> \n                <Button type=\"primary\" onClick={this.onMethodButtonClick}>\n                    Show me more<Icon type=\"right\" />\n                </Button>\n                </foreignObject>*/}\n             {generateButton({\n                    x:width1,\n                    y:svgHeight/2,\n                    width:150,\n                    height:35\n                },methodbuttonMode,this.onMethodButtonClick)}\n            </g>\n            {displaymode==1 || displaymode==2?generateHyperpartition():<g />}\n            {displaymode==2 ? generateHyperparameter():<g />}\n           \n            \n            </svg>\n\n\n           {/* <div style={{position: \"absolute\",bottom:\"10px\",left:\"10px\"}}>\n                <span>Budget</span>\n                <InputNumber min={1} value={this.state.configsBudget} style={{ width: \"80px\" }} onChange={this.onBudgetChange} />\n                <Button key={\"_button_\"+(++this.index)} loading={this.state.loading} onClick={this.updateCurrentDataRun}>Update Config</Button>\n                </div>*/}\n            </div>\n    }\n}\n"
  },
  {
    "path": "src/components/DataRuns/ThreeLevel_Horizontal/index.tsx",
    "content": "import ThreeLevel from './ThreeLevel'\nexport  default ThreeLevel;"
  },
  {
    "path": "src/components/DataRuns/index.tsx",
    "content": "import DataRuns from './DataRuns'\nexport  default DataRuns;"
  },
  {
    "path": "src/components/DataView.css",
    "content": ".datasetInfo{\n    padding: 10px;\n    width: 100%;\n    text-align: center;\n}\n.dataViewColContainer{\n    height: 100%;\n    overflow-x: scroll;\n}\n/* .dataViewCol{\n    height: 100%;\n    width: 100%;\n    border-left: 1px solid rgba(0,0,0,0.16);\n\n} */\n.dataViewCol>div, .dataViewCol>span{\n    max-width: 100%;\n    height: 100%;\n\n    display: table-cell;\n    vertical-align: middle;\n\n}\n\n.features{\n    overflow-y: scroll;\n    padding: 10px;\n    border-top: 1px solid rgba(0,0,0,0.16);\n}\n.featureTitle{\n    text-align: center;\n    font-size: 1.2em;\n}\n\n.feature{\n    border-bottom: 1px solid rgba(0,0,0,0.16);\n}\n\n\n.iconButton{\n    font-size: 45px;\n}\n\n.classLegend>span::before{\n    content: '■';\n    font-size: 15px;\n}\n\n.ant-upload-list-item-name{\n    max-width: 6vw;\n    text-overflow: ellipsis;\n}"
  },
  {
    "path": "src/components/DataView.tsx",
    "content": "// import axios from \"axios\";\nimport * as React from \"react\";\nimport FeatureChart from \"./SidePanel/FeatureChart\"\nimport { Upload, message, Icon, Col, Row } from 'antd';\n// import { URL } from '../Const';\nimport { getDatasetCSV, postEnterData, startDatarun } from 'service/dataService';\nimport './DataView.css';\nimport {EChartsColor} from \"helper\";\n\n// const axiosInstance = axios.create({\n//     baseURL: URL + '/api',\n//     // timeout: 1000,\n//     // headers: {'X-Custom-Header': 'foobar'}\n// });\n\nexport interface IProps{\n    // setDatarunID: (id:number)=>void\n    datarunID: number | null,\n}\n\nexport interface IState {\n    dataset: IFeature[],\n    fileList: any[],\n    running: boolean\n}\nexport interface IFeature {\n    name: string,\n    data: any[] // Revised number[] to any[]\n}\n// export interface IDataset{\n//     name:string,\n//     [key:string]:data\n// }\nexport default class DataView extends React.Component<IProps, IState>{\n    // public datarunID:number\n    constructor(props: IProps) {\n        super(props)\n        // this.onChange = this.onChange.bind(this)\n        this.beforeUpload = this.beforeUpload.bind(this)\n        this.startDatarun = this.startDatarun.bind(this)\n        this.state = {\n            dataset: [],\n            fileList: [],\n            running: false\n        }\n    }\n    public async getData() {\n        if (this.props.datarunID) {\n            const datum = await getDatasetCSV(this.props.datarunID)\n            // const res = await axios.get('../../viz/dataset_31_credit-g.csv') // this should be changed to the server response later\n            // const datum = res.data\n            this.parseData(datum)\n        }\n    }\n    public parseData(csv:string){\n        const lines:string[] = csv.split('\\n')\n        const features: IFeature[] = lines[0].split(',').map(\n            (feature: string) => {\n                return { name: feature, data: [] }\n            })\n        lines.splice(0, 1)\n        const instances = lines\n        // for each row\n        // Revised the data type to support the category feature\n        instances.forEach((ins:string) => {\n            const values = ins.split(',')\n            values.forEach((v, idx)=>{\n                let _v = parseFloat(v)\n                if(isNaN(_v)){\n                    features[idx].data.push(v)\n                }else{\n                    features[idx].data.push(_v)\n                }\n            })\n        });\n        this.setState({\n            dataset: features\n        })\n    }\n    public componentDidUpdate(prevProps: IProps, provState: IState) {\n        if (this.props.datarunID != prevProps.datarunID) {\n            this.getData();\n        }\n    }\n\n    public startDatarun() {\n\n        const {running} = this.state\n        const info = running?'stop run':'start run'\n        this.setState({running: true})\n        message.info(info);\n        if (this.props.datarunID)\n            startDatarun(this.props.datarunID)\n                .then((response) => {\n                    console.log(response);\n                    message.success(`start a data run successfully`);\n                    // this.props.setDatarunID(this.props.datarunID) // pass datarun id to datarun after clicking run button\n                    this.setState({running: !this.state.running})\n                })\n                .catch((error) => {\n                    console.log(error);\n                });\n\n    }\n\n    public beforeUpload(file:any){\n        let reader = new FileReader();\n        reader.readAsText(file);\n        reader.onload = (evt: FileReaderProgressEvent) => {\n            if (evt.target) {\n                let content = reader.result;\n                this.parseData(content)\n            }\n        };\n\n        postEnterData(file)\n            .then(data => {\n\n                if (data.success === true) {\n                    message.success(`${file.name} file uploaded successfully`);\n                    // this.datarunID = response.data.id\n                } else {\n                    message.error(`${file.name} file upload failed.`);\n                }\n            })\n            .catch((error) => {\n                console.error(error);\n            });\n\n\n\n        return false\n    }\n\n\n    public render() {\n\n        const {running} = this.state\n        // upload button\n        const props = {\n            name: 'file',\n            // action: `${URL}/api/enter_data`,\n            headers: {\n                authorization: '',\n            },\n            // onChange: this.onChange,\n            beforeUpload: this.beforeUpload // custom controll the upload event\n\n        };\n        const uploadButton = (\n            <div >\n                <Icon type={'plus'} className='iconButton' />\n                <div className=\"ant-upload-text\">\n                    <div>Upload</div>\n                    {/* <div>New</div>\n                <div>Dataset</div> */}\n                </div>\n            </div>\n        );\n\n        // start data run button\n        const runButton = (\n            <div className='boxButton'>\n                <Icon type={running?\"pause\":\"caret-right\"} onClick={this.startDatarun} className='iconButton' />\n                <div className=\"startRun\" >\n                    <div>{running?\"Stop\":\"Run\"}</div>\n                    {/* <div>for this</div>\n              <div>Dataset</div> */}\n                </div>\n            </div>\n        )\n\n\n\n        //render\n        const { dataset } = this.state\n        const classes = dataset[dataset.length-1]\n        if (classes) {\n            const features = dataset.slice(0, dataset.length-1)\n            let cate_classes: number[] = []\n            classes.data.forEach(d => {\n                if (cate_classes.indexOf(d) == -1) {\n                    cate_classes.push(d)\n                }\n            })\n\n            // legend of classes\n            const legend = cate_classes.map((className,i)=>{\n                return <span key={className} className='classLegend'>\n                    <span style={{color: EChartsColor[i],  margin:'2px'}}/>\n                    {className}\n                </span>\n            })\n\n            return <div className=\"instances shadowBox\">\n                <Row className='datasetInfo' style={{ height: '15%', overflowY: \"auto\" }}>\n                    <Col span={8} className='dataViewColContainer'>\n                        <div className='dataViewCol'>\n                            <div>\n                                <h3><b>Overview</b></h3>\n                                <div> {cate_classes.length} classes </div>\n                                <div>{legend}</div>\n                                <div>{features.length} features</div>\n                                <div>{dataset[0].data.length} instances</div>\n                            </div>\n                        </div>\n                    </Col>\n                    <Col span={8} className='dataViewColContainer'>\n                        <div className='dataViewCol'>\n                            <Upload {...props}\n                                listType=\"text\">\n                                {uploadButton}\n                            </Upload>\n                        </div>\n                    </Col>\n                    <Col span={8} className='dataViewColContainer'>\n                        <div className='dataViewCol'>\n                            {runButton}\n                        </div>\n                    </Col>\n\n                </Row>\n                <div className='features' style={{ height: '85%' }}>\n                    {features.map((f: IFeature) => {\n\n                        return <FeatureChart\n                            feature={f} classes={classes}\n                            key={f.name} cate_classes={cate_classes}\n                        />\n                    })}\n                </div>\n\n            </div>\n        } else {\n            return <Upload {...props}\n                className=\"avatar-uploader\">\n                {uploadButton}\n            </Upload>\n        }\n    }\n}\n\n\n"
  },
  {
    "path": "src/components/SidePanel/DataSelector.css",
    "content": ""
  },
  {
    "path": "src/components/SidePanel/DataSelector.tsx",
    "content": "import * as React from 'react';\nimport { Select, Row, Col, Upload, Icon, Button, message } from 'antd';\nimport { IDatasetInfo, IDatarunInfo, IDatarunStatus, IConfigsInfo, postNewDatarun, INewDatarunResponse } from 'service/dataService';\nimport { getDatasets, getDataruns, getDatarun, postNewDataset, startDatarun, stopDatarun } from 'service/dataService';\nimport { IDatarunStatusTypes } from 'types/index';\nimport \"./DataSelector.css\";\nimport SettingsModal from './SettingsModal';\n\nconst Option = Select.Option;\n\n\nexport interface DataSelectorProps {\n    datasetID: number | null;\n    datarunID: number | null;\n    datarunStatus: IDatarunStatusTypes;\n    setDatasetID: (id: number) => void;\n    setDatarunID: (id: number | null) => void;\n    setDatarunStatus: (status: IDatarunStatusTypes) => void;\n}\n\nexport interface DataSelectorState {\n    datasets: IDatasetInfo[];\n    dataruns: IDatarunInfo[];\n    isProcessing: boolean;\n    // datarunStatus: IDatarunStatusTypes;\n}\n\nexport default class DataSelector extends React.Component<DataSelectorProps, DataSelectorState> {\n    constructor(props: DataSelectorProps) {\n        super(props);\n        this.onSelectDatarun = this.onSelectDatarun.bind(this);\n        this.onSelectDataset = this.onSelectDataset.bind(this);\n        this.beforeUploadDataset = this.beforeUploadDataset.bind(this);\n        this.onClickDatarun = this.onClickDatarun.bind(this);\n        this.newDatarun = this.newDatarun.bind(this);\n        this.state = {\n            datasets: [],\n            dataruns: [],\n            isProcessing: false,\n            // datarunStatus: IDatarunStatusTypes.PENDING\n        };\n    }\n\n    public async getDatasets() {\n        const datasets = await getDatasets();\n        if(datasets){\n            this.setState({ datasets });\n        }\n    }\n    public async getDataruns(datasetID: number, datarunID:number = -1) {\n        const dataruns = await getDataruns({ dataset_id: datasetID });\n        this.setState({ dataruns });\n        // Select the first run as default\n        if (dataruns.length > 0) {\n            if(datarunID == -1){\n                datarunID = dataruns[0].id;\n            }\n            this.onSelectDatarun(datarunID);\n        }\n        else this.props.setDatarunID(null);\n    }\n\n    public componentDidMount() {\n        this.getDatasets();\n    }\n\n    public onSelectDataset(datasetID: number) {\n        this.props.setDatasetID(datasetID);\n    }\n\n    public onSelectDatarun(datarunID: number) {\n        this.props.setDatarunID(datarunID);\n    }\n\n    public beforeUploadDataset(file: any) {\n        postNewDataset(file)\n            .then(data => {\n                if (data.success === true) {\n                    message.success(`${file.name} file uploaded successfully`);\n                    this.getDatasets().then(() => this.onSelectDataset(data.id));\n                    // this.datarunID = response.data.id\n                } else {\n                    message.error(`${file.name} file upload failed.`);\n                }\n            })\n            .catch(error => {\n                console.error(error);\n            });\n        return false;\n    }\n\n    public onClickDatarun() {\n        const { datarunStatus } = this.props;\n        let promise: Promise<IDatarunStatus>;\n        if (!this.props.datarunID) return;\n        switch (datarunStatus) {\n            case IDatarunStatusTypes.RUNNING:\n                promise = stopDatarun(this.props.datarunID);\n                break;\n            case IDatarunStatusTypes.PENDING:\n                promise = startDatarun(this.props.datarunID);\n                break;\n            default:\n                console.error(\"This branch should not occur!\")\n                return;\n        }\n        this.setState({isProcessing: true});\n        promise\n            .then(datarun => {\n                // this.props.setDatarunID(this.props.datarunID) // pass datarun id to datarun after clicking run button\n                this.props.setDatarunStatus(datarun.status);\n                this.setState({isProcessing: false});\n            })\n            .catch(error => {\n                console.log(error);\n                this.setState({isProcessing: false});\n            });\n    }\n    public async newDatarun(configs: IConfigsInfo): Promise<undefined | INewDatarunResponse> {\n        const {datasetID} = this.props;\n        if (datasetID === null) return;\n        const p = postNewDatarun(datasetID, configs);\n        p.then((status) => {\n            if (status.success) {\n                this.getDataruns(datasetID);\n                \n            }\n        })\n        return p;\n    }\n\n    public componentDidUpdate(prevProps: DataSelectorProps, prevState: DataSelectorState) {\n        const { datasetID, datarunID, datarunStatus } = this.props;\n        if (datasetID !== prevProps.datasetID && datasetID) {\n            this.getDataruns(datasetID);\n        }\n        if (datarunID !== prevProps.datarunID && datarunID && datasetID ) {\n            // Automatically try to correct the datarun list once.\n            let findflag = false;\n            for(let i = 0; i<this.state.dataruns.length;i++){\n                if(this.state.dataruns[i].id == datarunID){\n                    findflag = true;\n                }\n            }\n            if(findflag == false){\n                this.getDataruns(datasetID,datarunID);\n            }\n            getDatarun(datarunID)\n                    .then((datarun) => {\n                        this.props.setDatarunStatus(datarun.status);\n                    });\n        }\n        if (datarunStatus !== prevProps.datarunStatus && datarunID === prevProps.datarunID) {\n            switch (datarunStatus) {\n                case IDatarunStatusTypes.RUNNING:\n                    message.info(\"Datarun is now started\");\n                    break;\n                case IDatarunStatusTypes.COMPLETE:\n                    message.info(\"Datarun has completed.\");\n                    break;\n                case IDatarunStatusTypes.PENDING:\n                    message.info(\"Datarun stopped / is pending\");\n                    break;\n                default:\n                    break;\n            }\n        }\n    }\n\n    public render() {\n        const { datarunStatus } = this.props;\n        const { isProcessing } = this.state;\n        const running = datarunStatus === IDatarunStatusTypes.RUNNING;\n        const completed = datarunStatus === IDatarunStatusTypes.COMPLETE;\n        // upload button\n        const uploadProps = {\n            name: 'file',\n            // action: `${URL}/api/enter_data`,\n            headers: {\n                authorization: ''\n            },\n            // onChange: this.onChange,\n            beforeUpload: this.beforeUploadDataset // custom control the upload event\n        };\n\n        // const settingButton = <React.Fragment><Icon type='setting' /><span>Settings</span></React.Fragment>;\n        return (\n            <div className=\"data-selector\">\n                {/* <div>\n                    <span>Settings</span>\n                    <Row gutter={6}>\n\n                        <Col span={24} className=\"dataViewColContainer\">\n                            <SettingsModal onSubmit={postConfigs} button={settingButton}/>\n                        </Col>\n                    </Row>\n\n                </div> */}\n                <div>\n                    <span>Datasets</span>\n                    <Row style={{marginBottom: '6px'}} gutter={6}>\n                        <Col span={14} className=\"dataViewColContainer\">\n                            <Select\n                                placeholder=\"Select a dataset\"\n                                value={this.props.datasetID || undefined}\n                                style={{ width: '100%' }}\n                                onChange={this.onSelectDataset}\n                            >\n                                {this.state.datasets.map(({ id, name }) => (\n                                    <Option key={id} value={id}>\n                                        {name}\n                                    </Option>\n                                ))}\n                            </Select>\n                        </Col>\n                        <Col span={10} className=\"dataViewColContainer\">\n                            <Upload {...uploadProps} listType=\"text\">\n                                <Button>\n                                    <Icon type=\"upload\" /> Upload\n                                </Button>\n                            </Upload>\n                        </Col>\n                    </Row>\n                </div>\n                <div>\n                    <span>Dataruns</span>\n                    <Row gutter={6}>\n                        <Col span={3} className=\"dataViewColContainer\">\n                            <SettingsModal\n                                onSubmit={this.newDatarun}\n                                buttonOptions={{icon: 'plus', shape: 'circle'}}\n                            />\n                        </Col>\n                        <Col span={13} className=\"dataViewColContainer\">\n                            <Select\n                                placeholder=\"Select a datarun\"\n                                value={this.props.datarunID || undefined}\n                                disabled={this.props.datasetID === null}\n                                style={{ width: '100%' }}\n                                onChange={this.onSelectDatarun}\n                            >\n                                {this.state.dataruns.map(({ id, selector }) => (\n                                    <Option value={id} key={id}>\n                                        {id}: {selector}\n                                    </Option>\n                                ))}\n                            </Select>\n                        </Col>\n                        <Col span={8} className=\"dataViewColContainer\">\n                            <Button\n                                onClick={this.onClickDatarun}\n                                disabled={datarunStatus === IDatarunStatusTypes.COMPLETE || this.props.datasetID === null || isProcessing}\n                            >\n                                <Icon type={isProcessing ? 'loading' : (running ? 'pause' : 'caret-right')} />\n                                {running ? 'Stop' : (completed ? 'Complete' : 'Run')}\n                            </Button>\n                        </Col>\n                    </Row>\n                </div>\n            </div>\n\n        );\n    }\n}\n"
  },
  {
    "path": "src/components/SidePanel/DataView.css",
    "content": ".datasetInfo{\n    padding: 10px;\n    width: 100%;\n    text-align: center;\n}\n\n.dataViewColContainer{\n    height: 100%;\n}\n\n.features{\n    overflow-y: scroll;\n    padding: 10px;\n    border-top: 1px solid rgba(0,0,0,0.16);\n}\n.featureTitle{\n    text-align: center;\n    font-size: 1.2em;\n}\n\n.feature{\n    border-bottom: 1px solid rgba(0,0,0,0.16);\n}\n\n\n.iconButton{\n    font-size: 45px;\n}\n\n.data-view h4 {\n    margin-top: 6px;\n    margin-bottom: 2px;\n    border-color: #888;\n}\n\n.data-view hr {\n    margin-top: 0;\n}\n\n.classLegend>span::before{\n    content: '■';\n    font-size: 15px;\n}"
  },
  {
    "path": "src/components/SidePanel/DataView.tsx",
    "content": "import * as React from 'react';\nimport { getDatasetCSV } from 'service/dataService';\nimport FeatureChart from './FeatureChart';\nimport {EChartsColor} from \"helper\";\n\nimport \"./DataView.css\";\n\nexport interface IProps{\n    // setDatarunID: (id:number)=>void\n    datasetID: number | null,\n}\n\nexport interface IState {\n    dataset: IFeature[],\n    fileList: any[],\n    running: boolean\n}\nexport interface IFeature {\n    name: string,\n    data: any[] // Revised number[] to any[]\n}\n// export interface IDataset{\n//     name:string,\n//     [key:string]:data\n// }\nexport default class DataView extends React.Component<IProps, IState>{\n    // public datarunID:number\n    constructor(props: IProps) {\n        super(props);\n        // this.onChange = this.onChange.bind(this)\n        this.state = {\n            dataset: [],\n            fileList: [],\n            running: false\n        };\n    }\n    public async getData() {\n        if (this.props.datasetID) {\n            const datum = await getDatasetCSV(this.props.datasetID);\n            // const res = await axios.get('../../viz/dataset_31_credit-g.csv') // this should be changed to the server response later\n            // const datum = res.data\n            this.parseData(datum);\n        }\n    }\n    public parseData(csv:string){\n        const lines:string[] = csv.split('\\n')\n        const features: IFeature[] = lines[0].split(',').map(\n            (feature: string) => {\n                return { name: feature, data: [] };\n            });\n        lines.splice(0, 1);\n        const instances = lines;\n        // for each row\n        // Revised the data type to support the category feature\n        instances.forEach((ins:string) => {\n            const values = ins.split(',');\n            values.forEach((v, idx)=>{\n                let _v = parseFloat(v);\n                if(isNaN(_v)){\n                    features[idx].data.push(v);\n                }else{\n                    features[idx].data.push(_v);\n                }\n            })\n        });\n        this.setState({\n            dataset: features\n        });\n    }\n    public componentDidUpdate(prevProps: IProps, provState: IState) {\n        if (this.props.datasetID != prevProps.datasetID) {\n            this.getData();\n        }\n    }\n    public componentDidMount() {\n        this.getData()\n    }\n\n    public render() {\n\n        //render\n        const { dataset } = this.state;\n        const labels = dataset[dataset.length-1];\n\n\n        if (labels) {\n            const features = dataset.slice(0, dataset.length-1);\n            const classSet = new Set(labels.data);\n            const classes: (number|string)[] = Array.from(classSet);\n\n            //legend of classes\n            const legend = classes.map((className,i)=>{\n                return <span key={className} className='classLegend'>\n                    <span style={{color: EChartsColor[i],  margin:'2px'}}/>\n                    {className}\n                    ({labels.data.filter(d=>d==className).length})\n                </span>\n            })\n\n            return (<div className=\"data-view\">\n                <div>\n                    <h4>Overview</h4>\n                    <hr/>\n                    <div>{features.length} features / {dataset[0].data.length} instances / {classes.length} classes {legend}</div>\n                </div>\n                <div>\n                    <h4>Feature Distribution</h4>\n                    <hr/>\n                    <div className='features' style={{ height:'calc(94vh - 300px)' }}>\n                        {features.map((f: IFeature) =>\n                            <FeatureChart\n                                feature={f} classes={labels}\n                                key={f.name} cate_classes={classes}\n                            />\n                        )}\n                    </div>\n                </div>\n\n            </div>);\n        } else {\n            return (<div>\n                Please select a dataset.\n                </div>);\n        }\n    }\n}\n\n\n"
  },
  {
    "path": "src/components/SidePanel/FeatureChart.tsx",
    "content": "import ReactEcharts from \"echarts-for-react\";\nimport * as React from \"react\";\n// import { prepareBoxplotData } from '../atm_helper';\n\nimport { IFeature } from './DataView';\n\nexport default class FeatureChart extends React.Component<{ feature: IFeature, classes: IFeature, cate_classes: (number|string)[] }>{\n    checkFeatureType(feature_values:IFeature['data']) {\n\n        for (let i = 0, ilen = feature_values.length; i < ilen; i++) {\n            let d = feature_values[i];\n            if (d && typeof (d) != 'number') {\n                return 'category';\n            }\n        }\n        return 'numerical';\n\n    };\n    getValOption() {\n        let { feature, classes, cate_classes } = this.props\n        const barNum = 15 //number of bars in the histogram\n        let minFeatureVal = Math.min(...feature.data)\n        let maxFeatureVal = Math.max(...feature.data)\n        let step = (maxFeatureVal-minFeatureVal)/barNum\n        let xAxesData:string[] = []\n\n        for (let i = 0; i<barNum; i++){\n            xAxesData.push(`${(minFeatureVal + i*step).toPrecision(3)}~${(minFeatureVal + (i+1)*step).toPrecision(3)}`)\n        }\n\n        const series = cate_classes.map((classIdx) => {\n            let hisData:number[] = []\n            for(let i =0; i<barNum; i++){\n                hisData.push(0)\n            }\n\n            feature.data.forEach((d, idx)=>{\n                if(classes.data[idx] == classIdx){\n                    let hisIdx = Math.floor((d-minFeatureVal)/step)\n                    hisData[hisIdx]+=1\n                }\n            })\n\n\n            return {\n                name: 'class_'+classIdx,\n                type:'bar',\n                data: hisData,\n                barGap: '20%',\n                barCategoryGap: '10%'\n            }\n        })\n\n\n\n        const option = {\n            tooltip:{},\n            grid: {\n                left: '10%',\n                height: '50%',\n                top: '25%',\n            },\n            title: {\n                text: feature.name,\n                fontSize: '0.8vh',\n                top: 0,\n            },\n            xAxis: {\n                type: 'category',\n                data: xAxesData,\n                axisTick:{\n                    alighWithLabel: true,\n                    interval: 0,\n                },\n                axisLabel: {\n                    rotate: -30,\n                    interval:1,\n                    fontSize: 10,\n                }\n            },\n            yAxis: {\n                type: \"value\",\n                splitNumber: 2,\n            },\n            // itemStyle:{\n            //     opacity: 0.5\n            // },\n            series,\n        }\n\n        return option\n\n        // const series = cate_classes.map((classIdx) => {\n        //     let data: any[] = []\n        //     feature.data.forEach((d, idx) => {\n        //         if (classes.data[idx] == classIdx) {\n        //             data.push([d, 'class_'+classIdx])\n        //         }\n        //     })\n        //     return {\n        //         type: 'scatter',\n        //         symbolSize: 6,\n        //         itemStyle: {\n        //             opacity: 0.3\n        //         },\n        //         data,\n        //     }\n        // })\n\n        // let boxData = prepareBoxplotData(\n        //     series.map(d => {\n        //         //from Array<[feature_value, classes_value]> to Array<feature_value>\n        //         return d.data.map(d => d[0])\n        //     }),\n        //     { layout: 'vertical' }\n        // );\n        // let boxSeries = {\n        //     type: 'boxplot',\n        //     itemStyle: {\n        //         borderWidth: 1,\n        //         borderColor: '#444',\n        //     },\n        //     data: boxData.boxData\n        // }\n\n        // // series.concat(boxSeries)\n\n        // const option = {\n        //     // tooltip: {\n        //     //     position: 'top'\n        //     // },\n        //     legend: {},\n        //     grid: {\n        //         left: '20%',\n        //         height: '60%',\n        //         top: '10%',\n        //     },\n        //     title: { text: feature.name },\n        //     // singleAxis,\n        //     xAxis: {\n        //         type: 'value',\n        //         min: 'dataMin',\n        //         max: 'dataMax',\n        //     },\n        //     yAxis: {\n        //         type: \"category\",\n        //         data: cate_classes.map(d => 'class_' + d),\n        //         axisLine: {\n        //             show: false\n        //         },\n        //         axisLabel: {\n        //             show: false\n        //         },\n        //         axisTick: {\n        //             show: false\n        //         },\n        //     },\n        //     series: [boxSeries, ...series],\n        // };\n\n        // return option\n    };\n    getCateOption() {\n\n        let { feature, classes, cate_classes } = this.props\n        const categorySet = {}\n        const categories: string[] = []\n        feature.data.forEach((d)=>{\n            if(!categorySet[d]){\n                categorySet[d] = true\n                categories.push(d)\n            }\n        })\n        const xAxisData = categories\n\n        const series = cate_classes.map((classIdx)=>{\n            let data: any[] = []\n            categories.forEach(()=>{\n                data.push(0)\n            })\n            feature.data.forEach((d, idx)=>{\n                if(classes.data[idx] == classIdx){\n                    data[categories.indexOf(d)] += 1\n                }\n            })\n            return {\n                name: 'class_'+classIdx,\n                type: 'bar',\n                barGap:'5%',\n                barCategoryGap: '40%',\n                data\n            }\n        })\n\n\n        let option = {\n            title: {\n                text: feature.name ,\n                top: 0,\n                fontSize: '0.8vh',\n            },\n            // legend: {\n            //     // data: ['bar', 'bar2'],\n            //     // align: 'left'\n            // },\n            grid: {\n                left: '10%',\n                height: '50%',\n                top: '25%',\n            },\n\n            tooltip: {},\n            xAxis: {\n                data: xAxisData,\n                axisLabel: {\n                    interval:0,\n                    rotate: -30,\n                },\n                axisTick: {\n                    interval:0\n                }\n            },\n            yAxis: {\n            },\n            series: [...series],\n            animationEasing: 'elasticOut',\n\n\n        };\n        return option\n    }\n    render() {\n        let {feature} = this.props\n        let featureType = this.checkFeatureType(feature.data)\n        let option = featureType == 'numerical'?this.getValOption():this.getCateOption()\n        return <div className=\"featurex\" style={{ height: '200px' }}>\n                {/* <div className='featureTitle'>{feature.name}</div> */}\n                <ReactEcharts\n                    option={option}\n                    style={{ height: `100%`, width: '100%' }}\n                />\n            </div>\n\n    }\n}\n"
  },
  {
    "path": "src/components/SidePanel/LeaderBoard.css",
    "content": ".lb-classifier {\n    background-color: #dddddd;\n    color:  #dddddd;\n    position: absolute;\n    left: 100px;\n    top: 8px;\n}\n\n.lb-classifier-metric {\n    background-color: transparent;\n    position: absolute;\n    left: 100px;\n    top: 8px;\n}\n.lb-bar {\n    background-color: #dddddd;\n    color:  #dddddd;\n    position: absolute;\n    left: 0px;\n    top: 0px;\n}\n\n.lb-bar-text {\n    background-color: transparent;\n    position: absolute;\n    left: 0px;\n    top: 0px;\n}\n\n.progress {\n  width: 30px;\n  background: #ddd;\n}\n.curRate {\n  width: 75%;\n  background: #f30;\n}\n.round-conner {\n  height: 20px;\n  border-radius: 2px;\n}\n\n/* width */\n::-webkit-scrollbar {\n    width: 0px;\n}\n\n/* Track */\n::-webkit-scrollbar-track {\n    background: #ffffff;\n    opacity:0;\n}\n\n/* Handle */\n::-webkit-scrollbar-thumb {\n    background: #ffffff;\n    opacity:0;\n}\n\n/* Handle on hover */\n::-webkit-scrollbar-thumb:hover {\n    background: #ffffff;\n    opacity:0;\n}"
  },
  {
    "path": "src/components/SidePanel/LeaderBoard.tsx",
    "content": "import * as React from 'react';\nimport { Collapse, Tag, InputNumber, Switch, Icon, Progress } from 'antd';\n//import {  Tag,Progress } from 'antd';\nimport { IDatarunStatusTypes } from 'types';\nimport { getClassifiers, IClassifierInfo, IDatarunInfo, getDatarun, IClickEvent } from 'service/dataService';\n// import { IHyperpartitionInfo, getHyperpartitions}  from 'service/dataService';\nimport { UPDATE_INTERVAL_MS } from 'Const';\nimport './LeaderBoard.css';\n// import LineChart from './LineChart';\nimport { getColor } from 'helper';\nimport OverallHistogram from './OverallHistogram';\nconst Panel = Collapse.Panel;\n\n// const TOP_K = 10;\n\nfunction isFloat(n: number): boolean {\n    return n % 1 !== 0;\n}\n\nexport interface IDatarunSummary {\n    nTried: number;\n    topClassifiers: IClassifierInfo[];\n    nTriedByMethod: { [method: string]: number };\n    triedHyperpartition: number[]\n}\n\nexport function computeDatarunSummary(classifiers: IClassifierInfo[]): IDatarunSummary {\n    // This need to fix to support other metric?\n    classifiers = [...classifiers];\n    classifiers.sort((a, b) => -a.cv_metric + b.cv_metric);\n    let nTriedByMethod = {};\n    let triedHyperpartition = []\n    classifiers.forEach(c => {\n        const nTried = nTriedByMethod[c.method];\n        nTriedByMethod[c.method] = nTried ? nTried + 1 : 1;\n    });\n    triedHyperpartition = Array.from(new Set(classifiers.map(d=>d.hyperpartition_id)))\n    return {\n        nTried: classifiers.length,\n        topClassifiers: classifiers,\n        nTriedByMethod,\n        triedHyperpartition,\n\n    };\n}\n\nexport function classifierMetricString(c: IClassifierInfo): string {\n    return `${c.cv_metric.toFixed(3)} ± ${c.cv_metric_std.toFixed(3)}`;\n}\n\nexport function HyperParams(params: { [method: string]: any }) {\n    const keys = Object.keys(params);\n    keys.sort();\n    return (\n        <React.Fragment>\n            {keys.map(k => (\n                <span key={k}>\n                    <b>{k}</b>: {typeof params[k] === 'number'\n                    ? (isFloat(params[k]) ? params[k].toPrecision(4) : params[k] )\n                    : String(params[k])}\n                <br/>\n                </span>\n\n            ))}\n        </React.Fragment>\n    );\n}\n\nexport function MethodHeader(params: IClassifierInfo) {\n    const width = `${(params.cv_metric * 70).toFixed(1)}%`;\n    return (\n        <div>\n            <Tag color={getColor(params.method)}>{params.method}</Tag>\n            {/* <div> */}\n            <div className=\"lb-classifier\" style={{ width }}>none</div>\n            <span className=\"lb-classifier-metric\">{classifierMetricString(params)}</span>\n            {/* </div> */}\n        </div>\n    );\n}\n\nexport interface LeaderBoardProps {\n    datarunID: number | null;\n    datarunStatus: IDatarunStatusTypes;\n    setDatarunStatus: (status: IDatarunStatusTypes) => void;\n    setTopK: (topk:number)=>void;\n    postClickEvent:(e:IClickEvent)=>void;\n}\n\nexport interface LeaderBoardState {\n    datarunInfo: IDatarunInfo | null;\n    // hyperpartitions: IHyperpartitionInfo[];\n    // hyperpartitionStrings: string[];\n    summary: IDatarunSummary | null;\n    topK: number\n    // scores: {[id: string]: number}[];\n}\n\nexport default class LeaderBoard extends React.Component<LeaderBoardProps, LeaderBoardState> {\n    private intervalID: number;\n    constructor(props: LeaderBoardProps) {\n        super(props);\n        this.updateLeaderBoard = this.updateLeaderBoard.bind(this);\n        this.changeTopK = this.changeTopK.bind(this)\n        this.state = {\n            summary: null,\n            datarunInfo: null,\n            topK: 5\n            // hyperpartitions: [],\n            // hyperpartitionStrings: []\n            // scores: [],\n        };\n    }\n    public updateLeaderBoard(updateDatarunInfo: boolean = false) {\n        const { datarunID } = this.props;\n        if (datarunID === null) return;\n        getClassifiers(datarunID).then(classifiers => {\n            //console.log('classifiers', classifiers);\n            this.setState({ summary: computeDatarunSummary(classifiers) });\n        });\n\n        // getDatarunStepsScores(datarunID).then(scores => this.setState({scores}))\n        if (updateDatarunInfo) {\n            getDatarun(datarunID).then(datarunInfo => {\n                this.setState({ datarunInfo });\n                this.props.setDatarunStatus(datarunInfo.status);\n            });\n            // getHyperpartitions().then(hyperpartitions => {\n            //     // console.log(hyperpartitions);\n            //     if (Array.isArray(hyperpartitions))\n            //        {\n            //             hyperpartitions = hyperpartitions.filter(d=>d.datarun_id==datarunID)\n            //            let hyperpartitionStrings=Array.from(\n            //                new Set(\n            //                    hyperpartitions.map(d=>d.hyperpartition_string)\n            //                 )\n            //             )\n\n            //            this.setState({ hyperpartitionStrings, hyperpartitions });\n            //        }\n            //     else\n            //         console.error('The fetched hyperpartitions should be an array!');\n            // });\n        }\n    }\n    public startOrStopUpdateCycle() {\n        if (this.props.datarunStatus === IDatarunStatusTypes.RUNNING) {\n            this.intervalID = window.setInterval(this.updateLeaderBoard, UPDATE_INTERVAL_MS);\n        } else {\n            clearInterval(this.intervalID);\n        }\n    }\n\n    public changeTopK(value:number){\n        this.setState({\n            topK:value\n        })\n    }\n    componentDidMount() {\n        this.updateLeaderBoard(true);\n        this.startOrStopUpdateCycle();\n    }\n    componentDidUpdate(prevProps: LeaderBoardProps) {\n        if (prevProps.datarunID !== this.props.datarunID) {\n            this.updateLeaderBoard(true);\n        }\n        if (prevProps.datarunStatus !== this.props.datarunStatus) {\n            this.startOrStopUpdateCycle();\n        }\n    }\n    activeKey:string[] = [];\n    onCollapseChange = (key:string[])=>{\n        let d1 = this.activeKey.length;\n        let d2 = key.length;\n        let intersectkey = this.activeKey.filter((d:string)=>key.indexOf(d)>-1);\n        let changedKey = Array.from(new Set(this.activeKey.concat(key))).filter((d:string)=>intersectkey.indexOf(d)<0);\n        let action = \"changed\";\n        if(d1>d2){\n            action=\"close\";\n        }else if(d1<d2){\n            action=\"open\";\n        }else{\n            action=\"changed\";\n        }\n        this.activeKey = key;\n        let eventlog:IClickEvent = {\n            type:\"leaderboard_classifier\",\n            description:{\n                action:action,\n                changed_classifier_id:changedKey,\n                open_classifier_id:key\n            },\n            time:new Date().toString()\n        }\n        this.props.postClickEvent(eventlog);\n    }\n    public componentWillUnmount() {\n        window.clearInterval(this.intervalID)\n    }\n    public render() {\n\n        const { summary, datarunInfo, topK} = this.state;\n        topK;\n         const best = summary ? summary.topClassifiers[0] : undefined;\n        let methods_num = summary?Object.keys(summary.nTriedByMethod).length:0\n        let hp_num = summary?summary.triedHyperpartition.length:0\n        const progressAlgorithm = (percent:number)=>{\n            return `${methods_num}/14`\n        }\n        const progressHyperpartiton = (percent:number)=>{\n            return `${hp_num}/172`\n        }\n\n        return summary ? (\n            <div >\n                <div>\n                    {/* <h4>Overview</h4> */}\n                    {/* <hr /> */}\n                    <div style={{height:\"100%\"}}>\n                        <b>Metric</b>: {datarunInfo && datarunInfo.metric}\n                         <br/>\n                         <b>Best classifier</b>:\n                        <span\n                            style={{\n                                backgroundColor: getColor(best?best.method:''),\n                                borderRadius:'4px',\n                                padding:'2px',\n                                marginLeft: \"2px\",\n                                color: 'white'\n                            }}\n                            >\n                            {best && `${best.method}-${best.id}`}\n                        </span>\n                        {best && ` ${best.cv_metric.toFixed(3)}±${best.cv_metric_std.toFixed(3)}`}\n                        <br/>\n                         <b>Total classifiers</b>: {summary.nTried}\n                        <br/>\n                        <div style={{width:\"80px\",float:\"left\"}}>\n                        <b>Algorithm </b>:{' '}\n                        </div>\n                        {/*<div className=\"progress round-conner\">\n                            <div className=\"curRate round-conner\">{progressAlgorithm(0)}</div>\n                        </div>*/}\n\n                        <div style={{width:\"110px\",float:\"left\"}}>\n                        <Progress\n                        percent={100*methods_num/14}\n                        format={progressAlgorithm}\n                        width={40}\n                        strokeWidth={10}\n                        />\n                        </div>\n                        <br />\n                        <div style={{width:\"125px\",float:\"left\"}}>\n                        <b>Hyperpartitions </b>:{' '}\n                        </div>\n                        {/*<div>\n                        <div className=\"lb-classifier\" style={{ width:100 }}>none</div>\n                        <span>{progressHyperpartiton(0)}</span>\n                        </div>*/}\n                        <div style={{width:\"120px\",float:\"left\"}}>\n                        <Progress\n                        percent={100*hp_num/172}\n                        format={progressHyperpartiton}\n                        width={40}\n                        strokeWidth={10}\n                        />\n                        </div>\n                        <br />\n                        <b>Performance : </b>\n                        <OverallHistogram classifiers={summary.topClassifiers} width={100} />\n                    </div>\n                    {/* <div>\n                        <LineChart scores={scores} hyperpartitions={hyperpartitions} topK={TOP_K}/>\n                    </div> */}\n                </div>\n                <div>\n                    {/* <h4>Scores</h4> */}\n                    <h4>Top\n                        <InputNumber\n                            min={1}\n                            max={20}\n                            defaultValue={topK}\n                            onChange={this.changeTopK}\n                            style={{width: '50px', margin: '0 4px'}}\n                        />\n\n\n                        Classifiers\n                         {/*<Button\n                            type=\"primary\"\n                            shape=\"circle\"\n                            icon=\"bars\"\n                            size='small'\n                            style={{float:'right'}}\n                            // tslint:disable-next-line:jsx-no-lambda\n                            onClick={()=>this.props.setTopK(topK)}\n                        /> */}\n                        <span style={{float:'right'}} >\n                        Focus:\n                        <Switch\n                            checkedChildren={<Icon type=\"bars\" />}\n                            unCheckedChildren={<Icon type=\"bars\" />}\n                            defaultChecked={false}\n                            // tslint:disable-next-line:jsx-no-lambda\n                            onChange={(checked:boolean)=>this.props.setTopK(checked?topK:0)}\n                        />\n                        </span>\n                    </h4>\n                    <hr />\n                    <div style={{height:\"calc(80vh - 410px)\", overflowY:\"scroll\"}}>\n                    <Collapse bordered={false} onChange={this.onCollapseChange}>\n                        {summary.topClassifiers.slice(0, topK).map(c => (\n                            <Panel key={String(c.id)} header={<MethodHeader {...c} />}>\n                                <HyperParams {...c.hyperparameters} />\n                            </Panel>\n                        ))}\n                    </Collapse>\n                    </div>\n               </div>\n            </div>\n        ) : (\n            <div>Please select a datarun.</div>\n        );\n    }\n}\n"
  },
  {
    "path": "src/components/SidePanel/LineChart.tsx",
    "content": "import * as React from 'react';\nimport ReactEcharts from 'echarts-for-react';\nimport {getColor} from \"helper\";\nimport { IHyperpartitionInfo } from 'service/dataService';\n\nexport interface LineChartProps {\n    scores: {[id: string]: number}[];\n    // id2method: {[id: number]: string};\n    hyperpartitions: IHyperpartitionInfo[];\n    topK: number\n}\n\nexport interface LineChartState {}\n\nexport default class LineChart extends React.Component<LineChartProps, LineChartState> {\n    constructor(props: LineChartProps) {\n        super(props);\n    }\n\n    public computeOption() {\n        const { scores, hyperpartitions } = this.props;\n        const id2hp: {[id: number]: IHyperpartitionInfo} = {};\n        hyperpartitions.forEach(hp => {\n            id2hp[hp.id] = hp;\n        });\n        let series: any[] = [];\n        let min = null;\n        let max = null;\n        if (scores.length > 0) {\n            let ids = Object.keys(scores[0]);\n            const lastScores = ids.map(id => scores[scores.length - 1][id]);\n            // Sort ids by the last scores\n            ids = ids.sort((a, b) => lastScores[b] - lastScores[a]);\n            // min = lastScores[ids[topK - 1]];\n            // max = lastScores[ids[0]];\n            // const diff = max - min;\n            // min = min - 0.1 * diff;\n            // max = max + 0.1 * diff;\n            series = ids.map(id => {\n                const hp = id2hp[Number(id)];\n                return {\n                    data: scores.map((ss, i) => [i, ss[id]]),\n                    type: 'line',\n                    itemStyle: {\n                        color: getColor(hp.method),\n                        opacity: 0.5,\n                    },\n                    lineStyle: {\n                        opacity: 0.5,\n                    },\n                    name: hp.hyperpartition_string,\n                    label: true,\n                    symbolSize: 1,\n                };\n            });\n        }\n\n        const option = {\n            xAxis: {\n                type: 'value',\n            },\n            yAxis: {\n                type: 'value',\n                min: min,\n                max: max,\n            },\n            tooltip: {\n                trigger: 'axis',\n            },\n            series,\n            legend: {\n                data: series.map(s => s.name),\n                // type: 'scroll',\n                // orient: 'vertical',\n                // right: 10,\n                // top: 20,\n                // bottom: 20,\n                itemHeight: 8,\n            },\n            grid: {\n                top: 80,\n                bottom: 30,\n                left: 30,\n                right: 20,\n            }\n        };\n        return option;\n    }\n\n    public render() {\n        return <ReactEcharts option={this.computeOption()}/>;\n    }\n}\n"
  },
  {
    "path": "src/components/SidePanel/OverallHistogram.tsx",
    "content": "import ReactEcharts from \"echarts-for-react\";\n//import {getColor} from \"helper\"\nimport * as React from \"react\";\nimport {  IClassifierInfo } from 'service/dataService';\nexport interface IProps{\n    classifiers:IClassifierInfo[], width: number\n}\n\nexport interface IState{\n    step: number\n    yAxis: 'absolute'|'relative'\n}\n\nexport default class OverallHistogram extends React.Component<IProps, IState>{\n    constructor(props:IProps){\n        super(props)\n        this.state={\n            step :0.1,\n            yAxis:'absolute' //'absolute' or 'relative\n        }\n    }\n    public getOption(){\n        const {classifiers} = this.props\n        let {step, yAxis} = this.state\n        let data : number[] = [];\n        for (let i =0; i<1/step; i++){\n            data.push(0)\n        }\n        classifiers.forEach(classifier=>{\n            let performance = classifier.cv_metric;//parseFloat(classifier['performance'].split(' +- ')[0])\n            let rangeIdx = Math.floor(performance/step)\n            data[rangeIdx] = data[rangeIdx]+1\n        })\n        if (yAxis=='relative'){\n            let max = Math.max(...data)\n            data = data.map(d=>d/max)\n        }\n        let xAxisData:string[] = []\n        for (let i =0; i<1/step; i++){\n            //xAxisData.push(`${(i*step).toFixed(2)}-${((i+1)*step).toFixed(2)}`)\n            xAxisData.push(`${(i*step).toFixed(1)}`)\n        }\n        const option = {\n           // title:{\n           //     text:\"performance histogram\",\n           //      fontSize: '0.5vh',\n           //     top: 0,\n           // },\n            yAxis: {\n                type: 'category',\n                data: xAxisData,\n                axisTick:{\n                    interval:0,\n                },\n                axisLabel: {\n                    rotate: 0,\n                    interval:1,\n                    fontSize: 10,\n                },\n                name: 'F_score',\n               nameLocation :'middle',\n               nameGap : '35'\n\n            },\n            xAxis: {\n                type: 'value',\n                name: 'Number of classifiers',\n                nameLocation :'middle',\n                nameGap : '30'\n            },\n            grid: {\n                left: '15%',\n                height: '55%',\n                top: '10%',\n                bottom: '25%',\n\n            },\n            series:{\n                    type: 'bar',\n                    // smooth: false,\n                    barGap:'5%',\n                    barCategoryGap: \"5%\",\n                    data,\n                    itemStyle:{\n                        color:\"#2491FC\",\n                        opacity: 1\n                    },\n            },\n        };\n        return option\n    }\n    public render(){\n        return <ReactEcharts\n        option = { this.getOption() }\n        style={{ height: `150px`, width: `${this.props.width}%`}}\n        />\n    }\n}"
  },
  {
    "path": "src/components/SidePanel/SettingsModal.tsx",
    "content": "import * as React from 'react';\nimport { Collapse,Modal, Button, Checkbox,InputNumber,message,Select    } from 'antd';\nimport * as methodsDef from \"../../assets/methodsDef.json\";\nimport { IConfigsInfo } from 'service/dataService';\nimport { getConfigs } from 'service/dataService';\n\n\nexport interface SettingsModalProps {\n    onSubmit: (configs: IConfigsInfo) => Promise<any>;\n    button?: React.ReactNode;\n    buttonOptions?: any;\n}\n\nexport interface SettingsModalState {\n    loading: boolean\n    visible: boolean,\n    indeterminate: boolean,\n    checkAll: boolean,\n    configs: IConfigsInfo\n}\n\nconst method_options =  Object.keys(methodsDef).map(\n            (key : string)=>{\n                return {label: methodsDef[key].fullname, value: key}\n            }\n        );\n\nexport default class SettingsModal extends React.Component<SettingsModalProps, SettingsModalState> {\n  constructor(props: SettingsModalProps) {\n    super(props);\n    this.onCheckAllChange = this.onCheckAllChange.bind(this)\n     this.state = {\n        loading: false,\n        visible: false,\n        indeterminate: true,\n        checkAll: false,\n        configs : {\n            methods : [''],\n            budget : 100,\n            r_minimum : 2,\n            k_window :0,\n            priority : 1,\n            gridding :0,\n            metric : \"f1\",\n            selector :\"bestk\",\n            budget_type : \"classifier\",\n            tuner : \"gp\"\n\n            },\n\n        };\n    }\n\nshowModal =() => {\n  this.initModal();\n}\n public initModal() {\n   // get configs from server ;\n   // initialize the default value in Modal\n   // Show Modal.\n  let promise: Promise<IConfigsInfo>;\n  promise = getConfigs();\n  promise\n      .then(configs => {\n        this.setState({\n          visible: true,\n          checkAll: configs.methods.length===method_options.length,\n          configs : {\n            methods:configs.methods,\n            budget:configs.budget,\n            r_minimum: configs.r_minimum,\n            k_window : configs.k_window,\n            gridding : configs.gridding,\n            metric :configs.metric,\n            selector : configs.selector,\n            budget_type: configs.budget_type,\n            tuner: configs.tuner,\n            priority : configs.priority\n          },\n        });\n      })\n      .catch(error => {\n          console.log(error);\n      });\n  }\n\n\n  handleOk = () => {\n    // Submit\n    this.setState({ loading: true });\n    console.log(this.state.configs);\n    // let promise:Promise<IConfigsUploadResponse> = postConfigs(this.state.configs);\n    const promise = this.props.onSubmit(this.state.configs);\n    promise.then(status => {\n      if(status.success == true){\n        message.success(\"Submit Configs Successfully.\");\n      }\n      this.setState({ loading: false, visible: false });\n    }).catch(error=>{\n      console.log(error);\n      message.error(\"Submit Configs Failed.\");\n      this.setState({ loading: false, visible: false });\n\n    });\n\n  }\n  handleCancel = () => {\n    this.setState({ visible: false });\n  }\n\n  onBudgetChange = (budget : any) =>{\n    let configs = this.state.configs;\n    configs.budget = budget;\n    this.setState({configs:configs});\n  }\n  onR_MinChange = (r_min : any) =>{\n    let configs = this.state.configs;\n    configs.r_minimum = r_min;\n    this.setState({configs:configs});\n  }\n  onK_WinChange = (k_win : any) =>{\n    let configs = this.state.configs;\n    configs.k_window = k_win;\n    this.setState({configs:configs});\n  }\n  onGriddingChange = (grid : any) =>{\n    let configs = this.state.configs;\n    configs.gridding = grid;\n    this.setState({configs:configs});\n  }\n  onPriorityChange = (pri : any) =>{\n    let configs = this.state.configs;\n    configs.priority = pri;\n    this.setState({configs:configs});\n  }\n  onBudgetTypeChange = (budget_type : any) =>{\n    let configs = this.state.configs;\n    configs.budget_type = budget_type;\n    this.setState({configs:configs});\n  }\n  onMetricChange = (metric : any) =>{\n    let configs = this.state.configs;\n    configs.metric = metric;\n    this.setState({configs:configs});\n  }\n  onTunerChange = (tuner : any) =>{\n    let configs = this.state.configs;\n    configs.tuner = tuner;\n    this.setState({configs:configs});\n  }\n  onSelectorChange = (selector : any) =>{\n    let configs = this.state.configs;\n    configs.selector = selector;\n    this.setState({configs:configs});\n  }\n\n  onMethodsChange = (methods : string[]) => {\n    //console.log(\"checked\",methods);\n    if(methods.length<1){\n      message.error(\"You must select at least one method\");\n    }else{\n      let {configs} = this.state;\n      configs.methods = methods;\n      this.setState({\n            configs:configs,\n            indeterminate: !!methods.length && (configs.methods.length < Object.keys(methodsDef).length),\n            checkAll: configs.methods.length === Object.keys(methodsDef).length,\n        });\n    }\n  }\n\n  onCheckAllChange(e:any){\n    let {configs} = this.state\n    configs.methods = e.target.checked ? Object.keys(methodsDef) : []\n    this.setState({\n        configs,\n        indeterminate: false,\n        checkAll: e.target.checked,\n      });\n  }\n  render() {\n    const { visible, loading, configs } = this.state;\n    const CheckboxGroup = Checkbox.Group;\n    const Panel = Collapse.Panel;\n\n\n    const Option = Select.Option;\n    const BUDGET_TYPES = ['none', 'classifier', 'walltime'];\n    const TUNERS = ['uniform', 'gp', 'gp_ei', 'gp_eivel'];\n    const SELECTORS = ['uniform', 'ucb1', 'bestk', 'bestkvel', 'purebestkvel', 'recentk',\n                 'recentkvel', 'hieralg'];\n    const METRICS = ['f1', 'roc_auc'];\n\n\n    return (\n      <div>\n        <Button\n            onClick={this.showModal}\n            children={this.props.button}\n            {...(this.props.buttonOptions)}\n        />\n        <Modal\n          visible={visible}\n          title=\"Settings\"\n          onOk={this.handleOk}\n          onCancel={this.handleCancel}\n          footer={[\n            <Button key=\"back\" onClick={this.handleCancel}>Return</Button>,\n            <Button key=\"submit\" type=\"primary\" loading={loading} onClick={this.handleOk}>\n              Submit\n            </Button>,\n          ]}\n        >\n            <h4 style={{display: \"inline\"}}> Methods </h4>\n                <Checkbox\n                    indeterminate={this.state.indeterminate}\n                    onChange={this.onCheckAllChange}\n                    checked={this.state.checkAll}\n                >\n                    Check all\n                </Checkbox>\n          <div>\n\n\n            <CheckboxGroup options={method_options} value={configs.methods} onChange={this.onMethodsChange} />\n          </div>\n          <br /><br />\n\n          <h4>Budget Type</h4>\n          <Select value={configs.budget_type} style={{ width: '100%' }} onChange={this.onBudgetTypeChange} >\n            {BUDGET_TYPES.map((value:string,index:number)=>{\n              return <Option key={index} value={value}>{value}</Option>;\n            })}\n          </Select>\n          <br /> <br />\n\n          <h4>Budget</h4>\n          <InputNumber min={1} value={configs.budget} style={{ width: '100%' }} onChange={this.onBudgetChange} />\n          <br /> <br />\n\n          <Collapse defaultActiveKey={[]}>\n          <Panel header=\"Advanced Settings\" key=\"1\">\n          <h4>Priority</h4>\n          <InputNumber min={1} value={configs.priority} style={{ width: '100%' }} onChange={this.onPriorityChange} />\n          <br /> <br />\n          <h4>Metric</h4>\n          <Select value={configs.metric} style={{ width: '100%' }} onChange={this.onMetricChange}>\n          {METRICS.map((value:string,index:number)=>{\n              return <Option key={index} value={value}>{value}</Option>;\n            })}\n          </Select>\n          <br /><br />\n          <h4>Tuner</h4>\n          <Select value={configs.tuner}  style={{ width: '100%' }} onChange={this.onTunerChange}>\n          {TUNERS.map((value:string,index:number)=>{\n              return <Option key={index} value={value}>{value}</Option>;\n            })}\n          </Select>\n          <br /><br />\n          <h4>Selector</h4>\n          <Select value={configs.selector} style={{ width: '100%' }} onChange={this.onSelectorChange} >\n          {SELECTORS.map((value:string,index:number)=>{\n              return <Option key={index} value={value}>{value}</Option>;\n            })}\n          </Select>\n          <br /><br />\n          <h4>r-minimum</h4>\n          <InputNumber min={0} value={configs.r_minimum} onChange={this.onR_MinChange} style={{ width: '100%' }} />\n          <br /><br />\n          <h4>k-window</h4>\n          <InputNumber min={0} value={configs.k_window} onChange={this.onK_WinChange} style={{ width: '100%' }} />\n          <br /><br />\n          <h4>gridding</h4>\n\n          <InputNumber min={0} value={configs.gridding} onChange={this.onGriddingChange} style={{ width: '100%' }} />\n          <br />    <br />\n          </Panel>\n\n        </Collapse>\n        </Modal>\n      </div>\n    );\n  }\n}\n\n"
  },
  {
    "path": "src/components/SidePanel/SidePanel.tsx",
    "content": "import * as React from 'react';\nimport {Tabs} from 'antd';\nimport DataSelector from './DataSelector';\nimport DataView from './DataView';\nimport LeaderBoard from './LeaderBoard';\nimport { IDatarunStatusTypes } from 'types';\nimport { IClickEvent } from 'service/dataService';\n\nconst TabPane = Tabs.TabPane\n\nexport interface SidePanelProps {\n    datasetID: number | null;\n    datarunID: number | null;\n    datarunStatus: IDatarunStatusTypes;\n    setDatasetID: (id: number) => void;\n    setDatarunID: (id: number) => void;\n    setDatarunStatus: (status: IDatarunStatusTypes) => void;\n    setTopK: (topK:number)=>void;\n    postClickEvent:(e:IClickEvent)=>void;\n}\n\nexport interface SidePanelState {}\n\nexport default class SidePanel extends React.Component<SidePanelProps, SidePanelState> {\n    constructor(props: SidePanelProps) {\n        super(props);\n\n        this.state = {};\n    }\n\n    public render() {\n        return (\n            <div className=\"side-panel\" style={{overflowY:\"hidden\"}}>\n                <DataSelector {...this.props} />\n                <Tabs\n                    defaultActiveKey=\"2\"\n                >\n                    <TabPane tab=\"Data\" key=\"1\">\n                        <DataView datasetID={this.props.datasetID} />\n                    </TabPane>\n                    <TabPane tab=\"Overview\" key=\"2\">\n                        <LeaderBoard\n                            datarunID={this.props.datarunID}\n                            datarunStatus={this.props.datarunStatus}\n                            setDatarunStatus={this.props.setDatarunStatus}\n                            setTopK = {this.props.setTopK}\n                            postClickEvent = {this.props.postClickEvent}\n                        />\n                    </TabPane>\n                </Tabs>\n            </div>\n        );\n    }\n}\n"
  },
  {
    "path": "src/components/SidePanel/index.css",
    "content": ".side-panel h4 {\n    margin-top: 6px;\n    margin-bottom: 2px;\n    border-color: #888;\n}\n\n.side-panel hr {\n    margin-top: 0;\n}"
  },
  {
    "path": "src/components/SidePanel/index.tsx",
    "content": "import './index.css';\nimport SidePanel from './SidePanel';\nexport default SidePanel;"
  },
  {
    "path": "src/components/UploadModal.tsx",
    "content": "import * as React from 'react';\nimport { Modal, Button, Input,Alert  } from 'antd';\nimport {USER_STUDY} from 'Const';\nexport interface UploadModalProps {\n  setUserName : (e:string)=>void\n}\n\nexport interface UploadModalState {\n    loading: boolean,\n    visible: boolean,\n    name:string,\n    alertvisible:boolean\n}\n\nexport default class UploadModal extends React.Component<UploadModalProps, UploadModalState> {\n  constructor(props: UploadModalProps) {\n    super(props);\n     this.state = {\n        loading: false,\n        visible: USER_STUDY,\n        alertvisible:false,\n        name:\"\"\n    }\n  }\n\nshowModal =() => {\n  this.initModal();\n}\n public initModal() {\n  // get configs from server ;\n  // initialize the default value in Modal\n  // Show Modal.\n  this.setState({\n    visible: true\n  });\n }\n\n  handleOk = () => {\n    // Submit\n    if(this.state.name==\"\"){\n      this.setState({alertvisible:true});\n    }else{\n      this.props.setUserName(this.state.name);\n      this.setState({ visible:false, alertvisible:false});\n    }\n\n  }\n  handleCancel = () => {\n    this.handleOk();\n    //this.setState({ visible: false });\n  }\n  onInputChange = (e : any) =>{\n    //console.log(e.target.value);\n    this.setState({name:e.target.value});\n  }\n  render() {\n    const { visible, loading,alertvisible } = this.state;\n    let generateAlert = () =>{\n      if(alertvisible)\n      return <Alert message=\"Please enter your name\" type=\"error\" />\n      else return <div />\n    }\n\n    return (\n      <div>\n        <Modal\n          visible={visible}\n          title=\"Set your name\"\n          onOk={this.handleOk}\n          onCancel={this.handleCancel}\n          footer={[\n            <Button key=\"submit\" type=\"primary\" loading={loading} onClick={this.handleOk}>\n              OK\n            </Button>,\n          ]}\n          \n        >   {generateAlert()}\n            <h4 style={{display: \"inline\"}}> Your name </h4>\n            <Input placeholder=\"Please input your name for user study\" onChange={this.onInputChange}/>\n        </Modal>\n      </div>\n    );\n  }\n}\n\n"
  },
  {
    "path": "src/components/Utils/GenerateSvg.tsx",
    "content": "import * as React from 'react';\nexport interface IProps {\n    id: string\n}\nexport interface IState {\n    id: ''\n};\n\nexport default class GenerateSvg extends React.Component<IProps, IState> {\n    constructor(props: IProps) {\n        super(props);\n    }\n    render() {\n        return (\n            <svg \n                id={this.props.id}\n                style={{ height: '100%', width: '100%' }}\n                xmlns=\"http://www.w3.org/2000/svg\"\n            >\n                {this.props.children}\n            </svg>\n        )\n    }\n}\n"
  },
  {
    "path": "src/helper/index.tsx",
    "content": "import {IClassifier, IDatarun} from 'types';\n\nconst names: string[] = ['svm', 'knn', 'mlp', 'bnb', 'sgd', 'pa','dt','rf','et','mnb','ada','logreg','gp','gnb'] // fix the color of methods\nconst COLORS: string[] = [\n    \"#1A7AB1\",\n    \"#ADC8E6\",\n    \"#FF772D\",\n    \"#FFB87F\",\n    \"#2AA13A\",\n    \"#98E090\",\n    \"#FF9398\",\n    \"#9467B9\",\n    \"#C5B0D3\",\n    \"#C49B95\",\n    \"#E474C0\",\n    \"#F7B4D1\",\n    \"#BCBC3D\",\n    \"#07C1CD\"\n    ]\n\nconst GREEN: string[] = [\n    \"#498B77\",\n    \"#89C2AE\",\n    \"#C1D6D3\"\n]\nconst BLUE: string[] = [\n    \"#3E97C7\",\n    \"#72B3CF\",\n    \"#8FCCDD\",\n    \"#C8DADE\"\n\n]\nconst ORANGE: string[] = [\n    \"#E96206\",\n    \"#F79143\",\n    \"#F6AD76\",\n    \"#F7CEA7\"\n]\nconst PINK: string[] = [\n    \"#F6B1C3\",\n    \"#F07F93\",\n    \"#DE4863\",\n    \"#BC0F46\"\n\n]\nconst RED: string = \"#DC143C\";\nconst YELLOW : string = '#fee08b';\nconst getColor = (name: string, palatte: number = 0): string =>{\n    let colors: string[]\n    switch (palatte) {\n        case 0:\n            colors = COLORS\n            break\n        case 1:\n            colors = GREEN\n            break\n        case 2:\n            colors = BLUE\n            break\n        case 3:\n            colors = ORANGE\n            break\n        case 4:\n            colors = PINK\n            break\n        default:\n            colors = COLORS\n    }\n    let idx: number = names.indexOf(name)\n    let numColor = colors.length\n    if (idx === -1) {\n        names.push(name)\n        return colors[(names.length - 1) % numColor]\n    } else {\n        return colors[idx % numColor]\n    }\n}\n\nexport const filterByMethod=(csv: string|any)=>{\n    let lines = csv.split('\\n')\n    let result:any[] = [lines[0]]\n    //make a unique array of the methods that were used\n    let methodsUsed = csv2json(csv)[1]['data'].filter(\n        (key:string, index:number, self:any) => {\n            return self.indexOf(key) === index;\n        })\n    //create a new array ordered by the methods\n    methodsUsed.forEach((method:string) =>{\n        lines.forEach((row:string) => {\n            let elements = row.split(',')\n            if (elements[1] == method) {\n                result.push(row)\n            }\n        })\n    });\n    return result\n}\nexport const getGradientColor = (startColor : string,endColor :string,step : number) => {\n    let colorRgb = (sColor : string)=>{\n        var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;\n        var sColor = sColor.toLowerCase();\n        if(sColor && reg.test(sColor)){\n            if(sColor.length === 4){\n                var sColorNew = \"#\";\n                for(var i=1; i<4; i+=1){\n                    sColorNew += sColor.slice(i,i+1).concat(sColor.slice(i,i+1));\n                }\n                sColor = sColorNew;\n            }\n            var sColorChange = [];\n            for(var i=1; i<7; i+=2){\n                sColorChange.push(parseInt(\"0x\"+sColor.slice(i,i+2)));\n            }\n            return sColorChange;\n        }else{\n            return sColor;\n        }\n    };\n    startColor = startColor.replace(/\\s+/g,\"\");\n    endColor = endColor.replace(/\\s+/g,\"\");\n    let startRGB : any = colorRgb(startColor);//转换为rgb数组模式\n    //console.log(startRGB);\n    let startR = startRGB[0];\n    let startG = startRGB[1];\n    let startB = startRGB[2];\n\n    let endRGB : any = colorRgb(endColor);\n    //console.log(endRGB);\n\n    let endR = endRGB[0];\n    let endG = endRGB[1];\n    let endB = endRGB[2];\n\n    let sR = (endR-startR)/step;//总差值\n    let sG = (endG-startG)/step;\n    let sB = (endB-startB)/step;\n\n    var colorArr = [];\n    for(var i=0;i<step;i++){\n        var R = parseInt((sR*i+startR));\n        var G = parseInt((sG*i+startG));\n        var B = parseInt((sB*i+startB));\n        var strHex = \"#\";\n        var aColor = new Array();\n        aColor[0] = R;\n        aColor[1] = G;\n        aColor[2] = B;\n        for(let j=0; j<3; j++){\n            let hex : string = Number(aColor[j]).toString(16);\n            let shex : string = Number(aColor[j])<10 ? '0'+hex :hex;\n            if(shex === \"0\"){\n                shex += shex;\n            }\n            strHex += shex;\n        }\n      colorArr.push(strHex);\n    }\n    return colorArr;\n}\n\n\n\n\nexport const filterByDescending=(csv: string|any)=>{\n    let lines = csv.split('\\n')\n    let result:any = [lines[0]]\n    let performances:any = []\n    //create an array of only the performances\n    let rawPerformances = csv2json(csv)[5]['data']\n    rawPerformances.forEach((value:any) => {\n        performances.push(value)\n    })\n    performances.sort().reverse() //sort in descending order\n\n    //create a new array according to the new descending order\n    performances.forEach((rankedPerf:any) => {\n        lines.forEach((row:any) => {\n            if (rankedPerf == row.split(',')[5] && rankedPerf != '0.000 +- 0.000') {\n                result.push(row)\n            }\n        })\n    })\n    return result\n}\n\nconst csv2json=(csv: string|any)=>{\n    let lines = csv.split('\\n')\n    let keys = lines[0].split(',').map(\n            (key:string)=>{\n                let data:any[] = []\n                return {name: key, data}\n            })\n\n    lines.shift() //remove headers\n    lines.splice(-1, 1) // remove lats empty line\n    lines.forEach((row:string) => {\n        const cells = row.split(',')\n        cells.forEach((cell, idx)=>{\n            keys[idx].data.push(cell)\n        })\n    });\n\n    return keys\n}\n\nconst EChartsColor = [\n    \"#c23531\",\n    \"#2f4554\",\n    \"#61a0a8\",\n    \"#d48265\",\n    \"#91c7ae\",\n    \"#749f83\"\n]\n\nconst parseDatarun=(csv: string|any)=>{\n    let lines = csv.split('\\n')\n\n    let keys = lines[0].split(',')\n    let datarun:IDatarun = {}\n\n    lines.shift() //remove headers\n    lines.splice(-1, 1) // remove lats empty line\n    let trailID = 0;\n    lines.forEach((row:string, idx:number) => {\n        const cells = row.split(',')\n        let record:IClassifier = {'trail ID':idx, method:''}\n\n        cells.forEach((cell, idx)=>{\n            record[keys[idx]] = cell\n        })\n        record['trail ID'] = trailID;\n        trailID++;\n        let methodIndex = keys.indexOf('method')\n        let methodName = cells[methodIndex]\n        if(datarun[methodName]){\n            datarun[methodName].push(record)\n        }else{\n            datarun[methodName] = [record]\n        }\n\n    });\n\n    //classify datarun based on methods type\n\n    return datarun\n}\n\nfunction asc(arr:number[]) {\n    arr.sort(function (a, b) {\n        return a - b;\n    });\n    return arr;\n}\n\nvar quantile = function(ascArr:number[], p:number) {\n    var H = (ascArr.length - 1) * p + 1,\n        h = Math.floor(H),\n        v = +ascArr[h - 1],\n        e = H - h;\n    return e ? v + e * (ascArr[h] - v) : v;\n};\n\n\nvar prepareBoxplotData = function (rawData:any[], opt:any) {\n    opt = opt || [];\n    var boxData = [];\n    var outliers = [];\n    var axisData = [];\n    var boundIQR = opt.boundIQR;\n    var useExtreme = boundIQR === 'none' || boundIQR === 0;\n\n    for (var i = 0; i < rawData.length; i++) {\n        axisData.push(i + '');\n        var ascList = asc(rawData[i].slice());\n\n        var Q1 = quantile(ascList, 0.25);\n        var Q2 = quantile(ascList, 0.5);\n        var Q3 = quantile(ascList, 0.75);\n        var min = ascList[0];\n        var max = ascList[ascList.length - 1];\n\n        var bound = (boundIQR == null ? 1.5 : boundIQR) * (Q3 - Q1);\n\n        var low = useExtreme\n            ? min\n            : Math.max(min, Q1 - bound);\n        var high = useExtreme\n            ? max\n            : Math.min(max, Q3 + bound);\n\n        boxData.push([low, Q1, Q2, Q3, high]);\n\n        for (var j = 0; j < ascList.length; j++) {\n            var dataItem = ascList[j];\n            if (dataItem < low || dataItem > high) {\n                var outlier = [i, dataItem];\n                opt.layout === 'vertical' && outlier.reverse();\n                outliers.push(outlier);\n            }\n        }\n    }\n    return {\n        boxData: boxData,\n        outliers: outliers,\n        axisData: axisData\n    };\n};\n\nexport { RED,YELLOW, getColor, EChartsColor, csv2json, parseDatarun, prepareBoxplotData }\n"
  },
  {
    "path": "src/images.d.ts",
    "content": "declare module '*.svg'\ndeclare module '*.png'\ndeclare module '*.jpg'\ndeclare module '*.json'\n"
  },
  {
    "path": "src/index.css",
    "content": "body {\n  margin: 0;\n  padding: 0;\n  font-family: sans-serif;\n}\n\n"
  },
  {
    "path": "src/index.tsx",
    "content": "import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport App from 'components/App';\nimport './index.css';\nimport registerServiceWorker from 'registerServiceWorker';\n\nReactDOM.render(\n  <App />,\n  document.getElementById('root') as HTMLElement\n);\nregisterServiceWorker();\n"
  },
  {
    "path": "src/registerServiceWorker.ts",
    "content": "// tslint:disable:no-console\n// In production, we register a service worker to serve assets from local cache.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on the 'N+1' visit to a page, since previously\n// cached resources are updated in the background.\n\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\n// This link also includes instructions on opting out of this behavior.\n\nconst isLocalhost = Boolean(\n  window.location.hostname === 'localhost' ||\n    // [::1] is the IPv6 localhost address.\n    window.location.hostname === '[::1]' ||\n    // 127.0.0.1/8 is considered localhost for IPv4.\n    window.location.hostname.match(\n      /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n    )\n);\n\nexport default function register() {\n  if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n    // The URL constructor is available in all browsers that support SW.\n    const publicUrl = new URL(\n      process.env.PUBLIC_URL!,\n      window.location.toString()\n    );\n    if (publicUrl.origin !== window.location.origin) {\n      // Our service worker won't work if PUBLIC_URL is on a different origin\n      // from what our page is served on. This might happen if a CDN is used to\n      // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\n      return;\n    }\n\n    window.addEventListener('load', () => {\n      const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n      if (isLocalhost) {\n        // This is running on localhost. Lets check if a service worker still exists or not.\n        checkValidServiceWorker(swUrl);\n\n        // Add some additional logging to localhost, pointing developers to the\n        // service worker/PWA documentation.\n        navigator.serviceWorker.ready.then(() => {\n          console.log(\n            'This web app is being served cache-first by a service ' +\n              'worker. To learn more, visit https://goo.gl/SC7cgQ'\n          );\n        });\n      } else {\n        // Is not local host. Just register service worker\n        registerValidSW(swUrl);\n      }\n    });\n  }\n}\n\nfunction registerValidSW(swUrl: string) {\n  navigator.serviceWorker\n    .register(swUrl)\n    .then(registration => {\n      registration.onupdatefound = () => {\n        const installingWorker = registration.installing;\n        if (installingWorker) {\n          installingWorker.onstatechange = () => {\n            if (installingWorker.state === 'installed') {\n              if (navigator.serviceWorker.controller) {\n                // At this point, the old content will have been purged and\n                // the fresh content will have been added to the cache.\n                // It's the perfect time to display a 'New content is\n                // available; please refresh.' message in your web app.\n                console.log('New content is available; please refresh.');\n              } else {\n                // At this point, everything has been precached.\n                // It's the perfect time to display a\n                // 'Content is cached for offline use.' message.\n                console.log('Content is cached for offline use.');\n              }\n            }\n          };\n        }\n      };\n    })\n    .catch(error => {\n      console.error('Error during service worker registration:', error);\n    });\n}\n\nfunction checkValidServiceWorker(swUrl: string) {\n  // Check if the service worker can be found. If it can't reload the page.\n  fetch(swUrl)\n    .then(response => {\n      // Ensure service worker exists, and that we really are getting a JS file.\n      if (\n        response.status === 404 ||\n        response.headers.get('content-type')!.indexOf('javascript') === -1\n      ) {\n        // No service worker found. Probably a different app. Reload the page.\n        navigator.serviceWorker.ready.then(registration => {\n          registration.unregister().then(() => {\n            window.location.reload();\n          });\n        });\n      } else {\n        // Service worker found. Proceed as normal.\n        registerValidSW(swUrl);\n      }\n    })\n    .catch(() => {\n      console.log(\n        'No internet connection found. App is running in offline mode.'\n      );\n    });\n}\n\nexport function unregister() {\n  if ('serviceWorker' in navigator) {\n    navigator.serviceWorker.ready.then(registration => {\n      registration.unregister();\n    });\n  }\n}\n"
  },
  {
    "path": "src/service/dataService.ts",
    "content": "import axios from 'axios';\nimport { URL } from 'Const';\nimport { IDatarunStatusTypes, IClassifierStatusTypes } from 'types';\nimport { IHyperParameter, IMethodType } from '../types/index';\n\n// const API = `${URL}/api`;\n\nconst axiosInstance = axios.create({\n    baseURL: `${URL}/api/`,\n    // timeout: 1000,\n    headers: {\n        'Access-Control-Allow-Origin': '*'\n    }\n});\n\nexport interface IDatarunStatus {\n    status: IDatarunStatusTypes;\n}\n\nexport interface IDatasetInfo {\n    id: number;\n    d_features: number;\n    k_classes: number;\n    n_examples: number;\n    name: string;\n}\n\nexport interface IDatarunInfo extends IDatarunStatus {\n    id: number;\n    dataset_id: number;\n    metric: string;\n    selector: string;\n    tuner: string;\n}\n\nexport interface IHyperpartitionInfo {\n    id: number;\n    datarun_id: number;\n    method: string;\n    hyperpartition_string: string;\n    status: 'incomplete' | 'gridding_done' | 'errored';\n    categoricals: {[param: string]: string | boolean};\n    constants: {[param: string]: string | boolean};\n    tunables: {[param: string]: {type: string, range: number[]}}\n}\n\nexport interface IHyperPartitionScores {\n    [id: string]: number;\n}\n\nexport interface IFileUploadResponse {\n    success: boolean;\n    filename: string;\n    id: number;\n}\n\nexport interface IClassifierInfo {\n    id: number;\n    datarun_id: number;\n    hyperpartition_id: number;\n    cv_metric: number;\n    cv_metric_std: number;\n    test_metric_std: number;\n    method: string;\n    hyperparameters: {[param: string]: boolean | number | string}\n}\n\nexport interface IConfigsInfo {\n    methods : string[];\n    budget: number;\n    r_minimum : number;\n    k_window : number;\n    gridding : number;\n    metric :string;\n    selector : string;\n    budget_type: string;\n    tuner: string;\n    priority :number;\n}\n\nexport interface ICommonResponse {\n    success: boolean;\n}\n\nexport interface IConfigsUploadResponse extends ICommonResponse {}\n\nexport interface INewDatarunResponse {\n    success: boolean;\n    id: number;\n}\n\nexport interface IMethodHyperParameters {\n    [name: string]: IHyperParameter;\n}\n\nexport async function getDatasets(): Promise<IDatasetInfo[]> {\n    const url = `/datasets`;\n    const res = await axiosInstance.get(url);\n    if (res.status === 200) {\n        return res.data;\n    }\n    throw res;\n}\n\nexport async function getDataset(id: number): Promise<IDatasetInfo> {\n    const url = `/datasets/${id}`;\n    const res = await axiosInstance.get(url);\n    if (res.status === 200) {\n        return res.data;\n    }\n    throw res;\n}\n\nexport async function getDataruns(params?: { dataset_id: number }): Promise<IDatarunInfo[]> {\n    const url = `/dataruns`;\n    const res = await axiosInstance.get(url, { params });\n    if (res.status === 200) {\n        return res.data;\n    }\n    throw res;\n}\n\nexport async function getDatarun(id: number): Promise<IDatarunInfo> {\n    const url = `/dataruns/${id}`;\n    const res = await axiosInstance.get(url);\n    if (res.status === 200) {\n        return res.data;\n    }\n    throw res;\n}\n\nexport async function getClassifiers(\n    datarun_id: number,\n    status: IClassifierStatusTypes = IClassifierStatusTypes.COMPLETE\n): Promise<IClassifierInfo[]> {\n    const url = `/classifiers`;\n    const params = { datarun_id, status };\n    const res = await axiosInstance.get(url, { params });\n    if (res.status === 200) {\n        return res.data;\n    }\n    throw res;\n}\n\nexport async function getHyperpartitions(hp_id?: number, datarun_id?:number): Promise<IHyperpartitionInfo[]> {\n    const url = hp_id ?\n        `/hyperpartitions/${hp_id}`\n        :\n        (\n        datarun_id?\n            `/hyperpartitions?&datarun_id=${datarun_id}`\n            :\n            `/hyperpartitions/`\n        );\n    const res = await axiosInstance.get(url);\n    if (res.status === 200) {\n        return res.data;\n    }\n    throw res;\n}\n\nexport async function getDatasetCSV(id: number): Promise<string> {\n    const url = `/dataset_file/${id}`;\n    const res = await axiosInstance.get(url);\n    if (res.status === 200) {\n        return res.data;\n    }\n    throw res;\n}\n\nexport async function getDatarunStepsScores(\n    id: number,\n    classifier_start: number | null = null,\n    classifier_end: number | null = null\n): Promise<IHyperPartitionScores[]> {\n    const url = `/datarun_steps_scores/${id}`;\n    const params = { classifier_start, classifier_end, nice: true };\n    const res = await axiosInstance.get(url, { params });\n    if (res.status === 200) {\n        return res.data;\n    }\n    throw res;\n}\n\nexport async function getDatarunSummary(\n    id: number,\n    classifier_start: number | null = null,\n    classifier_end: number | null = null\n): Promise<IHyperPartitionScores[]> {\n    const url = `/datarun_summary/${id}`;\n    const params = { classifier_start, classifier_end };\n    const res = await axiosInstance.get(url, { params });\n    if (res.status === 200) {\n        return res.data;\n    }\n    throw res;\n}\n\nexport async function postEnterData(file: any): Promise<IFileUploadResponse> {\n    const formData = new FormData();\n    formData.append('file', file);\n    const res = await axiosInstance.post(`/enter_data`, formData);\n    if (res.status === 200) {\n        return res.data;\n    }\n    throw res;\n}\n\nexport async function postNewDataset(file: any): Promise<IFileUploadResponse> {\n    const formData = new FormData();\n    formData.append('file', file);\n    const res = await axiosInstance.post(`/new_dataset`, formData);\n    if (res.status === 200) {\n        return res.data;\n    }\n    throw res;\n}\n\nexport async function postNewDatarun(datasetId: number, configs: any): Promise<INewDatarunResponse> {\n    const formData = new FormData();\n    formData.append('configs', JSON.stringify(configs));\n    const res = await axiosInstance.post(`/new_datarun/${datasetId}`, formData);\n    if (res.status === 200) {\n        return res.data;\n    }\n    throw res;\n}\n\nexport async function getClassifierSummary(datarun_id: number): Promise<string> {\n    const url = `/classifier_summary`;\n    const params = { datarun_id };\n    const res = await axiosInstance.get(url, { params });\n    if (res.status === 200) {\n        return res.data;\n    }\n    throw res;\n}\n\nexport async function startDatarun(datarun_id: number): Promise<IDatarunStatus> {\n    const url = `/start_worker/${datarun_id}`;\n    const res = await axiosInstance.get(url);\n    if (res.status === 200) {\n        return res.data;\n    }\n    throw res;\n}\n\nexport async function stopDatarun(datarun_id: number): Promise<IDatarunStatus> {\n    const url = `/stop_worker/${datarun_id}`;\n    const res = await axiosInstance.get(url);\n    if (res.status === 200) {\n        return res.data;\n    }\n    throw res;\n}\n\nexport async function getConfigs(): Promise<IConfigsInfo> {\n    const url = `/configs`;\n    const res = await axiosInstance.get(url);\n    if (res.status === 200) {\n        return res.data;\n    }\n    throw res;\n}\n\n\n\nexport async function postConfigs(configs : any): Promise<IConfigsUploadResponse> {\n    const formData = new FormData();\n    formData.append('configs', JSON.stringify(configs));\n\n    const res = await axiosInstance.post(`/configs`, formData);\n    if (res.status === 200) {\n        return res.data;\n    }\n    throw res;\n}\n\n/**\n * update the hyperparameters ranges for a method of a datarun\n *\n * @export\n * @param {number} datarun_id\n * @param {string} method\n * @param {IMethodHyperParameters} config\n * @returns {Promise<ICommonResponse>}\n */\nexport async function postMethodHyperparameters(\n    datarun_id: number, method: IMethodType, config: IMethodHyperParameters\n): Promise<ICommonResponse> {\n    const params = { method };\n    const headers = {'Content-Type': 'application/json'};\n    const res = await axiosInstance.post(`/hyperparameters/${datarun_id}`, config, {params, headers});\n    if (res.status === 200) {\n        return res.data;\n    }\n    throw res;\n}\n\nexport async function postHyperparameters(\n    datarun_id: number, config: {[method: string]: IMethodHyperParameters}\n): Promise<ICommonResponse> {\n    const headers = {'Content-Type': 'application/json'};\n    const res = await axiosInstance.post(`/hyperparameters/${datarun_id}`, config, {headers});\n    if (res.status === 200) {\n        return res.data;\n    }\n    throw res;\n}\n\nexport async function getMethodHyperparameter(\n    datarun_id: number, method: IMethodType\n): Promise<{hyperparameters: IMethodHyperParameters}> {\n    const params = { method };\n    const res = await axiosInstance.get(`/hyperparameters/${datarun_id}`, {params});\n    if (res.status === 200) {\n        return res.data;\n    }\n    throw res;\n}\n\nexport async function getHyperparameters(\n    datarun_id: number\n): Promise<{[method: string]: {hyperparameters: IMethodHyperParameters}}> {\n    const res = await axiosInstance.get(`/hyperparameters/${datarun_id}`);\n    if (res.status === 200) {\n        return res.data;\n    }\n    throw res;\n}\n\n\nexport async function disableHyperpartitions(hyperpartitionIds: number[] | number): Promise<ICommonResponse> {\n    const headers = {'Content-Type': 'application/json'};\n    const data = Array.isArray(hyperpartitionIds) ? hyperpartitionIds : [hyperpartitionIds];\n    const res = await axiosInstance.post(`/disable_hyperpartition`, data, {headers});\n    if (res.status === 200) {\n        return res.data;\n    }\n    throw res;\n}\n\nexport async function enableHyperpartitions(hyperpartitionIds: number[] | number): Promise<ICommonResponse> {\n    const headers = {'Content-Type': 'application/json'};\n    const data = Array.isArray(hyperpartitionIds) ? hyperpartitionIds : [hyperpartitionIds];\n    const res = await axiosInstance.post(`/enable_hyperpartition`, data, {headers});\n    if (res.status === 200) {\n        return res.data;\n    }\n    throw res;\n}\n\n\nexport interface IUpdateDatarunConfig {\n    // The run config ('run.yaml'), all fields inside configs are optional\n    // If some method is removed from the configs.methods,\n    // their corresponding hyperpartition will also be disabled\n    // However, don't add new method in the config if they are not present in the initial config (when datarun is created).\n    // New method will not be added\n    configs?: Partial<IConfigsInfo>;\n    // The ids of active hyperpartitions.\n    // If not provided, then this field is ignored, we will only consider the methods field in configs.\n    // If provided, then the method field in configs would be neglected (has no effect)\n    hyperpartitions?: number[];\n    // The configs of methods\n    // Be careful with the format of IMethodHyperParameters\n    method_configs?: {[method: string]: IMethodHyperParameters}\n}\n\n/**\n * Update the configurations of a datarun\n */\nexport async function updateDatarunConfigs(datarun_id: number, config: IUpdateDatarunConfig): Promise<ICommonResponse> {\n    const headers = {'Content-Type': 'application/json'};\n    const res = await axiosInstance.post(`/update_datarun_config/${datarun_id}`, config, {headers});\n    if (res.status === 200) {\n        return res.data;\n    }\n    throw res;\n}\nexport async function getDatarunConfigs(datarun_id : number): Promise<IConfigsInfo> {\n    const url = `/configs`;\n    const params = { datarun_id };\n    const res = await axiosInstance.get(url, { params });\n    if (res.status === 200) {\n        return res.data;\n    }\n    throw res;\n}\n/*\nPost Click Event\ntype: method, compare, classifier\ndescription: {\n    action: \"selected\"\n    \"unselected\"\n    id: classifier id\n    name: [method name]\n}\ntime: time\n*/\nexport interface IClickEvent {\n    type:string,\n    description:any,\n    time:string\n}\nexport interface IClickBundleEvent{\n    name:string,\n    clickevent:IClickEvent,\n    datasetID:number,\n    datarunID:number\n}\nexport async function postBundleClickEvent(log:IClickBundleEvent):Promise<ICommonResponse>{\n    const headers = {'Content-Type': 'application/json'};\n    const res = await axiosInstance.post(`/postClickEvent`, log, {headers});\n    if (res.status === 200) {\n        return res.data;\n    }\n    throw res;\n}\n\nexport interface IRecommendationResult {\n    result : string[];\n}\nexport async function getRecommendation(dataset_id : number): Promise<IRecommendationResult> {\n    const url = `/getRecommendation/${dataset_id}`;\n    const res = await axiosInstance.get(url);\n    if (res.status === 200) {\n        return res.data;\n    }\n    throw res;\n}"
  },
  {
    "path": "src/types/index.ts",
    "content": "export interface IMethod{\n    name: string,\n    fullname:string,\n    hyperparameters: any,\n    root_hyperparameters: string[],\n    conditional_hyperparameters: any\n}\n\nexport interface IDatarun{\n    [method:string]: IClassifier[]\n}\n\nexport interface IClassifier{\n    \"trail ID\":number,\n    method:string,\n    [key:string]:number|string|any,\n\n}\n\nexport enum IDatarunStatusTypes {\n    COMPLETE = 'complete',\n    RUNNING = 'running',\n    PENDING = 'pending'\n}\n\nexport enum IClassifierStatusTypes {\n    RUNNING = 'running',\n    ERRORED = 'errored',\n    COMPLETE = 'complete',\n}\n\nexport interface IHyperParameterNumeric {\n    type: 'int' | 'int_exp' | 'float' | 'float_exp';\n    range: [number, number]\n}\n\nexport interface IHyperParameterCategorical {\n    type: 'int_cat' | 'float_cat' | 'string' | 'bool';\n    values: (number | string | boolean | null)[];\n}\n\nexport interface IHyperParameterList {\n    type: 'list';\n    list_length: number[];\n    element: IHyperParameter;\n}\n\nexport type IHyperParameter = IHyperParameterNumeric | IHyperParameterCategorical | IHyperParameterList;\n\nexport type IMethodType = 'logreg' | 'svm' | 'sgd' | 'dt' | 'et' | 'rf' | 'gnb' | 'mnb' | 'bnb' | 'gp' | 'pa' | 'knn' | 'mlp' | 'ada';"
  },
  {
    "path": "start.sh",
    "content": "#!/bin/sh\n. /vagrant/venv/bin/activate\nexport PYTHONPATH=$PYTHONPATH:`pwd`/server/\nnpm start > node.log &\npython server/atm_server/server.py --debug\n"
  },
  {
    "path": "startserver.sh",
    "content": "#!/bin/sh\nexport PYTHONPATH=$PYTHONPATH:`pwd`/server/\npython server/atm_server/server.py --debug\n"
  },
  {
    "path": "tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"baseUrl\": \"./src\",\n    \"outDir\": \"build/dist\",\n    \"module\": \"esnext\",\n    \"target\": \"es5\",\n    \"lib\": [\"es2017\", \"dom\"],\n    \"sourceMap\": true,\n    \"allowJs\": true,\n    \"jsx\": \"react\",\n    \"moduleResolution\": \"node\",\n    \"rootDir\": \"src\",\n    \"forceConsistentCasingInFileNames\": true,\n    \"noImplicitReturns\": true,\n    \"noImplicitThis\": true,\n    \"noImplicitAny\": true,\n    \"strictNullChecks\": true,\n    \"suppressImplicitAnyIndexErrors\": true,\n    \"noUnusedLocals\": true,\n    \"keyofStringsOnly\": true\n  },\n  \"exclude\": [\n    \"node_modules\",\n    \"build\",\n    \"scripts\",\n    \"acceptance-tests\",\n    \"webpack\",\n    \"jest\",\n    \"src/setupTests.ts\"\n  ]\n}\n"
  },
  {
    "path": "tsconfig.prod.json",
    "content": "{\n  \"extends\": \"./tsconfig.json\"\n}"
  },
  {
    "path": "tsconfig.test.json",
    "content": "{\n  \"extends\": \"./tsconfig.json\",\n  \"compilerOptions\": {\n    \"module\": \"commonjs\"\n  }\n}"
  },
  {
    "path": "tslint.json",
    "content": "{\n  \"extends\": [\"tslint-react\", \"tslint-config-prettier\"],\n  \"linterOptions\": {\n    \"exclude\": [\n      \"config/**/*.js\",\n      \"node_modules/**/*.ts\"\n    ]\n  },\n  \"jsRelus\":{\n    \"object-literal-sort-keys\": false,\n    \"no-unused-variable\": false,\n    \"ordered-imports\": false\n  },\n  \"relus\":{\n    \"no-unused-variable\": false,\n    \"ordered-imports\": false,\n    \"no-console\": [true, \"log\", \"error\"]\n  }\n}\n"
  },
  {
    "path": "vagrantProvision.sh",
    "content": "sudo apt-get update -y && \\\n   apt-get install -y python3 python3-pip && \\\n   pip3 install --upgrade pip\n\nsudo apt-get install -y libmysqlclient-dev sqlite3\nsudo pip3 install virtualenv\n\ncd /vagrant && virtualenv venv --always-copy\nsource venv/bin/activate\n\npip3 install -r lib/atm/requirements.txt\npip3 install lib/atm/\npip3 install -r /vagrant/server/requirements.txt\n\npip3 uninstall -y scikit_learn\npip3 install scikit_learn==0.19.2\n\n(cd /vagrant/lib/atm/ && python setup.py install)\n\ncurl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -\nsudo apt-get install -y nodejs\nnpm install\n"
  },
  {
    "path": "vagrantStart.sh",
    "content": "cd /vagrant\n. /vagrant/venv/bin/activate\nexport PYTHONPATH=$PYTHONPATH:`pwd`/server/\nnpm start > node.log &\npython server/atm_server/server.py --debug\n"
  }
]