1609 lines
157 KiB
Plaintext
1609 lines
157 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# NLP-LAB Exercise 02 by Jonas Weinz (2571421)\n",
|
||
"## links:\n",
|
||
"\n",
|
||
"* Article: https://miguelmalvarez.com/2017/03/23/how-can-machine-learning-and-ai-help-solving-the-fake-news-problem/\n",
|
||
" * corresponding code: https://github.com/kjam/random_hackery/blob/master/Attempting%20to%20detect%20fake%20news.ipynb\n",
|
||
"\n",
|
||
"* Tutorial on Datacamp: https://www.datacamp.com/community/tutorials/scikit-learn-fake-news\n",
|
||
"\n",
|
||
"* liar dataset paper: https://www.cs.ucsb.edu/~william/papers/acl2017.pdf\n",
|
||
" * dataset: https://www.cs.ucsb.edu/~william/data/liar_dataset.zip\n",
|
||
"\n",
|
||
"* Mex Vocabulary: http://jens-lehmann.org/files/2015/semantics_mex.pdf"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Dependencies for this Notebook:\n",
|
||
"* library [rdflib](https://github.com/RDFLib/rdflib)\n",
|
||
" * install: `pip3 install rdflib`\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 1,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Populating the interactive namespace from numpy and matplotlib\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"%pylab inline"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 2,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import pandas as pd\n",
|
||
"import numpy as np\n",
|
||
"import itertools\n",
|
||
"import sklearn.utils as sku\n",
|
||
"from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer, HashingVectorizer\n",
|
||
"from sklearn.model_selection import train_test_split\n",
|
||
"from sklearn.linear_model import PassiveAggressiveClassifier\n",
|
||
"from sklearn.naive_bayes import MultinomialNB\n",
|
||
"from sklearn import metrics\n",
|
||
"import matplotlib.pyplot as plt\n",
|
||
"from pprint import pprint as pp\n",
|
||
"from IPython.display import display, Markdown, Latex\n",
|
||
"import collections\n",
|
||
"import traceback\n",
|
||
"import os\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Tools used later"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def plot_confusion_matrix(cm, classes,\n",
|
||
" title,\n",
|
||
" normalize=False,\n",
|
||
" cmap=plt.cm.Blues):\n",
|
||
" fig_1, ax_1 = plt.subplots()\n",
|
||
" \"\"\"\n",
|
||
" See full source and example: \n",
|
||
" http://scikit-learn.org/stable/auto_examples/model_selection/plot_confusion_matrix.html\n",
|
||
" \n",
|
||
" This function prints and plots the confusion matrix.\n",
|
||
" Normalization can be applied by setting `normalize=True`.\n",
|
||
" \"\"\"\n",
|
||
" plt.imshow(cm, interpolation='nearest', cmap=cmap)\n",
|
||
" plt.title('Confusion Matrix for:\\n' + title)\n",
|
||
" plt.colorbar()\n",
|
||
" tick_marks = np.arange(len(classes))\n",
|
||
" plt.xticks(tick_marks, classes, rotation=45)\n",
|
||
" plt.yticks(tick_marks, classes)\n",
|
||
"\n",
|
||
" if normalize:\n",
|
||
" cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]\n",
|
||
" print(\"Normalized confusion matrix\")\n",
|
||
" else:\n",
|
||
" print('Confusion matrix, without normalization')\n",
|
||
"\n",
|
||
" thresh = cm.max() / 2.\n",
|
||
" \n",
|
||
" pp(cm)\n",
|
||
" \n",
|
||
" for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):\n",
|
||
" plt.text(j, i, cm[i, j],\n",
|
||
" horizontalalignment=\"center\",\n",
|
||
" color=\"white\" if cm[i, j] > thresh else \"black\")\n",
|
||
"\n",
|
||
" plt.tight_layout()\n",
|
||
" plt.ylabel('True label')\n",
|
||
" plt.xlabel('Predicted label')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def test_classifier(labels, title, Xt, yt, clf):\n",
|
||
" pred = clf.predict(Xt)\n",
|
||
" score = metrics.accuracy_score(yt, pred)\n",
|
||
" pp(\"score: \" + str(score))\n",
|
||
" cm = metrics.confusion_matrix(yt, pred, labels=labels)\n",
|
||
" plot_confusion_matrix(cm, classes=labels, title=title)\n",
|
||
" return cm"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"\"\\nfrom rdflib import Graph, Literal, BNode, RDF, Namespace\\nfrom rdflib.namespace import FOAF, DC, XSD\\n\\nmexcore = Namespace('http://mex.aksw.org/mex-core#')\\nmexperf = Namespace('http://mex.aksw.org/mex-perf#')\\nmexalgo = Namespace('http://mex.aksw.org/mex-algo#')\\nprov = Namespace('http://www.w3.org/ns/prov#')\\n\\ndef create_mex_graph():\\n graph = Graph()\\n graph.bind(mexcore)\\n graph.bind(mexperf)\\n graph.bind(mexalgo)\\n graph.bind(prov)\\n graph.bind(FOAF)\\n graph.bind(DC)\\n graph.bind(XSD)\\n \\n return graph\\n\\ndef mex_performance(experiment, model, dataset, performance, phase='Train', graph=create_mex_graph()):\\n \\n p = BNode()\\n \\n\""
|
||
]
|
||
},
|
||
"execution_count": 5,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"'''\n",
|
||
"from rdflib import Graph, Literal, BNode, RDF, Namespace\n",
|
||
"from rdflib.namespace import FOAF, DC, XSD\n",
|
||
"\n",
|
||
"mexcore = Namespace('http://mex.aksw.org/mex-core#')\n",
|
||
"mexperf = Namespace('http://mex.aksw.org/mex-perf#')\n",
|
||
"mexalgo = Namespace('http://mex.aksw.org/mex-algo#')\n",
|
||
"prov = Namespace('http://www.w3.org/ns/prov#')\n",
|
||
"\n",
|
||
"def create_mex_graph():\n",
|
||
" graph = Graph()\n",
|
||
" graph.bind(mexcore)\n",
|
||
" graph.bind(mexperf)\n",
|
||
" graph.bind(mexalgo)\n",
|
||
" graph.bind(prov)\n",
|
||
" graph.bind(FOAF)\n",
|
||
" graph.bind(DC)\n",
|
||
" graph.bind(XSD)\n",
|
||
" \n",
|
||
" return graph\n",
|
||
"\n",
|
||
"def mex_performance(experiment, model, dataset, performance, phase='Train', graph=create_mex_graph()):\n",
|
||
" \n",
|
||
" p = BNode()\n",
|
||
" \n",
|
||
"'''"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Generate/Download Datasets we are working on\n",
|
||
"\n",
|
||
"* running bash script to download all needed data and store it into the `data` subfolder"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 6,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"================================================================================\n",
|
||
"checking whether unzip is installed\n",
|
||
"================================================================================\n",
|
||
"UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.\n",
|
||
"\n",
|
||
"Latest sources and executables are at ftp://ftp.info-zip.org/pub/infozip/ ;\n",
|
||
"see ftp://ftp.info-zip.org/pub/infozip/UnZip.html for other sites.\n",
|
||
"\n",
|
||
"Compiled with gcc 6.3.0 20170415 for Unix (Linux ELF).\n",
|
||
"\n",
|
||
"UnZip special compilation options:\n",
|
||
" ACORN_FTYPE_NFS\n",
|
||
" COPYRIGHT_CLEAN (PKZIP 0.9x unreducing method not supported)\n",
|
||
" SET_DIR_ATTRIB\n",
|
||
" SYMLINKS (symbolic links supported, if RTL and file system permit)\n",
|
||
" TIMESTAMP\n",
|
||
" UNIXBACKUP\n",
|
||
" USE_EF_UT_TIME\n",
|
||
" USE_UNSHRINK (PKZIP/Zip 1.x unshrinking method supported)\n",
|
||
" USE_DEFLATE64 (PKZIP 4.x Deflate64(tm) supported)\n",
|
||
" UNICODE_SUPPORT [wide-chars, char coding: UTF-8] (handle UTF-8 paths)\n",
|
||
" LARGE_FILE_SUPPORT (large files over 2 GiB supported)\n",
|
||
" ZIP64_SUPPORT (archives using Zip64 for large files supported)\n",
|
||
" USE_BZIP2 (PKZIP 4.6+, using bzip2 lib version 1.0.6, 6-Sept-2010)\n",
|
||
" VMS_TEXT_CONV\n",
|
||
" WILD_STOP_AT_DIR\n",
|
||
" [decryption, version 2.11 of 05 Jan 2007]\n",
|
||
"\n",
|
||
"UnZip and ZipInfo environment options:\n",
|
||
" UNZIP: [none]\n",
|
||
" UNZIPOPT: [none]\n",
|
||
" ZIPINFO: [none]\n",
|
||
" ZIPINFOOPT: [none]\n",
|
||
"================================================================================\n",
|
||
"successfully finished action: checking whether unzip is installed\n",
|
||
"================================================================================\n",
|
||
"================================================================================\n",
|
||
"downloading and unpacking https://www.cs.ucsb.edu/~william/data/liar_dataset.zip if not already existing\n",
|
||
"================================================================================\n",
|
||
"================================================================================\n",
|
||
"successfully finished action: downloading and unpacking https://www.cs.ucsb.edu/~william/data/liar_dataset.zip if not already existing\n",
|
||
"================================================================================\n",
|
||
"================================================================================\n",
|
||
"downloading and unpacking https://raw.githubusercontent.com/GeorgeMcIntire/fake_real_news_dataset/master/fake_or_real_news.csv.zip if not already existing\n",
|
||
"================================================================================\n",
|
||
"================================================================================\n",
|
||
"successfully finished action: downloading and unpacking https://raw.githubusercontent.com/GeorgeMcIntire/fake_real_news_dataset/master/fake_or_real_news.csv.zip if not already existing\n",
|
||
"================================================================================\n",
|
||
"================================================================================\n",
|
||
"downloading Helper script: script_dataset3.py\n",
|
||
"================================================================================\n",
|
||
"================================================================================\n",
|
||
"successfully finished action: downloading Helper script: script_dataset3.py\n",
|
||
"================================================================================\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"%%bash\n",
|
||
"./Task_2_gen_data.sh"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"----\n",
|
||
"## configuration 1"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 7,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"df_1 = pd.read_csv('data/fake_or_real_news.csv').set_index('Unnamed: 0')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"* display first 10 entries"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 8,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"(6335, 3)"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>title</th>\n",
|
||
" <th>text</th>\n",
|
||
" <th>label</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Unnamed: 0</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>8476</th>\n",
|
||
" <td>You Can Smell Hillary’s Fear</td>\n",
|
||
" <td>Daniel Greenfield, a Shillman Journalism Fello...</td>\n",
|
||
" <td>FAKE</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>10294</th>\n",
|
||
" <td>Watch The Exact Moment Paul Ryan Committed Pol...</td>\n",
|
||
" <td>Google Pinterest Digg Linkedin Reddit Stumbleu...</td>\n",
|
||
" <td>FAKE</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3608</th>\n",
|
||
" <td>Kerry to go to Paris in gesture of sympathy</td>\n",
|
||
" <td>U.S. Secretary of State John F. Kerry said Mon...</td>\n",
|
||
" <td>REAL</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>10142</th>\n",
|
||
" <td>Bernie supporters on Twitter erupt in anger ag...</td>\n",
|
||
" <td>— Kaydee King (@KaydeeKing) November 9, 2016 T...</td>\n",
|
||
" <td>FAKE</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>875</th>\n",
|
||
" <td>The Battle of New York: Why This Primary Matters</td>\n",
|
||
" <td>It's primary day in New York and front-runners...</td>\n",
|
||
" <td>REAL</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>6903</th>\n",
|
||
" <td>Tehran, USA</td>\n",
|
||
" <td>\\nI’m not an immigrant, but my grandparents ...</td>\n",
|
||
" <td>FAKE</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>7341</th>\n",
|
||
" <td>Girl Horrified At What She Watches Boyfriend D...</td>\n",
|
||
" <td>Share This Baylee Luciani (left), Screenshot o...</td>\n",
|
||
" <td>FAKE</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>95</th>\n",
|
||
" <td>‘Britain’s Schindler’ Dies at 106</td>\n",
|
||
" <td>A Czech stockbroker who saved more than 650 Je...</td>\n",
|
||
" <td>REAL</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4869</th>\n",
|
||
" <td>Fact check: Trump and Clinton at the 'commande...</td>\n",
|
||
" <td>Hillary Clinton and Donald Trump made some ina...</td>\n",
|
||
" <td>REAL</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2909</th>\n",
|
||
" <td>Iran reportedly makes new push for uranium con...</td>\n",
|
||
" <td>Iranian negotiators reportedly have made a las...</td>\n",
|
||
" <td>REAL</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" title \\\n",
|
||
"Unnamed: 0 \n",
|
||
"8476 You Can Smell Hillary’s Fear \n",
|
||
"10294 Watch The Exact Moment Paul Ryan Committed Pol... \n",
|
||
"3608 Kerry to go to Paris in gesture of sympathy \n",
|
||
"10142 Bernie supporters on Twitter erupt in anger ag... \n",
|
||
"875 The Battle of New York: Why This Primary Matters \n",
|
||
"6903 Tehran, USA \n",
|
||
"7341 Girl Horrified At What She Watches Boyfriend D... \n",
|
||
"95 ‘Britain’s Schindler’ Dies at 106 \n",
|
||
"4869 Fact check: Trump and Clinton at the 'commande... \n",
|
||
"2909 Iran reportedly makes new push for uranium con... \n",
|
||
"\n",
|
||
" text label \n",
|
||
"Unnamed: 0 \n",
|
||
"8476 Daniel Greenfield, a Shillman Journalism Fello... FAKE \n",
|
||
"10294 Google Pinterest Digg Linkedin Reddit Stumbleu... FAKE \n",
|
||
"3608 U.S. Secretary of State John F. Kerry said Mon... REAL \n",
|
||
"10142 — Kaydee King (@KaydeeKing) November 9, 2016 T... FAKE \n",
|
||
"875 It's primary day in New York and front-runners... REAL \n",
|
||
"6903 \\nI’m not an immigrant, but my grandparents ... FAKE \n",
|
||
"7341 Share This Baylee Luciani (left), Screenshot o... FAKE \n",
|
||
"95 A Czech stockbroker who saved more than 650 Je... REAL \n",
|
||
"4869 Hillary Clinton and Donald Trump made some ina... REAL \n",
|
||
"2909 Iranian negotiators reportedly have made a las... REAL "
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"display(df_1.shape)\n",
|
||
"display(df_1[:10])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"* create test dataset"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 9,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"X1, Xt1, y1, yt1 = train_test_split(df_1.drop('label', axis=1)['text'], df_1.label, test_size=0.25, random_state=4222)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 10,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"vectorizer_1 = TfidfVectorizer(stop_words='english', max_df=0.7)\n",
|
||
"vec_train_1 = vectorizer_1.fit_transform(X1)\n",
|
||
"vec_test_1 = vectorizer_1.transform(Xt1)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"* trying a Random Forest classifier "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 11,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"'score: 0.9960008419280152'\n",
|
||
"Confusion matrix, without normalization\n",
|
||
"array([[2342, 3],\n",
|
||
" [ 16, 2390]])\n",
|
||
"'score: 0.8478535353535354'\n",
|
||
"Confusion matrix, without normalization\n",
|
||
"array([[737, 82],\n",
|
||
" [159, 606]])\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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\n",
|
||
"text/plain": [
|
||
"<matplotlib.figure.Figure at 0x7f5d5e84a8d0>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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\n",
|
||
"text/plain": [
|
||
"<matplotlib.figure.Figure at 0x7f5d5e84a048>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"from sklearn.ensemble import RandomForestClassifier as RFC\n",
|
||
"clf_a = RFC(criterion='entropy', random_state=4222)\n",
|
||
"max_size=10000\n",
|
||
"clf_a.fit(vec_train_1[:max_size], y1[:max_size])\n",
|
||
"test_classifier(labels=[\"FAKE\",\"REAL\"], title=\"Configuration 1, model a -- train\", Xt=vec_train_1,yt=y1, clf=clf_a)\n",
|
||
"cm_1 = test_classifier(labels=[\"FAKE\",\"REAL\"], title=\"Configuration 1, model a -- test\", Xt=vec_test_1,yt=yt1, clf=clf_a)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"----\n",
|
||
"## configuration 2\n",
|
||
"\n",
|
||
"* read data"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 12,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/markdown": [
|
||
"----\n",
|
||
"#### Train Data:"
|
||
],
|
||
"text/plain": [
|
||
"<IPython.core.display.Markdown object>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>id</th>\n",
|
||
" <th>label</th>\n",
|
||
" <th>statement</th>\n",
|
||
" <th>subjects</th>\n",
|
||
" <th>speaker</th>\n",
|
||
" <th>job</th>\n",
|
||
" <th>state</th>\n",
|
||
" <th>party</th>\n",
|
||
" <th>#barely_true</th>\n",
|
||
" <th>#false</th>\n",
|
||
" <th>#half_true</th>\n",
|
||
" <th>#mostly_true</th>\n",
|
||
" <th>#pants_on_fire</th>\n",
|
||
" <th>context</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>2635.json</td>\n",
|
||
" <td>false</td>\n",
|
||
" <td>Says the Annies List political group supports ...</td>\n",
|
||
" <td>abortion</td>\n",
|
||
" <td>dwayne-bohac</td>\n",
|
||
" <td>State representative</td>\n",
|
||
" <td>Texas</td>\n",
|
||
" <td>republican</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>a mailer</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>1123.json</td>\n",
|
||
" <td>false</td>\n",
|
||
" <td>Health care reform legislation is likely to ma...</td>\n",
|
||
" <td>health-care</td>\n",
|
||
" <td>blog-posting</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>none</td>\n",
|
||
" <td>7.0</td>\n",
|
||
" <td>19.0</td>\n",
|
||
" <td>3.0</td>\n",
|
||
" <td>5.0</td>\n",
|
||
" <td>44.0</td>\n",
|
||
" <td>a news release</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>5</th>\n",
|
||
" <td>12465.json</td>\n",
|
||
" <td>true</td>\n",
|
||
" <td>The Chicago Bears have had more starting quart...</td>\n",
|
||
" <td>education</td>\n",
|
||
" <td>robin-vos</td>\n",
|
||
" <td>Wisconsin Assembly speaker</td>\n",
|
||
" <td>Wisconsin</td>\n",
|
||
" <td>republican</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>3.0</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>5.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>a an online opinion-piece</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>12</th>\n",
|
||
" <td>5947.json</td>\n",
|
||
" <td>false</td>\n",
|
||
" <td>When Mitt Romney was governor of Massachusetts...</td>\n",
|
||
" <td>history,state-budget</td>\n",
|
||
" <td>mitt-romney</td>\n",
|
||
" <td>Former governor</td>\n",
|
||
" <td>Massachusetts</td>\n",
|
||
" <td>republican</td>\n",
|
||
" <td>34.0</td>\n",
|
||
" <td>32.0</td>\n",
|
||
" <td>58.0</td>\n",
|
||
" <td>33.0</td>\n",
|
||
" <td>19.0</td>\n",
|
||
" <td>an interview with CBN News</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>16</th>\n",
|
||
" <td>620.json</td>\n",
|
||
" <td>true</td>\n",
|
||
" <td>McCain opposed a requirement that the governme...</td>\n",
|
||
" <td>federal-budget</td>\n",
|
||
" <td>barack-obama</td>\n",
|
||
" <td>President</td>\n",
|
||
" <td>Illinois</td>\n",
|
||
" <td>democrat</td>\n",
|
||
" <td>70.0</td>\n",
|
||
" <td>71.0</td>\n",
|
||
" <td>160.0</td>\n",
|
||
" <td>163.0</td>\n",
|
||
" <td>9.0</td>\n",
|
||
" <td>a radio ad</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" id label statement \\\n",
|
||
"0 2635.json false Says the Annies List political group supports ... \n",
|
||
"3 1123.json false Health care reform legislation is likely to ma... \n",
|
||
"5 12465.json true The Chicago Bears have had more starting quart... \n",
|
||
"12 5947.json false When Mitt Romney was governor of Massachusetts... \n",
|
||
"16 620.json true McCain opposed a requirement that the governme... \n",
|
||
"\n",
|
||
" subjects speaker job \\\n",
|
||
"0 abortion dwayne-bohac State representative \n",
|
||
"3 health-care blog-posting NaN \n",
|
||
"5 education robin-vos Wisconsin Assembly speaker \n",
|
||
"12 history,state-budget mitt-romney Former governor \n",
|
||
"16 federal-budget barack-obama President \n",
|
||
"\n",
|
||
" state party #barely_true #false #half_true #mostly_true \\\n",
|
||
"0 Texas republican 0.0 1.0 0.0 0.0 \n",
|
||
"3 NaN none 7.0 19.0 3.0 5.0 \n",
|
||
"5 Wisconsin republican 0.0 3.0 2.0 5.0 \n",
|
||
"12 Massachusetts republican 34.0 32.0 58.0 33.0 \n",
|
||
"16 Illinois democrat 70.0 71.0 160.0 163.0 \n",
|
||
"\n",
|
||
" #pants_on_fire context \n",
|
||
"0 0.0 a mailer \n",
|
||
"3 44.0 a news release \n",
|
||
"5 1.0 a an online opinion-piece \n",
|
||
"12 19.0 an interview with CBN News \n",
|
||
"16 9.0 a radio ad "
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"text/markdown": [
|
||
"----\n",
|
||
"#### Test Data:"
|
||
],
|
||
"text/plain": [
|
||
"<IPython.core.display.Markdown object>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>id</th>\n",
|
||
" <th>label</th>\n",
|
||
" <th>statement</th>\n",
|
||
" <th>subjects</th>\n",
|
||
" <th>speaker</th>\n",
|
||
" <th>job</th>\n",
|
||
" <th>state</th>\n",
|
||
" <th>party</th>\n",
|
||
" <th>#barely_true</th>\n",
|
||
" <th>#false</th>\n",
|
||
" <th>#half_true</th>\n",
|
||
" <th>#mostly_true</th>\n",
|
||
" <th>#pants_on_fire</th>\n",
|
||
" <th>context</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>11972.json</td>\n",
|
||
" <td>true</td>\n",
|
||
" <td>Building a wall on the U.S.-Mexico border will...</td>\n",
|
||
" <td>immigration</td>\n",
|
||
" <td>rick-perry</td>\n",
|
||
" <td>Governor</td>\n",
|
||
" <td>Texas</td>\n",
|
||
" <td>republican</td>\n",
|
||
" <td>30</td>\n",
|
||
" <td>30</td>\n",
|
||
" <td>42</td>\n",
|
||
" <td>23</td>\n",
|
||
" <td>18</td>\n",
|
||
" <td>Radio interview</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>11685.json</td>\n",
|
||
" <td>false</td>\n",
|
||
" <td>Wisconsin is on pace to double the number of l...</td>\n",
|
||
" <td>jobs</td>\n",
|
||
" <td>katrina-shankland</td>\n",
|
||
" <td>State representative</td>\n",
|
||
" <td>Wisconsin</td>\n",
|
||
" <td>democrat</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>a news conference</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>11096.json</td>\n",
|
||
" <td>false</td>\n",
|
||
" <td>Says John McCain has done nothing to help the ...</td>\n",
|
||
" <td>military,veterans,voting-record</td>\n",
|
||
" <td>donald-trump</td>\n",
|
||
" <td>President-Elect</td>\n",
|
||
" <td>New York</td>\n",
|
||
" <td>republican</td>\n",
|
||
" <td>63</td>\n",
|
||
" <td>114</td>\n",
|
||
" <td>51</td>\n",
|
||
" <td>37</td>\n",
|
||
" <td>61</td>\n",
|
||
" <td>comments on ABC's This Week.</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>5</th>\n",
|
||
" <td>5962.json</td>\n",
|
||
" <td>true</td>\n",
|
||
" <td>Over the past five years the federal governmen...</td>\n",
|
||
" <td>federal-budget,pensions,retirement</td>\n",
|
||
" <td>brendan-doherty</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>Rhode Island</td>\n",
|
||
" <td>republican</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>a campaign website</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>6</th>\n",
|
||
" <td>7070.json</td>\n",
|
||
" <td>true</td>\n",
|
||
" <td>Says that Tennessee law requires that schools ...</td>\n",
|
||
" <td>county-budget,county-government,education,taxes</td>\n",
|
||
" <td>stand-children-tennessee</td>\n",
|
||
" <td>Child and education advocacy organization.</td>\n",
|
||
" <td>Tennessee</td>\n",
|
||
" <td>none</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>in a post on Facebook.</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" id label statement \\\n",
|
||
"0 11972.json true Building a wall on the U.S.-Mexico border will... \n",
|
||
"1 11685.json false Wisconsin is on pace to double the number of l... \n",
|
||
"2 11096.json false Says John McCain has done nothing to help the ... \n",
|
||
"5 5962.json true Over the past five years the federal governmen... \n",
|
||
"6 7070.json true Says that Tennessee law requires that schools ... \n",
|
||
"\n",
|
||
" subjects speaker \\\n",
|
||
"0 immigration rick-perry \n",
|
||
"1 jobs katrina-shankland \n",
|
||
"2 military,veterans,voting-record donald-trump \n",
|
||
"5 federal-budget,pensions,retirement brendan-doherty \n",
|
||
"6 county-budget,county-government,education,taxes stand-children-tennessee \n",
|
||
"\n",
|
||
" job state party \\\n",
|
||
"0 Governor Texas republican \n",
|
||
"1 State representative Wisconsin democrat \n",
|
||
"2 President-Elect New York republican \n",
|
||
"5 NaN Rhode Island republican \n",
|
||
"6 Child and education advocacy organization. Tennessee none \n",
|
||
"\n",
|
||
" #barely_true #false #half_true #mostly_true #pants_on_fire \\\n",
|
||
"0 30 30 42 23 18 \n",
|
||
"1 2 1 0 0 0 \n",
|
||
"2 63 114 51 37 61 \n",
|
||
"5 1 2 1 1 0 \n",
|
||
"6 0 0 0 0 0 \n",
|
||
"\n",
|
||
" context \n",
|
||
"0 Radio interview \n",
|
||
"1 a news conference \n",
|
||
"2 comments on ABC's This Week. \n",
|
||
"5 a campaign website \n",
|
||
"6 in a post on Facebook. "
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"text/markdown": [
|
||
"----\n",
|
||
"#### Valid Data:"
|
||
],
|
||
"text/plain": [
|
||
"<IPython.core.display.Markdown object>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>id</th>\n",
|
||
" <th>label</th>\n",
|
||
" <th>statement</th>\n",
|
||
" <th>subjects</th>\n",
|
||
" <th>speaker</th>\n",
|
||
" <th>job</th>\n",
|
||
" <th>state</th>\n",
|
||
" <th>party</th>\n",
|
||
" <th>#barely_true</th>\n",
|
||
" <th>#false</th>\n",
|
||
" <th>#half_true</th>\n",
|
||
" <th>#mostly_true</th>\n",
|
||
" <th>#pants_on_fire</th>\n",
|
||
" <th>context</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>7891.json</td>\n",
|
||
" <td>false</td>\n",
|
||
" <td>Says Having organizations parading as being so...</td>\n",
|
||
" <td>campaign-finance,congress,taxes</td>\n",
|
||
" <td>earl-blumenauer</td>\n",
|
||
" <td>U.S. representative</td>\n",
|
||
" <td>Oregon</td>\n",
|
||
" <td>democrat</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>a U.S. Ways and Means hearing</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>5</th>\n",
|
||
" <td>9416.json</td>\n",
|
||
" <td>false</td>\n",
|
||
" <td>Says when armed civilians stop mass shootings ...</td>\n",
|
||
" <td>guns</td>\n",
|
||
" <td>jim-rubens</td>\n",
|
||
" <td>Small business owner</td>\n",
|
||
" <td>New Hampshire</td>\n",
|
||
" <td>republican</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>in an interview at gun shop in Hudson, N.H.</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>6</th>\n",
|
||
" <td>6861.json</td>\n",
|
||
" <td>true</td>\n",
|
||
" <td>Says Tennessee is providing millions of dollar...</td>\n",
|
||
" <td>education,state-budget</td>\n",
|
||
" <td>andy-berke</td>\n",
|
||
" <td>Lawyer and state senator</td>\n",
|
||
" <td>Tennessee</td>\n",
|
||
" <td>democrat</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>a letter to state Senate education committee c...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>7</th>\n",
|
||
" <td>1122.json</td>\n",
|
||
" <td>false</td>\n",
|
||
" <td>The health care reform plan would set limits s...</td>\n",
|
||
" <td>health-care</td>\n",
|
||
" <td>club-growth</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>none</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>5</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>a TV ad</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>8</th>\n",
|
||
" <td>13138.json</td>\n",
|
||
" <td>true</td>\n",
|
||
" <td>Says Donald Trump started his career back in 1...</td>\n",
|
||
" <td>candidates-biography,diversity,housing</td>\n",
|
||
" <td>hillary-clinton</td>\n",
|
||
" <td>Presidential candidate</td>\n",
|
||
" <td>New York</td>\n",
|
||
" <td>democrat</td>\n",
|
||
" <td>40</td>\n",
|
||
" <td>29</td>\n",
|
||
" <td>69</td>\n",
|
||
" <td>76</td>\n",
|
||
" <td>7</td>\n",
|
||
" <td>the first presidential debate</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" id label statement \\\n",
|
||
"2 7891.json false Says Having organizations parading as being so... \n",
|
||
"5 9416.json false Says when armed civilians stop mass shootings ... \n",
|
||
"6 6861.json true Says Tennessee is providing millions of dollar... \n",
|
||
"7 1122.json false The health care reform plan would set limits s... \n",
|
||
"8 13138.json true Says Donald Trump started his career back in 1... \n",
|
||
"\n",
|
||
" subjects speaker \\\n",
|
||
"2 campaign-finance,congress,taxes earl-blumenauer \n",
|
||
"5 guns jim-rubens \n",
|
||
"6 education,state-budget andy-berke \n",
|
||
"7 health-care club-growth \n",
|
||
"8 candidates-biography,diversity,housing hillary-clinton \n",
|
||
"\n",
|
||
" job state party #barely_true #false \\\n",
|
||
"2 U.S. representative Oregon democrat 0 1 \n",
|
||
"5 Small business owner New Hampshire republican 1 1 \n",
|
||
"6 Lawyer and state senator Tennessee democrat 0 0 \n",
|
||
"7 NaN NaN none 4 5 \n",
|
||
"8 Presidential candidate New York democrat 40 29 \n",
|
||
"\n",
|
||
" #half_true #mostly_true #pants_on_fire \\\n",
|
||
"2 1 1 0 \n",
|
||
"5 0 1 0 \n",
|
||
"6 0 0 0 \n",
|
||
"7 4 2 0 \n",
|
||
"8 69 76 7 \n",
|
||
"\n",
|
||
" context \n",
|
||
"2 a U.S. Ways and Means hearing \n",
|
||
"5 in an interview at gun shop in Hudson, N.H. \n",
|
||
"6 a letter to state Senate education committee c... \n",
|
||
"7 a TV ad \n",
|
||
"8 the first presidential debate "
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"names = [\n",
|
||
" \"id\",\n",
|
||
" \"label\",\n",
|
||
" \"statement\",\n",
|
||
" \"subjects\",\n",
|
||
" \"speaker\",\n",
|
||
" \"job\",\n",
|
||
" \"state\",\n",
|
||
" \"party\",\n",
|
||
" \"#barely_true\",\n",
|
||
" \"#false\",\n",
|
||
" \"#half_true\",\n",
|
||
" \"#mostly_true\",\n",
|
||
" \"#pants_on_fire\",\n",
|
||
" \"context\"\n",
|
||
"]\n",
|
||
"\n",
|
||
"df_2_train = pd.read_csv(\"data/train.tsv\", delimiter='\\t', names=names)\n",
|
||
"df_2_test = pd.read_csv(\"data/test.tsv\", delimiter='\\t', names=names)\n",
|
||
"df_2_valid= pd.read_csv(\"data/valid.tsv\", delimiter='\\t', names=names)\n",
|
||
"\n",
|
||
"# use only 'False' and 'True' statements\n",
|
||
"df_2_train = df_2_train[df_2_train['label'].isin([\"false\",\"true\"])]\n",
|
||
"df_2_test = df_2_test[df_2_test['label'].isin([\"false\",\"true\"])]\n",
|
||
"df_2_valid = df_2_valid[df_2_valid['label'].isin([\"false\",\"true\"])]\n",
|
||
"\n",
|
||
"display(Markdown(\"----\\n#### Train Data:\"))\n",
|
||
"display(df_2_train.head())\n",
|
||
"display(Markdown(\"----\\n#### Test Data:\"))\n",
|
||
"display(df_2_test.head())\n",
|
||
"display(Markdown(\"----\\n#### Valid Data:\"))\n",
|
||
"display(df_2_valid.head())"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### tdidf vectorizer on new dataset\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 13,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"X2 = df_2_train['statement']\n",
|
||
"y2 = df_2_train['label']\n",
|
||
"Xt2 = df_2_test['statement']\n",
|
||
"yt2 = df_2_test['label']\n",
|
||
"Xv2 = df_2_valid['statement']\n",
|
||
"yv2 = df_2_valid['label']\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 14,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"vectorizer_2 = TfidfVectorizer(stop_words='english', max_df=0.7)\n",
|
||
"vec_train_2 = vectorizer_2.fit_transform(X2)\n",
|
||
"vec_test_2 = vectorizer_2.transform(Xt2)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 15,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Object `MLPClassifier` not found.\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"?MLPClassifier"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"* trying a MLP as classifier "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 16,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"MLPClassifier(activation='relu', alpha=0.0001, batch_size='auto', beta_1=0.9,\n",
|
||
" beta_2=0.999, early_stopping=False, epsilon=1e-08,\n",
|
||
" hidden_layer_sizes=(100,), learning_rate='constant',\n",
|
||
" learning_rate_init=0.001, max_iter=200, momentum=0.9,\n",
|
||
" nesterovs_momentum=True, power_t=0.5, random_state=4222,\n",
|
||
" shuffle=True, solver='adam', tol=0.0001, validation_fraction=0.1,\n",
|
||
" verbose=False, warm_start=False)"
|
||
]
|
||
},
|
||
"execution_count": 16,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"from sklearn.neural_network import MLPClassifier\n",
|
||
"clf_b = MLPClassifier(hidden_layer_sizes=(100,), random_state=4222)\n",
|
||
"clf_b.fit(vec_train_2, y2)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 17,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"'score: 0.9997275946608554'\n",
|
||
"Confusion matrix, without normalization\n",
|
||
"array([[1675, 1],\n",
|
||
" [ 0, 1995]])\n",
|
||
"'score: 0.5776805251641138'\n",
|
||
"Confusion matrix, without normalization\n",
|
||
"array([[109, 99],\n",
|
||
" [ 94, 155]])\n",
|
||
"'score: 0.6041666666666666'\n",
|
||
"Confusion matrix, without normalization\n",
|
||
"array([[ 92, 77],\n",
|
||
" [ 94, 169]])\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"array([[ 92, 77],\n",
|
||
" [ 94, 169]])"
|
||
]
|
||
},
|
||
"execution_count": 17,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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\n",
|
||
"text/plain": [
|
||
"<matplotlib.figure.Figure at 0x7f5d5e737f28>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAUAAAAEmCAYAAAATPUntAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3XmcXFWZ//HPtzp7AgQIm4EQhbAPu6goixsCgkFG/IEoIDjIqo47wgiyieOIIyIyYcSwyeIIDsqmogyLICD7TlgTCGTDkD3p7uf3xzmdVDrdXdWd6q6uvt93XvfVVefeOveprq4n55x777mKCMzMiqhU7wDMzOrFCdDMCssJ0MwKywnQzArLCdDMCssJ0MwKywlwAJE0XNLvJM2V9OvVqOdwSX+oZWz1IOkWSUf28LVnS5ol6Y1ax2X9hxNgHUj6jKQHJc2XND1/UT9Qg6o/BWwArBsRh/S0koi4KiL2qUE8K5G0t6SQdEO78h1y+R1V1nOGpCsrbRcR+0XEZT2IcxzwNWCbiNiwu6+3xuEE2MckfRX4T+BcUrIaB1wETKxB9ZsCz0VEcw3q6i0zgfdJWres7EjguVrtQMnq/G2PA2ZHxIwe7HvQauzX+lpEeOmjBVgLmA8c0sU2Q0kJ8vW8/CcwNK/bG5hGap3MAKYDn8/rvgcsBZblfRwDnAFcWVb3eCCAQfn5UcCLwDzgJeDwsvK7y163O/AAMDf/3L1s3R3AWcA9uZ4/AGM6eW9t8V8MnJjLmoDXgO8Cd5Rt+xNgKvA28Hdgj1y+b7v3+WhZHOfkOBYBm+eyL+T1Pwd+U1b/D4DbAbWL8SP59a25/sm5/BPAk8A/cr1bl73mZeBbwGPAkrbfr5f+v9Q9gCIt+cvb3NUXBDgTuA9YH1gP+CtwVl63d379mcBgYH9gIbB2Xt8+4XWaAIGROblsmddtBGybHy9PgMA6wFvA5/LrDsvP183r7wBeALYAhufn53Xy3toS4O7A33LZ/sBtwBfaJcDPAuvmfX4NeAMY1tH7KovjVWDb/JrB7RLgCFIr8yhgD2AWsHFXcZY93wJYAHw01/tNYAowJK9/GXgE2AQYnssuAi6q99+cl64Xd4H71rrArOi6i3o4cGZEzIiImaSW3efK1i/L65dFxM2kVsqWPYynFdhO0vCImB4RT3awzceB5yPiiohojoirgWeAA8u2+WVEPBcRi4DrgB272mlE/BVYR9KWwBHA5R1sc2VEzM77/BGpZVzpfU6OiCfza5a1q28h6fd4PnAlcHJETKtQX5v/B9wUEX/M9f4HKdnvXrbNBRExNf8OiIgTIuKEKuu3OnEC7FuzgTEVxoneAbxS9vyVXLa8jnYJdCEwqruBRMQC0hf7OGC6pJskbVVFPG0xjS17Xn6ktNp4rgBOAj4I3NB+paSvS3o6H9H+B2n4YEyFOqd2tTIi/kbq8ouUqKu10u8gIlrzvsp/B13u2/onJ8C+dS9pjOigLrZ5nXQwo824XNYTC0hdvzYrHdGMiNsi4qOk7u8zwCVVxNMW02s9jKnNFcAJwM25dbacpD1I3cxPk7r3o0njj2oLvZM6u5zaSNKJpJbk67n+aq30O5AkUne3/HfgaZUakBNgH4qIuaTB/p9JOkjSCEmDJe0n6d/zZlcDp0laT9KYvH3FUz468Qiwp6RxktYCTmlbIWkDSRMljSQl5fmkLnF7NwNb5FN3Bkn6f8A2wO97GBMAEfESsBdwager1yCNdc4EBkn6LrBm2fo3gfHdOdIraQvgbNLY4ueAb0rqsqte5jrg45I+LGkwaUxyCWl81hqYE2Afy+NZXwVOI33Bp5K6gr/Nm5wNPEg6ovg48FAu68m+/ghcm+v6OysnrVKO43VgDikZHd9BHbOBA0hf+tmkltMBETGrJzG1q/vuiOiodXsbcCvpoMUrwGJW7mK2neQ9W9JDlfaThxyuBH4QEY9GxPPAd4ArJA2tIs5nSYnzp6SDJwcCB0bE0i72ebGkiyvVbfWlCLfczayY3AI0s8JyAjSzwnICNLPCcgI0s8JyAmxg+aL/X0p6S9L9kvaQ9Gy942ozUKbVsoHLR4EbWD5h+GrS9bwL6hzLeNKECoMrXOpXi329lzQBwy5AC+ma3y9FxPQa1T+eGr0XSZNJ1xWftvqRWa25BdjYNgVe7ovkJ6mpt/fRDWsDk0iTO2xKmoXml/UMyBpUvWdjKMpCunTqetLJz7OBC3N5iXRS9CukKa4uB9bK68aTLrE6kjTTySzg1LzuGNIJwi2kqzi+x6qzmOwMPExKEL8mnRR9dl53FGVTXuWyADbPjyeTppC6mXRJ3UdIEyM8TJpFZipwRtlrX82vn5+X97XfBzWaVquD3+3OwLwaflarvJdcfjTwNGk2nNuATXO5gB/nz+9t0gns2wHHkiavWJrr+V29/w69tPus6x1AERbSnHeP5i/JSGAY8IG87mjS1ErvIk0icD1wRV7XlgAvIc0+sgPpEqyt8/r2CWZ5AgSGkJLql0lTOB2cv4jdSYBzgfeTkvSwXP8/5efbky5JO6hdrIPK6lu+D2o4rVYHv9+vAPfV8PPq6L1MzJ/T1jn+04C/5nUfI11pMzonw62Bjcp+j2fX+2/QS8eLu8B9YzfSjCLfiIgFEbE4Iu7O6w4Hzo+IFyNiPul63UPbzRjzvYhYFBGPkhLpDlXs872kL+oFkabOuh64v5tx/29E3BMRrTnmOyLi8fz8MdL4415V1lXzabUAJG1Pul76G916Z913HPD9iHg60rjgucCOkjYltfLWALYijas/HTUaj7Te5QTYNzYBXomOB9Q7mv5qEGm6/DY9mW7qHcBrEVF+lKu7UzattL2k90j6i6SZkuaSkkKlKarK46nptFqSNgduAb4cEXd1ss0e+d4r8yU9mcueLCvbo8r4NwV+IukfeXquOaTW3tiI+DNwIfAzYIakSZLW7KIu6yecAPvGVGBcJ/MAdjT9VTOpe7k6pgNj89RNbTYpe7zSVFmSOrr5T/tTBH4F3AhsEhFrkaa2rzRFVZuaTquVW15/Is2WfUVn20XEXRExKi/b5rJty8o6SpwdvZepwBcjYnTZMjzS5K5ExAURsQtpppwtWNEi9WkW/ZgTYN+4n5SQzpM0UtIwSe/P664G/lXSOyWNInWtru2ktdgd95IOkJyUp7GaSOqKt3kU2FbSjpKGkaaZr2QNYE5ELJa0G/CZsnUzSdNpvauT19ZsWi1JY4E/kw4k9caMKx29l4uBUyRtm2NYS9Ih+fG7c+t4MOk/lsWsmFrsTTr/nVidOQH2gYhoIY11bU46wjiNNBszwKWkyUHvJJ17thg4uQb7XEo68HEM6UY+nyUlmyV5/XOke4v8CXgeuLvjmlZyAnCmpHmkcbflsypHmtT0HOCe3E18b7t4ajmt1hdISeWMsq7s/B7U06GO3ktE3EC6kdI1kt4GngD2yy9Zk3Sg6i1St3428MO87hfANrme32L9ik+ELhBJfwMujgifM2eGW4ADmqS9JG2Yu5xHkk5dubXecZn1F76J88C2JambOpJ0M6BP+fQMsxXcBTazwnIX2MwKa8B1gUevs25sNHZcvcOwdoYM8v+1/dVjjzw0KyLWq1V9TWtuGtG8qOJ2sWjmbRGxb6322xMDLgFuNHYcv7zhL/UOw9oZv96IyhtZXWw0emj7K3RWSzQvYuiWn6643eJHflbtVUS9ZsAlQDOrMwlK/Wn2tM45AZpZ7VV/z/q6cgI0s9pb6RL0/ssJ0MxqTG4BmllBCY8BmllRyV1gMyswd4HNrLDcAjSzQvJ5gGZWaO4Cm1kx+TQYMyuyUmOMATZGmjazxtF2HmClpVI10qWSZkh6oqzsDEmvSXokL/uXrTtF0hRJz0r6WDWhOgGaWY3lLnClpbLJQEfTZf04InbMy80AkrYBDgW2za+5SFLFLOsEaGa1J1VeKoiIO0k3oK/GROCaiFgSES8BU1j5NrAdcgI0s9qrrgU4RtKDZcuxVdZ+kqTHchd57Vw2lnTz+jbTclmXfBDEzGqr+vMAZ0XErt2s/efAWUDknz8Cju5mHcs5AZpZ7fXSlSAR8eaKXegS4Pf56WvAJmWbbpzLuuQusJnVWM0Ogqxas7RR2dNPAm1HiG8EDpU0VNI7gQnA/ZXqcwvQzGqvBi1ASVcDe5PGCqcBpwN7S9qR1AV+GfgiQEQ8Kek64CmgGTgxIloq7cMJ0MxqS4LS6qeWiDisg+JfdLH9OcA53dmHE6CZ1Z5ngzGzwvK1wGZWWG4BmlkheT5AMysyuQVoZkUknADNrKiUlwbgBGhmNSZKJR8FNrOCchfYzArLCdDMisljgGZWVPIYoJkVmbvAZlZYToBmVkweAzSzovIYoJkVmrvAZlZcjZH/nADNrMbkFqCZFZjHAM2skITcArTK3rX+cNYeMZhlLcFjU+cB0FQSEzYcwdBBJZY0t/L8GwtpaQ2aSmKz9YczdHATEcELMxayaGlrnd9BMYwYUmL4kNSiWbS0lYVLWxlUEmsOb0KCllaYu7CZqHOc/Upj5D/fGL2eZr69lKenL1ipbOzaQ3l7YTOPvjqPtxc2M3btocvLFyxp4fGp85jy5kLGjxlej5ALZ1BJDB9SYvb8ZmbPb2bo4BJNJVhreBPzFrcwe34zS5a1MnJoY0wB3yfyGGClpT9wAqyjeYtbaGlZud2w9sjBzJy3FICZ85ay9sjBAAwf0sTbi5oBWLyslaGDSwxu6h9/RANZUwmWlX1GS5tbGTaoRFOTlpcvaW5l2GB/lcqVSqWKS3/QP6Kw5QY3lZZ/sZa1BIOb0ke0cEkL64xKyXDk0CaGDioxZJA/vt7W3BoMaSotv8nZ0EElSiXR3BIMHZQKhw0u0U++z/2HqlgqVSFdKmmGpCc6WPc1SSFpTH4uSRdImiLpMUk7VxNmn3xskkZLOqEv9jXwpGT4+luLaSqJf9pkDTZcK3WHw4NOva6lFRYsaWGdkYNYZ+QgmvN/TnMXNTNiSBPrjhqUkqM/i5XUqAs8Gdi3g7o3AfYBXi0r3g+YkJdjgZ9Xs4O++n9rNLBKApTkgzDtLGtpXd61HVzWzWoJeHHGIh6fOo8XZixkcFOJJcta6hlqYSxa1srs+c3MWdBMa6RWYUsrvLUwjQsuXtZKc6szYJtqkl81CTAi7gTmdLDqx8A3Wfm/nYnA5ZHcB4yWtFGlffRVAjwP2EzSI5IekHSXpBuBpySNL2/iSvq6pDPy480k3Srp7/k1W/VRvHXz1oJlrLfGEADWW2MIby1YBqSjw21/MuuvOYS3FzXT4u9cnyhpxc9hg0ssXtq6vAxg1NAmH5Fvp7fGACVNBF6LiEfbrRoLTC17Pi2XdamvWmDfBraLiB0l7Q3clJ+/JGl8F6+bBBwXEc9Leg9wEfCh9htJOpbU7GXDd2xc49B7z+YbjGDN4YMY1CR2Gr8m02Yv5vW3ljBhwxGst+YQlja38twbCwEYPqTEZuuPAGDR0hZemLGonqEXyugRgyhJBMHbi9LpLsMHlxgxJB35XbyslUXLnABXUt3xuTGSHix7PikiJnVapTQC+A6p+1sT9eqC3h8RL3W1gaRRwO7Ar8uay0M72jb/0iYBbP1POzVMu2jKmws7LH/69QWrlM1f3MKjr87r7ZCsA3MWNK9StjCfD2gdq3KMb1ZE7NqNajcD3gk8muvfGHhI0m7Aa8AmZdtunMu6VK8EWP4Nb2blrviw/LME/CMiduyzqMxs9fXStcAR8Tiw/vLdSC8Du0bErDykdpKka4D3AHMjYnqlOvtqDHAesEYn694E1pe0rqShwAEAEfE28JKkQ2D5Ye4d+iRaM+uxNB9g5aViPdLVwL3AlpKmSTqmi81vBl4EpgCX0MFB1470SQswImZLuicf7FhESnpt65ZJOhO4n9RkfabspYcDP5d0GjAYuAZoP/hpZv1MLRqAEXFYhfXjyx4HcGJ399FnXeCI+EwX6y4ALuig/CU6OA/IzPq3/nKpWyU+D8/Maku1aQH2BSdAM6spAU0Ncp26E6CZ1Zy7wGZWTO4Cm1lRCbcAzaywqjvPrz9wAjSzmnML0MyKyWOAZlZUHgM0s0LzGKCZFVaDNACdAM2sxnppOqze4ARoZjWVxgDrHUV1nADNrMZ8HqCZFZi7wGZWTD4P0MyKyucBmlmheQzQzArLLUAzKyaPAZpZUQm5BWhmxdXU6GOAktbs6oX5xuVmZqtokAZgly3AJ4EgHdVu0/Y8gHG9GJeZNSgNhGuBI2KTvgzEzAaOWvSAJV0KHADMiIjtctlZwESgFZgBHBURrytl3J8A+wMLc/lDFeOsMpBDJX0nP95Y0i49eUNmVgylkiouVZgM7Nuu7IcRsX1E7Aj8HvhuLt8PmJCXY4GfVxVnpQ0kXQh8EPhcLloIXFxN5WZWPCIfCa7wr5KIuBOY066s/NjDSNJwHKRW4eWR3AeMlrRRpX1UcxR494jYWdLDOYA5koZU8TozK6gqu8BjJD1Y9nxSREyq9CJJ5wBHAHNJjTOAscDUss2m5bLpXcZZRZDLJJXImVbSuqT+t5nZqpTOA6y0ALMiYteypWLyA4iIU/MxiquAk1Yn1GoS4M+A3wDrSfoecDfwg9XZqZkNXCKdB1hpqYGrgH/Oj18Dyg/cbpzLulSxCxwRl0v6O/CRXHRIRDzRzUDNrEB66ywYSRMi4vn8dCLwTH58I3CSpGuA9wBzI6LL7i9UfyVIE7CM1A2u6sixmRVXLc4DlHQ1sDdprHAacDqwv6QtScNwrwDH5c1vJp0CM4V0oPbz1eyjYgKUdCrwGeAGUuv2V5Kuiojvd+vdmFkhqEaTIUTEYR0U/6KTbQM4sbv7qKYFeASwU0QshOVHYB4GnADNrENNjX4lSJnp7bYbRIVDy2ZWbA1/KZykH5PG/OYAT0q6LT/fB3igb8Izs0YjanMpXF/oqgXYdqT3SeCmsvL7ei8cM2t4GgC3xYyIDgcbzcwqafgucBtJmwHnANsAw9rKI2KLXozLzBpUI3WBqzmnbzLwS9L72g+4Dri2F2MyswZX5aVwdVdNAhwREbcBRMQLEXEaKRGama1CSqfBVFr6g2pOg1mSJ0N4QdJxpOvr1ujdsMyskfWT/FZRNQnwX0nzbn2JNBa4FnB0bwZlZo2tv3RxK6lmMoS/5YfzWDEpqplZpxok/3V5IvQNrJhtdRURcXCvRGRmDU2q2XRXva6rFuCFfRZFDY0Y0sSO40fXOwxrZ+13r9a8ldZgGr4LHBG392UgZjZwNMqcedXOB2hmVhUxAFqAZmY9NahBmoBVJ0BJQyNiSW8GY2aNL02I2hgtwGruC7ybpMeB5/PzHST9tNcjM7OGVVLlpT+opqF6AXAAMBsgIh5lxb04zcxW0TYtfldLf1BNF7gUEa+0a9K29FI8ZtbgBAzqLxmugmoS4FRJuwEhqQk4GXiud8Mys0bWIPmvqgR4PKkbPA54E/hTLjMzW4UkSg2SAau5FngGcGgfxGJmA0SD5L+qZoS+hA6uCY6IY3slIjNraAIG9ZfDvBVUcxT4T8DtebkHWB/w+YBm1qlaHAWWdKmkGZKeKCv7oaRnJD0m6QZJo8vWnSJpiqRnJX2smjgrJsCIuLZsuQw4GNilmsrNrICqOAewygbiZGDfdmV/BLaLiO1JB2NPAZC0DWmobtv8movyQdsu9eSClXcCG/TgdWZWEKriXyURcSfpvuTlZX+IiOb89D5g4/x4InBNRCyJiJeAKcBulfZRzRjgW6wYAyzlgL5dMXozK6Q0BtgnuzqaFTdoG8vK9yyflsu61GUCVDr7eQfSfUAAWiOi00lSzcyg6muBx0h6sOz5pIiYVGX9pwLNwFU9CG+5LhNgRISkmyNiu9XZiZkVRzfuCzwrInbtdv3SUaTLcz9c1iB7DdikbLONWdFw61Q1DdVHJO3U3SDNrKCqOALc0/MEJe0LfBP4REQsLFt1I3CopKGS3glMAO6vVF9X9wQZlAcbdwIekPQCsCC9PSIidu7ZWzCzgaxW5wFKuhrYm9RVngacTjrqOxT4Y+5m3xcRx0XEk5KuA54idY1PjIiKcxZ01QW+H9gZ+MRqvQszK5xaXAkSEYd1UPyLLrY/h3Tr3qp1lQCVK32hOxWaWdGJUhWnufQHXSXA9SR9tbOVEXF+L8RjZg0u3ROk3lFUp6sE2ASMggZJ5WbWP6hxrgXuKgFOj4gz+ywSMxsQBkoLsEHegpn1NwNhPsAP91kUZjagNEj+6zwBRsScztaZmXVGgqYGyYC+MbqZ1VxjpD8nQDOrsXQtcGOkQCdAM6u5xkh/ToBmVnOiNADOAzQz6zbRs6nm68EJ0MxqrsoJUevOCdDMaq4x0p8ToJnVmM8DNLNCcxfYzAqrMdKfE6CZ9YIGaQA6AZpZbQmPAZpZYQk1SCfYCdDMaq5BGoBOgGZWW+lKkMbIgE6AZlZbglKDXAvnBNiPNAma8h9OSyu0xMrrBjfB4ub6xFYkF59+OPvtuR0z58xj10POBeDUL+7P0Qfvzsy35gNw+oU3ctvdTzFuo3V45PrTeO6VGQDc//jLfOmca+oWe3/hMUDrFpGS39J8L/vBJWgNaMuBJUFEZ6+2Wrrid/dx8bX/x3+fdcRK5T+98i/85xW3r7L9i9Nm8d5Dz+ur8Pq9NB9gvaOoToM0VAc+KSW8Nq2x4o9ocAmaW+sTVxHd89ALzJm7sN5hNDRV8a9iHdKlkmZIeqKs7BBJT0pqlbRru+1PkTRF0rOSPlZNnE6A/UTEyv9rNpVSUiwptQLd+Ku/4w7dk/uvPYWLTz+c0WsMX14+fuy63Hv1t/jDf3+Z9++0WR0j7D9KUsWlCpOBfduVPQEcDNxZXihpG+BQYNv8moskNVWMs5ooekLSlyQ9LemqTtbvLen3vbX/RhOkcb8hTWlpaw0OcuuvX7jk13exzYFn8J5Dz+ONWW9z3lcPBuCNWW+zxX7f5X2H/YBv/eh6Jp97FGuMHFbnaOurrQtcaakkIu4E5rQrezoinu1g84nANRGxJCJeAqYAu1XaR2+2AE8APhoRh/fiPgaUlkhjgG3jgBHpj2loU1pgxU/rWzPmzKO1NYgILr3+HnbdblMAli5rZs7cBQA8/PRUXpw2iwmbrl/PUPuBajrAAhgj6cGy5djV2OlYYGrZ82m5rEu9chBE0sXAu4BbJF0JHAQMAxYBn2+fwSXtBfwkPw1gz4iYJ+kbwKeBocANEXF6b8TbH5UES1uhpWVF2dAmWNLS+Wus92w4Zk3emPU2ABM/tANPvTAdgDFrj2LO3AW0tgbjx67L5uPW46Vps+oZav2p6hOhZ0XErpU36z29kgAj4jhJ+wIfBJYCP4qIZkkfAc4F/rndS74OnBgR90gaBSyWtA8wgdSMFXCjpD1zs3hAGlLWunO3t34u+/5R7LHLBMaMHsWUW8/irItvZs9dJrD9lhsTEbwyfQ4nn301AB/YeXP+7fiPs6y5hdbW4ORzruGtt4t9AKVO1wK/BmxS9nzjXNalvjgNZi3gMkkTSK27wR1scw9wfh4vvD4ipuUEuA/wcN5mFCkhrpIAc9P5WIBNxo2r/TvoI0srtO7c+usbR54yeZWyy357b4fb/vb2R/jt7Y/0ckSNpw5nwdwI/ErS+cA7SLni/kov6oujwGcBf4mI7YADSV3hlUTEecAXgOHAPZK2Iv0Ovx8RO+Zl84j4RUc7iIhJEbFrROy63pj1eu+dmFl1VMVSqQrpauBeYEtJ0yQdI+mTkqYB7wNuknQbQEQ8CVwHPAXcSupRVmwy9FULsK0pelRHG0jaLCIeBx6X9G5gK+A24CxJV0XEfEljgWURMaMPYjaz1VCLK0Ei4rBOVt3QyfbnAOd0Zx99kQD/ndQFPg24qZNtviLpg0Ar8CRwS0QskbQ1cG+eXns+8FnACdCsn2uUK0F6LQFGxPj8cBawRdmq0/L6O4A78uOTO6njJ6w4OmxmjaLoCdDMiikN8TVGBnQCNLPaqv48wLpzAjSzmnMCNLOC8j1BzKzA3AI0s0Kq8jznfsEJ0MxqTg3SBHQCNLOaa5D85wRoZrXXIPnPCdDMaqyBBgGdAM2sptKU+I2RAZ0AzazmGiP9OQGaWW9okAzoBGhmNecrQcyssAo/H6CZFZgToJkVkecDNLPi8nyAZlZkToBmVlCeD9DMCswtQDMrpAa6FJhSvQMws4FHUsWlijoulTRD0hNlZetI+qOk5/PPtXO5JF0gaYqkxyTtXE2cToBmVnNS5aUKk4F925V9G7g9IiYAt+fnAPsBE/JyLPDzanbgBGhmNacqlkoi4k5gTrviicBl+fFlwEFl5ZdHch8wWtJGlfbhBGhmtVVF6281DpJsEBHT8+M3gA3y47HA1LLtpuWyLvkgiJnVlKj6niBjJD1Y9nxSREyqdj8REZKiu/GVcwI0s5qrsoE3KyJ27WbVb0raKCKm5y7ujFz+GrBJ2XYb57IuuQtsZjXXi13gG4Ej8+Mjgf8tKz8iHw1+LzC3rKvcKbcAzazmanFbTElXA3uTusrTgNOB84DrJB0DvAJ8Om9+M7A/MAVYCHy+mn04AZpZzdXiROiIOKyTVR/uYNsATuzuPpwAzaymVrOL26ecAM2s5jwZgpkVlluAZlZYToBmVlCeD9DMCipdCVLvKKrjBGhmNecEaGaF5S6wmRWTzwM0s6JqpCnxnQDNrOZqcS1wX3ACNLOaa5D85wRoZrXXIPnPCdDMekGDZEAnQDOrKQGlBukDK02jNXBImkmaKHEgGAPMqncQtoqB9rlsGhHr1aoySbeSfkeVzIqI9re97FMDLgEOJJIe7ME9E6yX+XMZOHxPEDMrLCdAMyssJ8D+rep7pFqf8ucyQHgM0MwKyy1AMyssJ0AzKywnQDMrLCdAsx5SuylP2j+3/s8J0KwHJCnyEURJ6wKEjyg2HB8FbgCSPgksAEoRcWu947EVJJ0MvA+YDvwfcEtELKtvVFYttwD7OUknAV8H1gF+I2mPOodkmaRDgEOA44F9gA84+TUWJ8B+SsmmwEeBDwFjSS2Mv0oaXNfgCqptjE9S2/dmLHAe8EngdeDUvH7DugRo3eYE2H8JmAlMA74L7AV8KiJagCPENHRTAAAGZklEQVQlbVHP4IqmfMwPaEtwLwLnAkdExMciYpmkrwHHlSVJ68c8H2A/JOkDwPYRcZGkEcAxETEsr/sM8AXg5nrGWBRtrb6yAx5fAQ6S9HHgBeBp4AFJuwBbAIcDn4uI1jqFbN3ggyD9SG41CDgG2AX4C/C/wJXAaOAJYHfg6Ih4vF5xFomkoRGxJD8+BvgX4JCImJqHIvYgfVZ7AYuAM/3ZNA4nwH5E0riIeDW3+g4hfbHui4hfSfoE0AI8HREv1jXQgpC0OWmM72sR8YqkrwJTgMXADsDRwEWk/6AWk75PC+sVr3Wfxyn6CUnvAO6StF/+Ev0PqcV3pKQjgJsj4iYnvz61lNTN/b6kjUjJ7wTgq8CrpIMeewJrRcQiJ7/G4wTYD0j6Julcsu8A50raJyIWRMQkYAiwPTCqnjEWUUS8CvyMdLDjR6Sj8J8C/jkirgXmARsDS+oWpK0WJ8A6k7Q/sDfwQERcBfwQOF/Sx3O3dxHwo4j4Rx3DLIR86tFK34mcBM8ntfj+C1gnIhZIOgH4AXBsREzv+2itFjwG2MckDQE2j4inJB0FfBuYEhEHlG3zKeBrpOT3lYh4rC7BFoykURExPz/+IrAm6eqbH0haC/gWMJ7UBd4ImOshicbmBNjH8sD6RaRLp8YBlwJfAS6LiAvKtlsLaI6IBXUJtGBya3tiRBwj6V+Bg4B/Ay4EHo+IwyWtAZwDjCC1/HyqS4PzeYB9LCKmSHoMOBb4VkRcIWkW8MV8ru1P83Zz6xpogeTJDL4EnCRpS2BXYL9c9gIwXNL/RMSnJJ0KDHfyGxicAOvjYuBR4KuS5kTEtZJmABdJmhURV9c5vqJZCjQDpwMBnALsRmoRvk/SbsAtkq6MiM+SDn7YAOAEWAcRMQWYIukfwDn55zDSF/G+ugZXQBExT9KfSZcc/kc+5++dwL15k61IB6euqVeM1jucAOsoIn4naRnwH6Tpro6JiJfqHFZRXQv8HbhQ0mzgFmAnSZeSusN7RcTLdYzPeoEPgvQDktYnXW46s96xFJ2knUnJ8DvA3aQZX2b7P6aByQnQrB1JOwB/Bk7JJ6PbAOUEaNYBSdsBiyLihXrHYr3HCdDMCsuXwplZYTkBmllhOQGaWWE5AZpZYTkBmllhOQEOUJJaJD0i6QlJv87T7Pe0rr0l/T4//oSkb3ex7eg8V15393GGpK9XW95um8l5CrFq9zVe0hPdjdEGHifAgWtRROwYEduRrjE+rnxlR5N/ViMiboyI87rYZDRp2nizfs8JsBjuAjbPLZ9nJV1Out/IJpL2kXSvpIdyS3EUgKR9JT0j6SHg4LaKJB0l6cL8eANJN0h6NC+7k24itFluff4wb/cNSQ9IekzS98rqOlXSc5LuBras9CYk/Uuu51FJv2nXqv2IpAdzfQfk7Zsk/bBs319c3V+kDSxOgAOcpEGki/nbbtU4AbgoIrYlTcBwGvCRiNgZeJA0Rdcw4BLgQNKd6TZcpeLkAuD/ImIHYGfgSdIM1y/k1uc3JO2T97kbsCOwi6Q9le6je2gu2x94dxVv5/qIeHfe39Ok24e2GZ/38XHg4vwejiHN2vzuXP+/5FlezADPBjOQDZf0SH58F/AL4B3AKxHRNuXWe4FtgHuU7v89hDQF1FbASxHxPICkK0kTuLb3IeAIgIhoAeZKWrvdNvvk5eH8fBQpIa4B3NB2JzVJN1bxnraTdDapmz0KuK1s3XV5ktLnJb2Y38M+wPZl44Nr5X0/V8W+rACcAAeuRRGxY3lBTnLlU+wL+GNEHNZuu5Vet5oEfD8i/qvdPr7Sg7omAwdFxKP5fip7l61rf01n5H2fHBHliRJJ43uwbxuA3AUutvuA9+f7lCBppKQtgGeA8ZI2y9sd1snrbweOz69tyvcxmUdq3bW5DTi6bGxxbJ7+607gIEnD8702Dqwi3jWA6ZIGA4e3W3eIpFKO+V3As3nfx+ftkbSFpJFV7McKwi3AAouImbkldbWkobn4tIh4TtKxwE2SFpK60Gt0UMWXgUmSjgFagOMj4l5J9+TTTG7J44BbA/fmFuh84LMR8ZCka0m3BpgBPFBFyP8G/A2YmX+Wx/QqcD/pTm7HRcRiSf9NGht8SGnnM0k3OzIDPBuMmRWYu8BmVlhOgGZWWE6AZlZYToBmVlhOgGZWWE6AZlZYToBmVlj/H1uPwZJZCrZuAAAAAElFTkSuQmCC\n",
|
||
"text/plain": [
|
||
"<matplotlib.figure.Figure at 0x7f5d5b205fd0>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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\n",
|
||
"text/plain": [
|
||
"<matplotlib.figure.Figure at 0x7f5d5b1ebfd0>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"test_classifier(labels=[\"true\", \"false\"], title=\"configuration 2 -- train\", Xt=vec_train_2, yt=y2, clf=clf_b)\n",
|
||
"cm_2 = test_classifier(labels=[\"true\", \"false\"], title=\"configuration 2 -- test\", Xt=vec_test_2, yt=yt2, clf=clf_b)\n",
|
||
"test_classifier(labels=[\"true\", \"false\"], title=\"configuration 2 -- valid\", Xt=vectorizer_2.transform(Xv2), yt=yv2, clf=clf_b)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"----\n",
|
||
"## configuration 3"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 18,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"'score: 0.5142231947483589'\n",
|
||
"Confusion matrix, without normalization\n",
|
||
"array([[ 7, 201],\n",
|
||
" [ 21, 228]])\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAUEAAAEmCAYAAAD8/yLTAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3XecVOX1x/HPd0E6Cgpio4iKNYpiSTQqRmzYjWLvxhKNMSYmRv3ZoomJJcYYNRq7BiXBQhALEokVC0rRCCgtgnQRQTqc3x/PM3gZd3dmd+fu7OycN6/7YubeO/eemZ09+zy3nEdmhnPOlauKYgfgnHPF5EnQOVfWPAk658qaJ0HnXFnzJOicK2ueBJ1zZc2TYCMjqaWkf0laIOkfddjOyZJeKmRsxSDpeUmn1/K1N0iaK2lmoeNyDYcnwSKRdJKk9yQtkjQj/rJ+vwCbPhboBGxgZsfVdiNm9riZHViAeNYiqbckk/R01vyd4vzheW7nWkmP5VrPzA4xs4drEWcX4OfAdma2UU1f70qHJ8EikHQpcDvwW0LC6gLcBRxZgM13BSaY2coCbCstc4DvSdogMe90YEKhdqCgLt/vLsA8M5tdi303rcN+XX0zM5/qcQLWAxYBx1WzTnNCkvw8TrcDzeOy3sA0QitlNjADODMuuw5YDqyI+zgbuBZ4LLHtboABTePzM4BJwEJgMnByYv7ridftCbwLLIj/75lYNhz4DfBG3M5LQIcq3lsm/nuAC+O8JsB04GpgeGLdPwGfAV8BI4G94/yDs97n6EQcN8Y4lgBbxnnnxOV3AwMT2/89MAxQVox94utXx+0/FOcfAXwEfBm3u23iNVOAXwFjgGWZz9enhj8VPYBym+Iv8MrqfkmA64ERwIZAR+BN4DdxWe/4+uuBdYC+wGKgfVyenfSqTIJA65hgto7LNga2j4/XJEFgfWA+cGp83Ynx+QZx+XBgItADaBmf31TFe8skwT2Bt+O8vsCLwDlZSfAUYIO4z58DM4EWlb2vRBz/A7aPr1knKwm2IrQ2zwD2BuYCm1UXZ+J5D+Br4IC43V8CnwLN4vIpwCigM9AyzrsLuKvY3zmfqp+8O1z/NgDmWvXd1ZOB681stpnNIbTwTk0sXxGXrzCzIYTWyta1jGc1sIOklmY2w8w+qmSdQ4FPzOxRM1tpZv2BccDhiXUeNLMJZrYEGAD0rG6nZvYmsL6krYHTgEcqWecxM5sX93kroYWc630+ZGYfxdesyNreYsLneBvwGPATM5uWY3sZxwPPmdnQuN1bCAl/z8Q6d5jZZ/EzwMx+bGY/znP7rkg8Cda/eUCHHMeNNgGmJp5PjfPWbCMriS4G2tQ0EDP7mvDLfT4wQ9JzkrbJI55MTJsmnifPoOYbz6PARcB+wNPZCyX9QtLH8Uz3l4RDCR1ybPOz6haa2duE7r8IyTpfa30GZrY67iv5GVS7b9cweRKsf28RjhkdVc06nxNOcGR0ifNq42tCNzBjrTOdZvaimR1A6AqPA+7LI55MTNNrGVPGo8CPgSGxlbaGpL0JXc5+hK5+O8LxSGVCr2Kb1ZZFknQhoUX5edx+vtb6DCSJ0PVNfgZekqkEeRKsZ2a2gHAC4C+SjpLUStI6kg6R9Ie4Wn/gKkkdJXWI6+e8HKQKo4B9JHWRtB7w68wCSZ0kHSmpNSExLyJ0j7MNAXrEy3qaSjoe2A4YXMuYADCzycC+wJWVLG5LOPY5B2gq6Wpg3cTyWUC3mpwBltQDuIFwrPFU4JeSqu22JwwADpW0v6R1CMcolxGO17oS5kmwCOLxrUuBqwi/5J8RuoXPxFVuAN4jnGkcC7wf59VmX0OBJ+O2RrJ24qqIcXwOfEFISBdUso15wGGEX/x5hBbUYWY2tzYxZW37dTOrrJX7IvAC4UTGVGApa3c3MxeCz5P0fq79xMMPjwG/N7PRZvYJcAXwqKTmecQ5npA8/0w4oXI4cLiZLa9mn/dIuifXtl1xycxb8M658uUtQedcWfMk6Jwra54EnXNlzZOgc66slX0SjDfaPyhpvqR3JO0taXyx48poLCWtaiLfCjFx3eGSzqnFPppLGiepY80jrPG+zpD0etr7cbVT9kkQ+D7hftDNzGx3M3vNzGp7C1qdSOoWy0mtuZvE0itptV0s5TU/Ti9L2q7Q+2mozGwZ8ABwebFjSarJH4A09xP/SNwvaaqkhZJGSTok7biKwZNguAtgSryFLFWSmqS9jxr4nFB7cH3CrWiDgCeKGlH9+ztwej7XCZahpoTrMvcl3K54FTBAUrcixpSOYldwqMlEuE3pKcIFxvOAO+P8CsIPaSqhvNQjwHpxWTfC7UynEyqMzAWujMvOJlyEu4pwt8R1fLt6yC7AB4QSUf8gXHh8Q1x2BolyU3GeAVvGxw8RyjcNIdy+1odQjOADQvWWz4BrE6/9X3z9ojh9L3sfFKikVVbMTYELgcU1+FkMJ1zA/WaM9V+E4hCPx/f2LtAtz7g3B/4TYx4K3MnalW++G/fzJTAa6J0VxzlVxLg74TbFLwklx+4kVn1JrPMJsG8Nv4fKsXwDwh+Vr4B34s8k+TOsaYmwM4GP4+czCTgvsa0OhAvgvyRc8P4aUBGXbQIMJPy+TAYurm4/ebzvMcAPi50HCj0VPYAafPGaxF+APxJKQLUAvh+XnUUoa9SdcOP+U8CjcVk3QmK5j1D1YyfC7U7bxuVnZH1BexOTINCMkFh/SiifdEz88tQkCS4A9iIk6hZx+9+Jz3ck3P51VFasTRPbW7MPCljSKrH9Lwm3p60GrkrMPwkYU83rhsfPfAtCS+G/hLs7+sTYHiFUlskn7rcIlV2aA/sQftkfi8s2JfzB6xs/swPi846JOKpKgr0ICbRp/Gw/Bi7JWmcQMTnk+T1sSkjIu1azzhOE2+xaAzsQ7i9OfsdqWiLs0Pg5i9AyWwzsEpf9jlCbcZ047R3XqyAk2KsJ3+PuhAR6UFX7yfG+OxEaDNsUOxcUeiql7vDuhL9sl5nZ12a21MwyB5tPBm4zs0lmtohwf+wJWZVarjOzJWY2mpBMd8pjn5lfoDsslK16ivCXvSaeNbM3zGx1jHm4mY2Nz8cQ7hPeN89tpVHSqh0hiV1EaKFm5v/dzHbMEc+DZjbRwv3QzwMTzexlCxVu/gHsnCvuWMZ+N+D/zGyZmb1KaFVmnEIosDAkfmZDCbcU9s0RG2Y20sxGxH1OAf7Ktz/rhUC7XNtKbHMloXDrYEm7Zi+Phzx+CFwdv6cfAg9nbaNGJcLM7Ln4OZuZ/YfQwt87Ll5BKH7RNX5HX7OQtXYj/KG43syWm9kkQkPghHzfa+I9rUNo4T9sZuNq+vqGrpSSYGdgqlVeh6+y0lNNCX+9MmpT6mkTYHr8UmXUtFzSWutL2kPSK5LmSFpAKGOVqzxUMp6Cl7SycDz0HuARSRvmGQuEVmzGkkqeZ/ZdXdybAPNt7WOyyXW7AsdJ+jIzEU5mbZwrOEk9JA2WNFPSV4ThDLI/67aE1nBlr58ZT1StNRG6n52A+yt5WUe+OZ5W2fupcYmwWFxjhKQv4vp9E+vfTGiRvyRpkqTMiZ6uwCZZn9sVrP07kVMsUPEooQd0UU1eWypKKQl+BnSpog5fZaWnVrL2L2VtzAA2jWWTMjonHq9VpkpSZQPyZN+c/XdCF6yzma1HSD65ykNlpFXSCsJ3oRVrJ9RCqS7uGUD7WMkmuSzjM8KhjXaJqbWZ3ZTHfu8mtDi3MrN1CUlAWetsS+gZfIuZbWRmyp4IxSRmEY4pZ5tD+O4lvydr3k9NS4TFkzYDCUVcO8X1h2TWN7OFZvZzM+tOKP9/qaT9CZ/b5KzPra2Z9a1sP5WJ3/v7CYnzh5ZVpLaxKKUk+A7hF+YmSa0ltZC0V1zWH/iZpM0ltSH8xX+yilZjTbxFOGlyUSwhdSShW54xGtheUk9JLQjHWXJpC3xhZksl7U449pYxh3BsrnsVry1YSStJB0jaWVITSesSjsnNJxw3K7Qq4zazqYTu7XWSmimMuJfs3j9G6DYfFGNtoTBi3WZ57Lct4eTDIoVisWtVyJG0KeF45Yh830j8I3wloYrOe9nLzWwV4Zj0tQpl0rYjnJRLxlSTEmHNCN3lOcDKeJnKmkumJB0macuYsBYQvq+rCb8vCyX9SmEY1iaSdpC0WxX7qczdhD8Sh8fDK41SySTB+OU6nDB4zv8I41QcHxc/QGiyv0o4C7YU+EkB9rmccDLkbEKX6RRCwlkWl08gjPXxMuEsYz4XxP4YuF7SQsJB6zXVjS0UFr0ReCN2Yb6bFU8hS1q1I/zxWEA4mbIFcLCZLYU1F2lXVmq/xvKI+yRgD8LZzWtIlNo3s88Io/BdwTdlxy4jv+/uL+K2FxKOhz2ZtfwkwnGuZTV4LyuBvSpLgAkXEQ4FzCScHHswsaxGJcLMbCFwMeF7Mj/GPCix/laE798iwh/tu8zslfj7chjhmPBkwlURfyN0vb+1n+w3IKkrcF58/UyFoWEXSTq5mvddkryUVg1Jehu4x8wezLmya7BiN3M0sI/VYlhN13j4+Kg5SNoXGE/4S3oy4bKWF4oalKuz2PqrbDwVV2Y8Cea2Nd9c8zUJONbMZhQ3JOdcoXh32DlX1krmxIhzzqWh0XaHO3ToYF27dit2GC7LB5PqPDaTKzBbPA9btjD7+sk6abJuV7OVua+qsSVzXjSzgytbJqkz4UqBToTrGu81sz9JuplwpchywpUNZ5rZl7G4w8eEY/gAI8zs/FwxNNok2LVrN954u7qrGFwxtD+usmGNXTEtG35jwbdpK5fQfOt+OddbOuov1d0ttRL4uZm9L6ktMFLSUEKRjV+b2UpJvyfcJvur+JqJZpbvMKpAI06CzrkikqCibpXj4gnIGfHxQkkfA5uaWbLI8AhCSbha82OCzrl0qCL3BB0UivtmpnMr3VTo6u4MvJ216CxC8Y6MzSV9IOk/8RbFnLwl6JxLh/I6zDjXzL5VjWftzagN4f7pS8zsq8T8Kwld5sfjrBlAFzObJ6kX8Iyk7ZOvqYwnQedcCpRp6dVtK6GM10DgcQul7DLzzyDcFrh/pspTvAA+c0vrSEmZ2prVnhzwJOicKzxR52OCiSo2H5vZbYn5BxPuP9833m+fmd+RUJxklaTuhPuqJ+XajydB51wKlG93uDp7EaqRj5U0Ks67AriDUFlnaKxyl7kUZh9CcZIVhEo655vZF7l24knQOZeOOnaHLVSOryyTDqli/YGErnONeBJ0zqWj7i3BeuFJ0DlXeAW4TrC+eBJ0zqWjAGeH64MnQedcCgpziUx98CTonEtHhR8TdM6VqwJcJ1hfPAk651Lg3WHnXLnzS2Scc2XNW4LOubLl1wk658qed4edc+XLT4w458qdtwSdc2VLgorSSC+l0V51zpUeKfdU7cvVWdIrkv4r6SNJP43z15c0VNIn8f/2cb4k3SHpU0ljJO2ST5ieBJ1z6chvoKXqZIbc3A74LnChpO2Ay4FhZrYVMCw+BziEUE16K+Bc4O58wvQk6JxLRx1bgmY2w8zej48XEgZW3xQ4Eng4rvYwcFR8fCTwiAUjgHaSNs4VZml02p1zpSX/6wQ7SEoOhHSvmd377c2pG98MudkpjkkMMBPoFB9vCnyWeNm0OG8G1fAk6JxLhVIacjO5XTMzSVaXOL077JwrOBGSYK4p53YqH3JzVqabG/+fHedPBzonXr5ZnFctT4LOucKTUEXuqfpNVD7kJjAIOD0+Ph14NjH/tHiW+LvAgkS3uUreHXbOpSLP7nB1qhpy8yZggKSzgalAv7hsCNAX+BRYDJyZz048CTrnUlHXJFjNkJsA+1eyvgEX1nQ/ngSdc6koQEuwXngSdM4VnJT7mF9D4UnQOZcKbwk658qaJ0HnXFnzJOicK1/Cjwk658qXyO+OkIbAk6BzLhWeBJ1z5a00cqAnQedcCgQVFaVRmsCToHMuFd4dds6VrVI6MVIa7dUyNGH8ePbo1XPNtOH66/LnP91e7LDKwmYbtOaF6w/l/TuOZeSfjuXCw7YHoH2b5gy+5hDG/qUfg685hHatmwHQY9P1GH7TEXw54CwuOfI7xQy9YVEeUwPgLcEGqsfWW/P2yFA9aNWqVWzRdVOOOOroIkdVHlauXs3lD41g1KR5tGmxDm/eejTDRk3n1B/0YPjYz7nlqdH84pid+MUxPbnq0XeYv2gZP//bmxy+R7dih95wlNAxwdKIssy98u9hbN59C7p27VrsUMrCzPlLGDVpHgCLlq5g3LT5bLJBaw7bvSuPvTIBgMdemcDhe4Sfx5wFSxn56VxWrFxdtJgbogJVln5A0mxJHybmPSlpVJymZGoNSuomaUli2T35xOktwRLwjyefoN/xJxY7jLLUpWMbem7egXcnzGbDdi2ZOX8JEBLlhu1aFjm6Bq4w3d2HgDuBRzIzzOz4NbuQbgUWJNafaGY9a7KD1FqCklbFbPyhpH9JahfnZ2frUZJOS7yupySTdHDW9halFWtDtnz5cp4bPIhjjj2u2KGUndYtmtL/V3247IG3WLhkxbeWW52G92n8CtESNLNXgS+q2L4IVaX71yXONLvDS8ysp5ntQHgTyYqvE+OyzPRIYtmJwOvx/7L34gvP03PnXejUqVPulV3BNG0i+v/yAJ58dSLPjpgCwOwvl7BR+9D626h9S+YsWFLECBs2SVRUVOSciENuJqZza7CbvYFZZvZJYt7mkj6Q9B9Je+ezkfrqDr8F7JhrpZjZjwMOAF6T1MLMlqYdXEM24Mn+3hUugnsu3Jfx0+Zzx6Cxa+Y99+5UTtmvB7c8NZpT9uvB4HemFjHChq9QQ25W40TWbgXOALqY2TxJvYBnJG1vZl9Vt5HUk6CkJoTxAO5PzN4iMXAKwE/M7DVgT2CymU2UNBw4lDDcXr77Ohc4F6Bzly51Db3ovv76a/798lDuvOuvxQ6lrOy5bSdO3m8rxk6Zx4jbjgHgmsfe5ZanRvPYL/bn9P235n9zFnHKLcMA6NSuJW/cfBRtWzVjtRkXHbYDO1/8z0q70GUlxUtgJDUFjgF6ZeaZ2TJgWXw8UtJEoAfwXqUbidJMgi1jotsU+BgYmlhW1cHLE4En4uMngNOoQRKMI9ffC9Cr164lf8SmdevWTJ81r9hhlJ03P55Fy6Pvq3RZ32uGfGverC+XsOWP6nRYqlFK+WLpPsA4M5uW2F9H4AszWyWpO7AVMCnXhlI/Jgh0JfxNqHYUqNhi/CFwtaQpwJ+BgyW1TTFG51wKJKioUM4p93bUn3A4bWtJ0+IwmwAn8O0TIvsAY2Lj65/A+WZW6UmVpNS7w2a2WNLFhP75XdWsuj8wxswOysyQ9DBwNInT4865UlCY2+bMrNID4mZ2RiXzBlKDnmNGvVwsbWYfAGP45ozvFlmXyFwclz2d9dKBide0in8JMtOl9RG7c652pNxTQ5BaS9DM2mQ9PzzxNK+rTM1sEDAoPva7W5wrFbE7XAr8jhHnXMEJT4LOuTLXULq7uXgSdM6lolTqCXoSdM4VnPyYoHOuvJVOZWlPgs65VJRIDvQk6JxLh7cEnXNly48JOufKXok0BD0JOufS4d1h51xZK5Ec6EnQOVd4pXRM0IsSOOdSkHuQpToMuXmtpOmJKlR9E8t+LelTSeMlHVT5VtfmSdA5l4oCldJ6CDi4kvl/TAzUNiTsT9sRiq1uH19zVyzWXC1Pgs65VKQ95GYljgSeMLNlZjYZ+BTYPdeLPAk65wquBuX1azvk5kWSxsTucvs4b1Pgs8Q60+K8ankSdM6lIs+W4Fwz2zUx3ZvHpu8GtgB6EobZvLUucfrZYedcKtK6RMbMZn2zD90HDI5PpwOdE6tuFudVy1uCzrlUFOKYYBXb3Tjx9Gggc+Z4EHCCpOaSNicMuflOru15S9A5V3BSfkNq5rGd/kBvwrHDacA1QG9JPQEDpgDnAZjZR5IGAP8FVgIXmtmqXPvwJOicS0UhusNVDLl5fzXr3wjcWJN9eBJ0zqWiokTum6syCUpat7oXmtlXhQ/HOddYlEgOrLYl+BGhz518K5nnBnRJMS7nXAmToEmJ3DtcZRI0s85VLXPOuVxKpZRWXpfISDpB0hXx8WaSeqUblnOu1BXo3uHU5UyCku4E9gNOjbMWA/ekGZRzrrQJaCLlnBqCfM4O72lmu0j6AMDMvpDULOW4nHOlrA4XQ9e3fJLgCkkVhJMhSNoAWJ1qVM65klciOTCvY4J/AQYCHSVdB7wO/D7VqJxzJU2E6wRzTQ1BzpagmT0iaSTQJ846zsw+rO41zjlXKuX1871jpAmwgtAl9qILzrlqNaSzv7nkc3b4SqA/sAmhNM3fJf067cCcc6Wt0XSHgdOAnc1sMYCkG4EPgN+lGZhzrrQ1jBSXWz5JcEbWek3jPOecq5RoBLfNSfoj4RjgF8BHkl6Mzw8E3q2f8JxzJalA1wlKegA4DJhtZjvEeTcDhwPLgYnAmWb2paRuwMfA+PjyEWZ2fq59VNcSzJwB/gh4LjF/RA3eg3OuTBXokN9DwJ3AI4l5Q4Ffm9lKSb8Hfg38Ki6baGY9a7KD6gooVFm40DnncilES9DMXo0tvOS8lxJPRwDH1mUfOY8JStqCUKl1O6BFIpAeddmxc67xqsExwQ6S3ks8vzfPEecyzgKeTDzfPN7i+xVwlZm9lmsD+ZwYeQi4AbgFOAQ4k3gLnXPOVSXPduBcM9u1VtsPl++tBB6Ps2YAXcxsXqx09Yyk7XMVgM7nwudWZvYigJlNNLOrCMnQOecqJaV7naCkMwgnTE42MwMws2VmNi8+Hkk4aZKzx5pPS3BZLKAwUdL5hHE829YydudcmUjrWmhJBwO/BPbNXL8c53cEvjCzVZK6E4bcnJRre/kkwZ8BrYGLCccG1yP0w51zrkopDrn5a6A5MDSefMlcCrMPcL2kFYRKV+eb2Re59pFPAYW348OFfFNY1TnnqiQKc1tcTYbcNLOBhIpXNVLdxdJPU80JEDM7pqY7c86ViRIqoFBdS/DOeosiBavMWLhkRbHDcNmmjC52BC7bssW516mFkq8sbWbD6jMQ51zjkRljpBTkW0/QOedqpETqJ3gSdM6lo9ElQUnNzWxZmsE45xqHUFm6NLJgPpWld5c0FvgkPt9J0p9Tj8w5V9KaVOSeGoJ8wriDcHtK5naU0YTB2J1zrlKNarQ5oMLMpmY1bVelFI9zrpFoIA29nPJJgp9J2h0wSU2AnwAT0g3LOVfKJJV+ef2ECwhd4i7ALODlOM8556rUQHq7OeVz7/Bs4IR6iMU514iUSEMwr8rS91HJPcRmdm4qETnnSl7mxEgpyKc7/HLicQvgaOCzdMJxzjUKajiXwOSST3c4Wb8fSY8Cr6cWkXOuUVABhl+vYsjN9QnjinQDpgD9zGy+wiUsfwL6AouBM8zs/Vz7qE2u3hzoVIvXOefKROgO557y8BBwcNa8y4FhZrYVMCw+hzDsx1ZxOhe4O58d5HNMcD7fHBOsIAzGfnnVr3DOucKcGKlsyE3gSEK1aYCHgeGEcYePBB6JY46MkNRO0sZmNqO6fVSbBGPzcifCuCIAqzODmjjnXFVSHnKzUyKxzeSbnummrH2+YlqcV/skaGYmaUimL+6cc3nJv7J0rYfchDU5qk4Ns3yOCY6StHNdduKcKz8p3js8S9LGAPH/2XH+dKBzYr3N+KYXW3WcVS2QlGkl7gy8K2m8pPclfSAp5xkX51z5KuCJkcoMAk6Pj08Hnk3MP03Bd4EFuY4HQvXd4XeAXYAjah2qc65MqSDl9asYcvMmYICks4GpQL+4+hDC5TGfEi6ROTOffVSXBAVgZhNrE7xzrnyJwtw7XMWQmwD7V7KuARfWdB/VJcGOki6taqGZ3VbTnTnnykTdurv1qrok2ARoAwW47Ns5V3Yaw73DM8zs+nqLxDnXaNTgOsGiy3lM0DnnaqNEGoLVJsFvHXh0zrl8iEZQXt/MvqjPQJxzjUgJDbnpg6875wpOUJDrBOuDJ0HnXCpKIwV6EnTOpaREGoKeBJ1zaZAfE3TOlS8/JuicK3ulkQI9CTrn0uCXyDjnypl3h51zZa+uKVDS1oShNTO6A1cD7YAfAXPi/CvMbEht9+NJ0DmXiro2BM1sPNAzbEtNCKXynyYUS/2jmd1SxxABT4LOuRSEe4cL2h3eH5hoZlMLfayxVO5xds6VlNyDLMV6gx0kvZeYzq1igycA/RPPL5I0RtIDktrXJVJPgs65VEi5J+KQm4npW2MOS2pGGOvoH3HW3cAWhK7yDODWusTp3WHnXMEVuDt8CPC+mc0CyPwPIOk+YHBdNu4tQedc4eXRCqzBob0TSXSFM2MOR0cDH9YlVG8JOudSUYgxRiS1Bg4AzkvM/oOknoABU7KW1ZgnwQZk+rTPuOi8s5gzexaSOPWMczj3xz9h0NP/5Obf/YYJ48fx4itv0nOXXsUOtVHbrFM7/vab09hwg7aYwQMD3+Av/Yfz20uOou8+O7B8xSomT5vLudc8xoJFS2jatIK7rz6Zntt0pmmTCh5/7h1ueeClYr+NosoMvl5XZvY1sEHWvFPrvuVveBJsQJo2bcp1N/6BHXvuzKKFC+mzzx7s+4P92Wa77Xnw8QH84qc1HlLV1cLKVau5/LanGDVuGm1aNefNv/+KYW+PY9iIcfzfnwexatVqbrj4SC4760CuuuNZfthnF5o3a8pu/X5Lyxbr8MHAqxjw/Hv8b0Z5F2dXidw97EmwAem00cZ02igc7mjTti09tt6GGZ9/Tu8f9ClyZOVl5tyvmDn3KwAWLV7GuMkz2aRjO4aNGLdmnXfGTuboPjsDYBitWjSjSZMKWjZvxvIVq1j49dKixN6QlMhdc54EG6r/TZ3C2DGj6bXr7sUOpax12Xh9em69Ge9+OGWt+acd+T3++dL7ADz18gcc1ntHJg+9kVYtmvHLW55i/leLixBtw+H3DgOSVgFjE7OOMrMpcdntwHFAZzNbHeedAexqZhdJqgAeBFYBZwOTgYXxOcCrZnZxWrEX26JFizjr1OP5zU230HbddYsdTtlq3bIZ/W85h8tuGbhWy+6XZx/EqlWreWLIuwDstn03Vq0hDfFwAAAN+klEQVRaTfcDr6R921a8/MDP+Pfb45gyfV6xQm8A5N1hYImZ9cyeGRPc0cBnwL7AK1nLBdwDrAOcaWYWb5PZz8zmphhvg7BixQrOOuV4ftjvRA474uhih1O2mjatoP8tP+LJ59/j2X+PXjP/lMP3oO8+O3DIeXesmdfvkF156c3/snLlaubMX8RboybRa7su5Z0Ea3YJTFEV4zrB3sBHhKu+T6xk+R2Es0GnZVqJ5cLMuOTCc+mx9TZccNElxQ6nrN1zzcmMnzyTOx7795p5B+y5LZee0YdjL/krS5auWDN/2swv6L3b1gC0atGM3Xfsxvgps761zXKjPKaGIM2WYEtJo+LjyWaWadZkLnx8FvitpHXMLPONOgn4GOhtZiuztvdK7GIDPGxmf8zeYbzv8FyAzTp3KeBbqR9vj3iTfzzxONtuvwP77bUrAFde/RuWLV/GFZf9jHlz53DScUeyw3d2YsAzzxU52sZrz57dOfmwPRg7YTojnrgcgGvuHMStlx1H82ZNGXz3RQC8M3YKF9/4BPc8+Sr3XncKI/95JRI8+uwIPvzk82K+haIrpWOCMrN0NiwtMrM2WfOaEY7vbWNmCyU9BTxgZoPjMcFTgG2A483sjcTrphCOF+bdHe65Sy8b+p8RBXgnrpC67POzYofgsiwbP4DVi2cXNGNt+52d7cFnXsm53ve2bD/SzHYt5L5rqr67wwcRCiKOjYnt+6zdJR4H9AOelLR9PcfmnCsg5fGvIajvJHgicI6ZdTOzbsDmwAGSWmVWMLM3gQuAwZJKr0/rnAMKeu9wqurtOsGY6A4Gzs/MM7OvJb0OHJ5c18z+JakD8IKkvePs5DHBMWZ2Wn3E7ZyrnYaS5HJJLQlmHw80s8XA+pWsd0zi6UOJ+Q8SrhUE6Fb4CJ1zaQlnf0sjC/odI865wmtA3d1cPAk651JRIjnQk6BzLg0qyODr8SqSzC2zK81sV0nrE4bi7EaoJ9jPzObXdh9eWdo5l4oCnh3ez8x6Jq4nvBwYZmZbAcPi81rzJOicK7h8bpmrQzvxSODh+Phh4Kjab8qToHMuJZJyTuQectOAlySNTCzrZGYz4uOZQKe6xOnHBJ1zqcizuzs3x21z3zez6ZI2BIZKGpdcGKtM1eneX28JOudSUYjusJlNj//PBp4GdgdmZUaci//PrkucngSdc4VXgIOCklpLapt5DBxIGF5zEHB6XO10QkWqWvPusHOu4MJoc3W+RKYT8HQ8dtgU+LuZvSDpXWCApLOBqYSiK7XmSdA5l4q6pkAzmwTsVMn8ecD+ddz8Gp4EnXPpKJFbRjwJOudS4QUUnHNlraI0cqAnQedcSjwJOufKldcTdM6VN68n6Jwrd54EnXNlrOGMJpeLJ0HnXCq8JeicK1t1rBdYrzwJOudSUYjy+vXBk6BzLhUlkgM9CTrn0lEiOdCToHMuBSV0naAXVXXOFZzIe4yRqrchdZb0iqT/SvpI0k/j/GslTZc0Kk596xKrtwSdc6koQENwJfBzM3s/VpgeKWloXPZHM7ul7rvwJOicS0ldu8NxRLkZ8fFCSR8Dm9Y9srV5d9g5lwrl8Y/cQ26GbUndgJ2Bt+OsiySNkfSApPZ1idOToHMuFVLuiTjkZmK699vbURtgIHCJmX0F3A1sAfQktBRvrUuc3h12zhWcCnR2WNI6hAT4uJk9BWBmsxLL7wMG12Uf3hJ0zqUiz+5w1a8Pp4/vBz42s9sS8zdOrHY0YRjOWvOWoHMuFQVoCe4FnAqMlTQqzrsCOFFST8CAKcB5ddmJJ0HnXCoKcHb4dSq/0mZI3ba8Nk+CzrkUeD1B51wZC3eMFDuK/HgSdM6lwpOgc66seXfYOVe+SqiKjCdB51zBeXl951zZ8/L6zrmyViI50JOgcy4dJZIDPQk651JSIlnQk6BzruAEVJRIf1hmVuwYUiFpDjC12HEUSAdgbrGDcGtpTD+TrmbWsZAblPQC4TPKZa6ZHVzIfddUo02CjYmk98xs12LH4b7hP5PGw+sJOufKmidB51xZ8yRYGr417oIrOv+ZNBJ+TNA5V9a8JeicK2ueBJ1zZc2ToHMFIGmDYsfgaseTYAlRqZTlKDOSDgRul9Tef0alx5NgadkAQJL/3BqImABvBu43s/n4raglx3+ZSoCCDYGpko4ws9WeCItP0sGEBHiemQ2X1Bm4QlI+t4u5BsJ/kUqABbOBM4EHJfXNJEJJTYodXxnbA2hlZiMkdQSeBmabWWO5p7gseNO9hJjZAEnLgScknWhmz2VahJIOD6vY4OJG2fhJ2gvY18yuk9Rd0luEBsVfzey+xHqdzeyzogXq8uItwQZM0sGSrpa0Z2aemT1DaBE+Iemw2CI8D7gHGFesWMtB4hDEgcB6AGZ2OvAq0D4rAZ4M3CGpbb0H6mrEW4IN2z7ABcDBkj4E/gJMMrOB8SzkQ5IGA7sDfc3s0yLGWg7WA+YDS4E1hyHM7FeSOkp6xcz2k/RD4GfAaWa2sEixujx5S7Bh+xfwMnAMsBg4HnhUUncz+yfQDzgCOMnMRhcvzMZP0ubA7yR1B2YBbeP8lgBmdhYwSdIM4ApCAvxvseJ1+fOWYAMjaRtgmZlNNrO3JDUHLjGzSySdBFwOtJE0Hbgd2MjMlhcz5jLRApgNnAdsCGSO9TWXtDSevDpb0i+AIZ4AS4cXUGhAJPUF/g84NdO1lbQlcC4wntDCOAf4HNgTGG5mk4sUbtmRtANwEPAToAswCNiZ8PNYDiwCjjKzFUUL0tWYtwQbCEkHERLgtWb2qaQ2gAHzCL9wFwKHmNmrcf0J5n/BUiWpN+F35DUzW2ZmH0paAbQGtgUeAsYCbQjd4zmeAEuPtwQbAEnfAUYDfczs35K2AP4KXGpmY+Lyh4HjzGxiMWMtF5LWAwYD3YE/AavM7Na4rDtwArAx8KiZvVO0QF2d+YmRIkrcZzqFcKFtP0ndCAU7X4wJsMLMxhIuw+jtF0fXDzNbQEiCy4EJwCGSHpJ0NDCHcKZ+PuFn1sLvGS5dngSLqxlAvIziZEK3aiLwjJndHBPgakk9Cd3iF8xsVfHCbfwkbZRIaLcBzwMLzawP4ed1G+EP0r7x/9+a2VI/NFG6PAkWSbzx/glJ10o6xsyWEs48/h34HkBMgGcDdwD3mdn04kXc+Ek6lHCyo0PiwuhZQM/YBf4ucAbhrPwxwAdm9kUxYnWF48cEiyDeeH8d8AjhcotNgD+Y2SfxDoO7CCdFXgLOB843sw+LFW85iD+TK4EbzewFSc3MbHksivAe4cRHv8xtiZJamdniIobsCsSTYD2TtD5h0O4jzexfkjYDbgTuMbO34jrNgCcJt2ft5tecpSvxMznGzJ6JJ6auBi4zs9mSfgTsZGYXZZJjUQN2BeXd4XoWu0+HAzdJWtfMpgEdgJsl3S7pUsIlGGcDW3oCTF/iZ3K1pB0JJ6Y+iJV7IJy5/4GkHp4AGx+/TrAIYvWX1cBISS8Q/hjdCnQkXAy9PfAzP95Uf+LPZBUwCrjCzG6X1MTMVpnZO5L6FztGlw7vDheRpD6E434bm9msOK8CWN9r0hWHpAOAPwN7mNkCSc3NbFmx43Lp8e5wEZnZy8ChwCuxcjRmttoTYPGY2VBCBZh3JK3vCbDx8+5wkZnZ8/FEyAuSdjWz1cWOqdwlfiYvS9qVWNy72HG5dHh3uIGQ1MbMFhU7DvcN/5mUB0+Czrmy5scEnXNlzZOgc66seRJ0zpU1T4LOubLmSbARk7RK0ihJH0r6h6RWddhW7ziyHZKOkHR5Neu2k/TjWuzj2jhGR17zs9Z5SNKxNdhXtziCnytzngQbtyVm1tPMdiAUBz0/uVBBjb8DZjbIzG6qZpV2QI2ToHPF4EmwfLwGbBlbQOMlPQJ8CHSWdKCktyS9H1uMbWDN4O/jJL1PqJ9HnH+GpDvj406SnpY0Ok57AjcBW8RW6M1xvcskvStpjKTrEtu6UtIESa8DW+d6E5J+FLczWtLArNZtH0nvxe0dFtdvIunmxL7Pq+sH6RoXT4JlQFJT4BDCoEAAWwF3mdn2wNfAVYTxTXYh1M67VFIL4D5CdZVewEZVbP4O4D9mthOwC/ARYVjQibEVelksILsVYZD4nkAvSftI6kUYq6Mn0BfYLY+385SZ7Rb39zGh2k5Gt7iPQ4F74ns4G1hgZrvF7f9IYQxh5wC/ba6xaylpVHz8GnA/oYDrVDMbEed/F9gOeCNWlW8GvAVsA0w2s08AJD1GGPoz2w+A0wBi6f8FktpnrXNgnD6Iz9sQkmJb4OlMcVJJg/J4TztIuoHQ5W4DvJhYNiDedviJpEnxPRwI7Jg4Xrhe3PeEPPblyoAnwcZtiZn1TM6Iie7r5CxgqJmdmLXeWq+rIwG/M7O/Zu3jklps6yHC2L6jJZ0B9E4sy779yeK+f2JmyWSJwoBWznl32DEC2EthkHcktZbUAxgHdItVlgFOrOL1w4AL4mubKAxVuZDQyst4ETgrcaxx01g151XgKEkt47ACh+cRb1tghqR1CINTJR0nqSLG3J0wYP2LwAVxfST1kNQ6j/24MuEtwTJnZnNii6q/pOZx9lVmNkHSucBzkhYTutNtK9nET4F7FQaEWgVcYGZvSXojXoLyfDwuuC3wVmyJLgJOMbP3JT1JqNw8G3g3j5D/D3ibMOzl21kx/Q94B1iXMC7LUkl/IxwrfF9h53OAo/L7dFw58AIKzrmy5t1h51xZ8yTonCtrngSdc2XNk6Bzrqx5EnTOlTVPgs65suZJ0DlX1v4fEosFwjgL+JYAAAAASUVORK5CYII=\n",
|
||
"text/plain": [
|
||
"<matplotlib.figure.Figure at 0x7f5d5e7375c0>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"yt2_c3 = yt2.copy()\n",
|
||
"yt2_c3[yt2_c3 == \"true\"] = \"REAL\"\n",
|
||
"yt2_c3[yt2_c3 == \"false\"] = \"FAKE\"\n",
|
||
"\n",
|
||
"cm_3b=test_classifier(labels=[\"REAL\", \"FAKE\"], \n",
|
||
" title=\"configuration 3: model a) → dataset 2\",\n",
|
||
" Xt=vectorizer_1.transform(Xt2),\n",
|
||
" yt=yt2_c3, clf=clf_a)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 19,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"'score: 0.5391414141414141'\n",
|
||
"Confusion matrix, without normalization\n",
|
||
"array([[274, 491],\n",
|
||
" [239, 580]])\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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\n",
|
||
"text/plain": [
|
||
"<matplotlib.figure.Figure at 0x7f5d5e71c320>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"yt1_c3 = yt1.copy()\n",
|
||
"yt1_c3[yt1_c3 == \"REAL\"] = \"true\"\n",
|
||
"yt1_c3[yt1_c3 == \"FAKE\"] = \"false\"\n",
|
||
"\n",
|
||
"cm_3a=test_classifier(labels=[\"true\", \"false\"], \n",
|
||
" title=\"configuration 3: model b) → dataset 1\",\n",
|
||
" Xt=vectorizer_2.transform(Xt1),\n",
|
||
" yt=yt1_c3, clf=clf_b)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"----\n",
|
||
"## configuration 4)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 20,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def get_dataset3_split(dataset1_in, dataset2_in):\n",
|
||
" try:\n",
|
||
" print('processing datasets')\n",
|
||
" print('ds1=', dataset1_in)\n",
|
||
" print('ds2=', dataset2_in)\n",
|
||
"\n",
|
||
" print('-- fake news')\n",
|
||
" df1 = pd.read_csv(dataset1_in, sep=',', usecols=['title','text','label'])\n",
|
||
" df1['claim'] = df1[['title', 'text']].apply(lambda x: '. '.join(x), axis=1)\n",
|
||
" del df1['title']\n",
|
||
" del df1['text']\n",
|
||
" df1.rename(index=str, columns={'label': 'y'}, inplace=True)\n",
|
||
" print(df1.keys())\n",
|
||
" print(len(df1[df1['y']=='REAL']))\n",
|
||
" print(len(df1[df1['y']=='FAKE']))\n",
|
||
" df1['y'] = np.where(df1['y'] == 'FAKE', 'false', 'true')\n",
|
||
" print(len(df1))\n",
|
||
"\n",
|
||
" print('-- liar liar')\n",
|
||
" df2 = pd.read_csv(dataset2_in, sep='\\t', header=None, usecols=[1,2], names=['y', 'claim'])\n",
|
||
" print(df2.keys())\n",
|
||
" print(set(df2.y), len(df2))\n",
|
||
" print(len(df2[df2['y'] == 'true']))\n",
|
||
" print(len(df2[df2['y'] == 'false']))\n",
|
||
" df2=df2[(df2['y'] == 'true') | (df2['y'] == 'false')]\n",
|
||
" print(set(df2.y), len(df2))\n",
|
||
"\n",
|
||
" df3=pd.concat([df1, df2], ignore_index=True)\n",
|
||
"\n",
|
||
" print(df3['y'].value_counts())\n",
|
||
" print('done')\n",
|
||
" return train_test_split(df3['claim'], df3['y'], test_size=0.3, random_state=4222)\n",
|
||
" except Exception as e:\n",
|
||
" print(e)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 21,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"processing datasets\n",
|
||
"ds1= data/fake_or_real_news.csv\n",
|
||
"ds2= data/train.tsv\n",
|
||
"-- fake news\n",
|
||
"Index(['y', 'claim'], dtype='object')\n",
|
||
"3171\n",
|
||
"3164\n",
|
||
"6335\n",
|
||
"-- liar liar\n",
|
||
"Index(['y', 'claim'], dtype='object')\n",
|
||
"{'pants-fire', 'false', 'mostly-true', 'true', 'barely-true', 'half-true'} 10240\n",
|
||
"1676\n",
|
||
"1995\n",
|
||
"{'true', 'false'} 3671\n",
|
||
"false 5159\n",
|
||
"true 4847\n",
|
||
"Name: y, dtype: int64\n",
|
||
"done\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"X3, Xt3, y3, yt3 = get_dataset3_split('data/fake_or_real_news.csv', 'data/train.tsv')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 22,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"vectorizer_3 = TfidfVectorizer(stop_words='english', max_df=0.7)\n",
|
||
"vec_train_3 = vectorizer_3.fit_transform(X3)\n",
|
||
"vec_test_3 = vectorizer_3.transform(Xt3)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"* using MLP again"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"clf_3 = MLPClassifier(hidden_layer_sizes=(16,16), random_state=4222)\n",
|
||
"clf_3.fit(vec_train_3, y3)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"test_classifier(labels=[\"true\",\"false\"], title=\"Configuration 4 -- train\", Xt=vec_train_3, yt=y3, clf=clf_3)\n",
|
||
"cm_4=test_classifier(labels=[\"true\",\"false\"], title=\"Configuration 4 -- test\", Xt=vec_test_3, yt=yt3, clf=clf_3)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### exporting"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def recall(cm):\n",
|
||
" return cm[0,0] / (cm[0,0] + cm[0,1])\n",
|
||
"def precision(cm):\n",
|
||
" return cm[0,0] / (cm[0,0] + cm[1,0])\n",
|
||
"\n",
|
||
"def accuracy(cm):\n",
|
||
" return (cm[0,0] + cm[1,1]) / np.sum(cm)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"from rdflib import Namespace, Graph, Literal\n",
|
||
"from rdflib.namespace import DCTERMS, RDF"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"class mexcore_graph(object):\n",
|
||
" def __init__(self, name_exp):\n",
|
||
" self.nsp = {\n",
|
||
" \"this\": Namespace(\"http://mex.aksw.org/examples/\"),\n",
|
||
" \"xsd\": Namespace(\"http://www.w3.org/2001/XMLSchema#\"),\n",
|
||
" \"rdfs\": Namespace(\"http://www.w3.org/2000/01/rdf-schema#\"),\n",
|
||
" \"mexcore\": Namespace(\"http://mex.aksw.org/mex-core#\"),\n",
|
||
" \"mexperf\": Namespace(\"http://mex.aksw.org/mex-perf#\"),\n",
|
||
" \"mexalgo\": Namespace(\"http://mex.aksw.org/mex-algo#\"),\n",
|
||
" \"prov\": Namespace(\"http://www.w3.org/ns/prov#\"),\n",
|
||
" \"dct\": DCTERMS,\n",
|
||
" \"rdf\": RDF\n",
|
||
" }\n",
|
||
" self.g = Graph()\n",
|
||
"\n",
|
||
" for i in nsp.items():\n",
|
||
" self.g.bind(i[0],i[1])\n",
|
||
" \n",
|
||
" self.exp = self.nsp[\"this\"][name_exp]\n",
|
||
" self.g.add((self.nsp[\"this\"][name_exp], self.nsp[\"rdf\"].type, self.nsp[\"mexcore\"].Experiment))\n",
|
||
" \n",
|
||
" def add_dataset(self,dset_name):\n",
|
||
" self.g.add((self.nsp[\"this\"][dset_name], self.nsp[\"rdf\"].type, self.nsp[\"mexcore\"].dataset))\n",
|
||
" self.g.add((self.nsp[\"this\"][dset_name], self.nsp[\"rdfs\"].label, Literal(dset_name)))\n",
|
||
" \n",
|
||
" \n",
|
||
" def add_datasets(self, dset_names):\n",
|
||
" for dset_name in dset_names:\n",
|
||
" self.add_dataset(dset_name)\n",
|
||
" \n",
|
||
" def add_model(self, model_name, literal):\n",
|
||
" self.g.add((self.nsp[\"this\"][model_name],self.nsp[\"rdf\"].type,self.nsp[\"mexalgo\"].Algorithm))\n",
|
||
" self.g.add((self.nsp[\"this\"][model_name],self.nsp[\"rdfs\"].label,Literal(model_name)))\n",
|
||
" self.g.add((self.nsp[\"this\"][model_name],self.nsp[\"dct\"].identifier,Literal(literal)))\n",
|
||
" \n",
|
||
" def add_configuration(self, conf_name, used_model, used_dset):\n",
|
||
" self.g.add((self.nsp[\"this\"][conf_name],self.nsp[\"rdf\"].type,self.nsp[\"mexcore\"].ExperimentConfiguration))\n",
|
||
" self.g.add((self.nsp[\"this\"][conf_name],self.nsp[\"rdfs\"].label,Literal(conf_name)))\n",
|
||
" self.g.add((self.nsp[\"this\"][conf_name],self.nsp[\"prov\"].used, self.nsp[\"this\"][used_model]))\n",
|
||
" self.g.add((self.nsp[\"this\"][conf_name],self.nsp[\"prov\"].used, self.nsp[\"this\"][used_dset]))\n",
|
||
" self.g.add((self.nsp[\"this\"][conf_name],self.nsp[\"prov\"].wasStartedBy, self.exp))\n",
|
||
" \n",
|
||
" def add_measurement(self, meas_name, used_conf, confusion_matrix):\n",
|
||
" self.g.add((self.nsp[\"this\"][meas_name],self.nsp[\"rdf\"].type,self.nsp[\"mexcore\"].PerformanceMeasure))\n",
|
||
" self.g.add((self.nsp[\"this\"][meas_name],self.nsp[\"mexperf\"].precision,Literal(str(precision(confusion_matrix)),datatype=self.nsp[\"xsd\"].float)))\n",
|
||
" self.g.add((self.nsp[\"this\"][meas_name],self.nsp[\"mexperf\"].recall,Literal(str(recall(confusion_matrix)),datatype=self.nsp[\"xsd\"].float)))\n",
|
||
" self.g.add((self.nsp[\"this\"][meas_name],self.nsp[\"mexperf\"].accuracy,Literal(str(accuracy(confusion_matrix)),datatype=self.nsp[\"xsd\"].float)))\n",
|
||
" self.g.add((self.nsp[\"this\"][meas_name],self.nsp[\"prov\"].wasGeneratedBy,self.nsp[\"this\"][used_conf]))\n",
|
||
"\n",
|
||
"\n",
|
||
" "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"mg = mexcore_graph(\"jonas_weinz_task_2\")\n",
|
||
"mg.add_datasets([\"Dataset01\",\"Dataset02\",\"Dataset03\"])\n",
|
||
"\n",
|
||
"mg.add_model(\"model_a\", \"RandomForestClassifier\")\n",
|
||
"mg.add_model(\"model_b\", \"MLPClassifier\")\n",
|
||
"mg.add_model(\"model_c\", \"MLPClassifier\")\n",
|
||
"\n",
|
||
"mg.add_configuration(\"conf1\",\"model_a\",\"Dataset01\")\n",
|
||
"mg.add_configuration(\"conf2\",\"model_b\", \"Dataset02\")\n",
|
||
"mg.add_configuration(\"conf3a\",\"model_b\", \"Dataset01\")\n",
|
||
"mg.add_configuration(\"conf3b\", \"model_a\", \"Dataset02\")\n",
|
||
"mg.add_configuration(\"conf4\", \"model_c\", \"Dataset03\")\n",
|
||
"\n",
|
||
"mg.add_measurement(\"measure1\", \"conf1\", cm_1)\n",
|
||
"mg.add_measurement(\"measure2\", \"conf2\", cm_2)\n",
|
||
"mg.add_measurement(\"measure3a\", \"conf3a\", cm_3a)\n",
|
||
"mg.add_measurement(\"measure3b\", \"conf3b\", cm_3b)\n",
|
||
"mg.add_measurement(\"measure4\", \"conf4\", cm_4)\n",
|
||
"\n",
|
||
"mg.g.serialize(destination='output.ttl', format='turtle')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
"version": "3.6.5"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 2
|
||
}
|