Fake News!
Depuis que M. Trump a pris ses fonctions, il a souvent évoqué et critiqué diverses nouvelles de cette manière.
Également actif sur Twitter et certains messages agressifs.
Tout en prenant des propos et des actes agressifs contre les médias de cette manière, il est également un fait que l'on doute de la crédibilité du tweet de la personne en question.
Par conséquent, cette fois, nous utiliserons la technologie d'apprentissage automatique pour vérifier si le tweet de M. Trump est vrai ou faux.
Accédez à un site appelé Kaggle et utilisez l'ensemble de données d'actualités de la page Ensemble de données d'actualités fausses et réelles Classifier les actualités Nous créerons un modèle pour juger de l'authenticité des nouvelles depuis l'arrivée au pouvoir de M. Trump.
Ensuite, extrayez les tweets après l'investiture du président à partir des données dans Trump Tweets Tweets from @realdonaldtrump, True and Fake Faites un diagramme de l'ampleur du jugement.
Cette fois, j'ai travaillé sur l'apprentissage automatique du point de vue du "tweet de M. Trump".
J'utilise simplement le tweet de M. Trump comme point de départ pour la sortie de l'apprentissage automatique sans aucune intention politique, et je comprends qu'il y a une bonne possibilité que les résultats de la vérification que je vous dirai seront boomerans avec Fake. Veuillez lire ce qui précède.
Veuillez noter que Vrai ou Faux est un résultat calculé et ne garantit pas ce qu'il est vraiment, et je n'ai pas écrit d'article pour diriger ou critiquer une personne en particulier. Je vous remercie.
Dans un premier temps, l'ensemble de données dans Fake and real news dataset Classifying the news peut être modélisé pour le prétraitement. Je vais le préparer.
import numpy as np
import pandas as pd
from pandas import DataFrame, Series
import datetime as dt
import warnings
warnings.filterwarnings('ignore')
from sklearn.preprocessing import LabelEncoder
Ensuite, lisez le fichier cav de la page correspondante.
fake = pd.read_csv("Fake.csv")
true = pd.read_csv("True.csv")
Sur la page correspondante, le bon et le incorrect sont divisés en deux fichiers, Fake et True.
Regardons les colonnes et les moules.
fake.columns
Index(['title', 'text', 'subject', 'date'], dtype='object')
fake.dtypes
title object
text object
subject object
date object
dtype: object
true.columns
Index(['title', 'text', 'subject', 'date'], dtype='object')
true.dtypes
title object
text object
subject object
date object
dtype: object
Vous pouvez voir qu'aucun fichier n'a une indication directe de Vrai ou Faux.
Après avoir clairement indiqué cela, je vais le mettre ensemble.
fake["Reality"] = 0
true["Reality"] = 1
#Créez une nouvelle réalité. Définissez Fake sur 0 et True sur 1.
df = pd.concat([fake, true], axis=0)
df = df.reset_index(drop=True)
df.isnull().sum()
title 0
text 0
subject 0
date 0
Reality 0
dtype: int64
df.head()
#Aucun des fichiers d'origine n'était manquant. Le montant étant trop important, il est omis, mais il est important de le vérifier à l'avance.
title | text | subject | date | Reality |
---|---|---|---|---|
0 | Donald Trump Sends Out Embarrassing New Year’... | Donald Trump just couldn t wish all Americans ... | News | December 31, 2017 |
1 | Drunk Bragging Trump Staffer Started Russian ... | House Intelligence Committee Chairman Devin Nu... | News | December 31, 2017 |
2 | Sheriff David Clarke Becomes An Internet Joke... | On Friday, it was revealed that former Milwauk... | News | December 30, 2017 |
3 | Trump Is So Obsessed He Even Has Obama’s Name... | On Christmas day, Donald Trump announced that ... | News | December 29, 2017 |
4 | Pope Francis Just Called Out Donald Trump Dur... | Pope Francis used his annual Christmas Day mes... | News | December 25, 2017 |
df.tail()
title | text | subject | date | Reality |
---|---|---|---|---|
44893 | 'Fully committed' NATO backs new U.S. approach... | BRUSSELS (Reuters) - NATO allies on Tuesday we... | worldnews | August 22, 2017 |
44894 | LexisNexis withdrew two products from Chinese ... | LONDON (Reuters) - LexisNexis, a provider of l... | worldnews | August 22, 2017 |
44895 | Minsk cultural hub becomes haven from authorities | MINSK (Reuters) - In the shadow of disused Sov... | worldnews | August 22, 2017 |
44896 | Vatican upbeat on possibility of Pope Francis ... | MOSCOW (Reuters) - Vatican Secretary of State ... | worldnews | August 22, 2017 |
44897 | Indonesia to buy $1.14 billion worth of Russia... | JAKARTA (Reuters) - Indonesia will buy 11 Sukh... | worldnews | August 22, 2017 |
D'après ce qui précède, il a été confirmé qu'il y avait à la fois vrai et faux dans le même fichier.
Il y a un sujet, alors jetons un œil. S'il y a quelque chose qui n'a rien à voir avec M. Trump, je couperai la nouvelle.
df["subject"].unique()
array(['News', 'politics', 'Government News', 'left-news', 'US_News',
'Middle-east', 'politicsNews', 'worldnews'], dtype=object)
#
df = pd.concat([df['title'], df['text'], df['subject'],df["date"]\
.str.extract('(?P<Month>.*) (?P<Day>.*), (?P<Year>.*)',expand=True),df["date"],df["Reality"]], axis=1)
df.head()
title | text | subject | Month | Day | Year | date | Reality |
---|---|---|---|---|---|---|---|
0 | Donald Trump Sends Out Embarrassing New Year’... | Donald Trump just couldn t wish all Americans ... | News | December | 31 | 2017 | December 31, 2017 |
1 | Drunk Bragging Trump Staffer Started Russian ... | House Intelligence Committee Chairman Devin Nu... | News | December | 31 | 2017 | December 31, 2017 |
2 | Sheriff David Clarke Becomes An Internet Joke... | On Friday, it was revealed that former Milwauk... | News | December | 30 | 2017 | December 30, 2017 |
3 | Trump Is So Obsessed He Even Has Obama’s Name... | On Christmas day, Donald Trump announced that ... | News | December | 29 | 2017 | December 29, 2017 |
4 | Pope Francis Just Called Out Donald Trump Dur... | Pope Francis used his annual Christmas Day mes... | News | December | 25 | 2017 | December 25, 2017 |
df.isnull().sum()
title 0
text 0
subject 0
Month 45
Day 45
Year 45
date 0
Reality 0
dtype: int64
nonull = df.dropna()
nonull.isnull().sum()
title 0
text 0
subject 0
Month 0
Day 0
Year 0
date 0
Reality 0
dtype: int64
null = df[df.isnull().any(axis=1)]
#
null.head()
title | text | subject | Month | Day | Year | date | Reality |
---|---|---|---|---|---|---|---|
9050 | Democrat Senator Warns Mueller Not To Release ... | According to The Hill, Democrat Senator Bob Ca... | politics | NaN | NaN | NaN | 19-Feb-18 |
9051 | MSNBC ANCHOR Flabbergasted at What Texas Teach... | If we protect every other government building ... | politics | NaN | NaN | NaN | 19-Feb-18 |
9052 | WATCH: SNOWFLAKES ASKED Communist Party Platfo... | Ami Horowitz is fantastic! Check out this man ... | politics | NaN | NaN | NaN | 19-Feb-18 |
9053 | JUST IN: BADASS GENERAL JOHN KELLY Shoved Chin... | Just one more reminder of why President Trump ... | politics | NaN | NaN | NaN | 18-Feb-18 |
9054 | DOJ’s JEFF SESSIONS Opens Investigation Into W... | Thank goodnesss Jeff Sessions is moving on fin... | politics | NaN | NaN | NaN | 18-Feb-18 |
null = null.drop(["Month", "Day", "Year"], axis=1)
#
null = null.reset_index(drop=True)
null.head()
title | text | subject | date | Reality |
---|---|---|---|---|
0 | Democrat Senator Warns Mueller Not To Release ... | According to The Hill, Democrat Senator Bob Ca... | politics | 19-Feb-18 |
1 | MSNBC ANCHOR Flabbergasted at What Texas Teach... | If we protect every other government building ... | politics | 19-Feb-18 |
2 | WATCH: SNOWFLAKES ASKED Communist Party Platfo... | Ami Horowitz is fantastic! Check out this man ... | politics | 19-Feb-18 |
3 | JUST IN: BADASS GENERAL JOHN KELLY Shoved Chin... | Just one more reminder of why President Trump ... | politics | 18-Feb-18 |
4 | DOJ’s JEFF SESSIONS Opens Investigation Into W... | Thank goodnesss Jeff Sessions is moving on fin... | politics | 18-Feb-18 |
Ensuite, séparons les dates. Cela semblait bien séparer les dates, mais il y avait un problème. Il semble y avoir un jour où les choses ne vont pas bien ici. Je vais le séparer de la partie qui fonctionne bien et le vérifier. Cochez uniquement ceux qui ne fonctionnent pas ici. Jetons un coup d'œil à la fin de la recréation de la date.
null.tail()
title | text | subject | date | Reality |
---|---|---|---|---|
40 | https://fedup.wpengine.com/wp-content/uploads/... | https://fedup.wpengine.com/wp-content/uploads/... | Government News | https://fedup.wpengine.com/wp-content/uploads/... |
41 | https://fedup.wpengine.com/wp-content/uploads/... | https://fedup.wpengine.com/wp-content/uploads/... | Government News | https://fedup.wpengine.com/wp-content/uploads/... |
42 | Homepage | [vc_row][vc_column width= 1/1 ][td_block_trend... | left-news | MSNBC HOST Rudely Assumes Steel Worker Would N... |
43 | https://fedup.wpengine.com/wp-content/uploads/... | https://fedup.wpengine.com/wp-content/uploads/... | left-news | https://fedup.wpengine.com/wp-content/uploads/... |
44 | https://fedup.wpengine.com/wp-content/uploads/... | https://fedup.wpengine.com/wp-content/uploads/... | left-news | https://fedup.wpengine.com/wp-content/uploads/... |
Il y en a même qui ont une date comme URL. Les autres informations sont également une URL, excluons donc ces informations.
Beaucoup de dates sont écrites comme 〇〇-〇〇-〇〇, donc je vais commencer à partir de là.
null_dates = null["date"].str.extract('(?P<Day>.*)-(?P<Month>.*)-(?P<Year>.*)',expand=True)
null_dates.dtypes
Day object
Month object
Year object
dtype: object
null_dates
#Voyez ce que vous avez séparé les dates mais qui ne fonctionne toujours pas. Puisque le montant sera trop important, «omettez» les parties qui ne s'appliquent pas.
Day | Month | Year |
---|---|---|
réduction | réduction | réduction |
35 | https://100percentfedup.com/served-roy-moore-v... | commander |
36 | https://100percentfedup.com/video-hillary-aske... | some |
37 | https://100percentfedup.com/12-yr-old-black-co... | from |
38 | NaN | NaN |
39 | NaN | NaN |
40 | NaN | NaN |
41 | NaN | NaN |
42 | NaN | NaN |
43 | NaN | NaN |
44 | NaN | NaN |
Puisque la partie pertinente était la dernière, regardons la partie pertinente.
null["date"].tail(10)
35 https://100percentfedup.com/served-roy-moore-v...
36 https://100percentfedup.com/video-hillary-aske...
37 https://100percentfedup.com/12-yr-old-black-co...
38 https://fedup.wpengine.com/wp-content/uploads/...
39 https://fedup.wpengine.com/wp-content/uploads/...
40 https://fedup.wpengine.com/wp-content/uploads/...
41 https://fedup.wpengine.com/wp-content/uploads/...
42 MSNBC HOST Rudely Assumes Steel Worker Would N...
43 https://fedup.wpengine.com/wp-content/uploads/...
44 https://fedup.wpengine.com/wp-content/uploads/...
Name: date, dtype: object
Vous pouvez voir que la date elle-même est déjà foirée.
Supprimez la partie concernée.
null = null[:-10]
null_dates = null_dates[:-10]
Bien que la partie étrange de la date ait été supprimée, le problème demeure que la date est la même et celle précédant l'entrée en fonction est supprimée.
Continuons à y travailler.
#Notation du mois
df["Month"].unique()
array(['December', 'November', 'October', 'September', 'August', 'July',
'June', 'May', 'April', 'March', 'February', 'January', nan, 'Dec',
'Nov', 'Oct', 'Sep', 'Aug', 'Jul', 'Jun', 'Apr', 'Mar', 'Feb',
'Jan'], dtype=object)
null_dates["Month"].unique()
array(['Feb'], dtype=object)
null_dates["Month"] = "February"
#Comme ce n'est que février, cela correspond à février.
#Notation d'année
null_dates["Year"].unique()
array(['18'], dtype=object)
null_dates["Year"] = "2018"
#Seulement 18 ainsi unifiés jusqu'en 2018
null_filled = pd.concat([null['title'], null['text'], null['subject'],\
null_dates["Month"],null_dates["Day"], null_dates["Year"],null["date"],\
null["Reality"]], axis=1)
#null et null_Organiser les dates
table = pd.concat([nonull, null_filled], axis=0)
table = table.drop("date", axis=1)
#Vous pouvez maintenant unifier le format de la date
table = table.reset_index(drop=True)
#Ici les index sont dans l'ordre
#subject
le = LabelEncoder()
encoded = le.fit_transform(table['subject'].values)
decoded = le.inverse_transform(encoded)
table['subject'] = encoded
#Convertir le sujet en nombre, non directement lié
#Unification de la lune
table["Month"].unique()
array(['December', 'November', 'October', 'September', 'August', 'July',
'June', 'May', 'April', 'March', 'February', 'January', 'Dec',
'Nov', 'Oct', 'Sep', 'Aug', 'Jul', 'Jun', 'Apr', 'Mar', 'Feb',
'Jan'], dtype=object)
table["Month"] = table["Month"].map({'December':12, 'November':11, 'October':10, 'September':9, 'August':8, 'July':7,
'June':6, 'May':5, 'April':4, 'March':3, 'February':2, 'January':1, 'Dec':12,
'Nov':11, 'Oct':10, 'Sep':9, 'Aug':8, 'Jul':7, 'Jun':6, 'Apr':4, 'Mar':3, 'Feb':2,
'Jan':1})
#Conversion de type
table.dtypes
#Day,L'année est un objet, alors corrige-le
title object
text object
subject int64
Month int64
Day object
Year object
Reality int
table["Day"] = table["Day"].astype("int64")
table["Year"] = table["Year"].astype("int64")
table.dtypes
title object
text object
subject int64
Month int64
Day int64
Year int64
Reality int64
dtype: object
table.isnull().sum()
title 0
text 0
subject 0
Month 0
Day 0
Year 0
Reality 0
#Cela résout le problème des valeurs manquantes
Jusqu'à présent, nous avons continué à effectuer la conversion de type et l'unification de la notation.
L'actualité avant le 20 janvier 2017, date à laquelle M. Trump a finalement pris ses fonctions, sera coupée.
Par conséquent, datetime est utilisé.
dates = table[["Year", "Month", "Day"]]
dates = pd.to_datetime(dates)
dates.head()
0 2017-12-31
1 2017-12-31
2 2017-12-30
3 2017-12-29
4 2017-12-25
dtype: datetime64[ns]
news = pd.concat([table, dates], axis=1)
news = news.rename(columns={0: 'dates'})
news = news[["text", "dates", "Reality"]]
news[news["dates"] > dt.datetime(2017,1,20)]
#Tout couper avant que le président ne prenne ses fonctions
news = news.drop("dates", axis=1)
news.head()
#Ceci termine.
text | Reality |
---|---|
0 | Donald Trump just couldn t wish all Americans ... |
1 | House Intelligence Committee Chairman Devin Nu... |
2 | On Friday, it was revealed that former Milwauk... |
3 | On Christmas day, Donald Trump announced that ... |
4 | Pope Francis used his annual Christmas Day mes... |
Ceci complète un résumé des nouvelles depuis que M. Trump a pris ses fonctions et sa vérité.
Enfin, enregistrez-le dans un fichier csv et passez à l'étape suivante.
news.to_csv("news_for_learning.csv", index=False)
Ensuite, nous extrairons les tweets après l'investiture du président de Trump Tweets Tweets from @realdonaldtrump.
Lisons les données et regardons le contenu.
import numpy as np
import pandas as pd
from pandas import DataFrame, Series
import datetime as dt
import warnings
warnings.filterwarnings('ignore')
trump = pd.read_csv("trumptweets.csv")
trump.head()
id | link | content | date | retweets | favorites | mentions | hashtags | geo |
---|---|---|---|---|---|---|---|---|
0 | 1698308935 | https://twitter.com/realDonaldTrump/status/169... | Be sure to tune in and watch Donald Trump on L... | 2009-05-04 20:54:25 | 500 | 868 | NaN | NaN |
1 | 1701461182 | https://twitter.com/realDonaldTrump/status/170... | Donald Trump will be appearing on The View tom... | 2009-05-05 03:00:10 | 33 | 273 | NaN | NaN |
2 | 1737479987 | https://twitter.com/realDonaldTrump/status/173... | Donald Trump reads Top Ten Financial Tips on L... | 2009-05-08 15:38:08 | 12 | 18 | NaN | NaN |
3 | 1741160716 | https://twitter.com/realDonaldTrump/status/174... | New Blog Post: Celebrity Apprentice Finale and... | 2009-05-08 22:40:15 | 11 | 24 | NaN | NaN |
4 | 1773561338 | https://twitter.com/realDonaldTrump/status/177... | "My persona will never be that of a wallflower... | 2009-05-12 16:07:28 | 1399 | 1965 | NaN | NaN |
trump.dtypes
id int64
link object
content object
date object
retweets int64
favorites int64
mentions object
hashtags object
geo float64
dtype: object
Il existe différents contenus, mais ici nous n'utiliserons que la date et le contenu.
Je changerai la date en datetime.
trump['Date'] = pd.to_datetime(trump['date'])
trump[trump["Date"] > dt.datetime(2017,1,20)]
Cela a effacé tous les tweets avant sa prise de fonction.
Supprimez les données autres que le contenu et ajoutez de nouveaux éléments appelés vérité et pourcentage.
Lors de la création et de la validation d'un modèle, Truth stocke la conclusion Vrai ou Faux, et Pourcentage stocke la possibilité de résultats de calcul.
trump = trump[["content"]]
trump["Truth"] = "Unknown"
#Maintenant, le contenu n'est que contenu et vérité. Le résultat du jugement d'authenticité est le type de caractère Vrai et Faux.
trump["Percentage"] = 0
#Ajoutez également le pourcentage
trump = trump.reset_index(drop=True)
#Ici les index sont dans l'ordre
trump.head()
content | Truth | Percentage |
---|---|---|
0 | Be sure to tune in and watch Donald Trump on L... | Unknown |
1 | Donald Trump will be appearing on The View tom... | Unknown |
2 | Donald Trump reads Top Ten Financial Tips on L... | Unknown |
3 | New Blog Post: Celebrity Apprentice Finale and... | Unknown |
4 | "My persona will never be that of a wallflower... | Unknown |
Maintenant que vous vous êtes limité aux informations dont vous avez besoin, enregistrez-les dans un nouveau fichier csv.
trump.to_csv("trump_for_judging.csv", index=False)
Nous travaillerons sur la création de modèles dans la prochaine étape.
Maintenant que nous avons tous les fichiers csv nécessaires, créons un modèle pour juger les actualités.
Ici, nous utilisons un simple classificateur bayésien.
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from nltk.classify import NaiveBayesClassifier
from nltk.classify.util import accuracy as nltk_accuracy
import pickle
news = pd.read_csv("news_for_learning.csv")
#Fichier CSV créé à l'étape 1
Cette fois, nous allons créer une liste avec Vrai et Faux respectivement et stocker les mots correspondants au format dictionnaire.
Fake =[]
Fact = []
for text, reality in zip(news['text'], news['Reality']):
line = text.split(" ")
dic = {}
if reality == 0:
for word in line:
dic[word] = True
ireru = (dic, 0)
Fake.append(ireru)
else:
for word in line:
dic[word] = True
ireru = (dic, 1)
Fact.append(ireru)
Vous avez maintenant stocké les mots dans chaque liste.
Par exemple, même si vous affichez Fake [0], une énorme quantité de mots apparaîtra, donc je vais l'omettre ici.
Maintenant, créons des données d'entraînement et des données de test et connectons-les à. Ici, 90% des données sont utilisées pour la formation.
threshold = 0.9
num_fake = int(threshold * len(Fake))
num_fact = int(threshold * len(Fact))
features_train = Fake[:num_fake] + Fact[:num_fact]
features_test = Fake[num_fake:] + Fact[num_fact:]
classifier = NaiveBayesClassifier.train(features_train)
print('Accuracy of the classifier:', nltk_accuracy(classifier, features_test))
Accuracy of the classifier: 0.9585746102449889
En regardant la précision, nous pouvons voir qu'elle est assez élevée à 95% ou plus. Voyons quels mots détiennent la clé.
N = 15
print('Top ' + str(N) + ' most informative words:')
for i, item in enumerate(classifier.most_informative_features()[:N]):
print(str(i+1) + '. ' + item[0])
Top 15 most informative words:
1. (Reuters)
2. -
3. -
4. screenshot
5. Image:
6. MOSCOW
7. BERLIN
8. screengrab
9. Images
10. Editing
11. WASHINGTON
12. Kurdistan
13. corrects
14. racists
15. Image
En regardant cela comme ça, vous pouvez voir que les symboles, les noms de lieux et certains d'entre eux, tels que racistes, sont importants.
Enfin, sauvegardons le modèle.
filename = 'model_for_trump.sav'
pickle.dump(classifier, open(filename, 'wb'))
Ceci termine l'enregistrement.
Si vous exécutez le code suivant en suivant le code décrit jusqu'à présent à l'étape 2 et copiez et collez les nouvelles, l'authenticité sera jugée.
Comme mentionné au début, il s'agit d'un résultat de calcul et nous ne pouvons pas garantir que ce soit vraiment le cas, veuillez donc le faire à vos propres risques.
def extract_features(words):
return dict([(word, True) for word in words])
print(dict([(word, True) for word in words]))
#Stockez le dictionnaire dans le même format que la liste précédente
#Voyez ce que vous avez tapé sur place
input_review = input()
print("Fact Check:")
#extract_features(input_review)
print("\nNews Text:",input_review)
features = extract_features(input_review.split())
print(features)
probabilities = classifier.prob_classify(features)
predicted_truth = probabilities.max()
if predicted_truth == 0:
answer = "Fake News!!!"
else:
answer = "True News!!!"
print("Predicted Answer:", answer)
print("Probability:", round(probabilities.prob(predicted_truth), 2))
Dans la dernière étape, nous vérifierons enfin le tweet de M. Trump.
Commençons par charger des fichiers et des bibliothèques.
import pandas as pd
import pickle
trump = pd.read_csv("trump_for_judging.csv")
#Charger les tweets de Trump
classifier = pickle.load(open('model_for_trump.sav', 'rb'))
#Charger le modèle enregistré
import matplotlib.pyplot as plt
import seaborn as sns
#Enfin, vérifiez le ratio de vérité
Ensuite, créez une fonction qui détermine l'authenticité. Il s'agit d'une version légèrement modifiée du dernier code de l'étape précédente.
def FactCheck(event):
global answer
global percentage
line = event.split(" ")
dic = {}
for word in line:
dic[word] = True
probabilities = classifier.prob_classify(dic)
predicted_truth = probabilities.max()
percentage = round(probabilities.prob(predicted_truth))
if predicted_truth == 0:
answer = "Fake"
else:
answer = "True"
return answer
Ici, le résultat du jugement pour chaque actualité est sélectionné comme Vrai ou Faux, et la valeur numérique de la probabilité qu'elle soit jugée peut également être sortie.
À partir de maintenant, nous allons effectuer le travail de jugement et écrire chaque résultat dans le fichier csv qui a été lu précédemment.
for i, v in trump.iterrows():
FactCheck(v["content"])
trump.at[trump.index[i], 'Truth'] = answer
trump.at[trump.index[i], 'Percentage'] = percentage
trump.head()
content | Truth | Percentage |
---|---|---|
0 | Be sure to tune in and watch Donald Trump on L... | Fake |
1 | Donald Trump will be appearing on The View tom... | Fake |
2 | Donald Trump reads Top Ten Financial Tips on L... | Fake |
3 | New Blog Post: Celebrity Apprentice Finale and... | Fake |
4 | "My persona will never be that of a wallflower... | True |
Avec cela, nous avons pu afficher le résultat du jugement et la valeur numérique du tweet.
Faisons un graphique du taux d'authenticité.
f,ax=plt.subplots(1,2,figsize=(18,8))
trump['Truth'].value_counts().plot.pie(explode=[0,0.1],autopct='%1.1f%%',ax=ax[0],shadow=True)
ax[0].set_title('Truth')
ax[0].set_ylabel('')
sns.countplot('Truth',data=trump,ax=ax[1])
ax[1].set_title('Truth')
plt.show()
trump.describe()
Percentage |
---|
count |
mean |
std |
min |
25% |
50% |
75% |
max |
La vérité est 13,6%. Environ 6 tweets sur 7 étaient faux.
De plus, il semblait que le résultat du calcul était que le pourcentage de tous les tweets était de 1, c'est-à-dire 100% correct.
Cette fois, j'ai créé un modèle à l'aide d'un fichier qui spécifie l'authenticité de l'actualité de Kaggle et jugé l'authenticité du tweet de M. Trump.
En conséquence, environ 6 de ses tweets sur 7 sont probablement faux.
Je me demande pourquoi tous les pourcentages sont de 1, alors je vais l'examiner.
Comme je l'ai mentionné au début, il s'agit simplement d'un résultat de calcul, il n'y a donc aucune garantie que ce résultat de vérification correspondra aux faits.
De plus, je n’ai pas l’intention de défendre ou de critiquer qui que ce soit dans une position politique particulière. Je vous serais donc reconnaissant de bien vouloir comprendre à nouveau.
Cela a été un long article, mais merci d'avoir lu jusqu'au bout.
Recommended Posts