551 lines
37 KiB
Plaintext
551 lines
37 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "statewide-crown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**12. Projekt**\n",
|
||
"================="
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "explicit-bunch",
|
||
"metadata": {},
|
||
"source": [
|
||
"## **1. Cel projektu**"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "encouraging-officer",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Celem projektu jest przewidzenie ze zbioru danych jakie widomości są Fake Newsami, użyte algorytmy:\n",
|
||
"* TfidfVectorizer\n",
|
||
"* PassiveAggressiveClassifier\n",
|
||
"\n",
|
||
"Opis algorytmów.\n",
|
||
"\n",
|
||
"**TF (Term Frequency):** Liczba wystąpień danego słowa w dokumencie to jego częstotliwość występowania. Wyższa wartość oznacza, że dany termin pojawia się częściej niż inne, a zatem dokument jest dobrze dopasowany, jeśli termin ten jest częścią wyszukiwanych słów.\n",
|
||
"\n",
|
||
"Wektorator TfidfVectorizer przekształca zbiór dokumentów w macierz cech TF-IDF.\n",
|
||
"\n",
|
||
"**Algorytmy pasywno-agresywne** to algorytmy uczące się online. Taki algorytm pozostaje pasywny w przypadku poprawnego wyniku klasyfikacji, a staje się agresywny w przypadku błędnego obliczenia, aktualizując i dostosowując się. W przeciwieństwie do większości innych algorytmów nie jest on zbieżny. Jego zadaniem jest dokonywanie aktualizacji korygujących stratę, powodujących bardzo niewielkie zmiany w normie wektora wag.\n",
|
||
"\n",
|
||
"\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "informal-filename",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Dane news.csv wykorzstane do uczenia pochodzą ze strony https://paperswithcode.com/datasets?task=fake-news-detection"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "beginning-minute",
|
||
"metadata": {},
|
||
"source": [
|
||
"## **2. Importowanie potrzebnych bibliotek**"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "effective-democracy",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import numpy as np\n",
|
||
"import pandas as pd\n",
|
||
"import itertools\n",
|
||
"from sklearn.model_selection import train_test_split\n",
|
||
"from sklearn.feature_extraction.text import TfidfVectorizer\n",
|
||
"from sklearn.linear_model import PassiveAggressiveClassifier\n",
|
||
"from sklearn.metrics import accuracy_score, confusion_matrix"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "alternative-knock",
|
||
"metadata": {},
|
||
"source": [
|
||
"## **3. Wczytanie danych**"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 56,
|
||
"id": "worldwide-blake",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"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>Unnamed: 0</th>\n",
|
||
" <th>title</th>\n",
|
||
" <th>text</th>\n",
|
||
" <th>label</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>8476</td>\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>1</th>\n",
|
||
" <td>10294</td>\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>2</th>\n",
|
||
" <td>3608</td>\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>3</th>\n",
|
||
" <td>10142</td>\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>4</th>\n",
|
||
" <td>875</td>\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>5</th>\n",
|
||
" <td>6903</td>\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>6</th>\n",
|
||
" <td>7341</td>\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>7</th>\n",
|
||
" <td>95</td>\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>8</th>\n",
|
||
" <td>4869</td>\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>9</th>\n",
|
||
" <td>2909</td>\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",
|
||
" <tr>\n",
|
||
" <th>10</th>\n",
|
||
" <td>1357</td>\n",
|
||
" <td>With all three Clintons in Iowa, a glimpse at ...</td>\n",
|
||
" <td>CEDAR RAPIDS, Iowa — “I had one of the most wo...</td>\n",
|
||
" <td>REAL</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>11</th>\n",
|
||
" <td>988</td>\n",
|
||
" <td>Donald Trump’s Shockingly Weak Delegate Game S...</td>\n",
|
||
" <td>Donald Trump’s organizational problems have go...</td>\n",
|
||
" <td>REAL</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>12</th>\n",
|
||
" <td>7041</td>\n",
|
||
" <td>Strong Solar Storm, Tech Risks Today | S0 News...</td>\n",
|
||
" <td>Click Here To Learn More About Alexandra's Per...</td>\n",
|
||
" <td>FAKE</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13</th>\n",
|
||
" <td>7623</td>\n",
|
||
" <td>10 Ways America Is Preparing for World War 3</td>\n",
|
||
" <td>October 31, 2016 at 4:52 am \\nPretty factual e...</td>\n",
|
||
" <td>FAKE</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>14</th>\n",
|
||
" <td>1571</td>\n",
|
||
" <td>Trump takes on Cruz, but lightly</td>\n",
|
||
" <td>Killing Obama administration rules, dismantlin...</td>\n",
|
||
" <td>REAL</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>15</th>\n",
|
||
" <td>4739</td>\n",
|
||
" <td>How women lead differently</td>\n",
|
||
" <td>As more women move into high offices, they oft...</td>\n",
|
||
" <td>REAL</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>16</th>\n",
|
||
" <td>7737</td>\n",
|
||
" <td>Shocking! Michele Obama & Hillary Caught Glamo...</td>\n",
|
||
" <td>Shocking! Michele Obama & Hillary Caught Glamo...</td>\n",
|
||
" <td>FAKE</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>17</th>\n",
|
||
" <td>8716</td>\n",
|
||
" <td>Hillary Clinton in HUGE Trouble After America ...</td>\n",
|
||
" <td>0 \\nHillary Clinton has barely just lost the p...</td>\n",
|
||
" <td>FAKE</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>18</th>\n",
|
||
" <td>3304</td>\n",
|
||
" <td>What's in that Iran bill that Obama doesn't like?</td>\n",
|
||
" <td>Washington (CNN) For months, the White House a...</td>\n",
|
||
" <td>REAL</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>19</th>\n",
|
||
" <td>3078</td>\n",
|
||
" <td>The 1 chart that explains everything you need ...</td>\n",
|
||
" <td>While paging through Pew's best data visualiza...</td>\n",
|
||
" <td>REAL</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Unnamed: 0 title \\\n",
|
||
"0 8476 You Can Smell Hillary’s Fear \n",
|
||
"1 10294 Watch The Exact Moment Paul Ryan Committed Pol... \n",
|
||
"2 3608 Kerry to go to Paris in gesture of sympathy \n",
|
||
"3 10142 Bernie supporters on Twitter erupt in anger ag... \n",
|
||
"4 875 The Battle of New York: Why This Primary Matters \n",
|
||
"5 6903 Tehran, USA \n",
|
||
"6 7341 Girl Horrified At What She Watches Boyfriend D... \n",
|
||
"7 95 ‘Britain’s Schindler’ Dies at 106 \n",
|
||
"8 4869 Fact check: Trump and Clinton at the 'commande... \n",
|
||
"9 2909 Iran reportedly makes new push for uranium con... \n",
|
||
"10 1357 With all three Clintons in Iowa, a glimpse at ... \n",
|
||
"11 988 Donald Trump’s Shockingly Weak Delegate Game S... \n",
|
||
"12 7041 Strong Solar Storm, Tech Risks Today | S0 News... \n",
|
||
"13 7623 10 Ways America Is Preparing for World War 3 \n",
|
||
"14 1571 Trump takes on Cruz, but lightly \n",
|
||
"15 4739 How women lead differently \n",
|
||
"16 7737 Shocking! Michele Obama & Hillary Caught Glamo... \n",
|
||
"17 8716 Hillary Clinton in HUGE Trouble After America ... \n",
|
||
"18 3304 What's in that Iran bill that Obama doesn't like? \n",
|
||
"19 3078 The 1 chart that explains everything you need ... \n",
|
||
"\n",
|
||
" text label \n",
|
||
"0 Daniel Greenfield, a Shillman Journalism Fello... FAKE \n",
|
||
"1 Google Pinterest Digg Linkedin Reddit Stumbleu... FAKE \n",
|
||
"2 U.S. Secretary of State John F. Kerry said Mon... REAL \n",
|
||
"3 — Kaydee King (@KaydeeKing) November 9, 2016 T... FAKE \n",
|
||
"4 It's primary day in New York and front-runners... REAL \n",
|
||
"5 \\nI’m not an immigrant, but my grandparents ... FAKE \n",
|
||
"6 Share This Baylee Luciani (left), Screenshot o... FAKE \n",
|
||
"7 A Czech stockbroker who saved more than 650 Je... REAL \n",
|
||
"8 Hillary Clinton and Donald Trump made some ina... REAL \n",
|
||
"9 Iranian negotiators reportedly have made a las... REAL \n",
|
||
"10 CEDAR RAPIDS, Iowa — “I had one of the most wo... REAL \n",
|
||
"11 Donald Trump’s organizational problems have go... REAL \n",
|
||
"12 Click Here To Learn More About Alexandra's Per... FAKE \n",
|
||
"13 October 31, 2016 at 4:52 am \\nPretty factual e... FAKE \n",
|
||
"14 Killing Obama administration rules, dismantlin... REAL \n",
|
||
"15 As more women move into high offices, they oft... REAL \n",
|
||
"16 Shocking! Michele Obama & Hillary Caught Glamo... FAKE \n",
|
||
"17 0 \\nHillary Clinton has barely just lost the p... FAKE \n",
|
||
"18 Washington (CNN) For months, the White House a... REAL \n",
|
||
"19 While paging through Pew's best data visualiza... REAL "
|
||
]
|
||
},
|
||
"execution_count": 56,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"df=pd.read_csv('news.csv')\n",
|
||
"df.shape\n",
|
||
"df.head(20)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 57,
|
||
"id": "major-section",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"0 FAKE\n",
|
||
"1 FAKE\n",
|
||
"2 REAL\n",
|
||
"3 FAKE\n",
|
||
"4 REAL\n",
|
||
"Name: label, dtype: object"
|
||
]
|
||
},
|
||
"execution_count": 57,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"labels=df.label\n",
|
||
"labels.head()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "surprised-desperate",
|
||
"metadata": {},
|
||
"source": [
|
||
"## **4. Wizualizacja cech na histogramach**"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 52,
|
||
"id": "literary-correlation",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"array([[<matplotlib.axes._subplots.AxesSubplot object at 0x7f51d81ab470>]],\n",
|
||
" dtype=object)"
|
||
]
|
||
},
|
||
"execution_count": 52,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAABIcAAASBCAYAAACuKP6GAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzs3XuspVd93vHnB8NNFGwT6BRsqkHBSavWgsCIUqG2Y4iicGlBKlS0qFzk1lIbpaliqThVWyUoVZ22iBCEori1VCeQmouCbHEJRRBLRRUkuATMJQKXGmwguIBxwy1h6Oof53VzasbMGebYZ2aez0canf2+7zp71t6sLaPvrL33rLUCAAAAQKcHHPQEAAAAADg44hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAOwMwcmZk1M4cOei4AQDdxCAA4o20B5Yn3OPfzM/OGg5rTQZiZR83M22bmGzPz2Zn5ewc9JwDg3OBfqgAAzg6vT/InSQ4neXKSd8zMR9ZaHz/YaQEAZzs7hwCAs9rMHJuZ22fmipm5Y2a+ODOv2HX9P83M62fmHTPzRzPzwZn54V3XXzszt83M/56Zm2bmr+269vMz85aZecP2uzfPzI/MzM9tf9dtM/MTu8afNzPXbHP4/Mz84sw8cLv2wJn59zPz5Zn5TJLnnsJjfHiSv53kX661vr7Wen+SG5L8/dN68gAAIg4BAOeGP5fkvCQXJrksyetn5oJd1/9ukl9IckGSW5L8613Xfi87O3EeleQ3k7xlZh666/rfTPIb2+9+OMm7s/P/oS5M8qokv7Zr7LVJjid5YpIfS/ITSf7Bdu0fJnnedv5okhfufgAzc+XMvP1eHt+PJPnuWutTu859JMlfupfxAAB7Jg4BAOeC7yR51VrrO2utdyb5epIf3XX9t9Zav7vWOp7kjdmJQUmStdYb1lpfWWsdX2u9OslD7vG7/3Wt9e7td9+S5DFJrlprfSfJdUmOzMz5M3M4ybOT/NO11jfWWnckeU2SF2/383eS/PJa67a11leT/JvdD2CtddVa63n38vj+TJK77nHuriSP2NOzAwDwffjMIQDgTPfdJA+6x7kHZScI3e0rW7y52zezE1Tu9of3dm1mrsjO7p7HJVlJHpnk0bvGf2nX7W8l+fJa67u7jrPd3+O2eX1xZu4e/4Akt223H7frdpJ8Nnv39W1euz0yyR+dwn0AAJyQOAQAnOk+l+RIkk/uOveEJJ864ehTsH2+0CuTPCvJx9da/2dm7kwy3/83T+i2JH+c5NH3CFV3+2KSx+86/vOncN+fSnJoZi5ea316O/ekJD6MGgA4bd5WBgCc6d6U5F/MzEUz84CZ+fHsfA7QW/fhvh+Rnc8I+l/ZiS//Kt+7Q2dP1lpfTPJfkrx6Zh65zfWHZ+ZvbEPenOSfbI/jgiRXnsJ9fyPJbyV51cw8fGaekeT52fksJACA0yIOAQBnulcl+W9J3p/kziT/NslL1lof24f7fneSd2VnZ85nk3w7//9bv07VS5M8OMknsjPXtyZ57HbtP2x/30eS/PfsxJ7/Z2b++cy86/vc9z9O8rAkdyT5z0n+ka+xBwD2w6y1DnoOAAAAABwQO4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAsUMHPYEkefSjH72OHDly0NPYF9/4xjfy8Ic//KCnAQfC+qeZ9U8z6592XgM0s/7PbDfddNOX11qPOdm4MyIOHTlyJB/60IcOehr74sYbb8yxY8cOehpwIKx/mln/NLP+aec1QDPr/8w2M5/dyzhvKwMAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFDt00BMAAO7dkSvfcdBT4B5uveq5Bz0FAIB9ZecQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACg2KGDngAAAHDuOXLlOw56CvebKy45npefBY/31quee9BTAM5Qdg4BAAAAFBOHAAAAAIp5W9k+u/nzd50VW0qb2D4LAAAA987OIQAAAIBi4hAAAABAMXEIAAAAoJjPHAIA4KzX9LXpALDf7BwCAAAAKCYOAQAAABTztjIAknhLxum64pLjebnnEIAzmP/Wn5luveq5Bz0FsHMIAAAAoJk4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQ7dNATAAA4mxy58h0HPYUzzhWXHM/LPS8AcNaycwgAAACgmDgEAAAAUEwcAgAAACjmM4eAA+EzOwAAAM4Mdg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACg2KGDngDc145c+Y6DnkKNKy45npd7vgEAAM4q4hAAAAAckLP9H7PPxX8gvvWq5x70FO533lYGAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGJ7ikMzc/7MvHVm/mBmPjkzf3VmHjUz75mZT28/L9jGzsz8yszcMjMfnZmn3LcPAQAAAIAf1F53Dr02yW+vtf5Ckicl+WSSK5O8d611cZL3bsdJ8uwkF29/Lk/yq/s6YwAAAAD2zUnj0Mw8MslfT3JNkqy1/mSt9bUkz09y7Tbs2iQv2G4/P8mvrx0fSHL+zDx232cOAAAAwGmbtdb3HzDz5CRXJ/lEdnYN3ZTkZ5J8fq11/q5xd661LpiZtye5aq31/u38e5O8cq31oXvc7+XZ2VmUw4cPP/W6667bv0d1gO746l350rcOehZwMA4/LNY/tax/mln/tPMaoNm5uP4vufC8g57Cvrn00ktvWmsdPdm4Q3u4r0NJnpLkp9daH5yZ1+ZP30J2InOCc99ToNZaV2cnOuXo0aPr2LFje5jKme91b7w+r755L08rnHuuuOS49U8t659m1j/tvAZodi6u/1tfcuygp3C/28tnDt2e5Pa11ge347dmJxZ96e63i20/79g1/vG7fv+iJF/Yn+kCAAAAsJ9OGofWWn+Y5LaZ+dHt1LOy8xazG5K8bDv3siTXb7dvSPLS7VvLnp7krrXWF/d32gAAAADsh73u/frpJG+cmQcn+UySV2QnLL15Zi5L8rkkL9rGvjPJc5LckuSb21gAAAAAzkB7ikNrrd9PcqIPMHrWCcauJD91mvMCAAAA4H6wl88cAgAAAOAcJQ4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQLE9xaGZuXVmbp6Z35+ZD23nHjUz75mZT28/L9jOz8z8yszcMjMfnZmn3JcPAAAAAIAf3KnsHLp0rfXktdbR7fjKJO9da12c5L3bcZI8O8nF25/Lk/zqfk0WAAAAgP11Om8re36Sa7fb1yZ5wa7zv752fCDJ+TPz2NP4ewAAAAC4j8xa6+SDZv5nkjuTrCS/tta6ema+ttY6f9eYO9daF8zM25NctdZ6/3b+vUleudb60D3u8/Ls7CzK4cOHn3rdddft24M6SHd89a586VsHPQs4GIcfFuufWtY/zax/2nkN0OxcXP+XXHjeQU9h31x66aU37XoH2L06tMf7e8Za6wsz82eTvGdm/uD7jJ0TnPueArXWujrJ1Uly9OjRdezYsT1O5cz2ujden1ffvNenFc4tV1xy3PqnlvVPM+ufdl4DNDsX1/+tLzl20FO43+3pbWVrrS9sP+9I8rYkT0vypbvfLrb9vGMbfnuSx+/69YuSfGG/JgwAAADA/jlpHJqZh8/MI+6+neQnknwsyQ1JXrYNe1mS67fbNyR56fatZU9Pctda64v7PnMAAAAATtte9n4dTvK2mbl7/G+utX57Zn4vyZtn5rIkn0vyom38O5M8J8ktSb6Z5BX7PmsAAAAA9sVJ49Ba6zNJnnSC819J8qwTnF9JfmpfZgcAAADAfep0vsoeAAAAgLOcOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAA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AAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCYOAQAAAAwmDgEAAAAMJg4BAAAADCY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\n",
|
||
"text/plain": [
|
||
"<Figure size 1440x1440 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {
|
||
"needs_background": "light"
|
||
},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"df.hist(figsize=(20,20), xrot=-45)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "hungry-costa",
|
||
"metadata": {},
|
||
"source": [
|
||
"## **5. Podział na zbiór testowy i treningowy**"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 53,
|
||
"id": "optical-wales",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"x_train,x_test,y_train,y_test=train_test_split(df['text'], labels, test_size=0.2, random_state=7)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "continued-system",
|
||
"metadata": {},
|
||
"source": [
|
||
"## **6. Trenowanie**"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "oriental-trinity",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 6.1. Użycie TFIDF\n",
|
||
"\n",
|
||
"Inicjalizuje wektor TfidfVectorizer ze słowami stop z języka angielskiego i maksymalną częstotliwością występowania w dokumentach wynoszącą 0,7 (terminy o wyższej częstotliwości występowania w dokumentach zostaną odrzucone). Stop words to najczęściej występujące słowa w danym języku, które należy odfiltrować przed przetworzeniem danych języka naturalnego. Wektoryzator TfidfVectorizer przekształca zbiór nieprzetworzonych dokumentów w macierz cech TF-IDF.\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 58,
|
||
"id": "south-liability",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"tfidf_vectorizer=TfidfVectorizer(stop_words='english', max_df=0.7)\n",
|
||
"\n",
|
||
"tfidf_train=tfidf_vectorizer.fit_transform(x_train) \n",
|
||
"tfidf_test=tfidf_vectorizer.transform(x_test)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "linear-chest",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 6.2. PassiveAggressiveClassifier"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 55,
|
||
"id": "flying-gabriel",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Dokładność: 92.82%\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"pac=PassiveAggressiveClassifier(max_iter=50)\n",
|
||
"pac.fit(tfidf_train,y_train)\n",
|
||
"\n",
|
||
"#Przewidzenie na zbiorze testowym i kalkulacja dokładnośći\n",
|
||
"y_pred=pac.predict(tfidf_test)\n",
|
||
"score=accuracy_score(y_test,y_pred)\n",
|
||
"print(f'Dokładność: {round(score*100,2)}%')"
|
||
]
|
||
}
|
||
],
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "balanced-security",
|
||
"metadata": {},
|
||
"source": [
|
||
"## **7. Podsumowanie wyników**"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "military-radar",
|
||
"metadata": {},
|
||
"source": [
|
||
"W tym modelu uzyskaliśmy dokładność 92,82%. Na koniec wydrukujmy macierz konfuzji, aby uzyskać wgląd w liczbę fałszywych i prawdziwych wyników negatywnych i pozytywnych."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 60,
|
||
"id": "fifty-melbourne",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"array([[590, 48],\n",
|
||
" [ 43, 586]])"
|
||
]
|
||
},
|
||
"execution_count": 60,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"confusion_matrix(y_test,y_pred, labels=['FAKE','REAL'])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "collectible-ireland",
|
||
"metadata": {},
|
||
"source": [
|
||
"W przypadku tego modelu mamy 590 prawdziwych wyników dodatnich, 586 prawdziwych wyników ujemnych, 43 fałszywe wyniki dodatnie i 48 fałszywych wyników ujemnych."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "natural-premiere",
|
||
"metadata": {},
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "crucial-geneva",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
"version": "3.7.3"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 5
|
||
}
|