Live Evaluation

Model, Dataset & Results

All numbers below are computed live in the browser by re-training the same pipeline used in the Python implementation: text cleaning → TF-IDF vectorization → Logistic Regression, evaluated on a held-out 20% test split.

Accuracy

90%

Precision

100%

Recall

83.3%

F1-score

90.9%

Performance metrics

Algorithm comparison (reference runs on full dataset)

Confusion matrix (test set)

Predicted REAL
Predicted FAKE
Actual REAL

8

TN

0

FP

Actual FAKE

2

FN

10

TP

Test samples: 20 · Training samples: 80 · Vocabulary: 591 TF-IDF features

Most informative features

Pushes towards FAKE

  • secret1.74
  • leak1.71
  • every1.68
  • shock1.58
  • cur1.17
  • truth1.15
  • hid1.15
  • now1.12
  • man1.11
  • government1.06
  • famou1.06
  • video1.05

Pushes towards REAL

  • ministry-1.28
  • last-1.18
  • week-1.03
  • district-1.02
  • report-1.00
  • state-0.91
  • launch-0.89
  • said-0.85
  • company-0.84
  • area-0.81
  • twelve-0.81
  • rate-0.79

Dataset

Name
Fake and Real News Dataset (sampled)
Source
Kaggle — clmentbisaillon/fake-and-real-news-dataset
Full size
44,898 articles (True.csv + Fake.csv)
Demo sample
100 balanced articles used in this browser demo
Columns
title, text, subject, date, label
Classes
REAL (0) · FAKE (1)
Split
80% training / 20% testing (stratified, random_state = 42)

Pipeline hyper-parameters

Cleaning
lowercase, URL/HTML/punctuation removal, stop-word removal, stemming
Vectorizer
TfidfVectorizer(stop_words='english', max_df=0.7)
Classifier
LogisticRegression(max_iter=1000)
Threshold
0.50 on P(fake)
Persistence
joblib.dump → model.pkl + vectorizer.pkl
Serving
Flask REST API POST /api/predict