From a4f068b03b92d8c1476d1c8b653a2e8b725183a5 Mon Sep 17 00:00:00 2001
From: Nitish <73771450+Nitish-JS@users.noreply.github.com>
Date: Thu, 27 Oct 2022 22:29:45 +0530
Subject: [PATCH] cryptocurrency tracker added (#357)
* cryptocurrency tracker added
* twitter hatespeech recognition
---
.../hateSpeech recognition.ipynb | 870 +
cryptohunter/.gitignore | 1 +
cryptohunter/README.md | 70 +
cryptohunter/build/_redirects | 1 +
cryptohunter/build/asset-manifest.json | 13 +
cryptohunter/build/banner2.jpg | Bin 0 -> 343365 bytes
cryptohunter/build/favicon.ico | Bin 0 -> 1150 bytes
cryptohunter/build/index.html | 1 +
cryptohunter/build/logo192.png | Bin 0 -> 5347 bytes
cryptohunter/build/logo512.png | Bin 0 -> 9664 bytes
cryptohunter/build/manifest.json | 25 +
cryptohunter/build/robots.txt | 3 +
.../build/static/css/main.ff42c6ff.css | 2 +
.../build/static/css/main.ff42c6ff.css.map | 1 +
cryptohunter/build/static/js/main.b977a214.js | 3 +
.../static/js/main.b977a214.js.LICENSE.txt | 74 +
.../build/static/js/main.b977a214.js.map | 1 +
cryptohunter/package-lock.json | 28472 ++++++++++++++++
cryptohunter/package.json | 48 +
cryptohunter/public/banner2.jpg | Bin 0 -> 343365 bytes
cryptohunter/public/favicon.ico | Bin 0 -> 1150 bytes
cryptohunter/public/index.html | 20 +
cryptohunter/public/logo192.png | Bin 0 -> 5347 bytes
cryptohunter/public/logo512.png | Bin 0 -> 9664 bytes
cryptohunter/public/manifest.json | 25 +
cryptohunter/public/robots.txt | 3 +
cryptohunter/src/App.css | 11 +
cryptohunter/src/App.js | 32 +
cryptohunter/src/CryptoContext.js | 27 +
cryptohunter/src/components/CoinInfo.jsx | 128 +
cryptohunter/src/components/CoinsTable.jsx | 200 +
cryptohunter/src/components/Header.jsx | 65 +
cryptohunter/src/components/SelectButton.jsx | 68 +
cryptohunter/src/components/banner/Banner.jsx | 60 +
.../src/components/banner/Carousel.jsx | 102 +
cryptohunter/src/config/api.js | 11 +
cryptohunter/src/config/data.js | 18 +
cryptohunter/src/index.css | 13 +
cryptohunter/src/index.js | 16 +
cryptohunter/src/pages/CoinPage.jsx | 147 +
cryptohunter/src/pages/Homepage.jsx | 12 +
41 files changed, 30543 insertions(+)
create mode 100644 Data Science Project/hateSpeech recognition.ipynb
create mode 100644 cryptohunter/.gitignore
create mode 100644 cryptohunter/README.md
create mode 100644 cryptohunter/build/_redirects
create mode 100644 cryptohunter/build/asset-manifest.json
create mode 100644 cryptohunter/build/banner2.jpg
create mode 100644 cryptohunter/build/favicon.ico
create mode 100644 cryptohunter/build/index.html
create mode 100644 cryptohunter/build/logo192.png
create mode 100644 cryptohunter/build/logo512.png
create mode 100644 cryptohunter/build/manifest.json
create mode 100644 cryptohunter/build/robots.txt
create mode 100644 cryptohunter/build/static/css/main.ff42c6ff.css
create mode 100644 cryptohunter/build/static/css/main.ff42c6ff.css.map
create mode 100644 cryptohunter/build/static/js/main.b977a214.js
create mode 100644 cryptohunter/build/static/js/main.b977a214.js.LICENSE.txt
create mode 100644 cryptohunter/build/static/js/main.b977a214.js.map
create mode 100644 cryptohunter/package-lock.json
create mode 100644 cryptohunter/package.json
create mode 100644 cryptohunter/public/banner2.jpg
create mode 100644 cryptohunter/public/favicon.ico
create mode 100644 cryptohunter/public/index.html
create mode 100644 cryptohunter/public/logo192.png
create mode 100644 cryptohunter/public/logo512.png
create mode 100644 cryptohunter/public/manifest.json
create mode 100644 cryptohunter/public/robots.txt
create mode 100644 cryptohunter/src/App.css
create mode 100644 cryptohunter/src/App.js
create mode 100644 cryptohunter/src/CryptoContext.js
create mode 100644 cryptohunter/src/components/CoinInfo.jsx
create mode 100644 cryptohunter/src/components/CoinsTable.jsx
create mode 100644 cryptohunter/src/components/Header.jsx
create mode 100644 cryptohunter/src/components/SelectButton.jsx
create mode 100644 cryptohunter/src/components/banner/Banner.jsx
create mode 100644 cryptohunter/src/components/banner/Carousel.jsx
create mode 100644 cryptohunter/src/config/api.js
create mode 100644 cryptohunter/src/config/data.js
create mode 100644 cryptohunter/src/index.css
create mode 100644 cryptohunter/src/index.js
create mode 100644 cryptohunter/src/pages/CoinPage.jsx
create mode 100644 cryptohunter/src/pages/Homepage.jsx
diff --git a/Data Science Project/hateSpeech recognition.ipynb b/Data Science Project/hateSpeech recognition.ipynb
new file mode 100644
index 00000000..6d651b7a
--- /dev/null
+++ b/Data Science Project/hateSpeech recognition.ipynb
@@ -0,0 +1,870 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Classification of hate-speech detection of twitter \n",
+ "data using machine learning algorithm"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Importing essential Library"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import sklearn\n",
+ "import numpy as np\n",
+ "import pandas as pd"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "importing Dataset"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "labeleddata=pd.read_csv('labeled_data.csv')\n",
+ "train=pd.read_csv('train.csv')\n",
+ "test=pd.read_csv('test.csv')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " id | \n",
+ " label | \n",
+ " tweet | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " @user when a father is dysfunctional and is s... | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " @user @user thanks for #lyft credit i can't us... | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 3 | \n",
+ " 0 | \n",
+ " bihday your majesty | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 4 | \n",
+ " 0 | \n",
+ " #model i love u take with u all the time in ... | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 5 | \n",
+ " 0 | \n",
+ " factsguide: society now #motivation | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " id label tweet\n",
+ "0 1 0 @user when a father is dysfunctional and is s...\n",
+ "1 2 0 @user @user thanks for #lyft credit i can't us...\n",
+ "2 3 0 bihday your majesty\n",
+ "3 4 0 #model i love u take with u all the time in ...\n",
+ "4 5 0 factsguide: society now #motivation"
+ ]
+ },
+ "execution_count": 28,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "train.head()\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " id | \n",
+ " tweet | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 31963 | \n",
+ " #studiolife #aislife #requires #passion #dedic... | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 31964 | \n",
+ " @user #white #supremacists want everyone to s... | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 31965 | \n",
+ " safe ways to heal your #acne!! #altwaystohe... | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 31966 | \n",
+ " is the hp and the cursed child book up for res... | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 31967 | \n",
+ " 3rd #bihday to my amazing, hilarious #nephew... | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " id tweet\n",
+ "0 31963 #studiolife #aislife #requires #passion #dedic...\n",
+ "1 31964 @user #white #supremacists want everyone to s...\n",
+ "2 31965 safe ways to heal your #acne!! #altwaystohe...\n",
+ "3 31966 is the hp and the cursed child book up for res...\n",
+ "4 31967 3rd #bihday to my amazing, hilarious #nephew..."
+ ]
+ },
+ "execution_count": 29,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ " test.head()\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "29720"
+ ]
+ },
+ "execution_count": 30,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# non-racist/sexist related tweets\n",
+ "sum(train[\"label\"] == 0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "2242"
+ ]
+ },
+ "execution_count": 31,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# racist/sexist related tweets\n",
+ "sum(train[\"label\"] == 1)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "id 0\n",
+ "label 0\n",
+ "tweet 0\n",
+ "dtype: int64"
+ ]
+ },
+ "execution_count": 32,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ " train.isnull().sum()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "\n",
+ "# Data Cleaning\n",
+ "#install tweet-preprocessor to clean tweets"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Collecting tweet-preprocessor\n",
+ " Downloading tweet_preprocessor-0.6.0-py3-none-any.whl (27 kB)\n",
+ "Installing collected packages: tweet-preprocessor\n",
+ "Successfully installed tweet-preprocessor-0.6.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "#install tweet-preprocessor to clean tweets\n",
+ "!pip install tweet-preprocessor"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "remove special characters using the regular expression library\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import re\n",
+ "#set up punctuations we want to be replaced\n",
+ "REPLACE_NO_SPACE = re.compile(\"(\\.)|(\\;)|(\\:)|(\\!)|(\\')|(\\?,→)|(\\,)|(\\\")|(\\|)|(\\()|(\\))|(\\[)|(\\])|(\\%)|(\\$)|(\\>)|(\\<)|(\\{)|(\\})\")\n",
+ "REPLACE_WITH_SPACE = re.compile(\"(
\n",
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | \n",
+ " id | \n",
+ " label | \n",
+ " tweet | \n",
+ " clean_tweet | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " @user when a father is dysfunctional and is s... | \n",
+ " when a father is dysfunctional and is so selfi... | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " @user @user thanks for #lyft credit i can't us... | \n",
+ " thanks for credit i cant use cause they dont o... | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 3 | \n",
+ " 0 | \n",
+ " bihday your majesty | \n",
+ " bihday your majesty | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 4 | \n",
+ " 0 | \n",
+ " #model i love u take with u all the time in ... | \n",
+ " i love u take with u all the time in ur | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 5 | \n",
+ " 0 | \n",
+ " factsguide: society now #motivation | \n",
+ " factsguide society now | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 6 | \n",
+ " 0 | \n",
+ " [2/2] huge fan fare and big talking before the... | \n",
+ " 2 2 huge fan fare and big talking before they ... | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " 7 | \n",
+ " 0 | \n",
+ " @user camping tomorrow @user @user @user @use... | \n",
+ " camping tomorrow danny | \n",
+ "
\n",
+ " \n",
+ " 7 | \n",
+ " 8 | \n",
+ " 0 | \n",
+ " the next school year is the year for exams.ð... | \n",
+ " the next school year is the year for exams can... | \n",
+ "
\n",
+ " \n",
+ " 8 | \n",
+ " 9 | \n",
+ " 0 | \n",
+ " we won!!! love the land!!! #allin #cavs #champ... | \n",
+ " we won love the land | \n",
+ "
\n",
+ " \n",
+ " 9 | \n",
+ " 10 | \n",
+ " 0 | \n",
+ " @user @user welcome here ! i'm it's so #gr... | \n",
+ " welcome here im its so | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ ""
+ ],
+ "text/plain": [
+ " id label tweet \\\n",
+ "0 1 0 @user when a father is dysfunctional and is s... \n",
+ "1 2 0 @user @user thanks for #lyft credit i can't us... \n",
+ "2 3 0 bihday your majesty \n",
+ "3 4 0 #model i love u take with u all the time in ... \n",
+ "4 5 0 factsguide: society now #motivation \n",
+ "5 6 0 [2/2] huge fan fare and big talking before the... \n",
+ "6 7 0 @user camping tomorrow @user @user @user @use... \n",
+ "7 8 0 the next school year is the year for exams.ð... \n",
+ "8 9 0 we won!!! love the land!!! #allin #cavs #champ... \n",
+ "9 10 0 @user @user welcome here ! i'm it's so #gr... \n",
+ "\n",
+ " clean_tweet \n",
+ "0 when a father is dysfunctional and is so selfi... \n",
+ "1 thanks for credit i cant use cause they dont o... \n",
+ "2 bihday your majesty \n",
+ "3 i love u take with u all the time in ur \n",
+ "4 factsguide society now \n",
+ "5 2 2 huge fan fare and big talking before they ... \n",
+ "6 camping tomorrow danny \n",
+ "7 the next school year is the year for exams can... \n",
+ "8 we won love the land \n",
+ "9 welcome here im its so "
+ ]
+ },
+ "execution_count": 37,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# append cleaned tweets to the training data\n",
+ "train[\"clean_tweet\"] = train_tweet\n",
+ "# compare the cleaned and uncleaned tweets\n",
+ "train.head(10)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " id | \n",
+ " tweet | \n",
+ " clean_tweet | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 17192 | \n",
+ " 49155 | \n",
+ " thought factory: left-right polarisation! #tru... | \n",
+ " thought factory left right polarisation >3 | \n",
+ "
\n",
+ " \n",
+ " 17193 | \n",
+ " 49156 | \n",
+ " feeling like a mermaid ð #hairflip #neverre... | \n",
+ " feeling like a mermaid | \n",
+ "
\n",
+ " \n",
+ " 17194 | \n",
+ " 49157 | \n",
+ " #hillary #campaigned today in #ohio((omg)) &am... | \n",
+ " today in omg & used words like assets&li... | \n",
+ "
\n",
+ " \n",
+ " 17195 | \n",
+ " 49158 | \n",
+ " happy, at work conference: right mindset leads... | \n",
+ " happy at work conference right mindset leads t... | \n",
+ "
\n",
+ " \n",
+ " 17196 | \n",
+ " 49159 | \n",
+ " my song \"so glad\" free download! #shoegaze ... | \n",
+ " my song so glad free download | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " id tweet \\\n",
+ "17192 49155 thought factory: left-right polarisation! #tru... \n",
+ "17193 49156 feeling like a mermaid ð #hairflip #neverre... \n",
+ "17194 49157 #hillary #campaigned today in #ohio((omg)) &am... \n",
+ "17195 49158 happy, at work conference: right mindset leads... \n",
+ "17196 49159 my song \"so glad\" free download! #shoegaze ... \n",
+ "\n",
+ " clean_tweet \n",
+ "17192 thought factory left right polarisation >3 \n",
+ "17193 feeling like a mermaid \n",
+ "17194 today in omg & used words like assets&li... \n",
+ "17195 happy at work conference right mindset leads t... \n",
+ "17196 my song so glad free download "
+ ]
+ },
+ "execution_count": 38,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# clean the test data and append the cleaned tweets to the test data\n",
+ "test_tweet = clean_tweets(test[\"tweet\"])\n",
+ "test_tweet = pd.DataFrame(test_tweet)\n",
+ "# append cleaned tweets to the training data\n",
+ "test[\"clean_tweet\"] = test_tweet\n",
+ "# compare the cleaned and uncleaned tweets\n",
+ "test.tail()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Split Train and Test"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 39,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from sklearn.model_selection import train_test_split\n",
+ "# extract the labels from the train data\n",
+ "y = train.label.values\n",
+ "# use 70% for the training and 30% for the test\n",
+ "x_train, x_test, y_train, y_test = train_test_split(train.clean_tweet.values, y,\n",
+ "stratify=y,\n",
+ "random_state=1,\n",
+ "test_size=0.3, shuffle=True)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Vectorize tweets using CountVectorizer"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 40,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from sklearn.feature_extraction.text import CountVectorizer"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 41,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " and | \n",
+ " channel | \n",
+ " data | \n",
+ " fun | \n",
+ " import | \n",
+ " is | \n",
+ " it | \n",
+ " my | \n",
+ " passion | \n",
+ " please | \n",
+ " science | \n",
+ " subscribe | \n",
+ " this | \n",
+ " to | \n",
+ " youtube | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 2 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " and channel data fun import is it my passion please science \\\n",
+ "0 0 1 1 0 1 1 0 0 0 0 0 \n",
+ "1 1 0 1 1 0 2 1 1 1 0 1 \n",
+ "2 0 1 0 0 0 0 0 1 0 1 0 \n",
+ "\n",
+ " subscribe this to youtube \n",
+ "0 0 1 0 1 \n",
+ "1 0 0 0 0 \n",
+ "2 1 0 1 0 "
+ ]
+ },
+ "execution_count": 41,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ " documents = [\"This is Import Data's Youtube channel\",\n",
+ "\"Data science is my passion and it is fun!\",\n",
+ "\"Please subscribe to my channel\"]\n",
+ "# initializing the countvectorizer\n",
+ "vectorizer = CountVectorizer()\n",
+ "# tokenize and make the document into a matrix\n",
+ "document_term_matrix = vectorizer.fit_transform(documents)\n",
+ "# check the result\n",
+ "pd.DataFrame(document_term_matrix.toarray(), columns = vectorizer.get_feature_names())"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Support Vector Classifier (SUPPORT VECTOR MACHINE)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 42,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from sklearn.feature_extraction.text import CountVectorizer\n",
+ "# vectorize tweets for model building\n",
+ "vectorizer = CountVectorizer(binary=True, stop_words='english')\n",
+ "# learn a vocabulary dictionary of all tokens in the raw documents\n",
+ "vectorizer.fit(list(x_train) + list(x_test))\n",
+ "# transform documents to document-term matrix\n",
+ "x_train_vec = vectorizer.transform(x_train)\n",
+ "x_test_vec = vectorizer.transform(x_test)\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Model building Apply Support Vetor Classifier (SVC)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 53,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from sklearn import svm\n",
+ "# classify using support vector classifier\n",
+ "svm = svm.SVC(kernel = 'linear', probability=True)\n",
+ "# fit the SVC model based on the given training data\n",
+ "prob = svm.fit(x_train_vec, y_train).predict_proba(x_test_vec)\n",
+ "# perform classification and prediction on samples in x_test\n",
+ "y_pred_svm = svm.predict(x_test_vec)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 54,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Accuracy score for SVC is: 94.86912086766085 %\n"
+ ]
+ }
+ ],
+ "source": [
+ "from sklearn.metrics import accuracy_score\n",
+ "print(\"Accuracy score for SVC is: \", accuracy_score(y_test, y_pred_svm) * 100,'%')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "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.8.3"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/cryptohunter/.gitignore b/cryptohunter/.gitignore
new file mode 100644
index 00000000..3c3629e6
--- /dev/null
+++ b/cryptohunter/.gitignore
@@ -0,0 +1 @@
+node_modules
diff --git a/cryptohunter/README.md b/cryptohunter/README.md
new file mode 100644
index 00000000..58beeacc
--- /dev/null
+++ b/cryptohunter/README.md
@@ -0,0 +1,70 @@
+# Getting Started with Create React App
+
+This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
+
+## Available Scripts
+
+In the project directory, you can run:
+
+### `npm start`
+
+Runs the app in the development mode.\
+Open [http://localhost:3000](http://localhost:3000) to view it in your browser.
+
+The page will reload when you make changes.\
+You may also see any lint errors in the console.
+
+### `npm test`
+
+Launches the test runner in the interactive watch mode.\
+See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.
+
+### `npm run build`
+
+Builds the app for production to the `build` folder.\
+It correctly bundles React in production mode and optimizes the build for the best performance.
+
+The build is minified and the filenames include the hashes.\
+Your app is ready to be deployed!
+
+See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.
+
+### `npm run eject`
+
+**Note: this is a one-way operation. Once you `eject`, you can't go back!**
+
+If you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.
+
+Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.
+
+You don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.
+
+## Learn More
+
+You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).
+
+To learn React, check out the [React documentation](https://reactjs.org/).
+
+### Code Splitting
+
+This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)
+
+### Analyzing the Bundle Size
+
+This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)
+
+### Making a Progressive Web App
+
+This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)
+
+### Advanced Configuration
+
+This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)
+
+### Deployment
+
+This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)
+
+### `npm run build` fails to minify
+
+This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)
diff --git a/cryptohunter/build/_redirects b/cryptohunter/build/_redirects
new file mode 100644
index 00000000..f8243379
--- /dev/null
+++ b/cryptohunter/build/_redirects
@@ -0,0 +1 @@
+/* /index.html 200
\ No newline at end of file
diff --git a/cryptohunter/build/asset-manifest.json b/cryptohunter/build/asset-manifest.json
new file mode 100644
index 00000000..00cd58e9
--- /dev/null
+++ b/cryptohunter/build/asset-manifest.json
@@ -0,0 +1,13 @@
+{
+ "files": {
+ "main.css": "/static/css/main.ff42c6ff.css",
+ "main.js": "/static/js/main.b977a214.js",
+ "index.html": "/index.html",
+ "main.ff42c6ff.css.map": "/static/css/main.ff42c6ff.css.map",
+ "main.b977a214.js.map": "/static/js/main.b977a214.js.map"
+ },
+ "entrypoints": [
+ "static/css/main.ff42c6ff.css",
+ "static/js/main.b977a214.js"
+ ]
+}
\ No newline at end of file
diff --git a/cryptohunter/build/banner2.jpg b/cryptohunter/build/banner2.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..467cda41e4b35be802c396f3ec010f8af90aa820
GIT binary patch
literal 343365
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