diff --git a/corpus_build.py b/corpus_build.py
new file mode 100644
index 0000000..2b7fce0
--- /dev/null
+++ b/corpus_build.py
@@ -0,0 +1,122 @@
+import glob
+import os
+import pandas as pd
+import re
+
+
+file_types = {'.clj': 'clojure',
+ '.cljs': 'clojure',
+ '.clojure': 'clojure',
+ '.edn': 'clojure',
+ '.hs': 'haskell',
+ '.lhs': 'haskell',
+ '.ghc': 'haskell',
+ '.java': 'java',
+ '.class': 'java',
+ '.js': 'javascript',
+ '.javascript': 'javascript',
+ '.ml': 'ocaml',
+ '.mli': 'ocaml',
+ '.ocaml': 'ocaml',
+ '.perl': 'perl',
+ '.php': 'php',
+ '.phtml': 'php',
+ '.php3': 'php',
+ '.php4': 'php',
+ '.php5': 'php',
+ '.phps': 'php',
+ '.python3': 'python',
+ '.python2': 'python',
+ '.py': 'python',
+ '.jruby': 'ruby',
+ '.scala': 'scala',
+ '.racket': 'scheme',
+ '.scm': 'scheme',
+ '.ss': 'scheme',
+ '.clojure': 'clojure'}
+
+hit_num = {"clojure": "1",
+ "haskell": "2",
+ "java": "3",
+ "javascript": "4",
+ "ocaml": "5",
+ "perl": "6",
+ "php": "7",
+ "python": "8",
+ "ruby": "9",
+ "scala": "10",
+ "scheme": "11"}
+
+raw_file_list = [filename for filename in
+ glob.iglob(os.path.join('corpus/bench', '*', '*'))
+ if os.path.splitext(filename)[1] in file_types.keys()]
+
+feature_list = [('parent_count', "[()]"),
+ ('double_colon', "::"),
+ ('let_exists', r"\blet\b"),
+ ('less_minus', "((\<\-))"),
+ ('paren_star', "(\(\*|\*\))"),
+ ('def_exists', r"\bdef\b"),
+ ('end_exists', r"\bend\b"),
+ ('curly_bracket', "[\{\}]"),
+ ('slash_star_star', "\/\*\*"),
+ ('forward_slash', "//"),
+ ('var_exists', r"\bvar\b"),
+ ('star_count', r"\b\*\b"),
+ ('dollar_sign', r"\$"),
+ ('val_exists', r"\bval\b"),
+ ('else_if', r"(else if)"),
+ ('elif', r"(elif)"),
+ ('print_space', r"(print )"),
+ ('pyth_print', r"(print\()"),
+ ('void', r"(void)")]
+
+
+class Corpus():
+
+ def __init__(self, file_list=[]):
+ self.file_list = file_list
+
+ def read_process_file(self, file_name):
+ with open(file_name) as f:
+ return f.read()
+
+ def build_dataframe(self, snippet=True):
+ raw_text = [self.read_process_file(file) for file in self.file_list]
+
+ if snippet:
+ a_dataframe = pd.DataFrame(raw_text, columns=['raw_text'])
+ else:
+ a_dataframe = pd.DataFrame([file_types[os.path.splitext(file)[1]]
+ for file in self.file_list],
+ columns=['file_type'])
+
+ a_dataframe['hit_num'] = a_dataframe['file_type'].map(hit_num)
+ a_dataframe['raw_text'] = raw_text
+
+ return a_dataframe
+
+ def feat_lookup(self, regex, a_dataframe):
+ return [(len(re.findall(regex, a_row))/len(a_row))
+ for a_row in a_dataframe['raw_text']]
+
+ def feature_breakout(self, a_df):
+
+ for name, regex in feature_list:
+ a_df[name] = self.feat_lookup(regex, a_df)
+
+ return a_df
+
+ def compl_df_build(self, snippet=True):
+ a_df = self.build_dataframe(snippet)
+ a_df = self.feature_breakout(a_df)
+ cleaned_df = self.clean_df(a_df, snippet)
+ return cleaned_df
+
+ def clean_df(self, a_df, snippet):
+ cleaned_df = a_df.drop(['raw_text'], axis=1)
+
+ if not snippet:
+ cleaned_df = cleaned_df.drop(['file_type'], axis=1)
+
+ return cleaned_df
diff --git a/lang classifier live.ipynb b/lang classifier live.ipynb
new file mode 100644
index 0000000..fc999af
--- /dev/null
+++ b/lang classifier live.ipynb
@@ -0,0 +1,2418 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:67cb485a11f3574e7154427b6ce8b9cb5f0788005d345301cc83874050c10871"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Brings in corpus and test data"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from corpus_build import Corpus, hit_num, raw_file_list\n",
+ "import pandas as pd\n",
+ "import glob\n",
+ "import os\n",
+ "\n",
+ "corpus = Corpus(raw_file_list)\n",
+ "corpus_df = corpus.compl_df_build(False)\n",
+ "corpus_df.head()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "html": [
+ "
\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " hit_num | \n",
+ " parent_count | \n",
+ " double_colon | \n",
+ " let_exists | \n",
+ " less_minus | \n",
+ " paren_star | \n",
+ " def_exists | \n",
+ " end_exists | \n",
+ " curly_bracket | \n",
+ " slash_star_star | \n",
+ " forward_slash | \n",
+ " var_exists | \n",
+ " star_count | \n",
+ " dollar_sign | \n",
+ " val_exists | \n",
+ " else_if | \n",
+ " elif | \n",
+ " print_space | \n",
+ " pyth_print | \n",
+ " void | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 1 | \n",
+ " 0.071901 | \n",
+ " 0.000000 | \n",
+ " 0.002066 | \n",
+ " 0.000000 | \n",
+ " 0.001240 | \n",
+ " 0.000413 | \n",
+ " 0 | \n",
+ " 0.000000 | \n",
+ " 0 | \n",
+ " 0.000413 | \n",
+ " 0 | \n",
+ " 0.000000 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 1 | \n",
+ " 0.071704 | \n",
+ " 0.000000 | \n",
+ " 0.002699 | \n",
+ " 0.000000 | \n",
+ " 0.000771 | \n",
+ " 0.000386 | \n",
+ " 0 | \n",
+ " 0.000000 | \n",
+ " 0 | \n",
+ " 0.000386 | \n",
+ " 0 | \n",
+ " 0.000000 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 1 | \n",
+ " 0.063995 | \n",
+ " 0.000000 | \n",
+ " 0.002695 | \n",
+ " 0.000000 | \n",
+ " 0.000337 | \n",
+ " 0.000337 | \n",
+ " 0 | \n",
+ " 0.000000 | \n",
+ " 0 | \n",
+ " 0.000337 | \n",
+ " 0 | \n",
+ " 0.000000 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0.000337 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 2 | \n",
+ " 0.024707 | \n",
+ " 0.002471 | \n",
+ " 0.002471 | \n",
+ " 0.000618 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0 | \n",
+ " 0.000000 | \n",
+ " 0 | \n",
+ " 0.000618 | \n",
+ " 0 | \n",
+ " 0.001235 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 2 | \n",
+ " 0.024352 | \n",
+ " 0.002118 | \n",
+ " 0.002647 | \n",
+ " 0.000529 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0 | \n",
+ " 0.001059 | \n",
+ " 0 | \n",
+ " 0.000529 | \n",
+ " 0 | \n",
+ " 0.001059 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "metadata": {},
+ "output_type": "pyout",
+ "prompt_number": 11,
+ "text": [
+ " hit_num parent_count double_colon let_exists less_minus paren_star \\\n",
+ "0 1 0.071901 0.000000 0.002066 0.000000 0.001240 \n",
+ "1 1 0.071704 0.000000 0.002699 0.000000 0.000771 \n",
+ "2 1 0.063995 0.000000 0.002695 0.000000 0.000337 \n",
+ "3 2 0.024707 0.002471 0.002471 0.000618 0.000000 \n",
+ "4 2 0.024352 0.002118 0.002647 0.000529 0.000000 \n",
+ "\n",
+ " def_exists end_exists curly_bracket slash_star_star forward_slash \\\n",
+ "0 0.000413 0 0.000000 0 0.000413 \n",
+ "1 0.000386 0 0.000000 0 0.000386 \n",
+ "2 0.000337 0 0.000000 0 0.000337 \n",
+ "3 0.000000 0 0.000000 0 0.000618 \n",
+ "4 0.000000 0 0.001059 0 0.000529 \n",
+ "\n",
+ " var_exists star_count dollar_sign val_exists else_if elif \\\n",
+ "0 0 0.000000 0 0 0 0 \n",
+ "1 0 0.000000 0 0 0 0 \n",
+ "2 0 0.000000 0 0 0 0 \n",
+ "3 0 0.001235 0 0 0 0 \n",
+ "4 0 0.001059 0 0 0 0 \n",
+ "\n",
+ " print_space pyth_print void \n",
+ "0 0 0 0.000000 \n",
+ "1 0 0 0.000000 \n",
+ "2 0 0 0.000337 \n",
+ "3 0 0 0.000000 \n",
+ "4 0 0 0.000000 "
+ ]
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "test_info = Corpus([filename for filename in glob.iglob(os.path.join('test/', '*'))])\n",
+ "test_info_df = test_info.compl_df_build(True)\n",
+ "test_info_df['answers'] = pd.read_csv('test_fixed.csv', dtype='object')\n",
+ "test_info_df.head()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "html": [
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " parent_count | \n",
+ " double_colon | \n",
+ " let_exists | \n",
+ " less_minus | \n",
+ " paren_star | \n",
+ " def_exists | \n",
+ " end_exists | \n",
+ " curly_bracket | \n",
+ " slash_star_star | \n",
+ " forward_slash | \n",
+ " var_exists | \n",
+ " star_count | \n",
+ " dollar_sign | \n",
+ " val_exists | \n",
+ " else_if | \n",
+ " elif | \n",
+ " print_space | \n",
+ " pyth_print | \n",
+ " void | \n",
+ " answers | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 0.045734 | \n",
+ " 0.000000 | \n",
+ " 0.001759 | \n",
+ " 0 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0.001759 | \n",
+ " 0 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 0.063037 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0.022923 | \n",
+ " 0 | \n",
+ " 0.000000 | \n",
+ " 0.002865 | \n",
+ " 0 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 0.042795 | \n",
+ " 0.000000 | \n",
+ " 0.000058 | \n",
+ " 0 | \n",
+ " 0.000058 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0.019122 | \n",
+ " 0 | \n",
+ " 0.005069 | \n",
+ " 0.002477 | \n",
+ " 0 | \n",
+ " 0.000173 | \n",
+ " 0.000346 | \n",
+ " 0.000288 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 0.047059 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0.035294 | \n",
+ " 0 | \n",
+ " 0.011765 | \n",
+ " 0.005882 | \n",
+ " 0 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 0.015708 | \n",
+ " 0.000561 | \n",
+ " 0.000000 | \n",
+ " 0 | \n",
+ " 0.000281 | \n",
+ " 0.002805 | \n",
+ " 0.004769 | \n",
+ " 0.001122 | \n",
+ " 0 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 9 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "metadata": {},
+ "output_type": "pyout",
+ "prompt_number": 12,
+ "text": [
+ " parent_count double_colon let_exists less_minus paren_star def_exists \\\n",
+ "0 0.045734 0.000000 0.001759 0 0.000000 0.000000 \n",
+ "1 0.063037 0.000000 0.000000 0 0.000000 0.000000 \n",
+ "2 0.042795 0.000000 0.000058 0 0.000058 0.000000 \n",
+ "3 0.047059 0.000000 0.000000 0 0.000000 0.000000 \n",
+ "4 0.015708 0.000561 0.000000 0 0.000281 0.002805 \n",
+ "\n",
+ " end_exists curly_bracket slash_star_star forward_slash var_exists \\\n",
+ "0 0.000000 0.001759 0 0.000000 0.000000 \n",
+ "1 0.000000 0.022923 0 0.000000 0.002865 \n",
+ "2 0.000000 0.019122 0 0.005069 0.002477 \n",
+ "3 0.000000 0.035294 0 0.011765 0.005882 \n",
+ "4 0.004769 0.001122 0 0.000000 0.000000 \n",
+ "\n",
+ " star_count dollar_sign val_exists else_if elif print_space \\\n",
+ "0 0 0.000000 0.000000 0.000000 0 0 \n",
+ "1 0 0.000000 0.000000 0.000000 0 0 \n",
+ "2 0 0.000173 0.000346 0.000288 0 0 \n",
+ "3 0 0.000000 0.000000 0.000000 0 0 \n",
+ "4 0 0.000000 0.000000 0.000000 0 0 \n",
+ "\n",
+ " pyth_print void answers \n",
+ "0 0 0 1 \n",
+ "1 0 0 4 \n",
+ "2 0 0 4 \n",
+ "3 0 0 4 \n",
+ "4 0 0 9 "
+ ]
+ }
+ ],
+ "prompt_number": 12
+ },
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "RandomForestClassifier Model"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from sklearn.ensemble import RandomForestClassifier\n",
+ "from sklearn import metrics\n",
+ "import numpy as np\n",
+ "import seaborn as sbn\n",
+ "import matplotlib.pyplot as plt\n",
+ "%matplotlib inline\n",
+ "\n",
+ "corp_train = corpus_df.values[0::,1::]\n",
+ "corp_answer = corpus_df.values[0::,0]\n",
+ "test_train = test_info_df.values[0::,:-1:]\n",
+ "test_answer = test_info_df.values[0::1,-1]\n",
+ "\n",
+ "def run_test_model(classifier, x_train, y_train, x_test, y_test):\n",
+ "\n",
+ " classifier.fit(x_train, y_train)\n",
+ " predicted = classifier.predict(x_test)\n",
+ " print(metrics.classification_report(y_test, predicted))\n",
+ " print(metrics.confusion_matrix(y_test, predicted))\n",
+ " return metrics.f1_score(y_test, predicted)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [],
+ "prompt_number": 13
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "run_test_model(RandomForestClassifier(40), corp_train, corp_answer, test_train, test_answer)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 0.80 1.00 0.89 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.50 1.00 0.67 1\n",
+ " 7 1.00 0.67 0.80 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.92 0.87 0.87 31\n",
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 2 0 0]\n",
+ " [0 0 0 0 0 1 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "pyout",
+ "prompt_number": 14,
+ "text": [
+ "0.86991807475678429"
+ ]
+ }
+ ],
+ "prompt_number": 14
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "answers = []\n",
+ "for num in range(20,70):\n",
+ " answers.append((num, run_test_model(RandomForestClassifier(num), corp_train, corp_answer, test_train, test_answer)))\n",
+ "answers "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.25 0.40 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 1.00 1.00 1.00 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 0.60 1.00 0.75 3\n",
+ "\n",
+ "avg / total 0.90 0.81 0.79 31\n",
+ "\n",
+ "[[1 0 2 0 0 0 0 0 0 0 1]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 0 0 0 0 0 3 1]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 0.67 1.00 0.80 2\n",
+ " 4 1.00 1.00 1.00 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.92 0.84 0.84 31\n",
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 1 0 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 0.67 1.00 0.80 2\n",
+ " 4 1.00 1.00 1.00 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.92 0.84 0.84 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 1 0 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.25 0.40 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 0.80 1.00 0.89 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 0.75 0.75 0.75 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.88 0.81 0.79 31\n",
+ "\n",
+ "[[1 0 2 0 0 0 0 0 0 1 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 0 1 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 0.80 1.00 0.89 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.50 1.00 0.67 1\n",
+ " 7 1.00 0.67 0.80 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.92 0.87 0.87 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 2 0 0]\n",
+ " [0 0 0 0 0 1 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 1.00 1.00 1.00 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 1.00 1.00 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.94 0.87 0.87 31\n",
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 0 0 0 0 0 4 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 0.80 1.00 0.89 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.91 0.84 0.84 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 0 1 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 0.80 1.00 0.89 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.91 0.84 0.84 31\n",
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 0 1 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 0.80 1.00 0.89 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.91 0.84 0.84 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 0 1 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 0.80 1.00 0.89 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.50 1.00 0.67 1\n",
+ " 7 1.00 0.67 0.80 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.92 0.87 0.87 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 2 0 0]\n",
+ " [0 0 0 0 0 1 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 0.80 1.00 0.89 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.91 0.84 0.84 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 0 1 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.25 0.40 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 0.67 1.00 0.80 2\n",
+ " 4 1.00 1.00 1.00 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 0.75 0.75 0.75 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.89 0.81 0.79 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[1 0 2 0 0 0 0 0 0 1 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 1 0 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 0.67 1.00 0.80 2\n",
+ " 4 1.00 1.00 1.00 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.92 0.84 0.84 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 1 0 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.25 0.40 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 0.80 1.00 0.89 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 0.75 0.75 0.75 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.88 0.81 0.79 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[1 0 2 0 0 0 0 0 0 1 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 0 1 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 0.80 1.00 0.89 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.50 1.00 0.67 1\n",
+ " 7 1.00 0.67 0.80 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.92 0.87 0.87 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 2 0 0]\n",
+ " [0 0 0 0 0 1 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 0.67 1.00 0.80 2\n",
+ " 4 1.00 1.00 1.00 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.50 1.00 0.67 1\n",
+ " 7 1.00 0.67 0.80 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.92 0.87 0.87 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 2 0 0]\n",
+ " [0 0 0 0 1 0 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 0.80 1.00 0.89 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.91 0.84 0.84 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 0 1 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 0.80 1.00 0.89 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.50 1.00 0.67 1\n",
+ " 7 1.00 0.67 0.80 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.92 0.87 0.87 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 2 0 0]\n",
+ " [0 0 0 0 0 1 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 0.80 1.00 0.89 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.91 0.84 0.84 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 0 1 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 0.67 1.00 0.80 2\n",
+ " 4 1.00 1.00 1.00 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.92 0.84 0.84 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 1 0 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 0.80 1.00 0.89 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.91 0.84 0.84 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 0 1 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 0.67 1.00 0.80 2\n",
+ " 4 1.00 1.00 1.00 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.92 0.84 0.84 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 1 0 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 0.80 1.00 0.89 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.91 0.84 0.84 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 0 1 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 0.80 1.00 0.89 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.91 0.84 0.84 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 0 1 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 1.00 1.00 1.00 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 0.75 1.00 0.86 3\n",
+ "\n",
+ "avg / total 0.92 0.84 0.84 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 0 0 0 0 0 3 1]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 0.80 1.00 0.89 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.91 0.84 0.84 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 0 1 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 1.00 1.00 1.00 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 0.75 1.00 0.86 3\n",
+ "\n",
+ "avg / total 0.92 0.84 0.84 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 0 0 0 0 0 3 1]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 1.00 1.00 1.00 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 0.75 1.00 0.86 3\n",
+ "\n",
+ "avg / total 0.92 0.84 0.84 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 0 0 0 0 0 3 1]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 0.80 1.00 0.89 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.91 0.84 0.84 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 0 1 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 0.67 1.00 0.80 2\n",
+ " 4 1.00 1.00 1.00 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.50 1.00 0.67 1\n",
+ " 7 1.00 0.67 0.80 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.92 0.87 0.87 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 2 0 0]\n",
+ " [0 0 0 0 1 0 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 0.67 1.00 0.80 2\n",
+ " 4 1.00 1.00 1.00 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.92 0.84 0.84 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 1 0 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 0.80 1.00 0.89 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.91 0.84 0.84 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 0 1 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 0.67 1.00 0.80 2\n",
+ " 4 1.00 1.00 1.00 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.92 0.84 0.84 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 1 0 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 0.80 1.00 0.89 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.50 1.00 0.67 1\n",
+ " 7 1.00 0.67 0.80 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.92 0.87 0.87 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 2 0 0]\n",
+ " [0 0 0 0 0 1 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.25 0.40 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 0.67 1.00 0.80 2\n",
+ " 4 1.00 1.00 1.00 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 0.75 0.75 0.75 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.89 0.81 0.79 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[1 0 2 0 0 0 0 0 0 1 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 1 0 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 0.80 1.00 0.89 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.91 0.84 0.84 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 0 1 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 0.80 1.00 0.89 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.91 0.84 0.84 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 0 1 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 0.80 1.00 0.89 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.50 1.00 0.67 1\n",
+ " 7 1.00 0.67 0.80 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.92 0.87 0.87 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 2 0 0]\n",
+ " [0 0 0 0 0 1 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 0.80 1.00 0.89 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.91 0.84 0.84 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 0 1 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 0.80 1.00 0.89 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.91 0.84 0.84 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 0 1 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 0.80 1.00 0.89 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.91 0.84 0.84 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 0 1 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 0.67 1.00 0.80 2\n",
+ " 4 1.00 1.00 1.00 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.92 0.84 0.84 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 1 0 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 0.80 1.00 0.89 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.91 0.84 0.84 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 0 1 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 0.80 1.00 0.89 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.91 0.84 0.84 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 0 1 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 0.80 1.00 0.89 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.91 0.84 0.84 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 0 1 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 0.80 1.00 0.89 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.50 1.00 0.67 1\n",
+ " 7 1.00 0.67 0.80 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.92 0.87 0.87 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 2 0 0]\n",
+ " [0 0 0 0 0 1 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 0.67 1.00 0.80 2\n",
+ " 4 1.00 1.00 1.00 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.92 0.84 0.84 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 1 0 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 1.00 1.00 1.00 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.50 1.00 0.67 1\n",
+ " 7 1.00 0.67 0.80 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 0.75 1.00 0.86 3\n",
+ "\n",
+ "avg / total 0.92 0.87 0.87 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 2 0 0]\n",
+ " [0 0 0 0 0 0 0 0 0 3 1]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 1.00 1.00 1.00 2\n",
+ " 4 1.00 1.00 1.00 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 0.75 1.00 0.86 3\n",
+ "\n",
+ "avg / total 0.92 0.84 0.84 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 0 0 0 0 0 3 1]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 1 1.00 0.50 0.67 4\n",
+ " 10 1.00 1.00 1.00 2\n",
+ " 11 0.60 1.00 0.75 3\n",
+ " 2 1.00 1.00 1.00 3\n",
+ " 3 0.67 1.00 0.80 2\n",
+ " 4 1.00 1.00 1.00 4\n",
+ " 5 1.00 1.00 1.00 2\n",
+ " 6 0.33 1.00 0.50 1\n",
+ " 7 1.00 0.33 0.50 3\n",
+ " 8 1.00 0.75 0.86 4\n",
+ " 9 1.00 1.00 1.00 3\n",
+ "\n",
+ "avg / total 0.92 0.84 0.84 31\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "[[2 0 2 0 0 0 0 0 0 0 0]\n",
+ " [0 2 0 0 0 0 0 0 0 0 0]\n",
+ " [0 0 3 0 0 0 0 0 0 0 0]\n",
+ " [0 0 0 3 0 0 0 0 0 0 0]\n",
+ " [0 0 0 0 2 0 0 0 0 0 0]\n",
+ " [0 0 0 0 0 4 0 0 0 0 0]\n",
+ " [0 0 0 0 0 0 2 0 0 0 0]\n",
+ " [0 0 0 0 0 0 0 1 0 0 0]\n",
+ " [0 0 0 0 0 0 0 2 1 0 0]\n",
+ " [0 0 0 0 1 0 0 0 0 3 0]\n",
+ " [0 0 0 0 0 0 0 0 0 0 3]]\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "pyout",
+ "prompt_number": 15,
+ "text": [
+ "[(20, 0.79124423963133639),\n",
+ " (21, 0.83694316436251914),\n",
+ " (22, 0.83694316436251914),\n",
+ " (23, 0.78727598566308243),\n",
+ " (24, 0.86991807475678429),\n",
+ " (25, 0.86827956989247301),\n",
+ " (26, 0.83550947260624675),\n",
+ " (27, 0.83550947260624675),\n",
+ " (28, 0.83550947260624675),\n",
+ " (29, 0.86991807475678429),\n",
+ " (30, 0.83550947260624675),\n",
+ " (31, 0.78870967741935483),\n",
+ " (32, 0.83694316436251914),\n",
+ " (33, 0.78727598566308243),\n",
+ " (34, 0.86991807475678429),\n",
+ " (35, 0.87135176651305668),\n",
+ " (36, 0.83550947260624675),\n",
+ " (37, 0.86991807475678429),\n",
+ " (38, 0.83550947260624675),\n",
+ " (39, 0.83694316436251914),\n",
+ " (40, 0.83550947260624675),\n",
+ " (41, 0.83694316436251914),\n",
+ " (42, 0.83550947260624675),\n",
+ " (43, 0.83550947260624675),\n",
+ " (44, 0.83602150537634401),\n",
+ " (45, 0.83550947260624675),\n",
+ " (46, 0.83602150537634401),\n",
+ " (47, 0.83602150537634401),\n",
+ " (48, 0.83550947260624675),\n",
+ " (49, 0.87135176651305668),\n",
+ " (50, 0.83694316436251914),\n",
+ " (51, 0.83550947260624675),\n",
+ " (52, 0.83694316436251914),\n",
+ " (53, 0.86991807475678429),\n",
+ " (54, 0.78870967741935483),\n",
+ " (55, 0.83550947260624675),\n",
+ " (56, 0.83550947260624675),\n",
+ " (57, 0.86991807475678429),\n",
+ " (58, 0.83550947260624675),\n",
+ " (59, 0.83550947260624675),\n",
+ " (60, 0.83550947260624675),\n",
+ " (61, 0.83694316436251914),\n",
+ " (62, 0.83550947260624675),\n",
+ " (63, 0.83550947260624675),\n",
+ " (64, 0.83550947260624675),\n",
+ " (65, 0.86991807475678429),\n",
+ " (66, 0.83694316436251914),\n",
+ " (67, 0.87043010752688177),\n",
+ " (68, 0.83602150537634401),\n",
+ " (69, 0.83694316436251914)]"
+ ]
+ }
+ ],
+ "prompt_number": 15
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "clean_answers = [y for x,y in answers]\n",
+ "plt.plot(clean_answers)\n",
+ "plt.show()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAECCAYAAAD9z2x7AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztvXuUJFd95/mJfFZmVlZVP6pbrZa6BQgCYxAIZFsvQDy0\nYLDGMIt3lvXax9rFa+PhHO8uZ22sncOenTPe9RxW4B3PMjzGIHnGM8xoPHgAYxkZMAZJCBDIkgUK\nvaAltR5dLXVXZuUzIiP2j4ibGZmV8crMyMyIvJ9zdNRVmVEZcfPe3/3e3+93f1exLAuJRCKRpJ/M\nom9AIpFIJPNBGnyJRCJZEaTBl0gkkhVBGnyJRCJZEaTBl0gkkhVBGnyJRCJZEXJ+L6qqmgE+DlwG\ndID3aZr2mOv1dwM3ARbwGU3TPuFc86+BlwEm8Ouapmkx3b9EIpFIQhKk8N8FFDRNuxr4EHDzyOsf\nBa4HrgE+qKrqFvBfARVN064F/inw+7O9ZYlEIpFMQpDBvwa4HUDTtHuAK0Ze14EtoAwo2Iq+BWyq\nqqoAm0B3ljcskUgkkskIMvgbQM31c89x2QhuBu4FHgC+qGlaDbgTWAMeAj4J/NHsblcikUgkkxJk\n8GtA1f1+TdNMAFVVTwAfAE4ClwBHVVV9D/A7wJ2apqnAa4BbVVUtzPrGJRKJRBIN36Attlq/AbhN\nVdUrgftdr60BPaCjaZqpquoZ4ABQYbAqOAfkgazfh1iWZSmKMsHtSyQSyUoTyXAqfsXTHD+8yNIB\nuBF4HbCuadqnVVX9X4D/DmgDjwK/DqwDnwUOYxv7P9Q07XMB92Ht7NSj3Hdq2d6uItvCRrbFANkW\nA2RbDNjers7O4M8RafAdZGceINtigGyLAbItBkQ1+HLjlUQikawI0uBLJBLJiiANvkQikawI0uBL\nJBLJiiANvkQikawI0uBLJBLJiiANvkQikawI0uBLJBLJiiANvkQikawI0uBLJBLJiiANvkQikawI\n0uBLJBLJiiANvkQikawI0uBLJBLJiiANvkQikawI0uBL+jx1Zo9PfeFBfu9T3+ZcvbPo21kpvnjn\nj/nof7yPJTmfQpJSgo44lKwAjz9d40t3/YT7Hj079LvXqdsLvKvV4vuPnOXUs3VaHYPyWn7RtyNJ\nKdLgryiWZfHQqXN86e5T/OjUOQBecuEGFx9Z52/ue5p6s7vgO1wtRHvXmro0+Cmk2db5w9vu5x9c\ncwmvfPGhhd3Hyrh0jJ7Jp77wIH9x90/o6L2F3cf9jz3Pv7vj4YUu3Tt6j3/+p9/nI5+7jx+dOscr\nLjnA//bey7npV17Hax1VH8Xgm5bFv7vjYR54/Pm4bjnVWJZFvakDUGvEP9F+8a6fcOcDz8T+OUbP\n5LNf/hGPPrUb+2fNE+2Jc/zJ7Q/RM83Q1/z4mTqPnt7lB4+cDX5zjKyMwt853+LbP3wOgK/e+xTv\nfv2LueZVx8hkIh0JOTVf//5T/N1jz3P9z1zM9lZprp8teOb5Bg8/tcvJo1V+5W0qL75wo//aRrkA\n0DdAYTi72+av732Ks7ttXrVA9ZJUOnoP3bCNR9wG3zQt/vybj3Px9jrXvOpYrJ/1xHN7fPP+Z7As\nuPSizVg/a558476n+fYPn+O6y49z4mg11DXie53HhO7Hyij8rm4PqKMHSjTbBp/9y4f4Pz7zHe5/\n7Oxc1Xatv3Rf3Bcv2uKVLz44ZOwBqo7Bj3J//c4s3UATUXNNrnG70uotHcuCrhFenU5KWvvF7gTP\nNck1cbAyCr9r2G6cK15+hDe/9iL+/JuP860HnuEPb7ufl5/Y4pfedCkvOrYR8Femp9awB3e9EV5B\nzxqhJgu5/fN9tWz7j6Mo/PqSqJek4jbytQjtPgm7e3b2lRgPcSKMW9riQeJ5dvciiCJXjGaRrJzC\nz+cyHKgWufEdP8X/+T/8LJe95BAPPXGe3/+Te3lqZy/We7B9tYuf6btODKOQz+57LZfNUCrmIg3S\nwcBebGdOKu7JP+5JU3xXYjzESb+vL1DcxIEw2hOtgqVLZz4IRVPIDYzcRdvr/M+/9Grec91LMC2L\nnzxTj/Ue2t1efym9SNXT9VH4YKv8KMZbDICO3qPTXVxAPKkMK/yYDb5jcOah8IUbo97spmZ/gekW\nbRGMt3hvq2P0V9iLYGUMft+Nkd//yMcPV4D4B5t7YO8ucKYXgz2f26/wwQ7c1ps6ZshB6u74i/ZR\nJhF3m9XjVviO2tZ1M3YjLERD1zBpp0QI7DkxEJjM4MNixd7KGHyRipkfo2o31+1AZRSf3CQMB+cW\nt8wVy/lxkx/YCt+0LJptI9Tfm6dCTSPuvrAbtw+/YfvwLey0yThZFiM3S9wTchTRtrskY2RlDP4g\nULlf1W5MkJkyCUNKeIEK368tYJCpE3aQDg3slPlr54Ew+GuF7BwU/uDvx52pU5tjMHpeuJ8j7Bg2\nLYu9oesW1xYrY/D9VO1GRSj8eOvH1JZklu+7dHwUPoRfhQwNgpQouXkiJtbjhys0O0asynvI4Mcc\nuK0vicCZJZOItmbboGcO3GfSpTMH9DFBW0Eum6GylotdhdSHlPAyKHwvgz+5wk/LwJ4n9aZOIZ/h\nsLMRL8423B1S+PH51U3Tot5KnxAYirc09VC7bUWbbzmu40WOkZUx+GL5Os6HD7bKj13hO0u5UjFL\nvaVjmovJXBDxDC+Xzoaj8MNMgD3TpNHSKRWzzjXpGNjzpNbsUi0VJtoDEfmzXMZGj1Hhi+Cm6BeL\nFDizRIigjUoBC4ZcNV6INr9oe93+WSr8+BHL1+KY3HOAzUqBRjvm5XR/6b6OZdmDYhH4ZSxBNIW/\n19SxsJ8JpMKPiqijs1HJs1mJN5Y0qro7MSp8d1+H9OTii/598bad2RcmcNs3+EcW3xYrY/B1wztL\nBwZ+/DgNljCgF84pDdQL9ya0cfSVZoiOKVYB4pnk5qtotLs9jJ5JtVwYlLWIqQ/WXSmFEK/Cr/dV\n7WL7+qwRxvr4dniBU1uitlgZg9/R/f3Wm5UiEO+XUWvqrJfyHKjan7WoZe64TWhu+gq/FaIzO+11\ncKPoxEHSMbDnhRAB1XI+9myxUZdlnD78/UIgHf2i3uySzShccKgMhFT4zrMf3ixRzMefieXHyhj8\nvsL3cOlsVBy/dYxfRq3RdQa2/Vm7CxoEwS6d8G0h3rPhKFTp0omGWBFVy4X+KjOu1Naaa3KBeLN0\nav1AZZH1Un6hGw1nyW6jy0alwFYEgSiefaNix2mkwp8DQeUEhMKPa/NVzzTZa+l9wwiLy1nvBgRt\nc9kM5WJuyN/rhVAr1XKBjXKevebigtFJRAz+Daf9IL5d2MIIH960s4HiVfjDRi4trr56U7dFWwQX\nsFsUbVai7WKfNatj8PsFwwJ8+DHNviKaX60UYv+sILqGSTaj+J4FEHaQiqX7RiVPVWQuLCgYnUQG\nCt9uP/t3Mbl0HMOzvbUGxLvxatRVtdcKl8K4zHS6PTp6z56cK+En51qj6xQlzFItF+iZ4Xexz5qV\nMfi6Y+SyGS+FH295BdExNl1L90W5P7q6ObZSpptqpWCr9QAlUnMtVxf9XEnEbRiL+SzFQjY2IbBP\n4cfq0rEnsk1Xv0i6ynevWjajKPxml81KHkVR+hPFomIavvXwVVXNAB8HLgM6wPs0TXvM9fq7gZuw\nS3N8RtO0Tzi//z3gBiAP/EtN026N5/bD0zVMT3UP8Sv8vpKrDHz4ixoAutHzdG0JqqVBPZ31kvcZ\nq8MuicWuXJKI24cP9h6IuCbMgcG3Fb4es0snm1EoFXODftHosrVejO0z48bd1/O5LKViLvC7siyL\nWqPLxU5KplsUHTtUifeGxxCk8N8FFDRNuxr4EHDzyOsfBa4HrgE+qKrqpqqq1wFXOddcB7x4pnc8\nIV3D9KwOCYNAVlwK391ZSsUcuayyUJeOV0qmIKxarzft5epaIevasCUNflhGA6miUmkclSx3Rwx+\n3EHbjUoBRVGoVhYrcGaFiLmJ59moFAJdOq2OgdGz+pPe4ES5xbRFkMG/BrgdQNO0e4ArRl7XgS2g\nDAiH8NuAB1RV/XPgi8AXZna3U9DV/VVtLpthvRRfBN3t+lAUZaEZLV2957kBTTDY9el/j7WG7lqu\nFvq/k4Rjn8KvOD7ezux9vLVGl1IxS8VZscUdtN1wPZP4/CTjFm0Am06Sgl9sYhDjKgxdu6i2CDL4\nG0DN9XPPcfMIbgbuBR4Avqhp2i5wGHgd8B7gN4E/nd3tTo5uBPutNyuFuSh88f9FKWE9hMIf7Lb1\nNt6WZdllAUbUS1pyrudBvdm1ffdO34xz81WtYRthIXziCtp2uj26ujlQwilx9blFG8DGejGwvMK+\na2IOzAcRdKZtDXAfy57RNM0EUFX1BPAB4CTQBP6tqqrvAc4CP9I0zQAeVlW1rarqYU3Tzvp90PZ2\nuNPfJ0XvmZTXcr6fc/hAidNnG2wdKPu6fyb7fPv/Jy/eYvvwOocOlDj1XJ3qRom14vDXEGdbWJZF\n1zCplAu+n3P8qH2+r5XNeL6v2dbRDZPDB8psb1fpOou8bs+a2TPE3S8WTaNtsFUt9p/zAmcHZya/\nv69O0xY902KvpXPR0SoXON9txue7nYZnn28AcORghe3tKif2bINoWLP7PhfRLwzHy3bi+Bbb21Uu\ncHzwmULe834efto+Re/Co1W2t6s0e/Yf6ZqLeYYgg38ndvD1NlVVrwTud722BvSAjqZppqqqZ7Dd\nO98Cfhv4qKqqFwIV4PmgG9nZie94Qcuy6HR7KAGfU3JU1uOnXuDgxtpM7+HMC/YgMNo6Ozt1So7K\nevyJF9h2qiSC3QnibAuRnopl+X6O1bPf98xzdc/3nTnXBGAtl2Fnp47hpJqdeb4xk2eIuy0WjWVZ\n7O51uPjI4Dlz2Abhyad3OboxCHBO2xa7ex1MC8qFLHu1FgD1vU4s7fuT07sAFLIKOzt1TN02+M+d\nTXa/eM6ZyHodewyLHJBTT52jWhi/Yn7yGbstss54Mzp2W8xyjEQhyOB/HrheVdU7nZ9vVFX1vcC6\npmmfVlX1VuAuVVXbwKPALZqmGaqqvkFV1e9gu4x+S9O0he7EEQXRgjJT+nXxG92ZG/xao0s+Zwc3\ngX7Oda3RHTL4cRO0AU0QZhleGwlilYpZJxgtffhhaHV6GD2rHy+B4T44S9y7PcXqNa6g7aj7sppS\nl86mk3Hk9125N10BrJfyKMri2sLX4DuG+v0jv37Y9frHgI+Nue53Z3J3M6Jv5EL48CGenY71ZpeN\nsh3chMX5NfWQbRGmVO/owBbBaOnDD4eoVSTaD+KLg7hzyEV6clxBW/dmMrBP8srnMqkI2paLOXJZ\nu/1CiaLm8CSRWXDCxkpsvAqqDimIK5vAsix2G3r/79uftZhUtW5A1VCByL33MzyjnVn8O+lKbl70\n0/zcCj/CWQRREMkIm5UCuWyGjKLEpvD7mwwrAyGwkQIhUG90+ytzcJ+UF0Lhu68r5xfWFqth8AOq\nQwriUvjuErgCoQ7mXVSqfy5AQFuIU8B8FX5jv0LdKBfo6ibt7mK2jieJwS7b/UZk1qJjdHIu5DPx\nKfzGuOfKs9uIZ3/BPBBnCWwOud+C953UGvYGtMrawJmyUSnQ6vRi3fjmxUoYfN3nPFs3/cE249TM\nUdcHuJbu8zb4AefZuqkGpI7OU6GmEVGczt1+lZh8vKNKs5DLxO/Drwz3d6Nn0u7O38jNAnGCl1vh\nhymvIKprClcuuHPx5z9GVsLgDwKVIRV+zIPN/e+5+/ADzgVwUy3n2Wt519MR97455rnScqRdnIzr\nF8LHO+v2G3Wz5HPZ2BRmra/w9wejk+ruGyfaRHkF36CtawOaYJFB7NUw+HpIv3U5jwLUZny2rZjJ\nN1wDIErN+VnSd28FBG3B7piWBQ2P6pfi3teHnisduyrnwWhwUxDHprzaiMG3XTrxKPx6U6eyNghu\nwuJ3mE7LuMlZ/Oz1TO2uMbQBbXDN4gqorYbBDzjwQ5DNZFgv59mdsTui76t1dZYwPvI4CBvAhmD3\nTK3ZZb2UH6pAGsavKbHp94vSqBHJz9zHK8oqiJTMQi4bq0unOqJq+30poWU3Bgp/2HhvOlVlx5VX\n6E+y+9piMfE7WBGDr4cM2oL9Bc48YOanDhaVlhnC4K87HXPP4x7tw7f3PxNIH34Y3KWR3Wz0UzNn\n14airIJABG1nHUTtmSZ7Pv0iqZk6g3jV/ueyGP9d9Vf2I20xOPdA+vBjQSj8MIFKO4JuzFZdjfH/\ngd15goovzZqwGUvgr/CNnjjBa7yxSurSfZ7UmjrFQnafe23Wm696pkm9qQ/FWgq5DJYFRm+2Bn+v\nZWCxXwlXQwQ4l5lxgWgYqPdxz+V1zSLHyGoY/P6RfsGPG0dqZr9i3j7jmHdOiJpfCmM3ZMYS+G8C\n2muNVzyygFp4xGa8UcJWKg3LXlO3jbDb4DuTzKwDt/2UTC8jl9B+4b1K947FBV4jffjxEDZLB+LZ\n2l5r2GXF1kcN/gIyWgYbryIo/AideVHB6KRhWZZzPmph32uzTtvbHfNdiRhOZ8Z+fJHhts9vnXBX\nX91DtPmVV/AeI4vLZFsJg6+HDNrC4DDzWRqserNLZSS4Ca7gzRxn+ig+/H7HHJOl4zUARDA6qQN7\nXrQ6Bj3T2ufmg9mnMI5m6MD8Ff56KWdnwCVUCOw2uuSy9glebvzcM16T3+AoS+nDj4VBWmYYhR/+\ncOKwiNN/RqkuQuHr4WrpgMu14KNeRgc2+KeqSWzEhDm66oPZ77Ydp/D7NfFnrPC93JfZTIZKaXEl\nBaal7mQeuTdQgb9HwEvhgz0JSB9+TIRNy4TZDzajZ9JoG2N9tQO/5vxm+kHQNkyWjne9n5qHegH7\nuRqt+Qajk4ZXIB9m78MfFzwUE/6sc/F9jVyChcC4DVTg2m075ruqNbooCmPPhK5W8tSb3psa42Il\nDP5gd2mYtMzZunT6ro+xSnj+GzCiZCxlM85egTEunf5ZrB4rl6CTgFYdr01XMPssjnFGeKDwZ+vS\nCZrIGm2jX648KYgNVH5jeFwBtVrDXhVkMsq+1zbKBUzLotmeb82plTD4nQiqdtZB23EFsvqftYAN\nGIOMpXAnenm5ZwaF08YZLFlPJ4jRw8vdFPJZ1mbo4x0tqwCDoO2sFf64wmmCQS5+svqFl5sKBuUV\nxip8j1UBxFckL4iVMPgiUBlmd2lVFK+atbry8dXO04cfJYANdns0WjqmObz0HD18203SU/DmwSDo\n7WEQZlheYZ5B21pTBDf3C4qkpux6BaIF40SRbvRodXpsVvaPe1hcCZKVMPh9VRsiUJnJ2MWrZqW6\nvTZfgH0wRC6bmbMPP3yWDrjcMyNunVqjS8F1gpebRamXJOG38gPHx9uYjY93tKwCxBi0dc59GA1u\nQnILqPm5qWB8eYVxgXI3g1WwNPgzJ0oqIsw2uDQonLb/i1cUhY1Kfq6GUdfts33dha388FJlNY+s\nhaFrpMH3xM+HD7P18doleotDvxsEbWen8O29Bfvr6Aj89nUsM4MYiMd3Naa8gldZBfc1MH/31koY\n/LDVMgUblQLtbo/ODAJafsFNoH8S0LwOhugYJvl8ZqyhHke1tN8fb1mWo+S8BoD04QcRpPBntUoS\ntW02RyaWOBR+u9uja5i+bipIXgG1WoD7bVx5Bb9sJfffmncBtdUw+IZJIRfeyM0yS6Ie9MVXCnQN\ncyaTSxh0wwwdsIXxRa/ECV7LFpBKErWG7rhZxg/BWfl4x5VVgHgUfr0ZrITd70sKgWN4fYzBD3AD\nVRfUFith8HXDDK3uATbXZzf7+kX4Yf6lCLp6L1JbjDvM3G/TFcigbRjqre6+sshu/PK7ozDI0Blx\n6cSg8IOUcFILqNUCVmPj6m8FKfwwp2XFwUoY/I7eCxWwFcxS4YvgZtHj8+ddY6RrmJHaYpwPP0i9\niGB00pTcvLAsi72m7um/h/ET7SR4+Z8HWTozNPg+KZmQ3HTdcSd4uRlnL8ad9+ymvJYjoygyaBsH\nkyr8mRj85v4zLd1szDnAqRu90MFr8FL4/gEpRVHYrOQT56udF02njo6XYYTZ+Xi9skX6xdNiKAO+\n6dEv1go5CvlM4lZ+407wcjNu745fdh6Ioyzz/Tr782IlDH53Qr/1tIMtKGsB5l9AraubkQz+OPeM\n1+k/bsQB6PMKRieJIMUIs/N3exmevsKfoUtnkK/u81wLqiEzDeIgci/GuWfCfsdS4ceAbvRCbzSC\n2fnXWh0Do2f5G0ZRXmEOg6BnmvRMK9JqZ71kn/PrVvhBG1HA7sy6YdLuzicYnST8ym0IZhX4Flv+\nPX34Mz1G0d+HD7YQmGdW2rT0TJNGa3wZa8G4gou7Dfv4T7/0541y3s5smlPCBqyAwTdNC6NnRVO1\nM1L4tTADe44F1KJUyhRkMsq+Kod+hdMEG2N8/xKbfg7+mKJagln5eGsemTPxBG393RhgiymjZ9Hq\nJEMI9E/w8nmmceUVvCrkuqnOKDAfhdQb/H51yAhGbr2UtwfbtAY/IFLvfm0ey9yoG9AE1XJ+2Icv\nDJbPc1X7JwFJP/4o4w61HyWjKP3dttMwrqwCxFNaQTzXuOqQguqCdphOil9pFDeblUJ/NeVXIddN\nHGcXB7ECBj98HR2BGGy7jc5Unx2UtQCDwTEPJRzltCs31ZFyx/0TvEo5z2tkaqY3XoeXjzKLejq7\njS6lYm7fd57NKCiKvRFvVuw2ur7BTUjeHo2gjDTBRmUwRsK47Nyvz3PzVfoNfoTzbN3YBxRMN/MG\nbUQBu8TBeik/V5dOMUI8A9h39m692WW9vP8Er6FrElo3ZR70V0g+efgwGx+vl2tBURQK+exsg7ZN\nPdjIJczVF7TpSuAurxBmZQ/+BwzFReoN/qA6ZDRVu7FeoKP3aHcnr2UStBFFUC3Pp57OoGpodIUP\ng0Faa3iXfRXMuqZ7mqiH8HW7X5900vQqqyAo5DIzC9r2TJO9lh7c130O/V5GwqzSYbi8wrhy1ONY\nxCo49QZfqNooLh0YXx8jKkGbLwQb5QJ7czghahDPiO7DB1uJCP9kkDticI304Y/SP97Qx9cN7ol2\nsjbsl1VYL459vZDLzixoWw8R14HFnPI2DYPEiwD3m2t3fuhx33dvSR/+zBgc6Rdd4cN0X0aYrAX3\n63GfENXP0okctHUMT0sP7Z+cVWmANFJvCr+6//cwrY+3rzQ9DE8hPzuFXwv4LEHSXH1hffjuVO7Q\n434B7q0VMPiTGTnRcacJ3Nb7wc1w0fq4Vc/kQdvBMrwecgCsJ7QU7jyoB5RVEEzr4w0q61vIZWd2\n4tVA4Yfs6wnpF2H98e7nCn1NZf4ZS6k3+PoEuecwvgJeVHabOuvl/NgzLd3My68Z9bQrgTt9LKhw\nmiCbEcHoZAzseWFalh3cDJgwYfpVUtAhHPl8hq7em8kmqLBujHXnRLmknJVQb3bJZccf9OPGXXAx\nqMSEwM7fz8518ku9wR+o2kkV/uRfRj3E5guY3zJ30njGoJ5O+M4M9nMl7fzSuGm2DUzLCqnwp3Mr\nDnLwx/vwi7kMlgU9cwYGP6QbI5NRqM4pK20WiHMfgkqrj1P4Yb/jebZF+g3+hH7rafOFjZ5Js2OE\nUnLzKqAmJj+vyp1eDGp3633jE6Yzb5Tz7LV0jF68wegkETYHH6b38QYqfMe1N4ut/WF93WD3pySk\nZYpaWKHGsKu8Qs1j78PY65xSE7M4yjIM3jtnAFVVM8DHgcuADvA+TdMec73+buAmwAI+o2naJ1yv\nHQHuBd6iadrDMdx7KPQJdtoCbDqZDZMq/Ciz/LwKqE2q8NfXRD2dbrSB7bxnr6Wz5ZEpsmr4Hf4+\nyrQ+Xq+yCgLh2usaJuWJPsH1WSEKpwk2ygVO7zQwemboozYXQf8ErxCr2X55BSfOFeYacPL3LQLr\n9cyKoNZ+F1DQNO1q4EPAzSOvfxS4HrgG+KCqqpsAqqrmgU8CjdnebnQmDdqW13JkM5OXV6iHzMGH\nwYCMO4VRnzBjSdTTqTX1UIXTBEkL0M2DsHndML2Pd1A4zSNLRyj8GQRuo/T3WdX6j5soqzGw2/n8\nXod6y3vvwyjzPuc3yApeA9wOoGnaPcAVI6/rwBZQAhRspQ/wEeBfAc/M7E4npH+ebcRAZUZR2KgU\nJlf4IX2a4PLVxq3wJwzagvDHd/v+xqD0O/uaZNVNmQf1lv8JaKNM4+OtNf1dC2JMzMSl0+iSzwUH\nNyE55RXCFD90s1Ep0GgbWFb4a6pzytATBI38DaDm+rnnuHkEN2O7bf4e+KKmaTVVVX8N2NE07SvO\ne8IdJBsTA4UfTdXCoHb3JFkMYVOzwD4hKp/LxD4ABvGM6G1RLeVptA3O1TsU8hmKIQZ23/cvN1/1\nCTq8fBQx0ZoTBFaDKjYWc7M79arW7LJRDg5uQnLqLIXNPBK42zrKJAHzy8UPMvg1oOp+v6ZpJoCq\nqieADwAngUuAo6qqvge4EbheVdWvA68BblVV9eisbzwsk6Yigp1q1Z2wpnstwnJQUZR+8CZO9Akz\nlmBgvJ99oRl+ACRkYM+TeoSgN9htaFnRDUK/rIJvWd/ZKHzLsqg1wvugk6Pwoxn8zSkM/rwKqPkG\nbYE7gRuA21RVvRK43/XaGtADOpqmmaqqngG2NE17o3iDY/R/Q9O054JuZHu7GvSWicg6KubodjXy\nZxw5WIHHnidXzLO9vR7pWsOylc7J41uhPvfg5hqnnqlhWVZsbZFx2uLY0Q22D0YL0x1x3m/0TA5t\nlkLd40nHuBnW5N9vXG2xKLqOUr/k4gMc2iwFvv/IoQqww/m9Dicv2Aj9OS/U2ljA9sGyZxse2LI/\nv1QpTtXOzbadiXX4gPdnubn42CYAppJZ6n5hOs6Jiy/cDPV5x44MbMTxoxvh2qJmb+zsoczlmYIM\n/uex1fqdzs83qqr6XmBd07RPq6p6K3CXqqpt4FHglklvZGenPumlvuzW2wDs1dvsZKN5lwrO+3/8\n5DnyRFtSP7uzB0Cva4R6tlLB3vXY6hg0nHueNTXn79ZrLZReNFWXd20eKxWyoZ6p17UN/rNn9yb6\nfre3q7E/at8ZAAAgAElEQVT1i0Wx84Kdx9BtddkJUZiv4CzGdvc6kdriiefs965lM57X6R3783fO\n7rGzM3meznMvNO3Pynl/lhvTsD/3mTP1pe4Xz5yxx7CphxvDbmOaMc1Q11i63RbP7kw+RqLga/A1\nTbOA94/8+mHX6x8DPuZz/Zsi3U0MdCeslgnTHXUYtgSBQCztzu91CLfYj84kZwMI3C6IsO6IaYt/\npZF6S6dc9K8Z70a04fl6h2Oba6E/J6isAgynZU5D330ZIiUTkuPqi5J4AcNjPXLQdkmydBKPPmE9\nfJjOv1Zrdinms6GCm+DKxa/H98VPE8+oTtCZ1wpZCnMIRieJeqMbesKEYSEQhX7hNJ/9D4UZbbwS\nm/HCZG5Bcgx+5LTM9ehjRKR/L0vQNvFMo2o3pzH4UQe2897ze/G4c8Ae2NmM4ntwiRfuNMKwqxZF\nUZy0wuUe2PPCtCz2WkaoPQwC0e4ipz4sYTJM+kHbmSn8cM9VLGQp5udbQ2YSxEHkYcfLJAo/oyj2\neRhzGiNBPvyFcq7eodEe7w5YL+VD7d7sGj0yijLRjr5Jswksp0DWyQvC+9cGSi7aZ5mmRdfosVYI\n/iq7hjmRugdYd3XmsEt3sF0KT55pYFnWvpQ93TDRDZPyWrRuWG92nSJcC834jUy/jk5A9VQ3/X5R\nn0zh+xke4eacVuHXI6Yvwv5zkqfFsizqLZ3qDPtF2KqmAuE+ExNa6OvKBZ471xr7WqtjoCiEGt9h\nWFqD/9y5Jjd98tueoVJFgT/4javY3vLPdND1yY3c5oQVM5sdg55pRRsAYjURcel+x/ee5PPffJx/\n/htX+S7fwTb4UUsjC9wKP+zS3b6ugNGr0+72KBXt7tZsG3z9B0/xle8+SaNl8HOvOMo7rjrJ8cMV\nz79jWRYPPP4Cf3H3T3jkqV0u2l7nnVed5GdefiSwGumyEGVvhkC89677n6a6luVNl1/kO0G2uwbf\nuO9p7n7wWQC21n0MvqPwp83Dj+rrBnv1/JNn62OFQBRMy+IHD+/wpbtPcerZOi86tsEvXH2SV196\nmMwUf1ec4HXRtnefHCWfy7JeylOJMKGDPfafOLNHp9ujWMhy9nyLHzx6lvseOcvDT57n4iPrfPjX\nfibqI4xleQ3+Cy0s4NLjm5w4OpwSeerZOo89XePM+Vagwe8a5kT+e8AJrimRXTphAmajbJQnU3JP\nndmjq5vsnG8HGnzd6E3cFhWnrK1lhV+6w+C9Nee0rDu+9xRfvfcpWh2DUjHH0YMl7n7wWe5+8Fle\n+7Jt3nnVSV50bJB+aFoW39d2+NLdP+GJ5+ysiZMXVHniuTqf/MKDfP6bj/OOK09y9SsvmGgVZ1kW\ney3d8aWGv77T7XmuPsE2fqP3E9UnDFBZy/Nfv/HF3H7PE/zZNx7ny99+gre87jhvveLiIUHRaOt8\n9XtPccf3nqTRNigWstxw9SUcqPr48POzKa0wcB+Ff65quUDPtGh2DCpr0dMUjJ7JPT98ji9/+xTP\nPN9EAS65oMqPn6nxR3/2AMe3K31BMIkLM0rNIzfv+4WfiiyqxPd42988ysNP7vKUk+EH8KJjG7z1\niosi/T0/ltbgN53BdPUrL+C6y48PvXbH957ksadrtNrBaW1dozexqu37oCc0+FE6y6TBuaaTWif+\n70dXD1cIahwZZVDWNsrKRbz3P3ztUX546gW6ukm1bBuxN11+EWvFLH/36Fm+dNcpvv/wDt9/eIef\nftFB3nHlSe7/yTn+wx1af0D/7E8d4R1XnuTE0SpnzjW5/Z4n+NYDz3DLXz7Ef/nWj3n7z57gDa++\n0DNQXmt2eXqnwemzDU7v7Dn/b9DsGOSyCscOVTh+uMLx7QrHD69z4XaFrUqBZ19ocvpsg6ed9z+1\ns8fZXf9YSzajcMHBMhf2/16F551rohqRd151Cb90/cu57Y6H+Mp3n+RLd53iK999kje++jjXvOoC\n7vnhc3ztB6fpdHtU1nK869oX8ebXXRR48E5hRhuvak3dPuhnAvdHrdGNZPB1o8eX7/oxt/31w5zd\nbZPNKFz7qmP8/JUnOHaowumdPb787VPc88MzfOoLP+TP//bH/PyVJ7j6lccixfGi7rIVXPaSw5He\nDwNPwte+f5pcNsNlLznEay49zKsvPew7YU/C0hr8hmPMxy1fy8I1ENLIRVFUo4il5//0ka+HvkZU\nYojSWdZLORSiK/xmWxj8YH+oPflNHqevlgvUW3qgIXEjJpj7Hj3LwY0ib3/jCV7/6guHfJyXv3Sb\n11x6mB+dOsdf3H2KB3/8Ag/++AXANpzXXnaMd1x5kgtcm8WOHCjzq29/OTdc8yL+6jtP8Df3nebf\nf/URPve1R8iOcfGMq/uuKHD0QJmXXbzF+b0OTz/f4Mkze/uu3fdM5TwvP7HFVrU4tm6IacHZ8y2e\nOmtPLt99aPj1SfpjpZTnnVddwluvuJhv/t3T3P6dJ7jje09yx/eeBGyj8YvXvIjrLr8wtL83Slrm\ntx98lltuf2hsiQejZ0UKbsKgX3z4j79DFM+Ladqrvnwuw1teexFv+7mLOezawHZ8e51fv+Gn+cXX\n26uib93/NLfervFv/uphogh9MYajxKsm5brXXIhlWbzkwk1e+eKDM/PXj2NpDb5Q+H4GvxXC4OuG\nOVHtGMGbX3sR37jvdOTrCvksr770UOj3ZzMZyms59iJG68Wk1+r4qzTLstB1k+IUBv9tP3uCc/V2\nJJ/56162zSNPnueylxziKh+3i6IovOKSg7zikoM8dnqXr33/NEcOVbj2p49yyCf//EC1yH/7lpfy\nzqtO8tffe4ofnTrnWftovZTn+PZ6X3EfO1QeWv2ZlsXZ3Tand/b6av78XocLDpY5vr1uq/XDldCr\nJMuyeKHW4fTZPU47K4tm2+AVlxwMdf04ivksb73iYq67/Dh3P/gs9z1ylle++BDXvuqCyCvZKPXw\nH3riHF3d5MTRdfJjvsPXvDSasr1CPcIjT+5GPytBgde87AjXvvIC37IRR7ZK/OrbVG64+hLu+O6T\nPHL6PBH3TpLPZXjty7ajXTQBRw6U+UdvfmnsnwNLbPCFwh+33BOTQDPApWNZFl29F7lSpptrLzvG\ntZcdm/j6KJSKORqtaJkLfYXv408G2+dpAfkJNqAJJmmHQ5tr/ON/+KpI17zk+CYvOb4ZaUdltVzg\n3W94Me+OfIcDMorCka0SR7ZKXP7S6Qe6oigc2lzj0ObaREt9P3LZDK+/7EJef9mFE/+NYj580FaM\nx//1H70msptjHCeOVvndX37tRNdG6RcHqkX+mzdfOtHnpJGlzcMXynWcwi+FVPhGz8KCqVTtPKms\n5X0DgeMIq/AnPRdAkl6iKHwhLMTqWpJMlnb0N/0Ufkgf/qA65OSqdp6U13K0Or3Qy1zTsmiHDNpO\netqVJL3ksgqKEs6H32wbFPPZpT6hShLM0n57wkVRKu431qW1cAq/o09eSmARlEM+l6DdMfpuyaBr\nuhMe9ShJL4qiUMhl+2LAj2ZHj7xBTrJ8LK0lbLQN1grZsZH/UiGcD3+a+u+LoFwM91wCt6oPbIsJ\nD3OXpJt8LtMXA34024Y0+ClgaUd/s61T8ehgmYzCWiEbQtVOXilzEfSD0SEVvtvIh26LhLi3JPOh\nmM8EKnzTsjdISf998lleg98xKPtsyCiv5UL48JOlasXzhg3cuo182HhGUtxbkvmQz2X7fcOLTreH\nZY2Pp0mSxVKOftO0aHV6ngof7EydQFWrJyxoG9WlE0Hhd2TQVjKGQj4TGLRt9ONpUuEnnaUc/UKt\n+nWwctFW+H4HjIuOXEyIqq1EdelE8eELhZ+QyU8yH8IEbZs+u94lyWIpLaFQFH5LyFIxh2Xhe8D4\nIBUxGUYu7IYygft9Hb1Hz/QeuP1zARIy+UnmQyGfwbQs31TgQYq0NPhJZylHfxhFEaa8Qj8VMSFu\nDOHDj5qlI1JX/TZfCfdWMSGTn2Q+DE698jH4YhOkdOkknqW0hGEURSmE+0Of4rSrRTDw4YcL2op2\nOrRh15rxa4tpTv6SpJdCv7yCt1gYCDAZtE06Szn6G/3CaT5ZOmEUvlC1aU3LdCpkimqBfuWipznP\nVpJehADo+ARu/QoZSpLFUo7+KC4dP/dH0hR+ZUIffiiFr8ugrWQ/Yo+K7lNPR7p00sNSWsJB0NY/\nLRP8FX5HT5YPP5/Lks9l+pUJgxDPfnCzOPTzOGTQVjKOQoiDzP3OppAki6Uc/WF8hmHcH3rCdtqC\nXbM9yk7btUKW9RDB3kFpheS0hSR+wlTMlGmZ6WE5DX4nRNA2VJZOslw6YJ9sFDpo27Hrm4QputaV\nO20lYyiGOPWq1R+PMmibdJZy9DfCKPwQPvy+3zpBCt82+P4bygQtp75JKUS5aFlLRzKOfIi0zEZb\nR1HwPCtYkhyW0uD3swJ8gkRhFH7SaumA7dLpmVakglahFL6erMqhkvkQKi3T6WeZKIfPSpaSpRz9\njbZBIZfxNU5hfPhJq5YJtsKH4NRMUdCqvJYfKPwwaZnS4EtchAnaytLI6WEpR3+zHXzYQig3RgJV\n7bow+AF+fGHcS8VcpD0JSWoLSfwUQgZty0Xpv08DSzn6m20jMEBUyGXIZhTfzUZJDdoCgamZ7tzo\nsD78Qi6DIpflEheFgKCt0TPp6D2p8FPC0lnCvm86oIMpikKp6F8TXzd65HOZRPke10O6dPpHQK7l\nyGUzFHKZwBTVJE18kvkQpPD7wkIa/FSwdBag3XF80yF29ZUDauILVZskKqUCEMKlM7L7sbQW1Ba9\nRMUyJPMhH6DwxQpa7rJNB0tnDZsh6ugISgGnXnX1XuJU7cCHH6Twh5VXuZgLSFFN3uQniR9RPVX3\nyAprtGUOfppYOgvQCFEpU1Au5ujqpmct765hJk7VhnbpjCh8sdrxyt/vGmZizgWQzA+h8DseaZmi\nQF9JunRSwdIZ/CiV+YKyU/QEqtpKSIXfGlH4pWLOzt/3WJrrRi8xJ39J5ofw4ese/UYefpIuls4C\nNCNs4w7afNU1eolTtevlkC6dkWCa3+Yr07Qwelbi3FuS+Oln6XgFbaUPP1UsnQWIUpnPb/OVMHJJ\nVfiNkHn4/aCtz+arQR2dZE1+kvgJ2ngls3TShe+3qKpqBvg4cBnQAd6nadpjrtffDdwEWMBnNE37\nhKqqeeAzwEmgCPwzTdO+GPaGolTm6yv8MUYuiZUyYRCs9su4AfdAtN/v595K4n4EyXzIZTMoeNfD\nD3MYkSQ5BFmAdwEFTdOuBj4E3Dzy+keB64FrgA+qqroF/PfAjqZpbwDeDvzLKDcU5gBzQdlnw1HS\nzrMVZDMKpWI2cOOVMOziPFu/zVeyNLLEC0VRyOcznideybTMdBFkDa8BbgfQNO0e4IqR13VgCygB\nCmAC/xH4sOvvhyvu7jCJwh9r8PXkHvgRlGIJdjsVC1myGfv5/Hz4sjSyxI9CLusZtI2SNSdZfoK+\nxQ2g5vq5p6pqRtM00TtuBu4FGsCfaZrWf6+qqlXgNuB/j3JDUYK2fSPn57dOoKotr+U5u9v2fU+z\now+pLl8fvi5dOhJvCvmM3Gm7IgRZgBpQdb9fGHtVVU8AH8D21V8CHFVV9T3OaxcDXwP+RNO0z0W5\noUaI0sgCXzdGgqtDipx60/SuiW8XtMoNXQPjFb5oi6Qc5i6ZL4Vc1jto29bJZTOJy3aTjCfIqt4J\n3ADcpqrqlcD9rtfWgB7Q0TTNVFX1DLClqupR4CvAb2ma9vWwN7K9bc8rumGRyyocv3AzsNDXbsdR\nJZlM/3rB2T174tjcWNv32rKz5RxKXqmusV4u7HvdsixaHYMTF2z0n+1YvWu/mN3fFqfPtey/u1lK\nXFsk7X7jJK62KK/l2W10x/79jm5SLeeX7ntYtvtJCkEG//PA9aqq3un8fKOqqu8F1jVN+7SqqrcC\nd6mq2gYeBW4F/h9gE/iwqqrCl//zmqb5+ih2duoAnN/rUC7mOHt2L/DmOy3byD1/vtm/XnDmrP1z\nT+/te22Z2d6uIhYlp06f58hWad97Wh0D04J8Vuk/W7dtt8XZc/vbYudsAwC9YySuLZJ0v3ESZ1so\nikXXY5zUm13WS/ml+h5kvxgQdeLzNfiaplnA+0d+/bDr9Y8BHxt5/bed/yai2dZD1+3wO+awn4qY\nwEClqD3uVfq5NcavWvZJUZVBW4kfhVyWnmlh9Exy2UEfsSyLZtvgyIH9okOSTJbKAogOFjYjQKQk\n+vmtkxi0Fc/vVTFz3O7HMPEMGbSVjEPEuUYzdbq6Sc+05OEnKWKpLIDoYGELNWUzGYr5LK3O/gyD\nJJ/wJJ7fKxd/XOZEsZBFUTzSMvXkZixJ4kdsThzN1GlEqGslSQZLZQ2jbLoSlNdy/Yp+bgbn2S7V\nI4bCb0MZuBX+oJ0yikKpML5cdDfBGUuS+PEqryBTMtPHUlmAKJuuBKVibqzC1xOsasWE57X5Skxw\no+1U9jgEJYmHuUvmR1/hjxp8ucs2dSyVwR8o/PAdTOxKHa0D30mwqh0UhQvvwwd78hu/8Sq57i1J\n/Ih+MerSGZRGlj78tLBUFmBwqEf4DlYq5jAtq7+bVKAnuEJkOaQPfzTWUS7maHd7+zZs6Ql2b0ni\nR4yR0aCt10pSklyWygJM4tLxKpGc5HICfimW4ErLHKPwAVrdkbZIcMaSJH4KHgq/IV06qWOprOEk\nhZq80hGTHKj0q/MP3hOjV22hQZZO8tpCEj9ePvzRU9UkyWepLECUA8wF/Vz8ESMngrb5BLp0ivks\n2YzieQjK6Hm2gqDJL4ltIYmfQIUvDX5qWCqDP4nC90phFEaumEBVqyiKZwAWBgq/VNzvw4f9ufi6\nVPgSH/KeaZny8JO0sVQWYCIffnF8Rstgd2kyVW1lzcfgdwwK+czQNnjwLpEsT7yS+FH02Hgl0zLT\nx1JZgL5LJ0qWTv/gj+HO2tGTXT/G3lDmEbQdKY3svgbGrXZ6ZDPKvglCIoGBENiXpSMNfupYKgvQ\n6BgoCqwVw6vyQQG1/Qo/oyhkM/4llpeV8loe3TD76aVumh1j7DLby72l66ZU9xJPRNC2M6rwOwal\nYpZMQseQZD9LZQXEoR6ZgDr4bvqVJUcUftfokc9nAmvqLytelUBFgblxqqvk4cPvGmYi9yNI5oNX\n8bRmW5fqPmUslcFvRCiNLPCqmNnVzUQHKb3cMx29h2lZY+McXufado1eottCEi+epRU8VpKS5LJU\nVqDVNiKngIkOuc+NkXAj57Xb1s+v6hm0lS4diQ/j0jJN06LV6UmFnzKWxgrohknXMCMbfE+Fn3A3\nhpdLx6usgvuafWmZCW8LSbyMK60gK2Wmk6Ux+JNsugI7pSyjKGNTEZOsagcVM4eD0aEUvsvgW5Yl\nXToSX8Q4cQdtpcFPJ0tjBSbZdAVik1J2SNValn1GZ5Jrx3j58P0GYj6XIZ/LDLWF0bOwLLnpSuJN\nMb8/aDtJirRk+VkaKzDJpivBaM56z3SMXEJz8MHbpeNVOE0wukNXpHUmdQOaJH5y2QwKwz785oQC\nTLLcLI1FnOS0K0GpOGzwRaXMZCv88YegDCbG8e1ULg4fgpLkk78k80FRFPK5zFCWTr98hzT4qWJp\nrIBXQbAwlIs5Ot0ePdPusF0j+Qd+eB2C0g/aemxO2z/5JffkL8n8KOSzwwa/IxV+GlkaiziNS2ew\n4cg2bmlQtV5pmf2StR6+1fJaDqNn9V05g0qZyW0LSfzkc5mxLh3pw08XS2MFpnHpjJYUSPJ5tgLv\ntEz/U4hGc/H1ftXQ5LaFJH5GFX6jLU+7SiNLY/CnUvgjB3+koTpkLpuhkM/sz9IJKGg1OvnJ82wl\nYSjkMkN1m2RaZjpZGiswyQHmAi8jl2SXDtirnX15+H0ffkiDnwL3liR+CvnM0LnQslJmOlkaKxCU\nfeLH6A5TPSVnuJbHHILSbBsUnHz7cZRG6umkIWNJEj+FXJaeafUTHwZpmdKHnyaWz+BPoChG/dZJ\nPs/WjdhfYFpW/3fNjuGbKjfq++/n4UuFL/FhUE/HMfgdnWxGkSvDlLE032ajPXnt7dEqkd0En2fr\nplzMYVnQ6Q5nT/hNiqO1hdIy+UniJT9SMbPZNigVc4ktLy4Zz9JYgWZHnzgFbLQOfFqMnHBvifiG\nZVm0Ov4VRUfPB5B5+JIwiLOfRYZbs23IHPwUsjQWsTFFBxutO9P34Sdd4a+NuKp0k55p+U6MQuGL\n9E1dBm0lIRAKv+P0l8YEpcoly89SWIFez6TT7U3cwUarRKYlFXE0GB0mVU6sClptuw06uqylIwlm\ncOpVD93oYfRMefhJClkKi7jXmqw0sqBvGFMWtK2M7LYNU37CU+EnvC0k8SJWgF3d7Pc3mZKZPpbC\nCjRa0+3q26fwDZGHn2xVWxpx6YgJzSsHH8b48FPi3pLEi1gBdo3eVJsgJcvNUhh8ofAn9eHnshkK\nuYyrtEI6VO3oIShBZRUA1opZFNc1Ii0z6W0hiZeiKy1T7rJNL0thBfaa07l0wFbDrRGFnxYfvhiA\nYfYqZBSFtWKOZj9LJ/llJiTxM0jL7LkOP5EGP20sxTfad+lM0cHKxRx1Z+IQboxiwt0Yo1k6YZVX\nuZil1RluC+nSkfjRD9rqJk1L7rJNK76WQ1XVDPBx4DKgA7xP07THXK+/G7gJsIDPaJr2iaBrxrHX\n6gLT1d4uF3OcOdfCsqy+Syfpqna0RHLY3cilYp7na23AFc9IeFtI4qXg2nglRIJ06aSPICvwLqCg\nadrVwIeAm0de/yhwPXAN8EFVVbeca4o+1+xj2iwdsAOZPdOia5h0jHRsNhoEYIcVftApROVilrZT\nkkG6dCRh6JdWMHpTHUYkWW6CrMA1wO0AmqbdA1wx8roObAFlQMFW+tcAf+lzzT6ED38qhe8qr9BX\n+AnfbLRWzKIog522YRV+eS2PBbQ7dk51PpeRW+Qlvrhr6bSmKGQoWW6CLOIGUHP93HNcNoKbgXuB\nB4Avapq2G+KafexNmZYJwwXUuoZJLpshk3Ajl1EUu2Lmvo1X/gPRnYvfNUzpzpEE4g7aysNP0kvQ\nN1oDqq6fM5qmmQCqqp4APgCcBJrAv1VV9T1+13ghgrYXH9/iQHUt0gMIDh8oA1AsF7CAYiHL9nbV\n/6IlxX3f6+UC7W6P7e0qhmlXzTxxfMs3CHtwy26LtXIR04S1Yi4VbbHqxNkWe86qOJvL0sMejyeO\nb7G5XoztM6dB9ovJCDL4dwI3ALepqnolcL/rtTWgB3Q0TTNVVT2D7d7xu2YsImjbbnTYGTnwIyxW\nz+6wzzxbo9nSyWUVdnbqE/2tRbK9XR2677V8lmfrHXZ26uzW2+RzGXbPN33/hmLZbfH0szWaHZ1i\nPpuKtlhl4m6Lvbod5K/V25zbtf/d3GvTdcbmMiH7xYCoE1+Qwf88cL2qqnc6P9+oqup7gXVN0z6t\nquqtwF2qqraBR4FbsCeBoWuCbmKvpVPIZ8hlJ3c9uAuodY1eas5wLa/l6Oh2bZOg0sgCt3tL102q\npULctylJOG4ffrNtTD0eJcuJr/XQNM0C3j/y64ddr38M+NiYS0ev8WWvqU+d8+sur6AbJpVSOgJO\n7oms2TFYD/Fc7qJrXcOUlTIlgbjTMhvt6cejZDlZCkuw19KnDhCVXAXUOnp6ApXuE6xanWgKf6+t\nY/TS0xaS+Bgo/F7ofiZJHkthCZptfeoOJq5vtA3HyKXHpQOwu9fB6Fm+hdNGr6k1bP+rLI0sCSLv\nMvjNgEN2JMllKQy+ZU2/jVsY/N1GB0h+Dr5ApGCedQJpYQaimBTO79ltIV06kiAURaGQy7Db1LEs\nuekqrSyNJZhWUQyUsK1qU6PwnYHXN/hhFH5xtC2W5muWLDH5XKYvEqTCTydLYwlm5cPfbaTLyInd\nx2fPt4DgsgrgXu1Il44kPIV8lk7XLksid9mmk6WxitO6dIoFuwzBbsrcGGIijKTwXX5/SE9bSOLF\nLZKkSyedLI0lmLaDZRSFUmFQIjktqnbgw28N/exHPpcll1X6bZEW95YkXtxjZpq6VpLlZXkM/gw6\nWHkth+X8Oy0uHTERvlDvDP0c5rq0tYUkXoqulWAY16EkeSyNJZjFRg93ymJaDvwQE6FlDf8cRBrb\nQhIv+SGXjvThp5GlMfgzUfhuI5cSVTu6tA6t8F3XyVr4kjC4hYF06aSTpbEEs+hgblWbFiNn++Nd\nymsShZ+StpDEy1DQVhr8VLI0lmAWaWDuTpomN4Z7Mgyr8IcmP5mlIwmBe8xIg59OlsYSzKKDpVXV\nutsmbDu5J4a0VA6VxEtB+vBTz1JYxVw2MxMDPezSSY+RE8Y7l1VCP5dU+JKoCIWvYB+vKUkfS2EJ\n1sv5mZy5OhS0TZGRE+6uKHsVhtxbKZr8JPEh4l7ltVzijweVjGcprOJGZTYHdAwbuaV4tJkgnqsU\nIc5RSunkJ4kPofDDVGSVJJOlsATv+wevnMnfKac091wY/EgKP6XuLUl8CJEkDz9JL0th8C9Xj8zk\n76QxLRMGxjtKYDuNexIk8VJwuXQk6SRVliCtaZkTKfyUtoUkPkQ/kYXT0kuqDH5a0zLFEjuK8kpr\nW0jiIy8VfupJlSVIqxuj79KZ2IefnraQxEdf4UuDn1pSZQnSmod/waEyivP/sIhqhxlFGSrNIJF4\ncbBaBGB7q7TgO5HERaqm8nwuQz6XweiZ5LLpySO+aHudj/zW1WytF0NfUyrYX61MyZSE5cTRKn/w\nm1dxeGNt0bciiYlUGXywVX6n25vJRq5l4mDEQZjJKKwVsqlybUni54hU96kmdQZ/o1ygmdUXfRtL\nwUalIHdMSiSSPqkz+O/7hZ9C75mLvo2l4Dd/8acXfQsSiWSJSJ3BP3G0uuhbWBouuWBj0bcgkUiW\nCOnglUgkkhVBGnyJRCJZEaTBl0gkkhVBGnyJRCJZEaTBl0gkkhVBGnyJRCJZEaTBl0gkkhVBGnyJ\nRFuyMMYAAAQ2SURBVCJZEaTBl0gkkhXBd6etqqoZ4OPAZUAHeJ+maY85rx0FPud6+2uA3wU+Dfwx\n8DLABH5d0zRt9rcukUgkkigEKfx3AQVN064GPgTcLF7QNO05TdPepGnam4CbgHuxjf3bgIqmadcC\n/xT4/VjuXCKRSCSRCDL41wC3A2iadg9wxegbVFVVgH8BvF/TNAtoAZvO7zeB7kzvWCKRSCQTEWTw\nN4Ca6+ee4+ZxcwPw95qmPeL8fCewBjwEfBL4o1ncqEQikUimI8jg1wB3+cmMpmmjtYd/GfiU6+ff\nAe7UNE3F9uvfqqpqYeo7lUgkEslUBJVHvhNbwd+mquqVwP1j3nOFpml3u36uMFgVnAPyQNABs8r2\ntixrLJBtMUC2xQDZFgNkW0yGYlmW54uOH15k6QDcCLwOWNc07dOqqm4Df6Vp2mtd12wBnwUOYxv7\nP9Q07XNIJBKJZKH4GnyJRCKRpAe58UoikUhWBGnwJRKJZEWQBl8ikUhWBGnwJRKJZEUISsuMFb9a\nPauCqqo/B/yBpmlvUlX1UuAW7BpEfw/8Y2f3cupRVTUPfAY4CRSBfwb8iBVsD1VVs9hlSl4GWMBv\nYo+PW1ixthCoqnoEu3zLW7Db4BZWsC1UVf0+sOv8+DjwfxOhLRat8D1r9awCqqr+DvbALjq/+ihw\nk6ZpbwAU4BcXdW8L4JeBHefZ3w78f9j9YRXb4xcA06lH9U+A/4vVbQshBj4JNLCffSXHiaqqawCi\nhpmmaf8jEdti0QY/sFZPynkU+IfYXxTAazVN+1vn338JvHUhd7UYbgM+7Pw7A+isaHtomvZfgN9w\nfrwEewPj61axLRw+Avwr4Bnn55XsF8CrgbKqqn+lqupXnc2wkdpi0QY/TK2e1KJp2n8GDNevFNe/\n97CLz60EmqY1NE3bU1W1im38/wnD/XPV2qOnquotwP8L/Ckr2jdUVf017JXfV5xfKaxoW2CvcD6i\nadrbsN18fzryemBbLNq4hqnVs0q4n70KnF/UjSwCVVUvBr4G/Immaf+eFW8PTdN+DVCBf41dkFCw\nSm1xI3C9qqpfx6nNBWy7Xl+ltngYx8g7xSqfB466Xg9si0Ub/DuBdwD41OpZJX6gquobnX//PPC3\nfm9OE86BOl8BfkfTtFucX69ke6iq+iuqqv6e82ML6AHfW8W20DTtjZqmXeecu3Ef8KvA7avYFtiT\n380AqqpeiG3gvxKlLRaapQN8Hnv2vtP5+cZF3swCEVH1DwKfdqqL/hD4T4u7pblzE/Zy9MOqqgpf\n/m8D/2IF2+M/AbeoqvoN7HpUv41dbnxV+4Ybi9UdJ38MfFZVVWHUb8RW+aHbQtbSkUgkkhVh0S4d\niUQikcwJafAlEolkRZAGXyKRSFYEafAlEolkRZAGXyKRSFYEafAlEolkRZAGXyKRSFYEafAlEolk\nRfj/AVqKnSI9NotsAAAAAElFTkSuQmCC\n",
+ "text": [
+ ""
+ ]
+ }
+ ],
+ "prompt_number": 16
+ },
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Pass in any file of code"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "def reverse_dict_match(a_dictionary, a_list):\n",
+ " \"\"\"Pass this function a dictionary and a list. it will reverse the order of the dict\n",
+ " and match the first values of the list with the dict.\"\"\"\n",
+ " reversed_dict = dict((v,k) for k,v in a_dictionary.items())\n",
+ " return [(reversed_dict.get(x),y) for x,y in a_list]\n",
+ "\n",
+ "def check_code_file(a_file, corp_train, corp_answer):\n",
+ " \n",
+ " # Ingest and featurizes file\n",
+ " request = Corpus([a_file])\n",
+ " request_df = request.compl_df_build()\n",
+ "\n",
+ " # Run model\n",
+ " model_created = RandomForestClassifier(40)\n",
+ " model_created.fit(corp_train, corp_answer)\n",
+ " predicted = model_created.predict(request_df.values)\n",
+ " predict_prob = model_created.predict_proba(request_df.values)\n",
+ " \n",
+ " #Pretty response\n",
+ " answer_list = list(zip(model_created.classes_, predict_prob[0]))\n",
+ " answer_list.sort(key=lambda x: x[1], reverse=True)\n",
+ " return reverse_dict_match(hit_num, answer_list)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [],
+ "prompt_number": 17
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "check_code_file('test/22', corp_train, corp_answer)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "metadata": {},
+ "output_type": "pyout",
+ "prompt_number": 22,
+ "text": [
+ "[('java', 0.52500000000000002),\n",
+ " ('ruby', 0.17499999999999999),\n",
+ " ('clojure', 0.10000000000000001),\n",
+ " ('scheme', 0.074999999999999997),\n",
+ " ('haskell', 0.074999999999999997),\n",
+ " ('python', 0.050000000000000003),\n",
+ " ('scala', 0.0),\n",
+ " ('javascript', 0.0),\n",
+ " ('ocaml', 0.0),\n",
+ " ('perl', 0.0),\n",
+ " ('php', 0.0)]"
+ ]
+ }
+ ],
+ "prompt_number": 22
+ },
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Pass in any code snippet"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "def check_code_snippet(code_snippet, corp_train, corp_answer):\n",
+ " request = Corpus()\n",
+ " code_snippet_df = pd.DataFrame(code_snippet, columns=['raw_text'])\n",
+ " code_snippet_df = request.feature_breakout(code_snippet_df)\n",
+ " request_df = request.clean_df(code_snippet_df, snippet='True')\n",
+ "\n",
+ " # Run model\n",
+ " model_created = RandomForestClassifier(50)\n",
+ " model_created.fit(corp_train, corp_answer)\n",
+ " predicted = model_created.predict(request_df.values)\n",
+ " predict_prob = model_created.predict_proba(request_df.values)\n",
+ " \n",
+ " #Pretty response\n",
+ " answer_list = list(zip(model_created.classes_, predict_prob[0]))\n",
+ " answer_list.sort(key=lambda x: x[1], reverse=True)\n",
+ " return reverse_dict_match(hit_num, answer_list)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [],
+ "prompt_number": 19
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "ocaml = \"\"\"| pid ->\n",
+ " Unix.close output;\n",
+ " let input = Unix.in_channel_of_descr input in fun () ->\n",
+ " let v = Marshal.from_channel input in\n",
+ " ignore (Unix.waitpid [] pid);\n",
+ " close_in input;\n",
+ " match v with `Res x -> x | `Exn e -> raise e\"\"\"\n",
+ "\n",
+ "check_code_snippet([ocaml], corp_train, corp_answer)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "metadata": {},
+ "output_type": "pyout",
+ "prompt_number": 20,
+ "text": [
+ "[('ocaml', 0.57999999999999996),\n",
+ " ('clojure', 0.14000000000000001),\n",
+ " ('scheme', 0.080000000000000002),\n",
+ " ('haskell', 0.080000000000000002),\n",
+ " ('python', 0.059999999999999998),\n",
+ " ('ruby', 0.040000000000000001),\n",
+ " ('perl', 0.02),\n",
+ " ('scala', 0.0),\n",
+ " ('java', 0.0),\n",
+ " ('javascript', 0.0),\n",
+ " ('php', 0.0)]"
+ ]
+ }
+ ],
+ "prompt_number": 20
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [],
+ "language": "python",
+ "metadata": {},
+ "outputs": [],
+ "prompt_number": 20
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [],
+ "language": "python",
+ "metadata": {},
+ "outputs": [],
+ "prompt_number": 20
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [],
+ "language": "python",
+ "metadata": {},
+ "outputs": [],
+ "prompt_number": 20
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [],
+ "language": "python",
+ "metadata": {},
+ "outputs": [],
+ "prompt_number": 20
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [],
+ "language": "python",
+ "metadata": {},
+ "outputs": [],
+ "prompt_number": 20
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/26 b/test/26
deleted file mode 100644
index 182f919..0000000
--- a/test/26
+++ /dev/null
@@ -1,35 +0,0 @@
-proc isaac::mix {a b c d e f g h} {
- set a [expr {($a ^ ($b << 11)) & 0xffffffff}]
- set d [expr {($d + $a) & 0xffffffff}]
- set b [expr {($b + $c) & 0xffffffff}]
-
- set b [expr {($b ^ ($c >> 2)) & 0xffffffff}]
- set e [expr {($e + $b) & 0xffffffff}]
- set c [expr {($c + $d) & 0xffffffff}]
-
- set c [expr {($c ^ ($d << 8)) & 0xffffffff}]
- set f [expr {($f + $c) & 0xffffffff}]
- set d [expr {($d + $e) & 0xffffffff}]
-
- set d [expr {($d ^ ($e >> 16)) & 0xffffffff}]
- set g [expr {($g + $d) & 0xffffffff}]
- set e [expr {($e + $f) & 0xffffffff}]
-
- set e [expr {($e ^ ($f << 10)) & 0xffffffff}]
- set h [expr {($h + $e) & 0xffffffff}]
- set f [expr {($f + $g) & 0xffffffff}]
-
- set f [expr {($f ^ ($g >> 4)) & 0xffffffff}]
- set a [expr {($a + $f) & 0xffffffff}]
- set g [expr {($g + $h) & 0xffffffff}]
-
- set g [expr {($g ^ ($h << 8)) & 0xffffffff}]
- set b [expr {($b + $g) & 0xffffffff}]
- set h [expr {($h + $a) & 0xffffffff}]
-
- set h [expr {($h ^ ($a >> 9)) & 0xffffffff}]
- set c [expr {($c + $h) & 0xffffffff}]
- set a [expr {($a + $b) & 0xffffffff}]
-
- return [list $a $b $c $d $e $f $g $h]
-}
diff --git a/test/27 b/test/27
deleted file mode 100644
index 902ec5c..0000000
--- a/test/27
+++ /dev/null
@@ -1,20 +0,0 @@
-proc twitter::follow {nick uhost hand chan argv} {
- if {![channel get $chan twitter]} { return }
-
- if {[string length $argv] < 1} {
- $twitter::output_cmd "PRIVMSG $chan :Usage: !follow "
- return
- }
-
- if {[catch {::twitlib::query $::twitlib::follow_url [list screen_name $argv]} result]} {
- $twitter::output_cmd "PRIVMSG $chan :Twitter failed or already friends with $argv!"
- return
- }
-
- if {[dict exists $result error]} {
- twitter::output $chan "Follow failed ($argv): [dict get $result error]"
- return
- }
-
- twitter::output $chan "Now following [dict get $result screen_name]!"
-}
\ No newline at end of file
diff --git a/test/33 b/test/33
new file mode 100644
index 0000000..5f0b483
--- /dev/null
+++ b/test/33
@@ -0,0 +1,56 @@
+#!/usr/local/bin/perl
+
+use English;
+use Carp;
+use Getopt::Long;
+
+sub Usage{
+ my $message = shift;
+
+ print STDERR $message, "\n" if $message;
+ print STDERR "\nUsage: $0 -d(ef) definition_file < source > newsource\n";
+
+ print STDERR <<'EOM';
+ -d(ef) filename : Specifies the definition file which is a set of pairs, each corresponding to a "replacement pattern", e.g.,
+ a A
+ b B
+ ...
+ z Z
+ would replace all lower cases with upper cases
+
+ -h(elp) : display this message
+
+EOM
+
+ exit(1);
+
+}
+
+if (! &GetOptions("help", "def=s") or
+ $opt_help) {
+ &Usage();
+}
+
+open(D, $opt_def) || die "can't open definition file:$opt_def\n";
+while () {
+ ($oldp, $newp) = split;
+ $dic{$oldp}=$newp;
+}
+close(D);
+
+$oldStr = "";
+$newStr ="";
+while () {
+ $oldStr = $_;
+ foreach $k (keys %dic) {
+ s/$k/$dic{$k}/g;
+ }
+
+ $newStr = $_;
+ if ($oldStr ne $newStr) {
+ print STDERR "\n";
+ print STDERR "old>>$oldStr";
+ print STDERR "new>>$newStr";
+ }
+ print;
+}
diff --git a/test_fixed.csv b/test_fixed.csv
new file mode 100644
index 0000000..a7f0fb5
--- /dev/null
+++ b/test_fixed.csv
@@ -0,0 +1 @@
+answers
1
4
4
4
9
9
9
2
2
2
11
1
11
11
3
3
10
10
7
7
1
7
5
5
6
1
8
8
8
8
4
\ No newline at end of file