projekt-UMA/UMA12_ANTONIO_ProjektFakeNews.ipynb
2022-06-20 22:40:40 +02:00

551 lines
37 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"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 Hillarys 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>\\nIm 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>Britains 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 Trumps Shockingly Weak Delegate Game S...</td>\n",
" <td>Donald Trumps 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 &amp; Hillary Caught Glamo...</td>\n",
" <td>Shocking! Michele Obama &amp; 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 Hillarys 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 Britains 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 Trumps 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 \\nIm 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 Trumps 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": "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KCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAA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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
}