{ "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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Unnamed: 0titletextlabel
08476You Can Smell Hillary’s FearDaniel Greenfield, a Shillman Journalism Fello...FAKE
110294Watch The Exact Moment Paul Ryan Committed Pol...Google Pinterest Digg Linkedin Reddit Stumbleu...FAKE
23608Kerry to go to Paris in gesture of sympathyU.S. Secretary of State John F. Kerry said Mon...REAL
310142Bernie supporters on Twitter erupt in anger ag...— Kaydee King (@KaydeeKing) November 9, 2016 T...FAKE
4875The Battle of New York: Why This Primary MattersIt's primary day in New York and front-runners...REAL
56903Tehran, USA\\nI’m not an immigrant, but my grandparents ...FAKE
67341Girl Horrified At What She Watches Boyfriend D...Share This Baylee Luciani (left), Screenshot o...FAKE
795‘Britain’s Schindler’ Dies at 106A Czech stockbroker who saved more than 650 Je...REAL
84869Fact check: Trump and Clinton at the 'commande...Hillary Clinton and Donald Trump made some ina...REAL
92909Iran reportedly makes new push for uranium con...Iranian negotiators reportedly have made a las...REAL
101357With all three Clintons in Iowa, a glimpse at ...CEDAR RAPIDS, Iowa — “I had one of the most wo...REAL
11988Donald Trump’s Shockingly Weak Delegate Game S...Donald Trump’s organizational problems have go...REAL
127041Strong Solar Storm, Tech Risks Today | S0 News...Click Here To Learn More About Alexandra's Per...FAKE
13762310 Ways America Is Preparing for World War 3October 31, 2016 at 4:52 am \\nPretty factual e...FAKE
141571Trump takes on Cruz, but lightlyKilling Obama administration rules, dismantlin...REAL
154739How women lead differentlyAs more women move into high offices, they oft...REAL
167737Shocking! Michele Obama & Hillary Caught Glamo...Shocking! Michele Obama & Hillary Caught Glamo...FAKE
178716Hillary Clinton in HUGE Trouble After America ...0 \\nHillary Clinton has barely just lost the p...FAKE
183304What's in that Iran bill that Obama doesn't like?Washington (CNN) For months, the White House a...REAL
193078The 1 chart that explains everything you need ...While paging through Pew's best data visualiza...REAL
\n", "
" ], "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([[]],\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": [ "
" ] }, "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" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/usr/lib/python3/dist-packages/sklearn/linear_model/base.py:283: DeprecationWarning: `np.int` is a deprecated alias for the builtin `int`. To silence this warning, use `int` by itself. Doing this will not modify any behavior and is safe. When replacing `np.int`, you may wish to use e.g. `np.int64` or `np.int32` to specify the precision. If you wish to review your current use, check the release note link for additional information.\n", "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n", " indices = (scores > 0).astype(np.int)\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 }