diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/.DS_Store differ diff --git a/.ipynb_checkpoints/Mini Project-checkpoint.ipynb b/.ipynb_checkpoints/Mini Project-checkpoint.ipynb new file mode 100644 index 0000000..9828fee --- /dev/null +++ b/.ipynb_checkpoints/Mini Project-checkpoint.ipynb @@ -0,0 +1,6920 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 63, + "id": "d72e23c6", + "metadata": {}, + "outputs": [], + "source": [ + "# Import packages\n", + "import pandas as pd\n", + "from textblob import TextBlob\n", + "import re\n", + "import ydata_profiling as pp\n", + "import sweetviz as sv\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn.metrics import accuracy_score, classification_report\n", + "from sklearn.metrics import confusion_matrix, roc_curve, roc_auc_score\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "1a1c8456", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/48/tqx5v_cn2yz_z2tp0lfxzwww0000gn/T/ipykernel_11117/721239921.py:3: DtypeWarning: Columns (1,10) have mixed types. Specify dtype option on import or set low_memory=False.\n", + " df = pd.read_csv(file_path)\n" + ] + } + ], + "source": [ + "# Load the dataset\n", + "file_path = \"/Users/nmn/Downloads/archive/1429_1.csv\"\n", + "df = pd.read_csv(file_path)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "86ac8f09", + "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", + "
idnameasinsbrandcategorieskeysmanufacturerreviews.datereviews.dateAddedreviews.dateSeen...reviews.doRecommendreviews.idreviews.numHelpfulreviews.ratingreviews.sourceURLsreviews.textreviews.titlereviews.userCityreviews.userProvincereviews.username
0AVqkIhwDv8e3D1O-lebbAll-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,...B01AHB9CN2AmazonElectronics,iPad & Tablets,All Tablets,Fire Ta...841667104676,amazon/53004484,amazon/b01ahb9cn2...Amazon2017-01-13T00:00:00.000Z2017-07-03T23:33:15Z2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z...TrueNaN0.05.0http://reviews.bestbuy.com/3545/5620406/review...This product so far has not disappointed. My c...KindleNaNNaNAdapter
1AVqkIhwDv8e3D1O-lebbAll-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,...B01AHB9CN2AmazonElectronics,iPad & Tablets,All Tablets,Fire Ta...841667104676,amazon/53004484,amazon/b01ahb9cn2...Amazon2017-01-13T00:00:00.000Z2017-07-03T23:33:15Z2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z...TrueNaN0.05.0http://reviews.bestbuy.com/3545/5620406/review...great for beginner or experienced person. Boug...very fastNaNNaNtruman
2AVqkIhwDv8e3D1O-lebbAll-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,...B01AHB9CN2AmazonElectronics,iPad & Tablets,All Tablets,Fire Ta...841667104676,amazon/53004484,amazon/b01ahb9cn2...Amazon2017-01-13T00:00:00.000Z2017-07-03T23:33:15Z2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z...TrueNaN0.05.0http://reviews.bestbuy.com/3545/5620406/review...Inexpensive tablet for him to use and learn on...Beginner tablet for our 9 year old son.NaNNaNDaveZ
3AVqkIhwDv8e3D1O-lebbAll-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,...B01AHB9CN2AmazonElectronics,iPad & Tablets,All Tablets,Fire Ta...841667104676,amazon/53004484,amazon/b01ahb9cn2...Amazon2017-01-13T00:00:00.000Z2017-07-03T23:33:15Z2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z...TrueNaN0.04.0http://reviews.bestbuy.com/3545/5620406/review...I've had my Fire HD 8 two weeks now and I love...Good!!!NaNNaNShacks
4AVqkIhwDv8e3D1O-lebbAll-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,...B01AHB9CN2AmazonElectronics,iPad & Tablets,All Tablets,Fire Ta...841667104676,amazon/53004484,amazon/b01ahb9cn2...Amazon2017-01-12T00:00:00.000Z2017-07-03T23:33:15Z2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z...TrueNaN0.05.0http://reviews.bestbuy.com/3545/5620406/review...I bought this for my grand daughter when she c...Fantastic Tablet for kidsNaNNaNexplore42
\n", + "

5 rows × 21 columns

\n", + "
" + ], + "text/plain": [ + " id name \\\n", + "0 AVqkIhwDv8e3D1O-lebb All-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,... \n", + "1 AVqkIhwDv8e3D1O-lebb All-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,... \n", + "2 AVqkIhwDv8e3D1O-lebb All-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,... \n", + "3 AVqkIhwDv8e3D1O-lebb All-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,... \n", + "4 AVqkIhwDv8e3D1O-lebb All-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,... \n", + "\n", + " asins brand categories \\\n", + "0 B01AHB9CN2 Amazon Electronics,iPad & Tablets,All Tablets,Fire Ta... \n", + "1 B01AHB9CN2 Amazon Electronics,iPad & Tablets,All Tablets,Fire Ta... \n", + "2 B01AHB9CN2 Amazon Electronics,iPad & Tablets,All Tablets,Fire Ta... \n", + "3 B01AHB9CN2 Amazon Electronics,iPad & Tablets,All Tablets,Fire Ta... \n", + "4 B01AHB9CN2 Amazon Electronics,iPad & Tablets,All Tablets,Fire Ta... \n", + "\n", + " keys manufacturer \\\n", + "0 841667104676,amazon/53004484,amazon/b01ahb9cn2... Amazon \n", + "1 841667104676,amazon/53004484,amazon/b01ahb9cn2... Amazon \n", + "2 841667104676,amazon/53004484,amazon/b01ahb9cn2... Amazon \n", + "3 841667104676,amazon/53004484,amazon/b01ahb9cn2... Amazon \n", + "4 841667104676,amazon/53004484,amazon/b01ahb9cn2... Amazon \n", + "\n", + " reviews.date reviews.dateAdded \\\n", + "0 2017-01-13T00:00:00.000Z 2017-07-03T23:33:15Z \n", + "1 2017-01-13T00:00:00.000Z 2017-07-03T23:33:15Z \n", + "2 2017-01-13T00:00:00.000Z 2017-07-03T23:33:15Z \n", + "3 2017-01-13T00:00:00.000Z 2017-07-03T23:33:15Z \n", + "4 2017-01-12T00:00:00.000Z 2017-07-03T23:33:15Z \n", + "\n", + " reviews.dateSeen ... reviews.doRecommend \\\n", + "0 2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z ... True \n", + "1 2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z ... True \n", + "2 2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z ... True \n", + "3 2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z ... True \n", + "4 2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z ... True \n", + "\n", + " reviews.id reviews.numHelpful reviews.rating \\\n", + "0 NaN 0.0 5.0 \n", + "1 NaN 0.0 5.0 \n", + "2 NaN 0.0 5.0 \n", + "3 NaN 0.0 4.0 \n", + "4 NaN 0.0 5.0 \n", + "\n", + " reviews.sourceURLs \\\n", + "0 http://reviews.bestbuy.com/3545/5620406/review... \n", + "1 http://reviews.bestbuy.com/3545/5620406/review... \n", + "2 http://reviews.bestbuy.com/3545/5620406/review... \n", + "3 http://reviews.bestbuy.com/3545/5620406/review... \n", + "4 http://reviews.bestbuy.com/3545/5620406/review... \n", + "\n", + " reviews.text \\\n", + "0 This product so far has not disappointed. My c... \n", + "1 great for beginner or experienced person. Boug... \n", + "2 Inexpensive tablet for him to use and learn on... \n", + "3 I've had my Fire HD 8 two weeks now and I love... \n", + "4 I bought this for my grand daughter when she c... \n", + "\n", + " reviews.title reviews.userCity \\\n", + "0 Kindle NaN \n", + "1 very fast NaN \n", + "2 Beginner tablet for our 9 year old son. NaN \n", + "3 Good!!! NaN \n", + "4 Fantastic Tablet for kids NaN \n", + "\n", + " reviews.userProvince reviews.username \n", + "0 NaN Adapter \n", + "1 NaN truman \n", + "2 NaN DaveZ \n", + "3 NaN Shacks \n", + "4 NaN explore42 \n", + "\n", + "[5 rows x 21 columns]" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Display the first few rows of the dataset\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "8ca78e98", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 34660 entries, 0 to 34659\n", + "Data columns (total 21 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 id 34660 non-null object \n", + " 1 name 27900 non-null object \n", + " 2 asins 34658 non-null object \n", + " 3 brand 34660 non-null object \n", + " 4 categories 34660 non-null object \n", + " 5 keys 34660 non-null object \n", + " 6 manufacturer 34660 non-null object \n", + " 7 reviews.date 34621 non-null object \n", + " 8 reviews.dateAdded 24039 non-null object \n", + " 9 reviews.dateSeen 34660 non-null object \n", + " 10 reviews.didPurchase 1 non-null object \n", + " 11 reviews.doRecommend 34066 non-null object \n", + " 12 reviews.id 1 non-null float64\n", + " 13 reviews.numHelpful 34131 non-null float64\n", + " 14 reviews.rating 34627 non-null float64\n", + " 15 reviews.sourceURLs 34660 non-null object \n", + " 16 reviews.text 34659 non-null object \n", + " 17 reviews.title 34655 non-null object \n", + " 18 reviews.userCity 0 non-null float64\n", + " 19 reviews.userProvince 0 non-null float64\n", + " 20 reviews.username 34658 non-null object \n", + "dtypes: float64(5), object(16)\n", + "memory usage: 5.6+ MB\n" + ] + } + ], + "source": [ + "df.info()" + ] + }, + { + "cell_type": "markdown", + "id": "f0ee1ce0", + "metadata": {}, + "source": [ + "## Data Cleaning" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "e8c97ee0", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/48/tqx5v_cn2yz_z2tp0lfxzwww0000gn/T/ipykernel_11117/3012774807.py:5: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df_filtered.dropna(subset=['reviews.text', 'reviews.rating'], inplace=True)\n", + "/var/folders/48/tqx5v_cn2yz_z2tp0lfxzwww0000gn/T/ipykernel_11117/3012774807.py:8: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df_filtered['reviews.rating'] = df_filtered['reviews.rating'].astype(int)\n" + ] + }, + { + "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", + "
reviews.textreviews.rating
0This product so far has not disappointed. My c...5
1great for beginner or experienced person. Boug...5
2Inexpensive tablet for him to use and learn on...5
3I've had my Fire HD 8 two weeks now and I love...4
4I bought this for my grand daughter when she c...5
\n", + "
" + ], + "text/plain": [ + " reviews.text reviews.rating\n", + "0 This product so far has not disappointed. My c... 5\n", + "1 great for beginner or experienced person. Boug... 5\n", + "2 Inexpensive tablet for him to use and learn on... 5\n", + "3 I've had my Fire HD 8 two weeks now and I love... 4\n", + "4 I bought this for my grand daughter when she c... 5" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Keep only the necessary columns\n", + "df_filtered = df[['reviews.text', 'reviews.rating']]\n", + "\n", + "# Drop rows with missing values in 'reviews.text' or 'reviews.rating'\n", + "df_filtered.dropna(subset=['reviews.text', 'reviews.rating'], inplace=True)\n", + "\n", + "# Convert 'reviews.rating' to integer type\n", + "df_filtered['reviews.rating'] = df_filtered['reviews.rating'].astype(int)\n", + "\n", + "# Display the first few rows of the filtered dataset\n", + "df_filtered.head()" + ] + }, + { + "cell_type": "markdown", + "id": "76beab0a", + "metadata": {}, + "source": [ + "## Text Preprocessing" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "2ef94480", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/48/tqx5v_cn2yz_z2tp0lfxzwww0000gn/T/ipykernel_11117/1347770142.py:14: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df_filtered['cleaned_text'] = df_filtered['reviews.text'].apply(preprocess_text)\n" + ] + } + ], + "source": [ + "# Function to preprocess and clean review text\n", + "def preprocess_text(text):\n", + " # Convert text to lowercase\n", + " text = text.lower()\n", + " # Remove special characters and digits\n", + " text = re.sub(r'\\W', ' ', text)\n", + " # Remove single characters\n", + " text = re.sub(r'\\s+[a-zA-Z]\\s+', ' ', text)\n", + " # Remove multiple spaces\n", + " text = re.sub(r'\\s+', ' ', text)\n", + " return text\n", + "\n", + "# Apply preprocessing to the review text\n", + "df_filtered['cleaned_text'] = df_filtered['reviews.text'].apply(preprocess_text)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "f8897e2a", + "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", + "
reviews.textreviews.ratingcleaned_text
0This product so far has not disappointed. My c...5this product so far has not disappointed my ch...
1great for beginner or experienced person. Boug...5great for beginner or experienced person bough...
2Inexpensive tablet for him to use and learn on...5inexpensive tablet for him to use and learn on...
3I've had my Fire HD 8 two weeks now and I love...4i ve had my fire hd 8 two weeks now and love i...
4I bought this for my grand daughter when she c...5i bought this for my grand daughter when she c...
\n", + "
" + ], + "text/plain": [ + " reviews.text reviews.rating \\\n", + "0 This product so far has not disappointed. My c... 5 \n", + "1 great for beginner or experienced person. Boug... 5 \n", + "2 Inexpensive tablet for him to use and learn on... 5 \n", + "3 I've had my Fire HD 8 two weeks now and I love... 4 \n", + "4 I bought this for my grand daughter when she c... 5 \n", + "\n", + " cleaned_text \n", + "0 this product so far has not disappointed my ch... \n", + "1 great for beginner or experienced person bough... \n", + "2 inexpensive tablet for him to use and learn on... \n", + "3 i ve had my fire hd 8 two weeks now and love i... \n", + "4 i bought this for my grand daughter when she c... " + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_filtered.head()" + ] + }, + { + "cell_type": "markdown", + "id": "c88662c2", + "metadata": {}, + "source": [ + "## Sentiment Analysis" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "f08303cc", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/48/tqx5v_cn2yz_z2tp0lfxzwww0000gn/T/ipykernel_11117/1108251068.py:14: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df_filtered['sentiment'] = df_filtered['cleaned_text'].apply(get_sentiment)\n" + ] + } + ], + "source": [ + "# Function to calculate sentiment polarity\n", + "def get_sentiment(text):\n", + " blob = TextBlob(text)\n", + " # Determine sentiment polarity (-1 to 1 range)\n", + " polarity = blob.sentiment.polarity\n", + " if polarity > 0:\n", + " return 'Positive'\n", + " elif polarity < 0:\n", + " return 'Negative'\n", + " else:\n", + " return 'Neutral'\n", + "\n", + "# Apply sentiment analysis to cleaned text\n", + "df_filtered['sentiment'] = df_filtered['cleaned_text'].apply(get_sentiment)" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "af872f37", + "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", + "
reviews.textreviews.ratingcleaned_textsentiment
0This product so far has not disappointed. My c...5this product so far has not disappointed my ch...Positive
1great for beginner or experienced person. Boug...5great for beginner or experienced person bough...Positive
2Inexpensive tablet for him to use and learn on...5inexpensive tablet for him to use and learn on...Positive
3I've had my Fire HD 8 two weeks now and I love...4i ve had my fire hd 8 two weeks now and love i...Positive
4I bought this for my grand daughter when she c...5i bought this for my grand daughter when she c...Positive
\n", + "
" + ], + "text/plain": [ + " reviews.text reviews.rating \\\n", + "0 This product so far has not disappointed. My c... 5 \n", + "1 great for beginner or experienced person. Boug... 5 \n", + "2 Inexpensive tablet for him to use and learn on... 5 \n", + "3 I've had my Fire HD 8 two weeks now and I love... 4 \n", + "4 I bought this for my grand daughter when she c... 5 \n", + "\n", + " cleaned_text sentiment \n", + "0 this product so far has not disappointed my ch... Positive \n", + "1 great for beginner or experienced person bough... Positive \n", + "2 inexpensive tablet for him to use and learn on... Positive \n", + "3 i ve had my fire hd 8 two weeks now and love i... Positive \n", + "4 i bought this for my grand daughter when she c... Positive " + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_filtered.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "4b8756f9", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/48/tqx5v_cn2yz_z2tp0lfxzwww0000gn/T/ipykernel_11117/260521937.py:2: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df_filtered['sentiment_num'] = df_filtered['sentiment'].map({'Positive': 1, 'Neutral': 0, 'Negative': -1})\n", + "/var/folders/48/tqx5v_cn2yz_z2tp0lfxzwww0000gn/T/ipykernel_11117/260521937.py:5: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df_filtered['high_rating'] = df_filtered['reviews.rating'].apply(lambda x: 1 if x >= 4 else 0)\n" + ] + } + ], + "source": [ + "# Convert sentiment to numerical values\n", + "df_filtered['sentiment_num'] = df_filtered['sentiment'].map({'Positive': 1, 'Neutral': 0, 'Negative': -1})\n", + "\n", + "# Define target variable (high rating = 1 if rating >= 4, else 0)\n", + "df_filtered['high_rating'] = df_filtered['reviews.rating'].apply(lambda x: 1 if x >= 4 else 0)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "c3ef986c", + "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", + "
reviews.textreviews.ratingcleaned_textsentimentsentiment_numhigh_rating
0This product so far has not disappointed. My c...5this product so far has not disappointed my ch...Positive11
1great for beginner or experienced person. Boug...5great for beginner or experienced person bough...Positive11
2Inexpensive tablet for him to use and learn on...5inexpensive tablet for him to use and learn on...Positive11
3I've had my Fire HD 8 two weeks now and I love...4i ve had my fire hd 8 two weeks now and love i...Positive11
4I bought this for my grand daughter when she c...5i bought this for my grand daughter when she c...Positive11
\n", + "
" + ], + "text/plain": [ + " reviews.text reviews.rating \\\n", + "0 This product so far has not disappointed. My c... 5 \n", + "1 great for beginner or experienced person. Boug... 5 \n", + "2 Inexpensive tablet for him to use and learn on... 5 \n", + "3 I've had my Fire HD 8 two weeks now and I love... 4 \n", + "4 I bought this for my grand daughter when she c... 5 \n", + "\n", + " cleaned_text sentiment sentiment_num \\\n", + "0 this product so far has not disappointed my ch... Positive 1 \n", + "1 great for beginner or experienced person bough... Positive 1 \n", + "2 inexpensive tablet for him to use and learn on... Positive 1 \n", + "3 i ve had my fire hd 8 two weeks now and love i... Positive 1 \n", + "4 i bought this for my grand daughter when she c... Positive 1 \n", + "\n", + " high_rating \n", + "0 1 \n", + "1 1 \n", + "2 1 \n", + "3 1 \n", + "4 1 " + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_filtered.head()" + ] + }, + { + "cell_type": "markdown", + "id": "fc56ab4b", + "metadata": {}, + "source": [ + "## Exploratory Data Analysis" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "5dbe8f6b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['reviews.text', 'reviews.rating', 'cleaned_text', 'sentiment',\n", + " 'sentiment_num', 'high_rating'],\n", + " dtype='object')" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_filtered.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "b09f1e2b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(34626, 6)" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_filtered.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "5551a95e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "reviews.text object\n", + "reviews.rating int64\n", + "cleaned_text object\n", + "sentiment object\n", + "sentiment_num int64\n", + "high_rating int64\n", + "dtype: object" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_filtered.dtypes" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "8f7fb4a7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "reviews.text 0\n", + "reviews.rating 0\n", + "cleaned_text 0\n", + "sentiment 0\n", + "sentiment_num 0\n", + "high_rating 0\n", + "dtype: int64" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Missing values\n", + "df_filtered.isna().sum() # the total number of missing values" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "cf39fedd", + "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", + "
reviews.textreviews.ratingcleaned_textsentimentsentiment_numhigh_rating
0This product so far has not disappointed. My c...5this product so far has not disappointed my ch...Positive11
1great for beginner or experienced person. Boug...5great for beginner or experienced person bough...Positive11
2Inexpensive tablet for him to use and learn on...5inexpensive tablet for him to use and learn on...Positive11
3I've had my Fire HD 8 two weeks now and I love...4i ve had my fire hd 8 two weeks now and love i...Positive11
4I bought this for my grand daughter when she c...5i bought this for my grand daughter when she c...Positive11
\n", + "
" + ], + "text/plain": [ + " reviews.text reviews.rating \\\n", + "0 This product so far has not disappointed. My c... 5 \n", + "1 great for beginner or experienced person. Boug... 5 \n", + "2 Inexpensive tablet for him to use and learn on... 5 \n", + "3 I've had my Fire HD 8 two weeks now and I love... 4 \n", + "4 I bought this for my grand daughter when she c... 5 \n", + "\n", + " cleaned_text sentiment sentiment_num \\\n", + "0 this product so far has not disappointed my ch... Positive 1 \n", + "1 great for beginner or experienced person bough... Positive 1 \n", + "2 inexpensive tablet for him to use and learn on... Positive 1 \n", + "3 i ve had my fire hd 8 two weeks now and love i... Positive 1 \n", + "4 i bought this for my grand daughter when she c... Positive 1 \n", + "\n", + " high_rating \n", + "0 1 \n", + "1 1 \n", + "2 1 \n", + "3 1 \n", + "4 1 " + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# First 5 rows of the dataset\n", + "df_filtered.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "id": "473ac946", + "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", + "
reviews.textreviews.ratingcleaned_textsentimentsentiment_numhigh_rating
34655This is not appreciably faster than any other ...3this is not appreciably faster than any other ...Positive10
34656Amazon should include this charger with the Ki...1amazon should include this charger with the ki...Neutral00
34657Love my Kindle Fire but I am really disappoint...1love my kindle fire but am really disappointed...Positive10
34658I was surprised to find it did not come with a...1i was surprised to find it did not come with a...Negative-10
34659to spite the fact that i have nothing but good...1to spite the fact that have nothing but good t...Positive10
\n", + "
" + ], + "text/plain": [ + " reviews.text reviews.rating \\\n", + "34655 This is not appreciably faster than any other ... 3 \n", + "34656 Amazon should include this charger with the Ki... 1 \n", + "34657 Love my Kindle Fire but I am really disappoint... 1 \n", + "34658 I was surprised to find it did not come with a... 1 \n", + "34659 to spite the fact that i have nothing but good... 1 \n", + "\n", + " cleaned_text sentiment \\\n", + "34655 this is not appreciably faster than any other ... Positive \n", + "34656 amazon should include this charger with the ki... Neutral \n", + "34657 love my kindle fire but am really disappointed... Positive \n", + "34658 i was surprised to find it did not come with a... Negative \n", + "34659 to spite the fact that have nothing but good t... Positive \n", + "\n", + " sentiment_num high_rating \n", + "34655 1 0 \n", + "34656 0 0 \n", + "34657 1 0 \n", + "34658 -1 0 \n", + "34659 1 0 " + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Last 5 rows of the dataset\n", + "df_filtered.tail()" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "id": "6675e03e", + "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", + "
reviews.ratingsentiment_numhigh_rating
count34626.00000034626.00000034626.000000
mean4.5845610.8592960.933258
std0.7356600.4533550.249578
min1.000000-1.0000000.000000
25%4.0000001.0000001.000000
50%5.0000001.0000001.000000
75%5.0000001.0000001.000000
max5.0000001.0000001.000000
\n", + "
" + ], + "text/plain": [ + " reviews.rating sentiment_num high_rating\n", + "count 34626.000000 34626.000000 34626.000000\n", + "mean 4.584561 0.859296 0.933258\n", + "std 0.735660 0.453355 0.249578\n", + "min 1.000000 -1.000000 0.000000\n", + "25% 4.000000 1.000000 1.000000\n", + "50% 5.000000 1.000000 1.000000\n", + "75% 5.000000 1.000000 1.000000\n", + "max 5.000000 1.000000 1.000000" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Summary statistics\n", + "df_filtered.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "c8ba0ee8", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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+aSOHTsm6dcg7+rq6nDB/smTJ/X6669XWv9SvkNWxcbGSvp1FOlsqampF1yvadOmGjdunHr16nXFT1ej7mGkCbhMO3fuNK8nycvL04YNG7R06VK5uLgoLS2t0p1uZ3vhhRe0Zs0a9e/fX02bNtWpU6fMu38qfol5e3urWbNmev/999WjRw/5+fkpICCgWrfHS7+OcgwcOFApKSkKCQnRG2+8oYyMDM2ZM0cNGjSQJN1yyy0KDw/X5MmTdfr0afn6+iotLU0bN26stL3IyEi9++67WrRokaKiolSvXj2H51adbfr06eb1Po899pj8/Py0fPlyrVy5Uk899ZTsdnu1julcs2fPVq9evdStWzdNnjxZ7u7uWrhwoXbu3Kk333zzkp/KfjFz5sxRdHS0/va3v+mll17S448/royMDHXu3FkTJkxQeHi4Tp06pf379+vjjz/WCy+84PAMrREjRuitt97SuHHj1KRJE0sB5rnnntPvf/97de3aVX/605/UvHlzHTt2TN9++60+/PBDrVmzxqzt3r27bDabVq1a5fAcpZ49e2rYsGHmz9Xl5uamWbNmafDgwXruuef017/+Vf3799e8efOUmJio0aNH68iRI5o7d26Vo1mRkZFKTU3VW2+9peuvv17169dXZGRktfuRpD59+qhLly6aNGmSioqKFBUVpc2bN+u1116TJNWr9+uYQWFhobp166bExETdeOON8vb21tatW5Wenq5BgwZdVg+4Cjn7SnSgrqq4w6zi5e7ubgQGBhqxsbHGrFmzjLy8vErrnHtH2+bNm40777zTaNasmeHh4WH4+/sbsbGxxgcffOCw3urVq43f/e53hoeHhyHJGDZsmMP2Dh8+fNF9Gcavd8/179/fePvtt4127doZ7u7uRvPmzY158+ZVWv8///mPER8fb/j4+BiNGzc2xo8fb96RdPbdc0ePHjXuvvtuo1GjRobNZnPYp6q462/Hjh1GQkKCYbfbDXd3d6NDhw4Od0cZxv+/S+uf//ynw/yq7qY6nw0bNhjdu3c3vLy8DE9PT6NTp07Ghx9+WOX2LuXuufPV3nPPPYarq6vx7bffGobx612PEyZMMFq0aGG4ubkZfn5+RlRUlDFt2jTj+PHjDuuWl5cbYWFhhiRj2rRp5933uce9b98+Y8SIEcZ1111nuLm5GY0bNzY6d+5szJw5s9I2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XnzxRR04cEB//COngwAAuNYRms5y77336siRI3r88ceVk5OjiIgIffzxx2rWrJmzWwMAAE5GaDrHmDFjNGbMGGe34TQeHh6aPn16pdOO+O3xWdQufB61B59F7XGtfRY242L31wEAAICHWwIAAFhBaAIAALCA0AQAAGABoQkAAMACQhMkSevXr1dCQoJCQ0Nls9n03nvvObula9bs2bN1yy23yNvbW4GBgbrjjju0Z88eZ7d1TVq0aJHat29vPrgvJiZG//rXv5zdFvTrvxObzabk5GRnt3JNSklJkc1mc3gFBwc7u60rjtAESVJxcbE6dOigBQsWOLuVa15mZqbGjh2rrKwsZWRk6PTp04qPj1dxcbGzW7vmNGnSRE8++aS2bdumbdu2qXv37rr99tu1a9cuZ7d2Tdu6datefPFFtW/f3tmtXNPatWunnJwc87Vjxw5nt3TF8ZwmSJL69u2rvn37OrsNSEpPT3eYXrp0qQIDA7V9+3bddtttTurq2pSQkOAw/cQTT2jRokXKyspSu3btnNTVte348eMaOnSolixZopkzZzq7nWuaq6vrNTG6dDZGmoBarrCwUJLk5+fn5E6ubeXl5UpNTVVxcbFiYmKc3c41a+zYserfv7969uzp7FaueXv37lVoaKhatGihIUOG6Pvvv3d2S1ccI01ALWYYhiZOnKjf//73ioiIcHY716QdO3YoJiZGp06dUsOGDZWWlqa2bds6u61rUmpqqr744gtt3brV2a1c86Kjo/Xaa6+pdevWOnTokGbOnKnOnTtr165d8vf3d3Z7VwyhCajFxo0bp6+++kobN250divXrPDwcGVnZ6ugoEDvvPOOhg0bpszMTILTb+zgwYN66KGHtGrVKtWvX9/Z7Vzzzr6cIzIyUjExMWrZsqVeffVVTZw40YmdXVmEJqCWGj9+vD744AOtX79eTZo0cXY71yx3d3fdcMMNkqSOHTtq69ateu6557R48WInd3Zt2b59u/Ly8hQVFWXOKy8v1/r167VgwQKVlJTIxcXFiR1e27y8vBQZGam9e/c6u5UritAE1DKGYWj8+PFKS0vTunXr1KJFC2e3hLMYhqGSkhJnt3HN6dGjR6W7s+6//37deOONmjp1KoHJyUpKSrR792517drV2a1cUYQmSPr1jpRvv/3WnN63b5+ys7Pl5+enpk2bOrGza8/YsWO1YsUKvf/++/L29lZubq4kyW63y9PT08ndXVseeeQR9e3bV2FhYTp27JhSU1O1bt26Snc44srz9vaudF2fl5eX/P39ud7PCSZPnqyEhAQ1bdpUeXl5mjlzpoqKijRs2DBnt3ZFEZogSdq2bZu6detmTleckx42bJiWLVvmpK6uTYsWLZIkxcXFOcxfunSphg8f/ts3dA07dOiQkpKSlJOTI7vdrvbt2ys9PV29evVydmuAU/3444+677779Msvv6hx48bq1KmTsrKy1KxZM2e3dkXZDMMwnN0EAABAbcdzmgAAACwgNAEAAFhAaAIAALCA0AQAAGABoQkAAMACQhMAAIAFhCYAAAALCE0A6qyUlBTddNNNzm7jili2bJkaNWrk7DYAnIWHWwKos44fP66SkhL5+/s7u5XL0rx5cyUnJys5Odmcd/LkSR07dkyBgYHOawyAA/6MCgCnKC0tlbu7+2Vto2HDhmrYsGENdVSzDMNQeXm5XF2r959ZT09P/tYgUMtweg7AbyIuLk7jxo3TxIkTFRAQoF69eunrr79Wv3791LBhQwUFBSkpKUm//PKLJGnx4sW67rrrdObMGYftDBw40PyjoFWdnlu6dKnatGmj+vXr68Ybb9TChQvNZXfddZfGjx9vTicnJ8tms2nXrl2SpNOnT8vb21uffPKJJOntt99WZGSkPD095e/vr549e6q4uLjK41u3bp1sNps++eQTdezYUR4eHtqwYYO+++473X777QoKClLDhg11yy23aPXq1Q7vyw8//KA///nPstlsstlskiqfnqs41tdff13NmzeX3W7XkCFDdOzYMbPm2LFjGjp0qLy8vBQSEqL58+crLi7OYQQLQPURmgD8Zl599VW5urpq06ZNevLJJxUbG6ubbrpJ27ZtU3p6ug4dOqTBgwdLku655x798ssvWrt2rbl+fn6+PvnkEw0dOrTK7S9ZskTTpk3TE088od27d2vWrFl69NFH9eqrr0r6NaCsW7fOrM/MzFRAQIAyMzMlSVu3btWpU6fUpUsX5eTk6L777tOIESO0e/durVu3ToMGDdLFrmiYMmWKZs+erd27d6t9+/Y6fvy4+vXrp9WrV+vLL79U7969lZCQoAMHDkiS3n33XTVp0kSPP/64cnJylJOTc95tf/fdd3rvvff00Ucf6aOPPlJmZqaefPJJc/nEiRO1adMmffDBB8rIyNCGDRv0xRdfXLBfAJfAAIDfQGxsrHHTTTeZ048++qgRHx/vUHPw4EFDkrFnzx7DMAxj4MCBxogRI8zlixcvNoKDg43Tp08bhmEY06dPNzp06GAuDwsLM1asWOGwzb/97W9GTEyMYRiG8dVXXxk2m804fPiwcfToUcPNzc2YOXOmcc899xiGYRizZs0yoqOjDcMwjO3btxuSjP3791s6vrVr1xqSjPfee++itW3btjWef/55c7pZs2bG/PnzHWqWLl1q2O12c3r69OlGgwYNjKKiInPeX/7yF7PfoqIiw83NzfjnP/9pLi8oKDAaNGhgPPTQQ5aOAcCFMdIE4DfTsWNH8+ft27dr7dq15nVJDRs21I033ijp1xEVSRo6dKjeeecdlZSUSJKWL1+uIUOGyMXFpdK2Dx8+rIMHD2rkyJEO25w5c6a5vYiICPn7+yszM1MbNmxQhw4dNHDgQHOkad26dYqNjZUkdejQQT169FBkZKTuueceLVmyRPn5+Zd0jJJUXFysKVOmqG3btmrUqJEaNmyob775xhxpuhTNmzeXt7e3OR0SEqK8vDxJ0vfff6+ysjLdeuut5nK73a7w8PBL3g+AqnEhOIDfjJeXl/nzmTNnlJCQoDlz5lSqCwkJkSQlJCTozJkzWrlypW655RZt2LBB8+bNq3LbFdc+LVmyRNHR0Q7LKkKWzWbTbbfdpnXr1snd3V1xcXGKiIhQeXm5duzYoc8++8y8/sfFxUUZGRn67LPPtGrVKj3//POaNm2aPv/8c7Vo0cLSMUrSX/7yF33yySeaO3eubrjhBnl6euruu+9WaWnpRd6tytzc3BymbTabedzGf08bVlwTVcHgBmmgxhCaADjFzTffrHfeeUfNmzc/7x1mnp6eGjRokJYvX65vv/1WrVu3VlRUVJW1QUFBuu666/T999+f95on6dfrml588UW5u7vr8ccfl81mU9euXTV37lydPHlSXbp0MWttNpu6dOmiLl266LHHHlOzZs2UlpamiRMnWj7ODRs2aPjw4brzzjsl/fqYhP379zvUuLu7q7y83PI2q9KyZUu5ublpy5YtCgsLkyQVFRVp79695ugZgMvD6TkATjF27FgdPXpU9913n7Zs2aLvv/9eq1at0ogRIxwCxNChQ7Vy5Uq98sor+sMf/nDBbaakpGj27Nl67rnn9J///Ec7duzQ0qVLHUan4uLitGvXLu3YsUNdu3Y15y1fvlw333yzfHx8JEmff/65Zs2apW3btunAgQN69913dfjwYbVp00aSlJaWZp5OvJAbbrhB7777rrKzs/Xvf/9biYmJle4IbN68udavX6+ffvrJvHvwUnl7e2vYsGH6y1/+orVr12rXrl0aMWKE6tWrV2n0CUD1EJoAOEVoaKg2bdqk8vJy9e7dWxEREXrooYdkt9tVr97//09T9+7d5efnpz179igxMfGC23zggQf00ksvadmyZYqMjFRsbKyWLVvmcDotIiJCAQEB6tChgxmQYmNjVV5e7jAi4+Pjo/Xr16tfv35q3bq1/vrXv+qZZ55R3759JUmFhYXas2fPRY9z/vz58vX1VefOnZWQkKDevXvr5ptvdqh5/PHHtX//frVs2VKNGze++Jt3HvPmzVNMTIwGDBignj17qkuXLubjFwBcPp4IDgBXqeLiYl133XV65plnNHLkSGe3A9R5XNMEAFeJL7/8Ut98841uvfVWFRYW6vHHH5ck3X777U7uDLg6EJoA4Coyd+5c7dmzR+7u7oqKitKGDRsUEBDg7LaAqwKn5wAAACzgQnAAAAALCE0AAAAWEJoAAAAsIDQBAABYQGgCAACwgNAEAABgAaEJAADAAkITAACABYQmAAAAC/4fyf8qXThCjSkAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Distribution of review ratings\n", + "sns.countplot(x='reviews.rating', data=df_filtered)\n", + "plt.title('Distribution of Review Ratings')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "5f6b0970", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk0AAAHFCAYAAADv8c1wAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAABGLklEQVR4nO3df3zP9f7/8fvb7Lft3Wb2izUKM204rb6Myu+NjKSiM58d64hKcYbFh87JVKwIdfiQnEIi+hyUqB3Kj5P8XjkachQyH5uJeY9hm+31/aOP18fbRi8zbXS7Xi7vy8Xr+Xq8nq/n692r7b7n6/V+vW2GYRgCAADAVdWq7gEAAADcDAhNAAAAFhCaAAAALCA0AQAAWEBoAgAAsIDQBAAAYAGhCQAAwAJCEwAAgAWEJgAAAAsITUANMW/ePNlsNvPl4eGh4OBgdezYUenp6crLyyu3TVpammw22zXt5+zZs0pLS9P69euvabuK9tWwYUMlJCRcUz+/ZNGiRXrjjTcqXGez2ZSWllal+6tqX3zxhe655x55e3vLZrPpo48+umJtdna2hgwZoqZNm8rT01P+/v6Kjo7WoEGDlJ2dfUPHOXPmTM2bN69c+6FDh2Sz2SpcV5Ns2rRJaWlpOnXqVHUPBb8htat7AACczZ07V82aNVNJSYny8vK0ceNGvfbaa3r99de1ZMkSdenSxax98skn1a1bt2vq/+zZsxo/frwkqUOHDpa3q8y+KmPRokXKyspSSkpKuXWbN29WgwYNbvgYKsswDPXt21dNmzbVihUr5O3trYiIiAprjxw5orvvvlu33XabRo4cqYiICDkcDu3Zs0cffvihDhw4oLCwsBs21pkzZyogIEDJyclO7SEhIdq8ebPuvPPOG7bvqrBp0yaNHz9eycnJuu2226p7OPiNIDQBNUxUVJTuuecec/mRRx7R8OHDdd9996lPnz7av3+/goKCJEkNGjS44SHi7Nmz8vLy+lX29UvatGlTrfv/JUePHtXJkyf18MMPq3PnzletnTNnjn766Sdt27ZNjRo1Mtt79+6tsWPHqqys7EYPt0Lu7u41/n0GqguX54CbwO23364pU6bo9OnTmj17ttle0SWztWvXqkOHDqpbt648PT11++2365FHHtHZs2d16NAh1atXT5I0fvx481LgxdmGi/19/fXXevTRR+Xn52fOOFztUuDy5cvVokULeXh46I477tBf//pXp/UXLz0eOnTIqX39+vWy2WzmpcIOHTpo1apV+vHHH50uVV5U0eW5rKwsPfTQQ/Lz85OHh4datWql+fPnV7ifDz74QC+88IJCQ0Pl6+urLl26aN++fVd+4y+xceNGde7cWT4+PvLy8lLbtm21atUqc31aWpoZKkePHi2bzaaGDRtesb8TJ06oVq1aCgwMrHB9rVrOP5537NihXr16yd/fXx4eHvrd736nDz/80Knm4vu8bt06PfPMMwoICFDdunXVp08fHT161Kxr2LChdu/erQ0bNpjv8cWxVnR57uJ/+127dumxxx6T3W6Xv7+/RowYoQsXLmjfvn3q1q2bfHx81LBhQ02aNKnc8RQUFCg1NVWNGjWSm5ub6tevr5SUFBUWFjrV2Ww2Pffcc1qwYIEiIyPl5eWlli1bauXKlU7jef755yVJjRo1Mo/hWi85A9eK0ATcJB588EG5uLjon//85xVrDh06pB49esjNzU3vvvuuMjIy9Oqrr8rb21vFxcUKCQlRRkaGJGngwIHavHmzNm/erL/85S9O/fTp00eNGzfWf//3f+utt9666rh27typlJQUDR8+XMuXL1fbtm31pz/9Sa+//vo1H+PMmTPVrl07BQcHm2PbvHnzFev37duntm3bavfu3frrX/+qZcuWqXnz5kpOTq7wF/fYsWP1448/6m9/+5vefvtt7d+/Xz179lRpaelVx7VhwwZ16tRJDodD77zzjj744AP5+PioZ8+eWrJkiaSfL18uW7ZMkjR06FBt3rxZy5cvv2KfsbGxKisrU58+ffSPf/xDBQUFV6xdt26d2rVrp1OnTumtt97Sxx9/rFatWqlfv34V3nv05JNPytXVVYsWLdKkSZO0fv16/cd//Ie5fvny5brjjjv0u9/9znyPrzbWi/r27auWLVtq6dKlGjRokKZNm6bhw4erd+/e6tGjh5YvX65OnTpp9OjR5nsh/Txb2b59e82fP1/Dhg3TZ599ptGjR2vevHnq1auXDMNw2s+qVas0Y8YMvfTSS1q6dKn8/f318MMP68CBA+bxDR06VJK0bNky8xjuvvvuXzwG4LoYAGqEuXPnGpKM7du3X7EmKCjIiIyMNJfHjRtnXPq/8d///ndDkrFz584r9nH8+HFDkjFu3Lhy6y729+KLL15x3aXCw8MNm81Wbn9du3Y1fH19jcLCQqdjO3jwoFPdunXrDEnGunXrzLYePXoY4eHhFY798nE//vjjhru7u3H48GGnuu7duxteXl7GqVOnnPbz4IMPOtV9+OGHhiRj8+bNFe7vojZt2hiBgYHG6dOnzbYLFy4YUVFRRoMGDYyysjLDMAzj4MGDhiRj8uTJV+3PMAyjrKzMeOqpp4xatWoZkgybzWZERkYaw4cPL/c+NWvWzPjd735nlJSUOLUnJCQYISEhRmlpqWEY//c+DxkyxKlu0qRJhiQjJyfHbLvrrruM9u3blxvXxWOYO3eu2Xbxv/2UKVOcalu1amVIMpYtW2a2lZSUGPXq1TP69OljtqWnpxu1atUqd25fPF8//fRTs02SERQUZBQUFJhtubm5Rq1atYz09HSzbfLkyRWeU8CNxEwTcBMxLvuL/HKtWrWSm5ubBg8erPnz55t/mV+rRx55xHLtXXfdpZYtWzq1JSYmqqCgQF9//XWl9m/V2rVr1blz53I3TCcnJ+vs2bPlZql69erltNyiRQtJ0o8//njFfRQWFmrr1q169NFHVadOHbPdxcVFSUlJOnLkiOVLfJey2Wx66623dODAAc2cOVNPPPGESkpKNG3aNN11113asGGDJOn777/Xd999p/79+0uSLly4YL4efPBB5eTklNt/ZY7Tiss/KRkZGSmbzabu3bubbbVr11bjxo2d9rVy5UpFRUWpVatWTuOPj4+v8LJax44d5ePjYy4HBQUpMDDwuscPXC9CE3CTKCws1IkTJxQaGnrFmjvvvFOff/65AgMD9eyzz+rOO+/UnXfeqTfffPOa9hUSEmK5Njg4+IptJ06cuKb9XqsTJ05UONaL79Hl+69bt67Tsru7uyTp3LlzV9xHfn6+DMO4pv1ci/DwcD3zzDN65513tH//fi1ZskTnz58379k5duyYJCk1NVWurq5OryFDhkiSfvrpJ6c+K3OcVvj7+zstu7m5ycvLSx4eHuXaz58/by4fO3ZMu3btKjd+Hx8fGYbxi+O/eAzXO37gevHpOeAmsWrVKpWWlv7iYwLuv/9+3X///SotLdWOHTs0ffp0paSkKCgoSI8//rilfV3Ls59yc3Ov2Hbxl9/FX6pFRUVOdZf/srxWdevWVU5OTrn2izc9BwQEXFf/kuTn56datWrd8P1c1LdvX6WnpysrK8up7zFjxqhPnz4VbnOlxxrUFAEBAfL09NS77757xfXAzYCZJuAmcPjwYaWmpsput+upp56ytI2Li4tat26t//qv/5Ik81JZVc06XLR7927961//cmpbtGiRfHx8zBtzL34ya9euXU51K1asKNfftcwodO7cWWvXrnX6ZJgkvffee/Ly8qqSj857e3urdevWWrZsmdO4ysrK9P7776tBgwZq2rTpNfdbUQiTpDNnzig7O9ucxYqIiFCTJk30r3/9S/fcc0+Fr0svZVn1a87cJCQk6IcfflDdunUrHP/VPmV4JVV9HgNWMNME1DBZWVnmPR95eXn68ssvNXfuXLm4uGj58uXmIwMq8tZbb2nt2rXq0aOHbr/9dp0/f9786/7iQzF9fHwUHh6ujz/+WJ07d5a/v78CAgIq9YtL+vkSVa9evZSWlqaQkBC9//77WrNmjV577TV5eXlJku69915FREQoNTVVFy5ckJ+fn5YvX66NGzeW6y86OlrLli3TrFmzFBMTo1q1ajk9t+pS48aN08qVK9WxY0e9+OKL8vf318KFC7Vq1SpNmjRJdru9Usd0ufT0dHXt2lUdO3ZUamqq3NzcNHPmTGVlZemDDz645qeyS9KECRP01VdfqV+/fmrVqpU8PT118OBBzZgxQydOnNDkyZPN2tmzZ6t79+6Kj49XcnKy6tevr5MnT2rv3r36+uuv9d///d/XvP/o6GgtXrxYS5Ys0R133CEPDw9FR0dfcz9WpKSkaOnSpXrggQc0fPhwtWjRQmVlZTp8+LBWr16tkSNHqnXr1tc8fkl68803NWDAALm6uioiIqJSARKwitAE1DBPPPGEpJ/vC7ntttsUGRmp0aNH68knn7xqYJJ+vhF89erVGjdunHJzc1WnTh1FRUVpxYoViouLM+veeecdPf/88+rVq5eKioo0YMCASn9tRqtWrfTEE09o3Lhx2r9/v0JDQzV16lQNHz7crHFxcdEnn3yi5557Tk8//bTc3d31+OOPa8aMGerRo4dTf3/605+0e/dujR07Vg6HQ4ZhXPEG+IiICG3atEljx47Vs88+q3PnzikyMlJz584t96Tr69G+fXutXbtW48aNU3JyssrKytSyZUutWLGi0l8jk5SUJElavHixJk+eLIfDIX9/f8XExOjTTz91urm6Y8eO2rZtmyZMmKCUlBTl5+erbt26at68ufr2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cePGio+P18mTJyVJf/nLX7Rnzx599tln2rt3r2bNmqWAgIBy/YWFhWnp0qWSpH379iknJ0dvvvlmubr+/ftr69at+uGHH8y23bt369tvv1X//v0lSXPmzNELL7ygCRMmaO/evZo4caL+8pe/aP78+TfircCvxMXFRRMnTtT06dN15MiRcuu//fZbxcfHq0+fPtq1a5eWLFmijRs36rnnnjNr/vCHP+jo0aNav369li5dqrfffrvcL45atWrpr3/9q7KysjR//nytXbtWo0aNkiS1bdtWb7zxhnx9fZWTk6OcnJwKZ1z79++vFStWmGFLkv7xj3+osLBQjzzyiCTpz3/+s+bOnatZs2Zp9+7dGj58uP7jP/5DGzZsqJL3C9WnKs7VX7Jt2zZJ0ueff66cnBwtW7bMXPfFF19o7969WrNmjVauXCnp5xmnl19+Wf/617/00Ucf6eDBg+YfprgKA7hGAwYMMB566CFzeevWrUbdunWNRx991HB1dTUWLlxorisuLjZCQ0ONSZMmGYZhGD179jSeeOKJCvs9ePCgIcn45ptvDMMwjHXr1hmSjPz8fKe69u3bG3/605/M5RYtWhgvvfSSuTxmzBjj3nvvNZfDwsKMRYsWOfXx8ssvG7Gxsddy2KhBLj0H27RpY/zxj380DMMwli9fblz8sZaUlGQMHjzYabsvv/zSqFWrlnHu3Dlj7969hiRj+/bt5vr9+/cbkoxp06Zdcd8ffvihUbduXXN57ty5ht1uL1cXHh5u9lNcXGwEBAQY7733nrn+97//vfHYY48ZhmEYZ86cMTw8PIxNmzY59TFw4EDj97///dXfDNRoVXGuGoZhSDKWL1/uVGO32425c+cahlH+5+el+w8KCjKKioquOs5t27YZkozTp08bhnHln7+/dcw0oVJWrlypOnXqyMPDQ7GxsXrggQc0dOhQlZSUqF27dmadq6ur/t//+3/au3evJOmZZ57R4sWL1apVK40aNUqbNm267rH0799fCxculPTzJY4PPvjAnGU6fvy4srOzNXDgQNWpU8d8vfLKK06zU7h5vfbaa5o/f7727Nnj1J6Zmal58+Y5/XePj49XWVmZDh48qH379ql27dq6++67zW0aN24sPz8/p37WrVunrl27qn79+vLx8dEf/vAHnThx4po++ODq6qrHHnvMPE8LCwv18ccfm+fpnj17dP78eXXt2tVpvO+99x7n6S2ksufq9YqOjpabm5tT2zfffKOHHnpI4eHh8vHxMS/nHT58+Lr3dyvju+dQKR07dtSsWbPk6uqq0NBQubq66l//+pcklftEiGEYZlv37t31448/atWqVfr888/VuXNnPfvss3r99dcrPZbExET953/+p77++mudO3dO2dnZ5v0jZWVlkn6+RNe6dWun7VxcXCq9T9QcDzzwgOLj4zV27FinywtlZWV66qmnNGzYsHLb3H777dq3b1+F/RmXfLPUjz/+qAcffFBPP/20Xn75Zfn7+2vjxo0aOHCgSkpKrmmc/fv3V/v27ZWXl6c1a9bIw8ND3bt3N8cqSatWrVL9+vWdtuN7xW4dlT1XpZ9/rhqXfeuZ1XPQ29vbabmwsFBxcXGKi4vT+++/r3r16unw4cOKj4/nRvFfQGhCpXh7e6tx48ZObY0bN5abm5s2btyoxMREST//T71jxw6n5yrVq1dPycnJSk5O1v3336/nn3++wtB08S+j0tLSq46lQYMGeuCBB7Rw4UKdO3dOXbp0UVBQkCQpKChI9evX14EDB8y/6nHrefXVV9WqVSvzJldJuvvuu7V79+5y5+lFzZo104ULF/TNN98oJiZGkvT99987PeJix44dunDhgqZMmaJatX6emP/www+d+nFzc/vFc1T6+f6nsLAwLVmyRJ999pkee+wx8xxv3ry53N3ddfjwYbVv3/6ajh03l8qcq9LPPzdzcnLM5f379+vs2bPmstWfl5L03Xff6aefftKrr76qsLAwST+f6/hlhCZUGW9vbz3zzDN6/vnn5e/vr9tvv12TJk3S2bNnNXDgQEnSiy++qJiYGN11110qKirSypUrFRkZWWF/4eHhstlsWrlypR588EF5enqqTp06Fdb2799faWlpKi4u1rRp05zWpaWladiwYfL19VX37t1VVFSkHTt2KD8/XyNGjKjaNwHVIjo6Wv3799f06dPNttGjR6tNmzZ69tlnNWjQIHl7e5s3w06fPl3NmjVTly5dNHjwYHPWdOTIkfL09DRnRu+8805duHBB06dPV8+ePfXVV1/prbfectp3w4YNdebMGX3xxRdq2bKlvLy8KnzUgM1mU2Jiot566y39+9//1rp168x1Pj4+Sk1N1fDhw1VWVqb77rtPBQUF2rRpk+rUqaMBAwbcoHcOv7bKnKuS1KlTJ82YMUNt2rRRWVmZRo8eLVdXV7OPwMBAeXp6KiMjQw0aNJCHh4fsdnuFY7j99tvl5uam6dOn6+mnn1ZWVhbPvrOqem+pws3o8hvBL3Xu3Dlj6NChRkBAgOHu7m60a9fO2LZtm7n+5ZdfNiIjIw1PT0/D39/feOihh4wDBw4YhlHxjYwvvfSSERwcbNhsNmPAgAGGYZS/EdwwDCM/P99wd3c3vLy8zBsZL7Vw4UKjVatWhpubm+Hn52c88MADxrJly67rfUD1qegcPHTokOHu7m5c+mNt27ZtRteuXY06deoY3t7eRosWLYwJEyaY648ePWp0797dcHd3N8LDw41FixYZgYGBxltvvWXWTJ061QgJCTE8PT2N+Ph447333it3g+zTTz9t1K1b15BkjBs3zjAM5xvBL9q9e7chyQgPDzfKysqc1pWVlRlvvvmmERERYbi6uhr16tUz4uPjjQ0bNlzfm4VqVVXn6v/8z/8YcXFxhre3t9GkSRPj008/dboR3DAMY86cOUZYWJhRq1Yto3379lfcv2EYxqJFi4yGDRsa7u7uRmxsrLFixQpLH8T5rbMZxmUXSQHgN+rIkSMKCwsz77cDgEsRmgD8Zq1du1ZnzpxRdHS0cnJyNGrUKP3P//yP/v3vfztd+gAAiXuaAPyGlZSUaOzYsTpw4IB8fHzUtm1bLVy4kMAEoELMNAEAAFjAwy0BAAAsIDQBAABYQGgCAACwgNAEAABgAaEJACrQsGFDvfHGG9U9DAA1CKEJwG/avHnzdNttt5Vr3759uwYPHvzrD+gy69evl81mc/pOPADVg+c0AUAF6tWrV91DAFDDMNMEoMb7+9//rujoaHl6eqpu3brq0qWLCgsLJUlz585VZGSkPDw81KxZM82cOdPc7tChQ7LZbFq2bJk6duwoLy8vtWzZUps3b5b08yzOE088IYfDIZvNJpvNprS0NEnlL8/ZbDbNnj1bCQkJ8vLyUmRkpDZv3qzvv/9eHTp0kLe3t2JjY/XDDz84jf2TTz5RTEyMPDw8dMcdd2j8+PG6cOGCU79/+9vf9PDDD8vLy0tNmjTRihUrzPF37NhRkuTn5yebzabk5OSqfnsBWFWdX3wHAL/k6NGjRu3atY2pU6caBw8eNHbt2mX813/9l3H69Gnj7bffNkJCQoylS5caBw4cMJYuXWr4+/sb8+bNMwzj/74EulmzZsbKlSuNffv2GY8++qgRHh5ulJSUGEVFRcYbb7xh+Pr6Gjk5OUZOTo75hc+Xf+GuJKN+/frGkiVLjH379hm9e/c2GjZsaHTq1MnIyMgw9uzZY7Rp08bo1q2buU1GRobh6+trzJs3z/jhhx+M1atXGw0bNjTS0tKc+m3QoIGxaNEiY//+/cawYcOMOnXqGCdOnDAuXLhgLF261JBk7Nu3z8jJyTFOnTr167zxAMohNAGo0TIzMw1JxqFDh8qtCwsLMxYtWuTU9vLLLxuxsbGGYfxfaPrb3/5mrt+9e7chydi7d69hGIYxd+5cw263l+u7otD05z//2VzevHmzIcl45513zLYPPvjA8PDwMJfvv/9+Y+LEiU79LliwwAgJCbliv2fOnDFsNpvx2WefGYbBt80DNQn3NAGo0Vq2bKnOnTsrOjpa8fHxiouL06OPPqoLFy4oOztbAwcO1KBBg8z6CxcuyG63O/XRokUL898hISGSpLy8PDVr1uyaxnJpP0FBQZKk6Ohop7bz58+roKBAvr6+yszM1Pbt2zVhwgSzprS0VOfPn9fZs2fl5eVVrl9vb2/5+PgoLy/vmsYG4MYjNAGo0VxcXLRmzRpt2rRJq1ev1vTp0/XCCy/ok08+kSTNmTNHrVu3LrfNpS79Al6bzSZJKisru+axVNTP1fouKyvT+PHj1adPn3J9eXh4VNjvxX4qMz4ANxahCUCNZ7PZ1K5dO7Vr104vvviiwsPD9dVXX6l+/fo6cOCA+vfvX+m+3dzcVFpaWoWj/T9333239u3bp8aNG1e6Dzc3N0m6YWMEYB2hCUCNtnXrVn3xxReKi4tTYGCgtm7dquPHjysyMlJpaWkaNmyYfH191b17dxUVFWnHjh3Kz8/XiBEjLPXfsGFDnTlzRl988YVatmwpLy8v87LZ9XrxxReVkJCgsLAwPfbYY6pVq5Z27dqlb7/9Vq+88oqlPsLDw2Wz2bRy5Uo9+OCD8vT0VJ06dapkfACuDY8cAFCj+fr66p///KcefPBBNW3aVH/+8581ZcoUde/eXU8++aT+9re/ad68eYqOjlb79u01b948NWrUyHL/bdu21dNPP61+/fqpXr16mjRpUpWNPT4+XitXrtSaNWt07733qk2bNpo6darCw8Mt91G/fn2NHz9e//mf/6mgoCA999xzVTY+ANfGZhiGUd2DAAAAqOmYaQIAALCA0AQAAGABoQkAAMACQhMAAIAFhCYAAAALCE0AAAAWEJoAAAAsIDQBAABYQGgCAACwgNAEAABgAaEJAADAAkITAACABf8fXWG4jqiJOqYAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Distribution of sentiment\n", + "sns.countplot(x='sentiment', data=df_filtered)\n", + "plt.title('Distribution of Sentiment')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "3e2debe7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " reviews.rating sentiment_num\n", + "reviews.rating 1.000000 0.196656\n", + "sentiment_num 0.196656 1.000000\n" + ] + } + ], + "source": [ + "# Correlation analysis\n", + "correlation_matrix = df_filtered[['reviews.rating', 'sentiment_num']].corr()\n", + "print(correlation_matrix)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "31362124", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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9esHAEhPT1ctHTt2RGxsbK5VyS9evMA333yDKlWqwMDAAAYGBjA3N0dycjKuXLmSn8PFn3/+CUDzeHv16gUzMzON461Xrx4qVqyoem1sbIxq1aqpNfHk5LfffkNSUhKGDBmiKhsyZAiEEKqq5beVKVMGjRo1UiurU6eOxr5+//13eHl5wdzcHAYGBjA0NMSaNWvee04qVaqEzp07Y+nSpapqy02bNiExMRFffPGFar1GjRph7969mDhxIo4cOYJXr16991jr1asHIyMjDB8+HD///DNu3br13s+8rVatWqhbt65aWd++fZGUlISzZ88CAHbv3g03NzfUq1dP7Vry9fXNc6/yNm3a4NWrV4iIiADwpsmkXbt2aNu2LcLDw1VlANC2bVsAQEREBB4/foyBAweq7TczMxPt27fH6dOnkZycjNevX+PQoUPo3r07TE1NNa73169f459//lGL5+1mTuDN3xvAe68vW1tbHD9+HKdPn8asWbPQtWtXXL9+HYGBgahduzYSEhIAAPv370d6ejoGDBigFo+xsTG8vb01zplCoYCfn59GTHm53nPj6OgId3d31WsbGxuULl0a9erVQ9myZVXlrq6uAP7v+IvynObm1q1b6Nu3L8qUKQN9fX0YGhrC29sbADS+d3k5h4cPH4aFhYVGrH379tUqrt69e8PQ0FDV3JeUlIQ9e/agVKlSALQ7fx06dECZMmXU7k379+/HgwcP1O5h79LmPp+f79/7NGnSBIaGhrCwsED79u1hbW2NP/74Q6PpMb/3zffJy9/76NGjqvje9sknnxRo34Upz0mHnZ0dTE1NER0dnaf1ExMTASDb3uZly5ZVvZ8lt17p776X1aY2fvx4GBoaqi2ff/45AKhujtnp27cvfvzxR/j7+2P//v04deoUTp8+DXt7+zz9EGYnMTERBgYGGp3dFAoFypQpo3G8tra2GttQKpV52v+aNWtgbGyM9u3b4+nTp3j69Cnq1KkDZ2dnrFu3DhkZGVrva9u2bfj4449Rrlw5bNy4ESdOnMDp06cxZMgQvH79+r0xffXVV/jvv/9UX/AlS5bA09NTrUf2okWL8M0332DHjh1o1aoVbGxs0K1bt1x7xFeuXBkHDx5E6dKlMWrUKFSuXBmVK1fGwoUL3xsT8Cbhyqks62/y8OFDXLhwQeNasrCwgBAi12spS1ZfpIMH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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Visualizing the correlation\n", + "sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm')\n", + "plt.title('Correlation Analysis between Sentiment and Review Rating')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "id": "a4eb6bbf", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "f8d616c571594a8a8fa90a84be89ac14", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Summarize dataset: 0%| | 0/5 [00:00" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Pandas Profiling\n", + "pp.ProfileReport(df_filtered)" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "id": "d85c9537", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "e2393f9a2f7046edae422fe3d648c371", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " | | [ 0%] 00:00 -> (? left)" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# SweetViz\n", + "my_report = sv.analyze(df_filtered)" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "id": "302dd7f6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Report SWEETVIZ_REPORT.html was generated! NOTEBOOK/COLAB USERS: the web browser MAY not pop up, regardless, the report IS saved in your notebook/colab files.\n" + ] + } + ], + "source": [ + "my_report.show_html()" + ] + }, + { + "cell_type": "markdown", + "id": "841b1f1d", + "metadata": {}, + "source": [ + "## Modeling: Logistic Regression" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "6149a075", + "metadata": {}, + "outputs": [], + "source": [ + "# Define feature and target variables\n", + "X = df_filtered[['sentiment_num']] # Feature: sentiment score\n", + "y = df_filtered['high_rating'] # Target: high rating" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "0a605598", + "metadata": {}, + "outputs": [], + "source": [ + "# Train-test split (80% training, 20% testing)\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "90cd769f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "LogisticRegression()" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Initialize and train logistic regression model\n", + "log_reg = LogisticRegression()\n", + "log_reg.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "e49cf694", + "metadata": {}, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "y_pred = log_reg.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "1b4f0639", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/nmn/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_classification.py:1318: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", + " _warn_prf(average, modifier, msg_start, len(result))\n", + "/Users/nmn/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_classification.py:1318: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", + " _warn_prf(average, modifier, msg_start, len(result))\n", + "/Users/nmn/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_classification.py:1318: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", + " _warn_prf(average, modifier, msg_start, len(result))\n" + ] + }, + { + "data": { + "text/plain": [ + "(0.9371931850996246,\n", + " ' precision recall f1-score support\\n\\n 0 0.00 0.00 0.00 435\\n 1 0.94 1.00 0.97 6491\\n\\n accuracy 0.94 6926\\n macro avg 0.47 0.50 0.48 6926\\nweighted avg 0.88 0.94 0.91 6926\\n')" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Calculate accuracy and display classification report\n", + "accuracy = accuracy_score(y_test, y_pred)\n", + "classification_report_output = classification_report(y_test, y_pred)\n", + "\n", + "accuracy, classification_report_output" + ] + }, + { + "cell_type": "markdown", + "id": "70c6a863", + "metadata": {}, + "source": [ + "## Model Interpretation and Evaluation" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "id": "510b002c", + "metadata": {}, + "outputs": [], + "source": [ + "# Calculate the confusion matrix\n", + "conf_matrix = confusion_matrix(y_test, y_pred)" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "id": "b6b4eb01", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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u+86J+mUlBTnDT0/apfOBJ3AwED17t1bP/zwg958801deeWVqlWrVo7zez99DBw4UFFRUTIz55aEV7FiZy7aeU+K52vXrl36z3/+oxIlSuipp55Samqq82k3J97n4qWXXnJuWe3evVuff/65goOD1bRp0z9UR25CQkLUpEkTHT9+XLNnz3ban3322Sz1eC+Xz5w509lPExISnE+BualcubLCw8N18OBBVatWTWPGjFHDhg2VkJCg3bt3S8rbc3zVVVdJkj744ANnf0xKSlL16tUVGRmZ7VNsbho0aKDevXsrPj5eDz/8sCQpNjZWpUuX1tatW/XRRx858x48eFAvvviiM09QUJAWLFigvXv3OvPs2rXLdZvh4eFq0KCBTp06paefftppT0xM1LRp02Rm2rJli0JDQ9W4cWN5PB41atRIU6dOVbFixZzj6l//+pdCQ0P1+OOPKyIiQl26dHH2pdyOvQuxP3nPFU2aNFHt2rX10ksvac+ePerfv798fX2zzV+rVi2VL19e33//fZZbIt5bmt6ar7jiCknSa6+95szz+7DdtGlTBQQEaOHChVq3bl2W+c7en5GLC9JTAvnm9OnT1qxZM6dD16BBg+z66683Pz8/83g8WXr8P/zww05nrb59+zq9gRs2bOgMIcqpM+P69etNkrVs2dJpy2m+9PR0pxf/lVdeab1793ZGQHh3rZSUFKtZs6ZJslatWtmgQYOcZe666y4zy7nz5NChQ53Og/369bNatWo5vb29vB3GvB3kzMzef/99k3IfNmj2W8c27/dYrFq1yml7/vnnnfm8Hbu8nR69vd6rV69uAwYMsNq1azvLnd0BsGzZsk7nrrfeesvZZk6dqH7f7u04Nm3aNDMzp+Pl2cP5zpaSkmL169c3SdaoUSPr27ev850BU6dOdeY7306PsbGx1qtXryw/AwcONLMzwz/9/PzMz8/PevTo4fTgj4iIsF27djnr8va2v/TSS23gwIHOKAWdo9Ojd/sVK1a0W2+91RmBUalSJUtJSTGzM8PrpDMjXXr06GEHDx7McR/q06ePSbIaNWpYXFycM9JmxIgRuT7+s/ddr507d5q/v78FBwc7o5Nmzpxp0pnRRV26dLFbbrnFSpQoYcHBwU7HwIkTJ5okK1OmjPXr1895PpRDp8ez92Ezs4ULF5qfn5/TATEuLs7KlStnPj4+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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Plot the confusion matrix\n", + "plt.figure(figsize=(6, 4))\n", + "sns.heatmap(conf_matrix, annot=True, fmt='d', cmap='Blues', cbar=False)\n", + "plt.xlabel('Predicted')\n", + "plt.ylabel('Actual')\n", + "plt.title('Confusion Matrix of Logistic Regression Model')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "id": "09a8d82b", + "metadata": {}, + "outputs": [], + "source": [ + "# Calculate and plot ROC curve\n", + "y_pred_proba = log_reg.predict_proba(X_test)[:, 1]\n", + "fpr, tpr, thresholds = roc_curve(y_test, y_pred_proba)\n", + "roc_auc = roc_auc_score(y_test, y_pred_proba)" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "id": "6c814ba5", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAq0AAAIdCAYAAAAXlkTeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAACHcUlEQVR4nOzdd1hW5R/H8TcgQxRE3NucpebIvTVza47cI81R5koty4alqf0sRzkyM8vce68cqbnTnKm5tyluUUBZ5/fHnSiJBgqcB/i8rotLzuE85/nCk/Hxfu77eztZlmUhIiIiIuLAnO0uQERERETkvyi0ioiIiIjDU2gVEREREYen0CoiIiIiDk+hVUREREQcnkKriIiIiDg8hVYRERERcXgKrSIiIiLi8BRaRURERMThKbSKiPxLlSpVcHJyivhwd3cnf/789OjRg8uXLz9y/e+//06DBg1Inz493t7elClThqlTp0Z574CAAAYMGMDzzz+Ph4cHadOmpXHjxuzdu/c/6woNDWXkyJEUKVKEFClS4OPjQ82aNVm/fv2zfssiIg7PSdu4iohEVqVKFX777TcaNmxIlixZCA4O5vfff2f//v1ky5aNffv2kTp1agAWLlxI8+bNsSyLunXr4uvry6pVq/j777/p2bMno0aNirjvnTt3qFixInv37iV37tyUK1eOq1evsmrVKtzc3Ni2bRtFixaNsqawsDDq1q3LqlWryJIlC5UrVyYwMJAVK1YQEhLCsmXLqFOnTnz8eERE7GGJiEgklStXtgBr/fr1EefCwsKs6tWrW4A1cuRIy7Is69q1a5avr68FWGvXro249ubNm9YLL7zwyPk+ffpYgFWnTh3r7t27EeenTZtmAVbx4sUfW9Po0aMjrrlx40bE+Y0bN1pOTk5W+vTprbCwsKf+nkNCQp76sSIi8UHTA0REosHZ2ZlXX30VgMOHDwMwd+5crl+/ziuvvEK1atUirk2VKhX9+vUDYMKECYB5a//nn38G4H//+x/u7u4R17ds2ZI0adKwf//+KKcfAEycOBGATz/9FB8fn4jzFStWpEiRIly7do1du3YB4OTkRMqUKSM9vmHDhjg5ObFhwwbgwRSIgQMHkitXLvLmzcvHH3+Mk5MTn332WcTjbt26hZubG15eXty9exeA48eP89prr5E6dWq8vLyoW7cuR44cif4PU0Tk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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Plot ROC Curve\n", + "plt.figure(figsize=(8, 6))\n", + "plt.plot(fpr, tpr, color='blue', label=f'Logistic Regression (AUC = {roc_auc:.2f})')\n", + "plt.plot([0, 1], [0, 1], color='red', linestyle='--')\n", + "plt.xlabel('False Positive Rate')\n", + "plt.ylabel('True Positive Rate')\n", + "plt.title('ROC Curve')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "8b5c5e75", + "metadata": {}, + "source": [ + "## Visualizations and Final Analysis" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "id": "f900a1ab", + "metadata": {}, + "outputs": [], + "source": [ + "# Group by sentiment and rating to calculate count\n", + "sentiment_rating_counts = df_filtered.groupby(['reviews.rating', 'sentiment']).size().unstack()" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "id": "5fbdd6e1", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1gAAAIdCAYAAAAgfdzDAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAABhR0lEQVR4nO3dd3gU1dvG8XvTSA8hQEgCodfQm0jvCEQ6iBQpgpRQBEURUUGEn76AhSKoIF1EQEVF6U1A7FTpTUVKgEAgCRDIef/ArAYCZmHCkvD9XBeX2TPtmZ3ZuHfOzBmbMcYIAAAAAHDXXJxdAAAAAABkFgQsAAAAALAIAQsAAAAALELAAgAAAACLELAAAAAAwCIELAAAAACwCAELAAAAACxCwAIAAAAAixCwAAAAAMAiBCwAlqldu7ZsNpv9X65cudS0aVOtXLnypnkffvhh5cmTR4cPH06XWt555x0FBQVpwoQJkqSZM2fKZrOpX79+6bK9CxcuqEiRIipevLguXryYLtu4E/Hx8erdu7dCQkLk7e2tRYsWpTrf5cuX9fbbb6ts2bLy8/NTYGCgGjVqpFWrVt2zWhctWqTs2bPrueeeu2fbTA9vv/22bDabHn74YWeXYql/f7ZtNptcXV2VK1cuderUSQcPHkzXbSf/bvnpp5/SdTv/tf3kf1myZFHRokXVv39/nTp1ypJtpPfvRAD3DgELgOVatGihvn37qmrVqlq3bp0aNmyoV155JcU8vXr1Ut++fZUrV640r/fpp5+WzWbTzJkz/3PeWrVqqW/fvqpVq5aj5f+nrVu3ymazqXbt2vY2Hx8f9e3bV3369JG3t7fl27xTr776qt577z35+vqqc+fOCgkJuWmepKQkRUZGatCgQYqLi1Pbtm1Vt25drV+/Xg0aNNBHH31keV2pHcvy5curb9++ioyMtHx7d+rcuXOy2WzKly9fmpdJ3qctW7Zo79696VOYE0VFRSkqKko9e/ZUaGio5s2bp8qVK+vAgQPOLs1hqX2Wb6dFixaKiopSly5d5OnpqUmTJqlixYqKiYlJ8zZvdU7dye9EAPcnN2cXACDzGThwoP0Ly+HDh1WtWjW9+uqrqlKliho3bixJ6tq1a7psOykpSTabTWXLllXZsmXTZRupcXFx0dNPP33PtpdWyX/xnzlzpqpVq5bqPBs2bNCqVasUERGhX375RR4eHpKkH374QQ899JCeeeYZPf7447LZbOlaa4ECBfTqq6+m6zbS27Zt27Rt2zYFBwfr5MmTmjVrlsaMGXPX67169arc3O6P/2VPmjTJ/rMxRu3atdOiRYv06quvavbs2TfNn/yZTO/z51749++2pKQkPfLII1q5cqVmzpypQYMG3dW60+t3IoB7jx4sAOkqf/78GjZsmCRp/Pjx9vZ8+fLJZrPp9OnT9rYJEyaoePHi8vb2VoECBTR8+HAlJCRIun550jvvvCNJ6tatm/3L2ogRI2Sz2RQVFaWKFSsqS5YsOnr0qL193LhxKeo5e/asOnbsqKCgIGXPnl0DBw7UlStX7NNtNpt8fX1TLNOiRQvZbDatW7dOXbt2Vbly5SRJ69evT9ELk9qyy5cvV40aNeTr66usWbOqdevWKf7Sn3zp4rBhw9SrVy8FBQUpW7Zs6tChg86fP3/b9/ajjz5ShQoV5O3trRw5cqhbt246efKkJOnIkSOy2WxavXq1JKl69eq3/IKbfIlTWFiYPVxJUuXKlfXyyy+rY8eOio+Pl3T9i/6rr76q/PnzK0uWLCpRooRmzZrl0P7c6ljeeBnnunXrZLPZ1KlTJ0VFRSlHjhzy9vZWkyZNdPz4cY0ePVp58uSRr6+vatSooR07dqTYr59//lmNGjWyX/L4+OOP6/jx4/bp+fLlk4eHh5YtW6Zy5crJy8tLxYsX1+effy7p+rkVGBgoSTp69KhsNptGjBhx22OSfC688847CggI0Jw5c5SUlHTTfKtWrVL16tXl7e2tXLlyqX379jp69Kh9us1mU1hYmJ599lnlzJlTPXr0kHQ90EycOFElSpSQp6enwsLCNHDgwJsuS50/f77KlSsnHx8fhYeHKyoqSmfPnrVPj42N1dNPP63w8HD5+PioTJkyaeoZvlHy8ZGkH3/8UdKtP5OStH//frVp00ZBQUHy8vJS9erVb7qE+Ny5c+rSpYsCAgIUEhKigQMH6tKlSynmSe2SweRLM/99jA4cOKA2bdooMDBQAQEBqlWrlr799ltJuu1nOS1cXFzUrFkzSdKePXvs7V9//bVq1KghHx8f5ciRQ61atbJ/5m93Tt34OzF5H5csWaLq1avLy8tL+fPn13vvvZeiji1btqhKlSry9PRU3rx5NWnSJGXPnj1FD9nx48fVtWtXhYSEyM/PT1WqVNFXX32V5n0F4CADABapVauWkWTWrl2bon3fvn1GknFzczPXrl0zxhiTN29eI8lER0cbY4wZO3askWTCw8NN9+7dTbFixYwk07lzZ2OMMVFRUaZMmTJGkqlXr56JiooyxhjzyiuvGEn29p49e5ro6Gh7+9ixY40xxsyYMcM+X+XKlU2XLl1MSEiIkWSeeeYZe62SjI+PT4r6mzdvbt+vOXPmmMcee8xIMqGhoSYqKsps2bIl1WWXLFliXFxcjK+vr2nfvr2pXr26kWSyZ89ujh49mqIuV1dXU7FiRdO9e3cTFhZmJJlnn332lu/1xIkT7evq1KmTKVu2rJFkChUqZM6fP2/OnDljoqKiTGhoqJFk2rVrZ3/PbnTixAnj7e1tJJlevXqZgwcP3nK77dq1M5JM+fLlTbdu3UyePHmMJLNkyZI078+tjmXyssmv165daz9mJUqUMF27drWfN9mzZzfZs2c33bp1Mw8//LCRZIoVK2aSkpKMMcb8/PPPxsvLy3h7e5uOHTuaJk2aGJvNZipUqGCfJ3ldAQEBplOnTqZJkyZGkvH29janTp0yS5cuNT179jSSjJ+fn4mKijJLly695XuTmJhocubMaQIDA83ly5dN9+7djSSzfPnyFPMtX77cuLq6Gi8vL9O+fXtTv359I8nkz5/fnD9/3hhj7PudM2dO061bNzN9+nRjjDHPPPOMkWTy5MljOnfubIoUKWIkmapVq5qrV68aY4xZuHCh/T3q1q2bqVixopFkatSoYa+hadOmRpKpVKmS6datm8mWLZuRZN9OapJrutHs2bONJFOuXDljzK0/k0ePHjWBgYFGkmnSpIlp1aqVcXNzMy4uLubLL7+0r69Zs2ZGkilQoIDp1q2b/XeBJPPjjz8aY/75XZP82hhj3nrrLSPJvPLKK8YYY/766y+TM2dOI8k0atTItG/f3nh4eBh3d3fz008/3fazfKNb/W57+eWXjSQzdOhQY4wxX3zxhbHZbCYwMNB06dLFNGrUyEgyBQsWNPHx8bc9p278nZi8TS8vL9OmTRvTpk0b4+rqamw2m9m+fbt9H319fY0kU7t2bdO2bVvj7+9vJJm8efMaY4xJSkoypUqVMpJM3bp1TadOnYy3t7dxcXExK1euvOXxBnDnCFgALHOrLyGXLl2yf0E6fvy4MebmLxM1atRI8YXp/PnzpkyZMqZixYr2UDZw4EAjycyYMcO+7uQvc0899VSKbd4qYNWvX9/+Bfv33383WbJkMd7e3im+2N4uYBljzK+//mokmVq1aqWY78ZlCxYsaCSZb7/91t7Wo0cPI8n06dMnRV316tWz7+cPP/xg//Kbmri4OOPr62s8PDzMgQMHjDHGXL161f5l7o033rjpmPz7i2hqli1bZoKCguzH6aGHHjKTJk0y8fHx9nk2bNhgJJk6derY38Pjx48bNzc3U6FCBYf2J7VjeauAVapUKXP58mVjzD9h3Wazme+//94YY8y1a9dMeHi4kWT++OMPY4wxdevWvelc7Nevn5Fk/zKffA6uX7/ePk9yyEr+0hsTE5Piy+rtfP755ynOxdWrVxtJpkOHDinmK1++/E3B68knnzSSzLx584wxxv4HieQgbowxR44cMTabzeTMmdOcOXPGGGNMfHy8/cvzggULjDHGdO7c2UgyCxcuNMZcD361a9c2ERERJjo62ly5csW4urqagIAAk5iYaIwxZt26dSYiIuKmz9G/3RiwEhMTzY8//mgPecOHDzfG3Poz2a1bNyPJjBo1yt42d+5cI8kUL17cGGPM9u3bjSSTO3du+2cyISHB/llyJGANHjzYSDIvvPCCfZ45c+YYSaZnz57GmFt/lm904++2S5cumeXLl5vAwEBjs9nMDz/8YIwx5v333zddunQxGzdutC+bHKCT2251Tt0qYM2aNcs+T9++fY0kM3nyZGPMP4H73+/1d999l2L9Bw8eNJJMRESEfZ558+aZiIgIM3LkyNvuN4A7wyWCANLdvy9NM8akOk+lSpUkSS+99JK+/vprubi4aOvWrfrxxx/l4vLfv6oKFy6cplqKFi1qrydPnjyqWbOm4uPjtW/fvjQtn1b79+/XwYMHFRERoerVq9vbo6KiJEmbNm1KMX+xYsXs+1moUCFJUnR0dKrr3rRpky5evKgGDRqoYMGCkiRXV1f17t071XWnRaNGjXTo0CG9+eabqlSpkr7//nv169dPJUqU0M6dOyVdv9xRkq5cuaL+/furX79+eu2115QlSxbt3LkzxbF1ZH/+S3h4uP3SxeTj7O3trcqVK0u6fqlW/vz5JUknT57U5cuXtW7dOrm7u2vRokXq16+f+vXrp127dknSTZcSlihRwv7z3dSafKlkx44dJV2/xCs0NFSfffaZYmNjJV0fbfKXX35R9uzZ1bBhQ/uyI0eO1MqVK1W1alV7W5YsWRQeHm5/vWLFChlj1LZtW2XLlk2S5OXlpe7du0v657gnf5bGjRunxYsX68KFC1q7dq127typ7Nmzy93dXWXKlNH58+f1zDPP6LvvvlO1atW0c+fOmy4/S03y/VTu7u6qVKmS9u3bp+bNm+uFF15IMd+Nn8nk8yf5PJWkDh06KDAwULt371ZMTIz9kr+WLVvK399fkuTp6ancuXP/Z103Wr9+vaR/jocktWrVSitXrlSfPn0cXp8k1alTRzabTZ6enmrUqJHi4uL0zjvv2N/znj17asqUKTpy5IhGjBih/v37688//5QknThx4o62ebvzM/myzJ49e9rnKVasWIrlQ0NDFRoaqn379mnEiBH69ddf9fjjj2vnzp16+eWX76gmALd3f9wxCyBTS77/wtXVVTlz5kx1ntdff12+vr56//331bRpU7m7u6tx48YaN25cmsPTnUiu59/35lgh+b6m0NDQFO3Jo/jdbij35AB4qzB6N+u+HX9/fw0aNEiDBg3SgQMHNHToUC1evFiPP/64duzYYf+CuGnTplRD3K1GUvuv/bGSMUbR0dFKSkpSUlKSJk+efNM8tzvWd1rrmTNntHTpUknX779KfjyAzWZTQkKCFixYoJ49e+rcuXOSpOzZs6dYPiwsTGFhYbfdRlqPe//+/ZWUlKR33nlHbdq0kYuLi2rVqqX/+7//U8WKFSVJS5cu1fPPP69p06ZpwoQJCggI0BNPPKHRo0fLz8/vtnUk/5HA3d1defLkUdWqVVWlSpXbLpNcv7u7e4p9t9lsCg4OVkxMjC5evGjfRytG0ks+H/+9PW9vb9WvX/+O19miRQuFhYXp4MGDWrZsmWrWrKn+/fvbp//8889q3LhxqgHdivP/xvPzVufEv3l6emrdunV67rnn9L///U8jR45Uzpw51bt3bw0fPlzu7u53XReAlOjBApDuli1bJkmqWbOmXF1dU53H3d1dI0eO1F9//aUdO3bohRde0FdffaUGDRro2rVr6VbbmTNnJEnBwcGSrn+BseKLUHIPQ/KgE8n++uuvFNu7H9Y9evRotWjRQt9//729rVChQlqwYIH8/Py0c+dORUdH23sU/ve//8lcv8Q8xb/kupwtuU4fHx8lJibeVGdy+LHSvHnz7IOlfPrpp1q8eLEWL16sY8eOSfqndyswMPCmwV2k64OHXLx4UYmJibfchiPHfeDAgTp06JD279+vcePGacuWLapbt649dOTKlUuzZs1STEyMvv32WzVq1EgTJ05U3759/3NfJ02apEmTJumtt97S4MGD0xSukutPTExMEcSNMTpx4oRsNpty5MhhD4v/1YOY3Dt6u89q8vv17/faGKOLFy/eNGhGWg0cOFCTJk3S4sWLFRISolWrVmnDhg326UOHDlV0dLSee+45nTp1SklJSerSpcsdbSstkoPVjefEjQoXLqzPPvtMMTExWr58uUqVKqVXX301w4/aCdyvCFgA0tX+/fs1evRoSbrlMMYXL16Uv7+/wsPDdenSJZUsWVIjRoxQWFiYjh49av+rf/Iw1bf7EvpffvvtN/uobsePH9eGDRvk5eWlokWLSrr+JTU+Pt7+xfjKlSs3PfgzLXUUK1ZMuXPn1vbt21MEl+RLsO7mr+hVq1aVt7e3Vq5cae8dTEpK0gcffHBH675y5YqWLFmit956K8WId3/99ZcuXbokd3d3+fj4qE6dOpKkDz74wH5MJOnzzz+3X0aYVlYcy1vx9/dX+fLlFRcXp3fffdfefvHiRb3zzjsOBei01pkcoL7//vubAl3+/Pm1adMm7d+/X76+vipfvrxOnz6d4iHOQ4YMkZ+fnz788MNbbqNevXqy2WxatGiR/f2/dOmSfdvJxz1fvnzy9/fXyZMnVahQIQ0aNEgVKlTQhQsXdPjwYS1btky+vr5q2bKlPDw8VL16dftQ8tu2bUvze+Oo5PqSz1NJ+vjjj3Xu3DlVr15dnp6eqlSpkmw2mz799FN7j1xCQoJ+//33FOtKDpP79++3t934zLHkZ+DNnz/f3vbFF1/Iz89P3bp1k3Tn56G3t7d99L+hQ4fa25N7R7t3764cOXLIGGO/RDCZled+8qWJ06ZNs7fd+NDn999/X76+vnr66afl7e2thg0b2i/nTM/jDTzQ7s2tXgAeBMk3Zbdo0cL07dvXNG/e3Hh6eqa4AT7ZjTd0d+nSxX6ze48ePewj7lWpUsW+zNSpU+0jqLVp08YYc/NgFsluNchF8khyXbt2tY9uN3jwYPtyXbt2tY/61alTJ1OoUCH7zf3JN7ifP3/eeHh4GFdXV9OiRQuzevVqY8zNg1x8/PHHxmazGT8/P/P444/b35/w8HATExOToq5/j/CXloEV3njjDSPJ5MiRw3Tq1MlUqFDBSDIVKlQwV65cuemY3G6Qi7Nnz5qSJUsaSaZIkSKmS5cupmPHjvaR5QYOHGiMuT4aWcOGDe2jrnXp0sU0bNjQ2Gw207x5c4f2J7VjeatBLpo2bZqi3hvf59T2c82aNcbd3d1IMg0bNjTdunUzoaGhxsXFxfz000/GmJvPQWNSH3wjV65cRpJp3LixmT9//k3v344dO+z7kjz4x78lD0Tw4osvGmOuDyji6upqvL29Tfv27U3jxo2NzWYzuXPntp8Xqe2jMcb06dPH/l4+8cQT9hH2Hn30Ufs8yed+eHi4efLJJ80jjzxiX+bSpUvm0qVLpmjRovaR53r06GE/z5NHw0tN8ufgv9zqM7lv3z7j7+9vbDabadq0qWndurVxd3c3Hh4e5rvvvrPP17p1ayNdHxGzW7du9kE0/n18Z86caaTrI0B26NDBVK1a1T5P8iAXx44ds48i+Mgjj5gOHToYb29v4+7ubjZv3myMufVn+UapDeBz9epV+/v4+eefG2P+GVijcOHCpmvXrqZ48eL2uubMmWNfNrVz6laDXNxuII+TJ08aPz8/I10fIbBz5843jSJ48uRJkzNnTuPi4mKaNm1qunfvbh9BderUqf95PAE4joAFwDLJXwiSg0xwcLB59NFHzYoVK26a98YvE5cvXzYjR440BQsWNB4eHiZ37tymV69e5tSpU/Zl4uPjTYsWLYy3t7fJnTu3McbxgDVs2DD7OrJly2YGDBhgH6HOGGNOnz5t2rVrZwIDA01AQIDp0qWLad++/U1frqZOnWqCg4NNQECA+eyzz4wxqX8pXrJkialUqZLJkiWLfUj1Y8eO2affacAyxphp06aZiIgI4+HhYUJCQkzfvn3NuXPnUj0m/zWK4MWLF82oUaNMqVKljJeXlwkMDDQPPfSQmTFjhn00QGOuj5724osvmnz58hl3d3eTO3duM3jwYBMbG+vQ/qR2LK0MWMYYs3nzZtOgQQPj6+trfHx8TI0aNVIMS53WgPX555+b8PBw4+vrayZOnHjTe5ccoAYMGJDqe7t582Z74El+L1euXGmqVq1qPD09TdasWU379u1TjBh4q4B17do18/rrr9s/J3nz5jXDhg1LcQ4nJSWZCRMmmBIlSpgsWbKYXLlymfbt26cYfv/48eOme/fuJmfOnMbT09MULVrUjBkzxj7Ue2ruNmAZY8zOnTtNZGSk8fPzM76+vqZevXr2sJPs/PnzpkuXLsbPz8/kypXL9O3b1/4ZTD6+165dM8OGDTOhoaHG09PT1K1b17z00kspwocxxuzfv9+0atXKBAQEGC8vL1OrVi2zYcOGFNtL7bN8o1uNkPrpp5/aR+i7du2aiY+PNwMGDDDBwcEmKCjIdOrUyTz33HP23z3JUjun7iRgGWPM999/b6pUqWKyZMliihYtasaPH28PqMn27dtn2rRpYwIDA42Xl5cpVaoU4QpIRzZj7sFdxwAAALDcunXrVK1aNftgFQsXLlS7du0UGRmpL7/80snVAQ8mAhYAAEAGtGvXLpUqVUoFChRQ1apVdeHCBftoluvWrUsx7D+Ae4dBLgAAADKgiIgILVmyRGFhYVq8eLE2b96s+vXr67vvviNcAU5EDxYAAAAAWIQeLAAAAACwCAELAAAAACxCwAIAAAAAi7g5u4D7VVJSkmJizsrT00s2m83Z5QAAAABwEmOMLl1KUGBgNrm43L6PioB1CzExZ9Wvdw9nlwEAAADgPjFp6jQFBWW/7TwErFvw9PSSdP1N9PLydnI1AAAAAJwlISFe/Xr3sGeE2yFg3ULyZYFeXt7y9iZgAQAAAA+6tNw6xCAXAAAAAGARAhYAAAAAWISABQAAAAAW4R6su2CM0dWrV3Xt2jVnl4J/cXV1lZubG8PrAwAA4J4jYN2hK1eu6Pjx44qPj3d2KUiFt7e3QkJC5OHh4exSAAAA8AAhYN2BpKQkHT58WK6urgoNDZWHhwe9JfcJY4yuXLmi6OhoHT58WIULF/7Ph8EBAAAAViFg3YErV64oKSlJefLkYQj3+5CXl5fc3d119OhRXblyRZ6ens4uCQAAAA8I/rR/F+gZuX9xbAAAAOAMfAsFAAAAAIsQsAAAAADAIgSsB9SlS5eUJ08ePfvss84uBQAAAMg0CFgPiHXr1slms2nmzJmSJE9PT02dOlVPPfWUU+qpXbu28uXL55RtAwAAAOmFUQQfYE2bNnV2CQAAAECmQg/WfWjNmjWqVKmSvL29VahQIU2ZMkXS9Wc8jR49WqGhoQoKClLbtm118uRJSdKIESNks9n07rvvKjw8XFmzZlWfPn1kjNGIESNUp04dSVK3bt3UtWtXSZLNZrP/nLz822+/rUKFCsnHx0c9evTQ999/r3Llysnb21s1atTQkSNH7HXu3LlTderUkY+Pj4oXL665c+fap9lsNnXp0kXNmjWTl5eXIiIi9MMPP9inrV+/XkePHpXNZkuxTgAAACAjI2DdZ86ePatmzZrp4sWLGj16tAoUKKC+ffvqm2++0ahRo/TSSy+pdevWGjJkiDZu3KjOnTunWH7ChAnq27evypcvr6lTp2r58uWKjIzUoEGDJElPPPGEunTpcsvtz5w5U0899ZQqVKig6dOnq169eoqMjFTfvn21ceNGDR8+XJJ05swZ1a1bV9HR0Ro1apRKly6tzp07a/PmzfZ1zZ49WyEhIRo6dKgOHTqkAQMGSJKmTJmiwoULK1u2bJoyZYqCgoKsfhsBAAAAp+ASwfvM4cOHFRcXp+7du2vQoEHq2rWrxo8fLxcXF7399tuKjIzU888/L+n6QBUjR47UiRMn7MsvWLBAZcqUUdOmTVW6dGnt2LFDQ4YM0cWLF/XWW2+pTp069t6s1Hz88ccqVqyYGjdurNKlS6tjx44aNWqUJGnt2rX69ddfJUkzZsxQdHS0PvnkExUqVEht27bV8uXLNXv2bFWtWlWS1KJFC7333nuSpO3bt2vZsmWSpN69e+vjjz/WlStX1Lt3b+vfRAAAAMBJCFj3mXLlyqlhw4YaNmyY1qxZo8aNG2vgwIE6f/68YmJi9OWXX+rLL79Mscy/L7ELCAiQJPn5+UmS4uLiHNq+p6dniuVDQkLs0/z8/HTmzBlJ0tatWyXpprCWWi3Jy8bHxztUCwAAAJDRELDuMy4uLlq2bJlWrFihpUuXauzYsXr55Ze1evVqSVLLli3VvXv3FMsULlzY3jt0r9hsNknSwoUL7aFMEpf7AQAA4IFGwLrPfP311/roo480atQoNWrUSMOHD1dwcLCmTZsmb29vHTlyRE2bNpXNZlNSUpJ27dqVplCTHIiSkpIsqTMiIkKS5ObmpsjISEnSrl27VLRo0TQtn1w/AAAAkJkQsO4zISEh+vjjj7Vnzx516tRJP//8sySpTJkyeu655zRixAg1btxYDRs21FdffaU9e/bo6NGj/7ne4OBgSdfvnQoICFDr1q3vqs6ePXtq3Lhx6tq1q55++mklJiZq4sSJGjNmjPr165emetavX6+XX35Z/fr1U86cOe+qHgAAgPtN0okizi4hw3HJtc/ZJdw1RhG8z5QrV06LFy9WYmKinn/+eXsI6dWrl4YPH67hw4dr+/btGjZsmOLi4rRgwQK5u7v/53qLFSum7t2769dff9WqVavuus6goCCtWLFCZcqU0euvv65p06apR48e6tGjR5qWf+aZZxQeHq6JEyfq/Pnzd10PAAAAcD+wGWOMs4u4H8XHx+vJLh00fdZH8vb2TjHt0qVLOnz4sPLnz5/i/iPcPzhGAADA2ejBctz92oN1u2xwI3qwAAAAAMAiBCwAAAAAsAgBCwAAAAAsQsACAAAAAIsQsAAAAADAIgQsAAAAALAIAQsAAAAALELAAgAAAACLELAAAAAAwCJuzi4gs2ng0vaebWtl0kKHl7HZbPL399eBAweUI0cOe3u+fPkkSUeOHLGourRr3bq1fv/9d/3444/3fNsAAACAlejBegDFxsbqlVdecdr2bTabunbtan89bNgwjR8/3mn1AAAAAFYhYD2gPvjgA+3evdvZZUiSKlSooJo1azq7DAAAAOCuEbAeQIUKFZKbm5uGDBlyy3n+/PNPNWvWTL6+vipYsKDGjx8vY4wk6ezZs2rZsqW8vb1VokQJDRs2TDabTevWrZMk7d27V02aNJGPj4+Cg4PVr18/XblyRevWrZPNZpMkzZo1y35ZYu3ate0/ly1bVvnz57fXsWzZMtlsNr3//vuSpJ07d6pOnTry8fFR8eLFNXfuXIvfHQAAAODOEbAeQGFhYRo0aJCWLl2q1atX3zT98uXLatCggbZu3aqXX35ZDRs21LPPPqv58+dLkgYMGKDPP/9cnTp1Utu2bTV16lT7sklJSXrkkUe0bds2Pf/882rdurUmT56s8ePHq0iRIpoyZYokqUqVKho9evRN227VqpWOHDmivXv3SpJWrFghFxcXNW/eXGfOnFHdunUVHR2tUaNGqXTp0urcubM2b96cHm8TAAAA4DAC1gPqhRdeUM6cOfXMM88oKSkpxbQvv/xSe/bs0ZgxY9ShQwe9+OKLKlGihGbPnq3z58/r448/Vtu2bfX+++9r5MiRKYJSUlKSZsyYofXr12vIkCF68cUXlTNnTm3cuFGhoaHq3bu3JKlo0aLq2LHjTXW1atVK0vWeK+l6wKpataqCg4M1Y8YMRUdHa9KkSWrXrp3GjRungIAAzZ49O73eJgAAAMAhjCL4gPLz89PIkSPVp08fzZo1K8W0rVu3SpI6d+6cov3atWs6dOiQrl27purVq9vbvby87D+7uV0/pVq1aqUdO3bY2+Pi4tJUV8mSJVWkSBEtW7ZMbdq00a5du+wDYCTXVadOnRTLOGPkQwAAACA1BKwHWM+ePTVx4kQNHz5cV69etQel5PukJk2apLx589rn9/b2lovL9U5PV1fXVNd58eJFtWjRQtmyZdN7772n0NBQPfnkkw7V1bJlS02YMEFLliyxv/53XQsXLpSnp6d9/qCgIIfWDwAAAKQXAtYDzNXVVWPHjlXTpk0lyR6mIiIiJEmJiYmKjIyUJB06dEg5cuSQMUZubm7atGmToqKiJKXsndq7d6/Onz+vUaNG6amnntK1a9fsoezfbrws8d9atWqlN954Q2PGjEkx6EVyXW5ubva6du3apaJFi97V+wAAAABYhYD1gGvSpInq16+vVatW2dtatWqlIkWKaOjQoTp27JgCAgI0efJkdezYUePGjVPHjh01a9Ys+fv7Kzg4WO+884592QIFCsjHx0fvvvuuLl++rG+++UYnTpxQgQIF7PMEBwdrzZo1evPNNzV48OCbaqpcubLy5MmjP/74Q7169bK39+zZU+PGjVPXrl319NNPKzExURMnTtSYMWPUr1+/dHqHAAAAgLQjYFlsZdJCZ5fgsPHjx6tcuXL21x4eHvrmm280cOBAvfvuu/Lw8FCLFi304osvSpLefvttxcbGavbs2cqXL5+aNWumOXPmyNXVVYGBgZo/f74GDx6s1157TW3atFGVKlV0+PBh+/pHjRql5557TtOnT081YEn/XCaYfHmgdP1SwBUrVmjQoEF6/fXXFRAQoB49eqhHjx7p9M4AAAAAjrGZ5IcbIYX4+Hg92aWDps/6SN7e3immXbp0SYcPH1b+/PlT3Av0oIiOjpaHh4cCAgIkSUOGDNG4ceP0xx9/KHfu3E6u7roH/RgBAADnSzpRxNklZDguufY5u4RU3S4b3IgeLDhs0KBB+umnn9SpUyfFxMRo8uTJql+//n0TrgAAAABn4TlYcNiIESNUtGhRvfHGG5o3b54ef/xx+0OIAQAAgAcZPVhwWKFChexDqAMAAAD4Bz1YAAAAAGARAhYAAAAAWISABQAAAAAWIWABAAAAgEUIWAAAAABgEQIWAAAAAFiEYdotVmDC+Hu2rUMDnnF4GZvNJn9/fx04cEA5cuSwt+fLl0+SdOTIEYuquzv58uVTvnz5tG7dOmeXAgAAAKQZPVgPoNjYWL3yyivptv6uXbvKZrOl2/oBAACA+xUB6wH1wQcfaPfu3U7Z9rVr15yyXQAAACC9EbAeQIUKFZKbm5uGDBlyy3n+/PNPNWvWTL6+vipYsKDGjx8vY4yk65cZdu3a1T7viBEjZLPZdOTIEeXLl0+zZs2yz7du3Tr79KioKAUGBmrOnDmSpLFjxyp//vzy8vJShQoVtGHDhvTbaQAAAOAeIGA9gMLCwjRo0CAtXbpUq1evvmn65cuX1aBBA23dulUvv/yyGjZsqGeffVbz58//z3WPHj1aVapUkSRNmTJFRYoUsU9bs2aNnn/+eVWqVEkzZszQc889pwoVKui1115TbGysWrZsqbi4OOt2FAAAALjHGOTiAfXCCy9o+vTpeuaZZ/TLL7+kmPbll19qz549mjNnjmrXri1J2rBhg2bPnq0OHTrcdr0dO3bUypUrtWXLFvXu3TvFtAULFqh06dKSpCxZsmjt2rWqVq2azp07p6tXr2ro0KH67bffVKlSJet2FAAAALiHCFgPKD8/P40cOVJ9+vSxX9KXbOvWrZKkzp07p2i/23un/P397T+Hh4frzTffVNOmTRUfH29vpwcLAAAAGRkB6wHWs2dPTZw4UcOHD9fVq1fl5eUlSfYRACdNmqS8efPa5/f29rZs22+88YamTJmi3r17q0GDBvr222/19ttvW7Z+AAAAwBkIWA8wV1dXjR07Vk2bNpUke5iKiIiQJCUmJioyMlKSdOjQIftzs3x9fXXu3Dn7es6fP59ivckBLSkpSS4uqd/m98MPPyhbtmyaMmWKJOn48eMW7RUAAADgPASsB1yTJk1Uv359rVq1yt7WqlUrFSlSREOHDtWxY8cUEBCgyZMnq2PHjho3bpwqVaqkb775RsOGDdPZs2c1bdq0FOsMDg6WJA0ePFh9+/ZNdbulSpXSV199pYEDB8rX11cTJ06UdD3UAQAAABkVActihwY84+wSHDZ+/HiVK1fO/trDw0PffPONBg4cqHfffVceHh5q0aKFXnzxRUnSxIkT1a1bN02YMEFlypRRz549NXXqVPvyTz31lL766it9+OGHatGiRarbHDZsmI4cOaIZM2YoT548Gjx4sEaOHKlDhw6l674CAAAA6clmkh9uhBTi4+P1ZJcOmj7ro5vuPbp06ZIOHz6s/Pnzy9PT00kV4nY4RgAAwNmSThT575mQgkuufc4uIVW3ywY34jlYAAAAAGARAhYAAAAAWISABQAAAAAWIWABAAAAgEUIWAAAAABgEQIWAAAAAFiEgAUAAAAAFiFgAQAAAIBFCFgAAAAAYBE3ZxeQ2dzLJ3bfyZOubTZbitfZs2dX8+bNNW7cOGXNmvWu6rl06ZIKFy6sxx57TOPGjUt1ntatW+v333/Xjz/+eFfbAgAAAO5HBKwHUOHChTV48GBJ0i+//KJp06bpxIkT+uqrr+5qvZ6enpo6daoKFy5sb7PZbOrSpYtmzpwpSRo2bJji4uLuajsAAADA/YqA9QAKDQ1V79697a8vXbqkOXPmaOfOnSpZsuRdrbtp06a3nV6hQoW7Wj8AAABwP+MeLOjhhx+WJO3Zs0eStG/fPjVs2FA+Pj4KCQnR8OHDde3aNfv8kyZNUsGCBeXj46PKlStr3bp19mk2m01du3bVunXr7Jcjzpo1S/ny5ZMk1a5d2/5z2bJllT9/fvuyy5Ytk81m0/vvvy9J2rlzp+rUqSMfHx8VL15cc+fOTa+3AAAAALAEAQs6ceKEJClHjhyKjY1V3bp1tX37dr344ouqWrWqRo8erTfeeEOStHz5cvXv319FixbVqFGjFBMTo2bNmik6OjrFOosUKaIpU6ZIkqpUqaLRo0fftN1WrVrpyJEj2rt3ryRpxYoVcnFxUfPmzXXmzBnVrVtX0dHRGjVqlEqXLq3OnTtr8+bN6flWAAAAAHeFgPUAunz5sv7880/98ccf+vrrr/Xuu+8qJCREFSpU0Mcff6xjx45p+vTpGjZsmBYvXqyKFSvaB63YuXOnJGnkyJEaPHiwFixYoAEDBujChQsptvHvyxCLFi2qjh073lRHq1atJF3vuZKuB6yqVasqODhYM2bMUHR0tCZNmqR27dpp3LhxCggI0OzZs9PtfQEAAADuFgHrAbRlyxblyZNH4eHhatq0qby8vDR//nz5+vpq27ZtkqQaNWrY569Zs6ZiYmJ06tQptW/fXnnz5lWDBg3UqVMn7dmzRy+99JIKFCjgcB0lS5ZUkSJFtGzZMh07dky7du1Sy5YtJUlbt26VJNWpU8de6/nz53XkyJG73n8AAAAgvTDIxQOoZMmS+t///iebzaawsDAVL15cWbJkkST7f11dXe3zJyUlSZJcXFwUFham3377TZ9++qmWL1+up556SqNHj9Z3330nf39/h2tp2bKlJkyYoCVLlthfS/8MJ79w4UJ5enra5w8KCrqDPQYAAADuDXqwHkBBQUGKjIxU06ZNVbZsWXuokmQfRXDjxo32to0bNyokJERBQUEaP368Bg4cqI4dO2rOnDn68MMP9dtvv2nFihW33F5yQEtNq1atlJCQoDFjxqQY9CIiIkKS5ObmpsjISEVGRip//vyqVKnSXe07AAAAkJ4IWEjh8ccfV+7cudW1a1eNGTNGbdu21U8//aSnn35aNptN7u7umjZtmh577DG98847evvtt+Xi4qLixYunur7g4GCtWbNGb775ZqrTK1eurDx58ujYsWP2e7IkqWfPngoKClLXrl01YsQIvfjii3r44Yc1derUdNlvAAAAwApcImgxl1z7nF3CXfHy8tKyZcsUFRWlV199VdmzZ9drr72mIUOGSJL69++vixcv6r333tMXX3yhwoULa/78+fYepxuNGjVKzz33nKZPn25/uPGNki8TTL48ULrey7ZixQoNGjRIr7/+ugICAtSjRw/16NHD+p0GAAAALGIzxhhnF3E/io+P15NdOmj6rI/k7e2dYtqlS5d0+PBh5c+fP8X9Qbh/cIwAAICzJZ0o4uwSMpz7tbPidtngRk7twfpyyWf6+qsvdPnyJZUuW069+w7QxQsXNGXyOzp08IBCQsPUq29/5c2bT8YYzZ83W+vXrpGrq6sim7VQk8hmkqRdO3doxrT3dPbsGUWULK1effvL19f3ek/LuxO1a+d2BWYLUvcevRRRspQzdxkAAABAJua0e7C2b9uqBfPnqW//pzVy9Bvau3u3ln39pebOmaEsWTw19s2JCg/Pq/enTJIkbf31Z61asUzPDXtJPXr11dzZM/T70SO6evWqJk94Sw9Xq6HXx76tkydPaMmniyRJSz5bpDNnTuv1sW+r8kMPa/KEt3Q1MdFZuwwAAAAgk3NawHJzc1OHTk+oVOkyypMnXCGhoTp/7rx2/7ZL1WvWUvYcOVS7bn0dOnhAly9f1u7fdqlwkWIqWLCQyleoqJw5g7V3z26dPHFcMTFnVa9+Q+UMDlaVqtW0e/cuSdLu33bpoSpVlTM4WPUbNlJMzFmdPHnCWbsMAAAAIJNzWsAqEVHSfonf0SOHdWD/PlWrUVMXYmPt98z4+PhIki7Exir2X+2S5O3jo9i/2yX9s4y3jy783ZZiXd7X15U8/40SExMVHx9v/5eQEG/1LgMAAADI5Jw+iuCZM6c19vXRahrZXIUKp34j4N/PnE1zu27Vfptllny2SIsXLrj1gqlgfJD7F8cGAAAAzuDUgBUbG6sxo0YoomQptXu8oyTJz89fcXFxkqSEhITrbf4B8vPz05nT0fZlExIS5B+QVX5+/pKkuPg4eXp5KSEhXgH+Wf9ZV/z1dcX/vS7/v6fdqHnLNmoS2fxf649Xv96pDwnu7u5+fZ3x8fLy8rqTXUc6i4+/3gOZfKwAAACAe8FpAetSQoL+b8woZc+eXZ26dFN8fJxsNhcVLxGhb9evVfHiEVq3drUKFy4qDw8PFS9RUiuWfa39+/YqPj5eJ0+cUPHiJRScK0SBgdm0avky1a3fQFu+26wyZctLkoqXiNCWzZtUrXpNfbt+rbIFBSk4V65U63F3d0/zl3FXV1dlzZpVp06dkiR5e3vLdsvuNNxLxhjFx8fr1KlTypo1q1xdXZ1dEgAAAB4gTgtY33//nQ4e3C9Jeqr7E5Kk7Dly6JWRYzRl8gQ9O6i/QsPC1CdqgCSpXPkKeqRxpMa+Plqubq56omt3heXOI0mKGjBIM6a9p+XLliqiZGk1a3H9gbXNW7XRiRPH9cKQQcqWLUhR/QdZ9oU7199BLTlk4f6SNWtW+zECAAAA7hUeNHwLaX2Y2LVr15TI0O/3FXd3d3quAACA0/GgYcfxoGHI1dWVL/MAAAAAJDlxmHYAAAAAyGwIWAAAAABgEQIWAAAAAFiEgAUAAAAAFiFgAQAAAIBFCFgAAAAAYBECFgAAAABYhIAFAAAAABYhYAEAAACARQhYAAAAAGARAhYAAAAAWISABQAAAAAWIWABAAAAgEUIWAAAAABgEQIWAAAAAFiEgAUAAAAAFiFgAQAAAIBFCFgAAAAAYBECFgAAAABYhIAFAAAAABYhYAEAAACARQhYAAAAAGARAhYAAAAAWISABQAAAAAWIWABAAAAgEUIWAAAAABgEQIWAAAAAFiEgAUAAAAAFiFgAQAAAIBFCFgAAAAAYBECFgAAAABYhIAFAAAAABYhYAEAAACARQhYAAAAAGARAhYAAAAAWISABQAAAAAWIWABAAAAgEUIWAAAAABgEQIWAAAAAFiEgAUAAAAAFiFgAQAAAIBFCFgAAAAAYBECFgAAAABYhIAFAAAAABYhYAEAAACARQhYAAAAAGARAhYAAAAAWISABQAAAAAWIWABAAAAgEUIWAAAAABgEQIWAAAAAFiEgAUAAAAAFiFgAQAAAIBFCFgAAAAAYBECFgAAAABYhIAFAAAAABYhYAEAAACARQhYAAAAAGARAhYAAAAAWISABQAAAAAWIWABAAAAgEUIWAAAAABgEQIWAAAAAFiEgAUAAAAAFiFgAQAAAIBFCFgAAAAAYBECFgAAAABYhIAFAAAAABYhYAEAAACARQhYAAAAAGARAhYAAAAAWISABQAAAAAWIWABAAAAgEUIWAAAAABgkTsKWH/+8YeOHD4kSTpz5rSWfrlE27f9amlhAAAAAJDRuDm6wA/ff6cJb41X8xatlCtXiF4e9rxiYs5Ksqnbkz3VoFHjdCgTAAAAAO5/DvdgLVowX/ny51etOvW0efNGJSYmatSY/1PZcuX1zdIv06NGAAAAAMgQHA5Yp06dVLXqNZUzOFjbfv1Flas8rIKFCqt0mbI6ffp0etQIAAAAABmCwwErR85gff/dZn2/ZbO2bf1VZcqW06VLl/TLzz8qR44c6VEjAAAAAGQIDgesVm3a6cCBfXrnzXEKDQ1V+QqVNP39Kdq5Y7sim7VIhxIBAAAAIGNweJCLh6tWV3h4Xh079qdKlyknV1dXlSpTVlWqVlOFipXTo0YAAAAAyBAcDljLvvlKERGlVPmhh+1tNWvVsbQoAAAAAMiIHA5Ys2dMl2STr6+vipcooeIRJVWiREmF581nfXUAAAAAkIE4HLDGvTVJBw7s04H9+3TowAHNmz1T164l/R24IjTo2efTvK7z589p08YN2rBuraL6P6084Xm1aeMGTXrnTfs8vn5++uDDOTLGaP682Vq/do1cXV0V2ayFmkQ2kyTt2rlDM6a9p7NnzyiiZGn16ttfvr6+unjxot57d6J27dyuwGxB6t6jlyJKlnJ0lwEAAAAgTRwOWKFhYQoNC1P16jW1Z89u/fTj91q7eqUuXryg3b/tSvN6EhIS1L/PU8qXL7+OHjlsbz8XE6OiRYtryAsvSpJstuvjcGz99WetWrFML74ySufPndO4N0arZKnSCg3LrckT3lK9Bo1Uo2Ztjfu/MVry6SJ1fKKrlny2SGfOnNbrY9/W2jWrNHnCW5ow+T25ubs7utsAAAAA8J8cDlirV63Qtl9/0a6d23Xp0iXlz19QTSKbq2y58ipUuEia1+Ph4aGJU97XlcuXNSCql739XEyMArNlk4+Pb4r5d/+2S4WLFFPBgoUkSTlzBmvvnt1ydXVVTMxZ1avfUFkDA1WlajX98tOP9mUeqlJVOYODVb9hI33+6UKdPHlCYbnz3FRPYmKiEhMT7a8TEuIdel8AAAAAwOGANf39KZIkX18/de7SXdVq1JSfn7/DG3Z1dVVAQFZFnzqZoj0m5qz279urqF5Pys/fXx07d1Wp0mUUGxsrT09P+3zePj6KjY1VbGysJNmn+Xj76MLfbRf+tYyPt48kKTY2VmGp1LPks0VavHCBw/sBAAAAAMkcDliTpk7Xtq2/aMe2rVq8aIHmzPpQ+QsUVJmy5VWmbDkVKVrsrgqqW7+BSpQspSJFimn5N0s14a1xmvL+h6nOa7PdYiW3ar/NMs1btlGTyOb21wkJ8erXu0caqwYAAACAOwhY2bJlU5269VWnbn2di4nR8mVfa8WypTp08IA+W7xQH33y6V0VFBIapkKFisgjSxY1atxUq1Yu09mzZ+Xn56czp6Pt8yUkJMg/IKu99ywuPk6eXl5KSIhXgH9WSZKfn7/i4uMkSfEJCZIk/7+n3cjd3V3u3JsFAAAA4C7c0XOwDuy7PorgqVOnJBkFBmZTuQqVFBFR8q4LGvfGGGXPnkNduvfUpo0b5Ovrp2zZsql4iZJasexr7d+3V/Hx8Tp54oSKFy+h4FwhCgzMplXLl6lu/Qba8t1mlSlbXpJUvESEtmzepGrVa+rb9WuVLShIwbly3XWNAAAAAJCaO3oOVkDWrCpRoqQebd5SJUqWUkhIqGUFPdU7StPfn6pB/XsrZ3AuDRw8RG7u7ipXvoIeaRypsa+Plqubq57o2t0+WEXUgEGaMe09LV+2VBElS6tZi5aSpOat2ujEieN6YcggZcsWpKj+g+Tq6mpZrQAAAADwbzZjjHFkgb+OHVNo2PVhIs6fPydvb59MeWldfHy8nuzSQdNnfSRvb29nlwMAAIAMJulE2kfYxnUuufY5u4RUOZINXBxdeVD27Jr2/hR17fSY+j7VXTt3bNPx439p+NAhOvbnH3dcNAAAAABkdA4HrNkzpmnzxm9VtXpNJXd+BQVlV5JJ0qwZ0ywvEAAAAAAyCocD1s8//ajIZs3Vpm17e5uHh4eqVa+pfXv3WlocAAAAAGQkDgespKQkJSZevan90MEDypIliyVFAQAAAEBG5PAogtVq1NQ3S79QfHycJJt++fknrV29Sj/9+IMaNHokHUoEAAAAgIzB4YDVsVMXJSQkaNWKZZKMVq9cLsmmmrXrqGPnrpYXCAAAAAAZhcMBy83dXb379leHjk/o99+PSLIpd+48yhoYaH11AAAAAJCBpClgnT1zRtmCgiRJp6Oj7e25cl1/wPDVq1ft7dlz5LC6RgAAAADIENIUsIY9/4yefKq3KlWuogFRT0my3XLejz751KraAAAAACBDSVPAat6ytQoWuv4k6lZt2km2WwcsAAAAAHhQpSlgNW76qP3n6jVqK1dISLoVBAAAAAAZlcODXAwe2Fe584Sr8kNVVKlyFeXNlz896gIAAACADMfhgPVos5basX2rPl20UJ8uWqgcOXKoYuWHVPmhh1W0WPH0qBEAAAAAMgSHA9bjnZ7Q43pCsbGx2rHtV23ftlWbvt2gb5Z+pYCsAZry/oz0qBMAAAAA7nsud7rguZizOnv2rE6fPq24uIuSjAL8AywsDQAAAAAyFod7sN57d6K2b9uqmJgYSVKhQoXVrn1HVa7ysIKDc1leIAAAAABkFA4HrG83rFOx4iXUvGVrVaxcRdmyZUuPugAAAAAgw3E4YE39YKZ8/fx0/vw5RZ86JQ8PD/n6+irp2jW5uLqmR40AAAAAkCE4fA9WUlKS/vfaSPXp2V0vvzhU+/ft0R+/H1X/vk9p39496VEjAAAAAGQIDgesD6e/p99/P6JWbdtJMpKk3HnClSskVHNnMYIgAAAAgAeXwwFr184datz0UdWt28DeZrPZVKFiJR09etjS4gAAAAAgI3E4YLm7uSvm7Fn7a5vNJknavm2rfH39rKsMAAAAADIYhwe5aNCosRYumK/T0ack2bR29Sp98vFHOnL4sFq2bpsOJQIAAABAxuBwwGrZuq2SkpK07OuvJBn9+MMWeXhkUeu2jxGwAAAAADzQHA5Ykq6HqVZtFB19SrLZlCNHTrm4OHy1IQAAAABkKmkOWOfOndOmb9fr1MmT8vXzU5Wq1ZQnT7h9+sGDB/TRnJl6acRr6VIoAAAAANzv0hSwDh86qNGvvqz4+Hh725LPFqtPvwEqUqSo5n80V1s2b5K7+x11iAEAAABAppCmRPTR3NlycXFV/4HPKG++/Dpz5rTmz5utD6a+q6SkJCUlXVPtOnXVuu1j6V0vAAAAANy30hSwjhw+pKbNmuvhatUlSaFhYfLx6aPhLwxRufIV1alLN4WEhKZroQAAAABwv0vTyBRxcRfld8MzrrJmDZQk1W/YiHAFAAAAAHJgkIv9+/bK3cPD/jru4kVJ0q6dO3ThwgV7e81adSwsDwAAAAAyjjQHrA3r12rD+nX/ajGSpK+/+kKS7e/XNgIWAAAAgAdWmgJWr77907sOAAAAAMjw0hSwatWum951AAAAAECGl6ZBLgAAAAAA/42ABQAAAAAWSVPAunAhVlcTE9O7FgAAAADI0NIUsAZG9daa1SslSaNGvKRffv4xXYsCAAAAgIwoTYNceHl56fst3yksdx7t/m2n8hcoIC8v71TnLV4iwtICAQAAACCjSFPAatz0UX00d5ZGv7pLkk1ff/Wlvv7qyxvmuv4crI8++dTyIgEAAAAgI0hTwIps1kIRpUrrz9+PasrkCapRs7ZKlCyV3rUBAAAAQIaSpoAlSfnzF1D+/AV08tRJlS9fUQUKFkrPugAAAAAgw0lzwErWpm17xcfHa/k3S/XXsWOyudgUnjefHq5aXV5eXulRIwAAAABkCA4HrCOHD+mNMaN0/vy5FO2LP/lYw14eqbCw3FbVBgAAAAAZisMPGp41Y5qSTJKGDH1RH876SNNmztOzz7+opKQkzZz+QXrUCAAAAAAZgsMB6+CBA2rc9FGVK19Rnl5e8vb2VvkKFdWoSVPt37c3PWoEAAAAgAzB4YAVkDVAvx85clP770eOyMfHx4qaAAAAACBDcvgerIaNmmj+vNmKjj6losWKy8XFRfv27NG+fXvV9rHH06NGAAAAAMgQHA5YjzZvKZuLTd989aW+/uoLSVJQUHZ1fbKHGjZqYnmBAAAAAJBROBywJCny0RaKfLSFYmNj5e7uzvDsAAAAAKA7DFjJ/P39raoDAAAAADI8hwe5AAAAAACkjoAFAAAAABZxKGAlJSXpvXcnasf2belVDwAAAABkWA4FLBcXF+3Yvk17dv+WXvUAAAAAQIbl8CAXJUqW0vJvliogIECeqYweWLNWHUsKAwAAAICMxuGAtXHDOknSzA8/SGWqjYAFAAAA4IHlcMAa/sqo9KgDAAAAADI8h0cRLBFRUgUKFNT58+d04MA+ZcsWpBIRJeXn768SESXTo0YAAAAAyBAc7sE6dPCA3vjfKF2IjZVkU5484bp8+ZJeHPqsuvfsrbr1GqRDmQAAAABw/3O4B2v2jOnKmTNYQ198WZKRJOXNl181atbWV0s+s7o+AAAAAMgwHA5YR48eVtVqNZQ7d3iK9rDceXT6dLRlhQEAAABARuNwwMqeI6d27dwhY5IkSTabTefOndO6NasUnCvE8gIBAAAAIKNw+B6sdo910Fvj/0+HDh6QZNPsGdN19uxZXblyWf2ffiYdSgQAAACAjMHhgFXpoSoa/spIffXFEh09elhXrlxRseIl1KxFK0YRBAAAAPBAczhgSVKJiFIqEVHK6loAAAAAIENzOGAlXbumFcu/0fp1axR96qSMMQoOzqVadeqpQaPGcnFx+LYuAAAAAMgUHA5YH057T2tWr1TOnMEqVbqsbDabjh45rFkzpuvPP//Qkz17p0edAAAAAHDfczhgbdq4QZUqP6RBzw5N0f7WuDe06dv1BCwAAAAADyyHr+cLCMiqfPkL3tReuEhRBQRktaImAAAAAMiQ0tSDtfu3Xfafy1WoqNUrlytvvnzy8vKWJCUkJGjFsq/1SJPI9KkSAAAAADKANAWsUSOGS7L9/cpIksa98b8b5jKaO3ummkQ2s646AAAAAMhA0hSwevXtn951AAAAAECGl6aAVat23fSuAwAAAAAyPIdHETwdHa1PPp6nI4cP6fLlyykn2qR3Jr1nVW0AAAAAkKE4HLAmT3xLe/fsVr78BeTn758eNQEAAABAhuRwwDp86KCaPtpcHTt3TYdyAAAAACDjcvg5WCGhYfLwyJIetQAAAABAhuZwD9aTPXtrzKhXFBt7XlmzBqaYZrNJrdo8ZllxAAAAAJCROByw1qxeqUuXLmn1yuWpTLURsAAAAAA8sBwOWJs3fqtixUuo25NPydPLKz1qAgAAAIAMyeGAFRgYqPIVKilPeN70qAcAAAAAMiyHA1bDR5pow/q1qlCpstzd3G+anj1HDksKAwAAAICMxuGANWfWh5KkZwb2S3X6R598muZ1nT9/Tps2btCGdWsV1f9p5QnPq9PR0Zoy+R0dOnhAIaFh6tW3v/LmzSdjjObPm631a9fI1dVVkc1aqElkM0nSrp07NGPaezp79owiSpZWr7795evrq4sXL+q9dydq187tCswWpO49eimiZClHdxkAAAAA0sThgNWqTbvrwwXepYSEBPXv85Ty5cuvo0cO29vnzpmhLFk8NfbNiVr0yXy9P2WSRr8+Tlt//VmrVizTi6+M0vlz5zTujdEqWaq0QsNya/KEt1SvQSPVqFlb4/5vjJZ8ukgdn+iqJZ8t0pkzp/X62Le1ds0qTZ7wliZMfk9u7jf3vAEAAADA3XI4YLVp97glG/bw8NDEKe/ryuXLGhDVy96++7dd6tKth7LnyKHadetr5MvDdPnyZe3+bZcKFymmggULSZJy5gzW3j275erqqpiYs6pXv6GyBgaqStVq+uWnH+3reqhKVeUMDlb9ho30+acLdfLkCYXlzmPJPgAAAADAvzkcsEaNeOmW02w2afgro9K0HldXVwUEZFX0qZMp2i/ExsrT01OS5OPjY2+L/Ve7JHn7+Cj273ZJ/yzj7aMLf7elWJf39XXFxsYqLJV6EhMTlZiYaH+dkBCfpv0AAAAAgGQOB6xTp07IppSXCF65ckWxsefTbWTBW12ReMsrFW9zBeOtllny2SItXrjAoboAAAAA4N8cDlgT3/3gprarV69q9KuvKNyCgOXn56+4uDhJ1+/TkiQ//wD5+fnpzOlo+3wJCQnyD8gqPz9/SVJcfJw8vbyUkBCvAP+s/6wr/vq64v9el//f027UvGUbNYls/q/1x6tf7x53vT8AAAAAHhwuVqzEzc1NpcqU0ZYtm+56XcVLROjb9Wt1Ojpa69auVuHCReXh4aHiJUpq39492r9vr7Zt/VUnT5xQ8eIllCskRIGB2bRq+TJFnzqpLd9tVvGIkvZ1bdm8SSdPntCaVcuVLShIwblypbpdd3d3eXt72/95eXnf9b4AAAAAeLA43IO1+7ddN7XFxcXpu00b5ebm8Opu0umJbpoyeYKeHdRfoWFh6hM1QJJUrnwFPdI4UmNfHy1XN1c90bW7fbCKqAGDNGPae1q+bKkiSpZWsxYtJUnNW7XRiRPH9cKQQcqWLUhR/QfJ1dX1rmsEAAAAgNTYjDHGkQU6tGupm29yMnJxcVGXbj3UoFFj66pzovj4eD3ZpYOmz/pI3t70ZgEAAMAxSSeKOLuEDMcl1z5nl5AqR7KBw11Ovfr0u2mkCC8vL+XPX0A5cgY7ujoAAAAAyDQcDli16tRLjzoAAAAAIMNLU8Aa+K8HAd+WTXpn0nt3Uw8AAAAAZFhpClhJJummZ18lS34GliS5uFgyKCEAAAAAZEhpClipPfvKGKMN69bok48/kiSVLFVanZ7oZm11AAAAAJCB3NG46rt27tDc2TN09MgRheXOrZ69+6psuQpW1wYAAAAAGYpDAeuvY8c0b85M/frLT/L3D1D3nr1Ut14DLg0EAAAAAKUxYF24EKtFCz7WmtUr5OrqquYt26h5y9by9PRM7/oAAAAAIMNIU8Aa1L+P4uMTJEk5cuTUvr17NPb10TfNZ7NJw18ZZW2FAAAAAJBBpClgxcfH238+ceK4Tpw4fos5Ux9pEAAAAAAeBGkKWB998ll61wEAAAAAGR6jUwAAAACARQhYAAAAAGARAhYAAAAAWISABQAAAAAWIWABAAAAgEUIWAAAAABgEQIWAAAAAFiEgAUAAAAAFiFgAQAAAIBFCFgAAAAAYBECFgAAAABYxM3ZBQAAANxLSSeKOLuEDMcl1z5nlwBkGPRgAQAAAIBFCFgAAAAAYBECFgAAAABYhIAFAAAAABYhYAEAAACARQhYAAAAAGARAhYAAAAAWISABQAAAAAWIWABAAAAgEUIWAAAAABgEQIWAAAAAFiEgAUAAAAAFiFgAQAAAIBFCFgAAAAAYBECFgAAAABYhIAFAAAAABYhYAEAAACARQhYAAAAAGARAhYAAAAAWISABQAAAAAWIWABAAAAgEUIWAAAAABgEQIWAAAAAFiEgAUAAAAAFiFgAQAAAIBFCFgAAAAAYBECFgAAAABYhIAFAAAAABYhYAEAAACARQhYAAAAAGARAhYAAAAAWISABQAAAAAWIWABAAAAgEUIWAAAAABgEQIWAAAAAFiEgAUAAAAAFiFgAQAAAIBFCFgAAAAAYBECFgAAAABYhIAFAAAAABYhYAEAAACARQhYAAAAAGARAhYAAAAAWISABQAAAAAWIWABAAAAgEUIWAAAAABgEQIWAAAAAFiEgAUAAAAAFiFgAQAAAIBFCFgAAAAAYBECFgAAAABYhIAFAAAAABYhYAEAAACARQhYAAAAAGARAhYAAAAAWISABQAAAAAWIWABAAAAgEUIWAAAAABgEQIWAAAAAFiEgAUAAAAAFiFgAQAAAIBF3JxdwK3877UR2r5tq/1100eb65HGkZoy+R0dOnhAIaFh6tW3v/LmzSdjjObPm631a9fI1dVVkc1aqElkM0nSrp07NGPaezp79owiSpZWr7795evr66S9AgAAAJCZ3bc9WDExMerW4ylNmzlX02bOVbv2HTV3zgxlyeKpsW9OVHh4Xr0/ZZIkaeuvP2vVimV6bthL6tGrr+bOnqHfjx7R1atXNXnCW3q4Wg29PvZtnTx5Qks+XeTkPQMAAACQWd23AetcTIxy5gyWj4+vfHx85eHhod2/7VL1mrWUPUcO1a5bX4cOHtDly5e1+7ddKlykmAoWLKTyFSoqZ85g7d2zWydPHFdMzFnVq99QOYODVaVqNe3evSvV7SUmJio+Pt7+LyEh/h7vMQAAAICM7r68RPBqYqIuXrygeXNm6f0pk1W4SFH16NVHF2Jj5enpKUny8fGRJF2IjVXsv9olydvHR7F/t0v6ZxlvH134u+1GSz5bpMULF6TnbgEAAADI5O7LgCWbTV2f7KlcuULl7e2tyRPf1qJPPr7VrA616xbtzVu2UZPI5vbXCQnx6te7hwNFAwAAAHjQ3ZcBKykpSRUrPqRsQUGSpIqVKuvA/v3y8/NXXFycJCkhIUGS5OcfID8/P505HW1fPiEhQf4BWeXn5y9JiouPk6eXlxIS4hXgnzXVbbq7u8vd3T0d9woAAABAZndf3oN18sRxRfV+Ut9t2qiTJ09o+7atCs+bV8VLROjb9Wt1Ojpa69auVuHCReXh4aHiJUpq39492r9vr7Zt/VUnT5xQ8eIllCskRIGB2bRq+TJFnzqpLd9tVvGIks7ePQAAAACZ1H3Zg5UnPK+6dO+hubNnKCEhXqVKl1HbxzroUkKCpkyeoGcH9VdoWJj6RA2QJJUrX0GPNI7U2NdHy9XNVU907a6w3HkkSVEDBmnGtPe0fNlSRZQsrWYtWjpz1wAAAABkYjZjjHF2Efej+Ph4Pdmlg6bP+kje3t7OLgcAAFgk6UQRZ5eQ4bjk2ufsEjIkzjXH3a/nmiPZ4L68RBAAAAAAMiICFgAAAABYhIAFAAAAABYhYAEAAACARQhYAAAAAGARAhYAAAAAWISABQAAAAAWIWABAAAAgEUIWAAAAABgEQIWAAAAAFiEgAUAAAAAFiFgAQAAAIBFCFgAAAAAYBECFgAAAABYhIAFAAAAABYhYAEAAACARQhYAAAAAGARAhYAAAAAWISABQAAAAAWIWABAAAAgEUIWAAAAABgEQIWAAAAAFiEgAUAAAAAFiFgAQAAAIBFCFgAAAAAYBECFgAAAABYhIAFAAAAABYhYAEAAACARQhYAAAAAGARAhYAAAAAWISABQAAAAAWIWABAAAAgEUIWAAAAABgEQIWAAAAAFiEgAUAAAAAFiFgAQAAAIBFCFgAAAAAYBECFgAAAABYhIAFAAAAABYhYAEAAACARQhYAAAAAGARAhYAAAAAWISABQAAAAAWIWABAAAAgEUIWAAAAABgEQIWAAAAAFiEgAUAAAAAFiFgAQAAAIBFCFgAAAAAYBECFgAAAABYhIAFAAAAABZxc3YBAAAAQGZU6JNezi4hwzk0wNkV3D16sAAAAADAIgQsAAAAALAIAQsAAAAALELAAgAAAACLELAAAAAAwCIELAAAAACwCAELAAAAACzCc7AAAPeFpBNFnF1ChuOSa5+zSwAA3IAeLAAAAACwCAELAAAAACxCwAIAAAAAixCwAAAAAMAiBCwAAAAAsAgBCwAAAAAsQsACAAAAAIsQsAAAAADAIgQsAAAAALAIAQsAAAAALOLm7AIAAADupUKf9HJ2CRnOoQHOrgDIOOjBAgAAAACLELAAAAAAwCIELAAAAACwCAELAAAAACzCIBcAAABAOij49BZnl5DxZIIBVejBAgAAAACLELAAAAAAwCIELAAAAACwCPdgZVBJJ4o4u4QMxyXXPmeXkCFxrjmOcw24v3FfzB3IBPfFAPcKPVgAAAAAYBF6sAAA94VCn/RydgkZziF6FQDgvkMPFgAAAABY5IHowfpu00Z9/NEcxcVdVMXKVfRkz95yd3d3dll3hb/0Oo6/9AL3N+6LuQP8XgOA+06mD1gXLsRq6rsT1K1HLxUqVESjR72statXquEjTZxd2l3hi8gd4IvIHSHMO44wDwDAgyvTB6yDB/bLGKlW7bqy2WwqV66Cdv+2K8MHLOBeIczfAQIWAAAPrEwfsGJjY5XFM4tsNpskydvHRydPnrxpvsTERCUmJtpfx8fHSZISEuLvTaEOsrkZZ5eQ4cTH35/H8n7HueY4zrU7w7nmOM61O8O55jjOtTvDuea4+/VcS84Exvz3MbWZtMyVgW1Yv1ZzZn2oDz6cI0maO3uGjhw+pOGvjEox36JP5mvxwgXOKBEAAABABjBp6jQFBWW/7TyZvgfLz89PlxISlJSUJBcXFyXEx8s/IOtN8zVv2UZNIpvbXyclJSnu4kX5+vnZe7/w3xIS4tWvdw9NmjpNXl7ezi4HmRjnGu4VzjXcK5xruFc41xxnjNGlSwkKDMz2n/Nm+oBVsFARubi4aPXK5SpRspS2bv1FLVu3u2k+d3f3m0YW9PX1vVdlZjpeXt7y9uYDi/THuYZ7hXMN9wrnGu4VzjXH+Pj4pGm+TB+w/P391bvvAM2fN1sL5s9VpcpVVKt2XWeXBQAAACATyvQBS5IerlZdD1er7uwyAAAAAGRyLs4uAJmLu7u7Wrd9LMM/yBn3P8413Cuca7hXONdwr3Cupa9MP4ogAAAAANwr9GABAAAAgEUIWAAAAABgEQIWAAAAAFjkgRhFEPfG+fPntGnjBm1Yt1ZR/Z9WnvC8zi4JmdSXSz7T1199ocuXL6l02XLq3XeAPD09nV0WMplr165pwfy5WrNqhSSpXPmK6tk7Sh4eHk6uDJnZ2+P/T99v2az5Cz93dinIpP732ght37bV/rrpo83V6YluzisoEyJgwRIJCQnq3+cp5cuXX0ePHHZ2OcjEtm/bqgXz5+n5YS8pa2Cgxrz6ipZ9/aVatGrr7NKQyWz8dr3WrFqpIUOHy9fPT6+NeElrVq3QI00inV0aMqmffvxBP/6wxdllIJOLiYlRtx5PqVr1mpIkd3f+aGQ1AhYs4eHhoYlT3teVy5c1IKqXs8tBJubm5qYOnZ5QqdJlJEkhoaE6f+68k6tCZlSrdl37g+nj4i7Kzc1Nrq6uTq4KmVV8fLxmTH9PjRo31TdLv3R2OcjEzsXEKGfOYPn4+Dq7lEyLe7BgCVdXVwUEZHV2GXgAlIgoqSaRzSRJR48c1oH9+1StRk0nV4XM7LlnBuqp7k8oV0iI6jd8xNnlIJOaP3e2SpUuq5KlSju7FGRiVxMTdfHiBc2bM0t9n+qut8a9oQsXYp1dVqZDwAKQIZ05c1pjXx+tppHNVahwEWeXg0zs+WEv6YXhr+jokSNav26Ns8tBJrRn92/66cfv1alzV2eXgszOZlPXJ3uqc5fuGjxkqH7//agWffKxs6vKdLhEEECGExsbqzGjRiiiZCm1e7yjs8tBJnX06BGdP3dOpcuUVVBQdpUoWVK/7dqp2nXqObs0ZDKfLV6oCxcuaGC/Xrp2LUmS9GSXDpo+6yMnV4bMJikpSRUrPqRsQUGSpIqVKuvA/v1OrirzoQcLQIZyKSFB/zdmlLJnz65OXbopPj5O8fHxzi4LmdDvRw7rrXGva/++vfrjj9+1f99e5cuf39llIRPqEzVAb02YrNfHvqUu3XtIkl4f+5aTq0JmdPLEcUX1flLfbdqokydPaPu2rQrPy6jPVqMHC0CG8v333+ngwet/bXuq+xOSpOw5cmjiux84syxkQtVr1tbRo0c09vXRMsaoStVqatioibPLQiaUNTDQ/nNAwO+SpBw5g51VDjKxPOF51aV7D82dPUMJCfEqVbqM2j7WwdllZTo2Y4xxdhEAAAAAkBlwiSAAAAAAWISABQAAAAAWIWABAAAAgEUIWAAAAABgEQIWAAAAAFiEgAUAAAAAFiFgAQAAAIBFeNAwACBdPd62RYrXfn7+qlipsjo+0VU+Pr6WbqdmrTrq02+gZetMzfq1qzX13Yn21z4+vspfoIAe7/iEChQsdEfrnDPzQ32/ZbPenPCuPDw8rCoVAOAEBCwAQLrLFRKqJpHNJElHDh3U2jWrdO7cOT33wnAnV3az6FMnNSCql1q3fUxt2j1+y/lq1KqjwkWK6uKFC/p66Rd6beTLGv/OJAUGZvvPbfTv21M5cuTUyyNHS5LqNWikkqVLE64AIBMgYAEA0l1gYKAaNHzE/joxMVHfblinP34/qjzheVPMm3TtmlxcXe91iQ6LiCipWnXqSZKCc+XSxLfHa9O3GxTZrIXD6woNC1NoWJjFFQIAnIGABQC45woXKapvN6zTX8eO6cKFWI0a8ZJq1KytXbt2qFSpMuodNUDH/zqmGdPf1769e+Tl5a3adeurbbv29vC1fu1qLZg/T1evXlWdeg1SrP/VV15UdPQpTXz3A0nSb7t2aNSIl9S7b3/VqlNPVy5f1pxZM7Tlu00yJkklS5dR1249tW3rL/bL/xYvXKDfdu209zLdTt58+SVJJ0+ekCTFxJzV7BnTtX3br7LZXFS2XHl16/GU4uPiNCCqlyTpdHS0Hm/bQvMXfq4pk97RhvVrNX/h5/YetMZNH9XhQ4d08MB+hYfnVb+Bg5UrJESStGnjBn08b44SEuJVsXIV/fH7UWXJkkUvjxwtY4wWLZivdWtXKz4+TgUKFtIT3Xoob958d3/gAAD/iUEuAAD33Llz5yRJfv7+9raff/pBNWvVVdXqNRQfH6/XRr6s348eVYtWbVSkaFF9/ulCfbHkU0nSn3/8ofemTJavr6+aPtpcu3/b6dD2586ZqTWrV6h6zVpq0LCxfvnpR02a8KYKFymmdu07SpLKla+oJpHN07S+s2fOSJJ8ff0kSRPeGq9tW39Vw0ZNVK9BI323eaPmz50tXz9/de/ZW76+fsoVEqruPXvfcp0rln2jQoUKq1HjJjp06IA++XieJOmvY8f07sS35eburkebt9L5czE6dPCAfbnVq1bo08WfqHhESbVs007H/vxT/zdmlK5du+bQewQAuDP0YAEA0t3VxKs6c+a0ZIx+//2oVi7/RlkDA1WgQEEdOnQ9HLR9rIMeaRIpSVq9crnOnj2jIUOHq3yFipKkF4c+q6++WKIWrdpq7ZqVMiZJg4e8oFwhIWr0SBN1e+LW90v9W0JCgtasWqFateuqS7ce1+u7elUbN65XtqAgVa9RU598PE8FChZUxUqVb7meuLg4nTlzWufPndP8ebPl4uKiKlWrSZIee7yjfHx8FBISqtjYWO3YvlV79uyWl5eXGjR8RF98vvimyyZv1PCRxur4RFdJ0q4d2/X770clSWtWr1BSUpIGDxmqPHnC9Wjzlorq/aR9uT/+nu+JLt3lHxCgAgUKatfOnUpISJCvr3WDigAAUkfAAgCku/3796pf7x7210FB2dW3/9Py9PKyt3n96+ejR49IkooVL2FvK1a8hA4dPKDz58/pxPHjf/cCXb9k7t/r+S8nThzXtWvXlL9AQXtbxye62sPMhdjzaVrPnFkfas6sDyVJHh4e6h01wH4Znpe3t6a9P0X79+2TMUmSpOw5cqS5Rkny9va2/+zp5aULFy9cr//4cfn4+CpPnnBJkouLi9zc/vnfed36DbV547ca8swAVahYWeUrVExxaSUAIH0RsAAA6S5PnnC179hZkk3ZsmVTWO48cnd3v+X87m7Xp7m4/HMluzFGkmSzucjFxZZimiNsd7TUzRo3fVQlS5XWqhXLtWP7VhUpWsw+7c2x/1NCfIKe6NpdOXLm1IKP5irhUoIl27XZbr/vefPm01sTp+j77zZp+7atenv8WBUpWlTDX36VkAUA9wD3YAEA0p2vn5/KV6ik8hUqKl/+ArcNV5KUO/x678zePbvtbXv37FbWwED5+fkpV65QXbgQq1MnT0q6ftnfv3l5eSkhPsEeyuLj4+3TgnOFyNXVVUcOH7K3rVz+jf7vf69dX4/tegQzSea2NebNm0/lK1RS5y7dlJSUpI/nzZEke101atXWI00iVaFiZXl4ZEmxrE02e22OCgm9vu9/HTsm6fqoi1cTr9qnz587W19+/qnqNWikQc8+r3aPd9Du33bp8JHDd7Q9AIBj6MECANx3qlWroUWfzNfUyRPUqHETHTl8WIcOHtDjnZ6QzWZT7br1tPSrJRr3f2NUvUYt/fjDlhTLFyhYWL/8/JPenfi2smUL0rp1q+3TvLy8VKduA61ZvUKenl7K4plFS79covz5C8rLy8veQ/TDD1uUPUeOm0YovFFIaJhq1qqjdWtXq+n+5ipYqLCyZQvSd5s2KmvWQB3Yv1cHD+5P8XysgKxZdeTwIS1euEDNW7Ry6L2pW6+hln65ROPeGK3adetr184dOncuRiGhoZKu30/29dIvFBd3UaFhubVh3VplyZJFwTmDHdoOAODO0IMFALjveGTJoqEvvqKQ0FB9uugT7d+3V+3ad9SjzVpKksJy51GvPv104UKsvvziMxUtVjxFgGnc9FFVfqiKfvrxe/34wxY1bNQkxfo7demmOvUaaP26Nfr6qy9VrkJFPf3s85IkT09PtWzdVqejT+mH779LU72t27aXu7u75s2ZJZvNpqefeU7+/v76bPEnMkaqULGyYmPP69LfPW0tW7eVR5YsWv7NUiUlJTn03uQKCVG/AYOVmJioLz5frKCgIAUEZLVfNti+Y2c1iWymn378QQvmz5Wnp6eeff5F+fr5ObQdAMCdsZk7vUYBAAA4xYnjx+0DfMTFXVSvJ7uqZq3aeqpPPydXBgDgEkEAADKQv44d03PPDFT1GjWVO0+4tmzepKSka6pZu46zSwMAiB4sAAAynG+WfqkVy77W2bNnFBISqtZt26vSQ1WcXRYAQAQsAAAAALAMg1wAAAAAgEUIWAAAAABgEQIWAAAAAFiEgAUAAAAAFiFgAQAAAIBFCFgAAAAAYBECFgAAAABYhIAFAAAAABb5fzLQH46oO34PAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Plot sentiment distribution across different ratings\n", + "sentiment_rating_counts.plot(kind='bar', stacked=True, figsize=(10, 6), colormap='viridis')\n", + "plt.xlabel('Product Ratings')\n", + "plt.ylabel('Number of Reviews')\n", + "plt.title('Distribution of Sentiment Across Product Ratings')\n", + "plt.xticks(rotation=0)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "da0592f0", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.9.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/DATA Mini Project.pptx b/DATA Mini Project.pptx new file mode 100644 index 0000000..23b9c5d Binary files /dev/null and b/DATA Mini Project.pptx differ diff --git a/Final Project DATA 400 Presentation.pdf b/Final Project DATA 400 Presentation.pdf new file mode 100644 index 0000000..cfb2ba6 Binary files /dev/null and b/Final Project DATA 400 Presentation.pdf differ diff --git a/Final Project DATA 400 Progress Presentation.pptx b/Final Project DATA 400 Progress Presentation.pptx new file mode 100644 index 0000000..941f7e9 Binary files /dev/null and b/Final Project DATA 400 Progress Presentation.pptx differ diff --git a/Idea 1.md b/Idea 1.md new file mode 100644 index 0000000..397cd80 --- /dev/null +++ b/Idea 1.md @@ -0,0 +1,45 @@ +# Idea 1 + +### Research Question: + +How does the sentiment expressed in online customer reviews influence the click-through rate (CTR) of product advertisements on Amazon? + +### Data Source: +Amazon Product Advertising API and Amazon Customer Reviews Dataset (on Kaggle) + +**Data Retrieval**: +* Amazon Customer Reviews (on Kaggle): This dataset includes: + * Review Text: The actual customer review text (raw text). + * Review Rating: Star rating from 1 to 5. + * Product ID: Unique identifier for each product. + * Review Date: Date when the review was posted. + * Helpful Votes: Number of users who found the review helpful. +* Online Advertising CTR Dataset (Retrieved using the Amazon Product Advertising API): This dataset includes: + * Ad Impressions: Number of times the ad was shown. + * Clicks: Number of times the ad was clicked. + * CTR: Click-through rate, calculated as the ratio of clicks to impressions. + * Product ID: To connect ad data with review sentiment. + +### Data Analysis and Modeling: + +* Sentiment Analysis: The reviews will be classified into three sentiment categories: positive, neutral, and negative. These sentiment categories will be the independent variable for the model. + +**Exploratory Data Analysis (EDA)**: +* Descriptive statistics of CTR, review ratings, and other variables. +* Distributions of variables (review ratings), frequency of words used in the reviews, and visualizations to explore relationships between variables. +* Correlation analysis to identify potential relationships between variables. + +**Model Specification**: +* Logistic Regression: This model will be used to predict the likelihood of a product ad receiving clicks based on the sentiment of customer reviews. + + +### Implications for Stakeholders: + +* Advertisers: By understanding how positive or negative sentiment in reviews affects CTR, advertisers can optimize their campaigns by focusing on products with better customer sentiment or tailoring their ads based on review feedback. +* E-commerce Platforms: Platforms like Amazon or other e-commerce sites can use sentiment data to refine their recommendation systems and ad placements, increasing relevance and improving user experience. +* Consumers: A more personalized advertising experience, driven by customer feedback, can lead to better product recommendations and ads that reflect consumer preferences. + +### Ethical, Legal, and Societal Implications: +* Privacy: The data used for analysis will be aggregated and anonymized, ensuring no personally identifiable information (PII) is exposed. +* Avoiding Bias: Care will be taken to avoid biases in the models, particularly around certain types of products or demographics that may skew sentiment analysis results. +* Transparency: In a real world application, it would be important to maintain transparency with consumers about how their reviews are being used to influence ad placement, fostering trust between the platform and users. diff --git a/Idea 2.md b/Idea 2.md new file mode 100644 index 0000000..53fce10 --- /dev/null +++ b/Idea 2.md @@ -0,0 +1,27 @@ +# Idea 2 +### Research Question: +How can Formula 1 teams optimize race strategies (pit stops, tire choices, and lap timings) based on track conditions (temperature, weather, etc.) to improve performance and outcomes? + +### Data Source: +Data will be retrieved using the Ergast Developer API (the API is deprecated, but it will still be updated until the end of the 2024 season. For alternative options there are F1 databases on Kaggle, and the open source database f1db), which provides access to detailed historical F1 race data. The project will utilize data from the last 10 F1 World Championships (from 2014 - V6 engine era). Key variables include: +* Pit Stop Data: Time of pit stop according to the race (pit on which lap), tire type on each stint, and number of pit stops. +* Track Conditions: Temperature, wind speed, humidity, and rain data. +* Race Results: Starting and finishing positions, lap times, race duration. +* Tire Strategy: The type of tire used during the race (soft, medium, hard) and the order in which they are used. +* Driver Performance: Driver lap times and overall performance in the race as well as in the championships. + +### Data Processing and Model Specification: +I will perform exploratory data analysis (EDA) to identify correlations between track conditions and race outcomes. Based on the insights, I will employ a combination of regression models and classification algorithms: +* Linear Regression to predict optimal pit stop times. +* Decision Trees to recommend the best tire strategies based on weather patterns. + +### Implications for Stakeholders: +This project will help F1 teams optimize their race strategies by predicting the best possible outcomes given specific track conditions. It can: +* Minimize pit stop times and avoid unnecessary stops. +* Optimize tire choices to suit the conditions, thus improving lap times. +* Provide teams with a data-driven approach to enhance performance. + +### Ethical, Legal, and Societal Implications: +* Environmental Impact: Optimizing tire usage reduces waste, which aligns with FIA’s sustainability goals. +* Fan Experience: Help F1 fans gain a deeper understanding of race strategy and how different factors of a race can affect which strategy is optimal. This will highlight a much underrated interesting aspect of the sport, which might appeal to new groups of fans, thus create opportunity for the sport to expand to new markets. +* Data Privacy: Ensure all data retrieval follows the API's and the FIA's legal guidelines, protecting driver and team information. diff --git a/Idea 3.md b/Idea 3.md new file mode 100644 index 0000000..41cf429 --- /dev/null +++ b/Idea 3.md @@ -0,0 +1,32 @@ +# Idea 3 + +### Research Question: +What are the current market conditions for the open-source software market? Specifically, which open-source projects and applications are gaining attention, and how can we predict their future growth? By focusing on trends, geographic locations, and the popularity of specific projects, this research aims to forecast the potential for growth in various open-source technologies. + +### Data Source: +The data will be sourced from Google Trends using their API. This dataset provides key variables such as: +* Interest Over Time: A measure of how frequently a specific search term (in this case, open-source projects) is queried on Google over a defined period. +* Geographic Location: Regional data that shows where certain open-source projects are being searched for and gaining popularity. +* Related Topics and Queries: Insights into other open-source tools or projects that are linked to the main search term. To enhance prediction accuracy, I will create additional variables such as project release date, GitHub star growth rates, and community engagement metrics by scraping repositories and open-source news platforms. + +### Data Analysis and Modeling: +**Exploratory Data Analysis (EDA):** +* Visualization of trends over time for specific projects to identify growth patterns. +* Geographic analysis to determine which regions are driving the most interest in open-source projects. +* Analysis of related queries and topics to uncover emerging trends in the open-source community. + +**Model Specification:** +* Time Series Analysis: ARIMA models will be used to forecast the growth of search interest over time for open-source projects. +* Classification Models: Random Forest classifiers to predict which projects are most likely to grow based on current trends and community activity. +* Clustering: K-Means clustering to group projects by similar growth patterns or geographic popularity. + +### Implications for Stakeholders: +* Open-Source Developers: Understanding which projects are growing can guide development focus and resource allocation. +* Businesses and Investors: Insights into trending projects can inform investment decisions in the open-source space. +* Tech Communities: Knowing which regions are showing increased interest in open-source software can help tailor community-building efforts and localization of projects. + +### Ethical, Legal, and Societal Implications: +* Attribution and Licensing: Open-source projects typically use licenses like MIT, Apache, or GPL. When analyzing these projects and incorporating findings into a commercial context, it’s essential to respect and acknowledge these licenses, ensuring that any insights derived from open-source data comply with the licensing terms. +* Digital Divide: This project may highlight how interest in open-source projects varies across different regions. If the data shows that wealthier or more developed regions dominate interest in open-source technologies, it could highlight and potentially exacerbate the digital divide. This raises questions about how to foster open-source engagement in underrepresented regions and whether there should be efforts to democratize access to open-source tools and knowledge. +* Workforce and Employment: If certain open-source technologies gain significant attention and experience rapid growth, this could shift demand in the tech workforce. It’s important to consider how this shift may impact developers, particularly those who specialize in less-popular open-source projects or technologies. It could also contribute to the growing trend of automation, potentially displacing traditional jobs in some sectors. +* Community Impact: Open-source projects thrive on contributions from a wide range of individuals, often in a decentralized manner. Predicting which projects will grow could lead to commercialization efforts that might alter the ethos of the open-source community, creating tension between profit-driven growth and community-driven development. Ensuring that the collaborative spirit of open-source remains intact is crucial to maintaining the health of these communities. \ No newline at end of file diff --git a/Mini Project.ipynb b/Mini Project.ipynb new file mode 100644 index 0000000..9828fee --- /dev/null +++ b/Mini Project.ipynb @@ -0,0 +1,6920 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 63, + "id": "d72e23c6", + "metadata": {}, + "outputs": [], + "source": [ + "# Import packages\n", + "import pandas as pd\n", + "from textblob import TextBlob\n", + "import re\n", + "import ydata_profiling as pp\n", + "import sweetviz as sv\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn.metrics import accuracy_score, classification_report\n", + "from sklearn.metrics import confusion_matrix, roc_curve, roc_auc_score\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "1a1c8456", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/48/tqx5v_cn2yz_z2tp0lfxzwww0000gn/T/ipykernel_11117/721239921.py:3: DtypeWarning: Columns (1,10) have mixed types. Specify dtype option on import or set low_memory=False.\n", + " df = pd.read_csv(file_path)\n" + ] + } + ], + "source": [ + "# Load the dataset\n", + "file_path = \"/Users/nmn/Downloads/archive/1429_1.csv\"\n", + "df = pd.read_csv(file_path)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "86ac8f09", + "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", + "
idnameasinsbrandcategorieskeysmanufacturerreviews.datereviews.dateAddedreviews.dateSeen...reviews.doRecommendreviews.idreviews.numHelpfulreviews.ratingreviews.sourceURLsreviews.textreviews.titlereviews.userCityreviews.userProvincereviews.username
0AVqkIhwDv8e3D1O-lebbAll-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,...B01AHB9CN2AmazonElectronics,iPad & Tablets,All Tablets,Fire Ta...841667104676,amazon/53004484,amazon/b01ahb9cn2...Amazon2017-01-13T00:00:00.000Z2017-07-03T23:33:15Z2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z...TrueNaN0.05.0http://reviews.bestbuy.com/3545/5620406/review...This product so far has not disappointed. My c...KindleNaNNaNAdapter
1AVqkIhwDv8e3D1O-lebbAll-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,...B01AHB9CN2AmazonElectronics,iPad & Tablets,All Tablets,Fire Ta...841667104676,amazon/53004484,amazon/b01ahb9cn2...Amazon2017-01-13T00:00:00.000Z2017-07-03T23:33:15Z2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z...TrueNaN0.05.0http://reviews.bestbuy.com/3545/5620406/review...great for beginner or experienced person. Boug...very fastNaNNaNtruman
2AVqkIhwDv8e3D1O-lebbAll-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,...B01AHB9CN2AmazonElectronics,iPad & Tablets,All Tablets,Fire Ta...841667104676,amazon/53004484,amazon/b01ahb9cn2...Amazon2017-01-13T00:00:00.000Z2017-07-03T23:33:15Z2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z...TrueNaN0.05.0http://reviews.bestbuy.com/3545/5620406/review...Inexpensive tablet for him to use and learn on...Beginner tablet for our 9 year old son.NaNNaNDaveZ
3AVqkIhwDv8e3D1O-lebbAll-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,...B01AHB9CN2AmazonElectronics,iPad & Tablets,All Tablets,Fire Ta...841667104676,amazon/53004484,amazon/b01ahb9cn2...Amazon2017-01-13T00:00:00.000Z2017-07-03T23:33:15Z2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z...TrueNaN0.04.0http://reviews.bestbuy.com/3545/5620406/review...I've had my Fire HD 8 two weeks now and I love...Good!!!NaNNaNShacks
4AVqkIhwDv8e3D1O-lebbAll-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,...B01AHB9CN2AmazonElectronics,iPad & Tablets,All Tablets,Fire Ta...841667104676,amazon/53004484,amazon/b01ahb9cn2...Amazon2017-01-12T00:00:00.000Z2017-07-03T23:33:15Z2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z...TrueNaN0.05.0http://reviews.bestbuy.com/3545/5620406/review...I bought this for my grand daughter when she c...Fantastic Tablet for kidsNaNNaNexplore42
\n", + "

5 rows × 21 columns

\n", + "
" + ], + "text/plain": [ + " id name \\\n", + "0 AVqkIhwDv8e3D1O-lebb All-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,... \n", + "1 AVqkIhwDv8e3D1O-lebb All-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,... \n", + "2 AVqkIhwDv8e3D1O-lebb All-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,... \n", + "3 AVqkIhwDv8e3D1O-lebb All-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,... \n", + "4 AVqkIhwDv8e3D1O-lebb All-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,... \n", + "\n", + " asins brand categories \\\n", + "0 B01AHB9CN2 Amazon Electronics,iPad & Tablets,All Tablets,Fire Ta... \n", + "1 B01AHB9CN2 Amazon Electronics,iPad & Tablets,All Tablets,Fire Ta... \n", + "2 B01AHB9CN2 Amazon Electronics,iPad & Tablets,All Tablets,Fire Ta... \n", + "3 B01AHB9CN2 Amazon Electronics,iPad & Tablets,All Tablets,Fire Ta... \n", + "4 B01AHB9CN2 Amazon Electronics,iPad & Tablets,All Tablets,Fire Ta... \n", + "\n", + " keys manufacturer \\\n", + "0 841667104676,amazon/53004484,amazon/b01ahb9cn2... Amazon \n", + "1 841667104676,amazon/53004484,amazon/b01ahb9cn2... Amazon \n", + "2 841667104676,amazon/53004484,amazon/b01ahb9cn2... Amazon \n", + "3 841667104676,amazon/53004484,amazon/b01ahb9cn2... Amazon \n", + "4 841667104676,amazon/53004484,amazon/b01ahb9cn2... Amazon \n", + "\n", + " reviews.date reviews.dateAdded \\\n", + "0 2017-01-13T00:00:00.000Z 2017-07-03T23:33:15Z \n", + "1 2017-01-13T00:00:00.000Z 2017-07-03T23:33:15Z \n", + "2 2017-01-13T00:00:00.000Z 2017-07-03T23:33:15Z \n", + "3 2017-01-13T00:00:00.000Z 2017-07-03T23:33:15Z \n", + "4 2017-01-12T00:00:00.000Z 2017-07-03T23:33:15Z \n", + "\n", + " reviews.dateSeen ... reviews.doRecommend \\\n", + "0 2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z ... True \n", + "1 2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z ... True \n", + "2 2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z ... True \n", + "3 2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z ... True \n", + "4 2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z ... True \n", + "\n", + " reviews.id reviews.numHelpful reviews.rating \\\n", + "0 NaN 0.0 5.0 \n", + "1 NaN 0.0 5.0 \n", + "2 NaN 0.0 5.0 \n", + "3 NaN 0.0 4.0 \n", + "4 NaN 0.0 5.0 \n", + "\n", + " reviews.sourceURLs \\\n", + "0 http://reviews.bestbuy.com/3545/5620406/review... \n", + "1 http://reviews.bestbuy.com/3545/5620406/review... \n", + "2 http://reviews.bestbuy.com/3545/5620406/review... \n", + "3 http://reviews.bestbuy.com/3545/5620406/review... \n", + "4 http://reviews.bestbuy.com/3545/5620406/review... \n", + "\n", + " reviews.text \\\n", + "0 This product so far has not disappointed. My c... \n", + "1 great for beginner or experienced person. Boug... \n", + "2 Inexpensive tablet for him to use and learn on... \n", + "3 I've had my Fire HD 8 two weeks now and I love... \n", + "4 I bought this for my grand daughter when she c... \n", + "\n", + " reviews.title reviews.userCity \\\n", + "0 Kindle NaN \n", + "1 very fast NaN \n", + "2 Beginner tablet for our 9 year old son. NaN \n", + "3 Good!!! NaN \n", + "4 Fantastic Tablet for kids NaN \n", + "\n", + " reviews.userProvince reviews.username \n", + "0 NaN Adapter \n", + "1 NaN truman \n", + "2 NaN DaveZ \n", + "3 NaN Shacks \n", + "4 NaN explore42 \n", + "\n", + "[5 rows x 21 columns]" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Display the first few rows of the dataset\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "8ca78e98", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 34660 entries, 0 to 34659\n", + "Data columns (total 21 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 id 34660 non-null object \n", + " 1 name 27900 non-null object \n", + " 2 asins 34658 non-null object \n", + " 3 brand 34660 non-null object \n", + " 4 categories 34660 non-null object \n", + " 5 keys 34660 non-null object \n", + " 6 manufacturer 34660 non-null object \n", + " 7 reviews.date 34621 non-null object \n", + " 8 reviews.dateAdded 24039 non-null object \n", + " 9 reviews.dateSeen 34660 non-null object \n", + " 10 reviews.didPurchase 1 non-null object \n", + " 11 reviews.doRecommend 34066 non-null object \n", + " 12 reviews.id 1 non-null float64\n", + " 13 reviews.numHelpful 34131 non-null float64\n", + " 14 reviews.rating 34627 non-null float64\n", + " 15 reviews.sourceURLs 34660 non-null object \n", + " 16 reviews.text 34659 non-null object \n", + " 17 reviews.title 34655 non-null object \n", + " 18 reviews.userCity 0 non-null float64\n", + " 19 reviews.userProvince 0 non-null float64\n", + " 20 reviews.username 34658 non-null object \n", + "dtypes: float64(5), object(16)\n", + "memory usage: 5.6+ MB\n" + ] + } + ], + "source": [ + "df.info()" + ] + }, + { + "cell_type": "markdown", + "id": "f0ee1ce0", + "metadata": {}, + "source": [ + "## Data Cleaning" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "e8c97ee0", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/48/tqx5v_cn2yz_z2tp0lfxzwww0000gn/T/ipykernel_11117/3012774807.py:5: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df_filtered.dropna(subset=['reviews.text', 'reviews.rating'], inplace=True)\n", + "/var/folders/48/tqx5v_cn2yz_z2tp0lfxzwww0000gn/T/ipykernel_11117/3012774807.py:8: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df_filtered['reviews.rating'] = df_filtered['reviews.rating'].astype(int)\n" + ] + }, + { + "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", + "
reviews.textreviews.rating
0This product so far has not disappointed. My c...5
1great for beginner or experienced person. Boug...5
2Inexpensive tablet for him to use and learn on...5
3I've had my Fire HD 8 two weeks now and I love...4
4I bought this for my grand daughter when she c...5
\n", + "
" + ], + "text/plain": [ + " reviews.text reviews.rating\n", + "0 This product so far has not disappointed. My c... 5\n", + "1 great for beginner or experienced person. Boug... 5\n", + "2 Inexpensive tablet for him to use and learn on... 5\n", + "3 I've had my Fire HD 8 two weeks now and I love... 4\n", + "4 I bought this for my grand daughter when she c... 5" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Keep only the necessary columns\n", + "df_filtered = df[['reviews.text', 'reviews.rating']]\n", + "\n", + "# Drop rows with missing values in 'reviews.text' or 'reviews.rating'\n", + "df_filtered.dropna(subset=['reviews.text', 'reviews.rating'], inplace=True)\n", + "\n", + "# Convert 'reviews.rating' to integer type\n", + "df_filtered['reviews.rating'] = df_filtered['reviews.rating'].astype(int)\n", + "\n", + "# Display the first few rows of the filtered dataset\n", + "df_filtered.head()" + ] + }, + { + "cell_type": "markdown", + "id": "76beab0a", + "metadata": {}, + "source": [ + "## Text Preprocessing" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "2ef94480", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/48/tqx5v_cn2yz_z2tp0lfxzwww0000gn/T/ipykernel_11117/1347770142.py:14: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df_filtered['cleaned_text'] = df_filtered['reviews.text'].apply(preprocess_text)\n" + ] + } + ], + "source": [ + "# Function to preprocess and clean review text\n", + "def preprocess_text(text):\n", + " # Convert text to lowercase\n", + " text = text.lower()\n", + " # Remove special characters and digits\n", + " text = re.sub(r'\\W', ' ', text)\n", + " # Remove single characters\n", + " text = re.sub(r'\\s+[a-zA-Z]\\s+', ' ', text)\n", + " # Remove multiple spaces\n", + " text = re.sub(r'\\s+', ' ', text)\n", + " return text\n", + "\n", + "# Apply preprocessing to the review text\n", + "df_filtered['cleaned_text'] = df_filtered['reviews.text'].apply(preprocess_text)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "f8897e2a", + "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", + "
reviews.textreviews.ratingcleaned_text
0This product so far has not disappointed. My c...5this product so far has not disappointed my ch...
1great for beginner or experienced person. Boug...5great for beginner or experienced person bough...
2Inexpensive tablet for him to use and learn on...5inexpensive tablet for him to use and learn on...
3I've had my Fire HD 8 two weeks now and I love...4i ve had my fire hd 8 two weeks now and love i...
4I bought this for my grand daughter when she c...5i bought this for my grand daughter when she c...
\n", + "
" + ], + "text/plain": [ + " reviews.text reviews.rating \\\n", + "0 This product so far has not disappointed. My c... 5 \n", + "1 great for beginner or experienced person. Boug... 5 \n", + "2 Inexpensive tablet for him to use and learn on... 5 \n", + "3 I've had my Fire HD 8 two weeks now and I love... 4 \n", + "4 I bought this for my grand daughter when she c... 5 \n", + "\n", + " cleaned_text \n", + "0 this product so far has not disappointed my ch... \n", + "1 great for beginner or experienced person bough... \n", + "2 inexpensive tablet for him to use and learn on... \n", + "3 i ve had my fire hd 8 two weeks now and love i... \n", + "4 i bought this for my grand daughter when she c... " + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_filtered.head()" + ] + }, + { + "cell_type": "markdown", + "id": "c88662c2", + "metadata": {}, + "source": [ + "## Sentiment Analysis" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "f08303cc", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/48/tqx5v_cn2yz_z2tp0lfxzwww0000gn/T/ipykernel_11117/1108251068.py:14: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df_filtered['sentiment'] = df_filtered['cleaned_text'].apply(get_sentiment)\n" + ] + } + ], + "source": [ + "# Function to calculate sentiment polarity\n", + "def get_sentiment(text):\n", + " blob = TextBlob(text)\n", + " # Determine sentiment polarity (-1 to 1 range)\n", + " polarity = blob.sentiment.polarity\n", + " if polarity > 0:\n", + " return 'Positive'\n", + " elif polarity < 0:\n", + " return 'Negative'\n", + " else:\n", + " return 'Neutral'\n", + "\n", + "# Apply sentiment analysis to cleaned text\n", + "df_filtered['sentiment'] = df_filtered['cleaned_text'].apply(get_sentiment)" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "af872f37", + "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", + "
reviews.textreviews.ratingcleaned_textsentiment
0This product so far has not disappointed. My c...5this product so far has not disappointed my ch...Positive
1great for beginner or experienced person. Boug...5great for beginner or experienced person bough...Positive
2Inexpensive tablet for him to use and learn on...5inexpensive tablet for him to use and learn on...Positive
3I've had my Fire HD 8 two weeks now and I love...4i ve had my fire hd 8 two weeks now and love i...Positive
4I bought this for my grand daughter when she c...5i bought this for my grand daughter when she c...Positive
\n", + "
" + ], + "text/plain": [ + " reviews.text reviews.rating \\\n", + "0 This product so far has not disappointed. My c... 5 \n", + "1 great for beginner or experienced person. Boug... 5 \n", + "2 Inexpensive tablet for him to use and learn on... 5 \n", + "3 I've had my Fire HD 8 two weeks now and I love... 4 \n", + "4 I bought this for my grand daughter when she c... 5 \n", + "\n", + " cleaned_text sentiment \n", + "0 this product so far has not disappointed my ch... Positive \n", + "1 great for beginner or experienced person bough... Positive \n", + "2 inexpensive tablet for him to use and learn on... Positive \n", + "3 i ve had my fire hd 8 two weeks now and love i... Positive \n", + "4 i bought this for my grand daughter when she c... Positive " + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_filtered.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "4b8756f9", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/48/tqx5v_cn2yz_z2tp0lfxzwww0000gn/T/ipykernel_11117/260521937.py:2: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df_filtered['sentiment_num'] = df_filtered['sentiment'].map({'Positive': 1, 'Neutral': 0, 'Negative': -1})\n", + "/var/folders/48/tqx5v_cn2yz_z2tp0lfxzwww0000gn/T/ipykernel_11117/260521937.py:5: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df_filtered['high_rating'] = df_filtered['reviews.rating'].apply(lambda x: 1 if x >= 4 else 0)\n" + ] + } + ], + "source": [ + "# Convert sentiment to numerical values\n", + "df_filtered['sentiment_num'] = df_filtered['sentiment'].map({'Positive': 1, 'Neutral': 0, 'Negative': -1})\n", + "\n", + "# Define target variable (high rating = 1 if rating >= 4, else 0)\n", + "df_filtered['high_rating'] = df_filtered['reviews.rating'].apply(lambda x: 1 if x >= 4 else 0)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "c3ef986c", + "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", + "
reviews.textreviews.ratingcleaned_textsentimentsentiment_numhigh_rating
0This product so far has not disappointed. My c...5this product so far has not disappointed my ch...Positive11
1great for beginner or experienced person. Boug...5great for beginner or experienced person bough...Positive11
2Inexpensive tablet for him to use and learn on...5inexpensive tablet for him to use and learn on...Positive11
3I've had my Fire HD 8 two weeks now and I love...4i ve had my fire hd 8 two weeks now and love i...Positive11
4I bought this for my grand daughter when she c...5i bought this for my grand daughter when she c...Positive11
\n", + "
" + ], + "text/plain": [ + " reviews.text reviews.rating \\\n", + "0 This product so far has not disappointed. My c... 5 \n", + "1 great for beginner or experienced person. Boug... 5 \n", + "2 Inexpensive tablet for him to use and learn on... 5 \n", + "3 I've had my Fire HD 8 two weeks now and I love... 4 \n", + "4 I bought this for my grand daughter when she c... 5 \n", + "\n", + " cleaned_text sentiment sentiment_num \\\n", + "0 this product so far has not disappointed my ch... Positive 1 \n", + "1 great for beginner or experienced person bough... Positive 1 \n", + "2 inexpensive tablet for him to use and learn on... Positive 1 \n", + "3 i ve had my fire hd 8 two weeks now and love i... Positive 1 \n", + "4 i bought this for my grand daughter when she c... Positive 1 \n", + "\n", + " high_rating \n", + "0 1 \n", + "1 1 \n", + "2 1 \n", + "3 1 \n", + "4 1 " + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_filtered.head()" + ] + }, + { + "cell_type": "markdown", + "id": "fc56ab4b", + "metadata": {}, + "source": [ + "## Exploratory Data Analysis" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "5dbe8f6b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['reviews.text', 'reviews.rating', 'cleaned_text', 'sentiment',\n", + " 'sentiment_num', 'high_rating'],\n", + " dtype='object')" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_filtered.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "b09f1e2b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(34626, 6)" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_filtered.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "5551a95e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "reviews.text object\n", + "reviews.rating int64\n", + "cleaned_text object\n", + "sentiment object\n", + "sentiment_num int64\n", + "high_rating int64\n", + "dtype: object" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_filtered.dtypes" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "8f7fb4a7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "reviews.text 0\n", + "reviews.rating 0\n", + "cleaned_text 0\n", + "sentiment 0\n", + "sentiment_num 0\n", + "high_rating 0\n", + "dtype: int64" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Missing values\n", + "df_filtered.isna().sum() # the total number of missing values" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "cf39fedd", + "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", + "
reviews.textreviews.ratingcleaned_textsentimentsentiment_numhigh_rating
0This product so far has not disappointed. My c...5this product so far has not disappointed my ch...Positive11
1great for beginner or experienced person. Boug...5great for beginner or experienced person bough...Positive11
2Inexpensive tablet for him to use and learn on...5inexpensive tablet for him to use and learn on...Positive11
3I've had my Fire HD 8 two weeks now and I love...4i ve had my fire hd 8 two weeks now and love i...Positive11
4I bought this for my grand daughter when she c...5i bought this for my grand daughter when she c...Positive11
\n", + "
" + ], + "text/plain": [ + " reviews.text reviews.rating \\\n", + "0 This product so far has not disappointed. My c... 5 \n", + "1 great for beginner or experienced person. Boug... 5 \n", + "2 Inexpensive tablet for him to use and learn on... 5 \n", + "3 I've had my Fire HD 8 two weeks now and I love... 4 \n", + "4 I bought this for my grand daughter when she c... 5 \n", + "\n", + " cleaned_text sentiment sentiment_num \\\n", + "0 this product so far has not disappointed my ch... Positive 1 \n", + "1 great for beginner or experienced person bough... Positive 1 \n", + "2 inexpensive tablet for him to use and learn on... Positive 1 \n", + "3 i ve had my fire hd 8 two weeks now and love i... Positive 1 \n", + "4 i bought this for my grand daughter when she c... Positive 1 \n", + "\n", + " high_rating \n", + "0 1 \n", + "1 1 \n", + "2 1 \n", + "3 1 \n", + "4 1 " + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# First 5 rows of the dataset\n", + "df_filtered.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "id": "473ac946", + "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", + "
reviews.textreviews.ratingcleaned_textsentimentsentiment_numhigh_rating
34655This is not appreciably faster than any other ...3this is not appreciably faster than any other ...Positive10
34656Amazon should include this charger with the Ki...1amazon should include this charger with the ki...Neutral00
34657Love my Kindle Fire but I am really disappoint...1love my kindle fire but am really disappointed...Positive10
34658I was surprised to find it did not come with a...1i was surprised to find it did not come with a...Negative-10
34659to spite the fact that i have nothing but good...1to spite the fact that have nothing but good t...Positive10
\n", + "
" + ], + "text/plain": [ + " reviews.text reviews.rating \\\n", + "34655 This is not appreciably faster than any other ... 3 \n", + "34656 Amazon should include this charger with the Ki... 1 \n", + "34657 Love my Kindle Fire but I am really disappoint... 1 \n", + "34658 I was surprised to find it did not come with a... 1 \n", + "34659 to spite the fact that i have nothing but good... 1 \n", + "\n", + " cleaned_text sentiment \\\n", + "34655 this is not appreciably faster than any other ... Positive \n", + "34656 amazon should include this charger with the ki... Neutral \n", + "34657 love my kindle fire but am really disappointed... Positive \n", + "34658 i was surprised to find it did not come with a... Negative \n", + "34659 to spite the fact that have nothing but good t... Positive \n", + "\n", + " sentiment_num high_rating \n", + "34655 1 0 \n", + "34656 0 0 \n", + "34657 1 0 \n", + "34658 -1 0 \n", + "34659 1 0 " + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Last 5 rows of the dataset\n", + "df_filtered.tail()" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "id": "6675e03e", + "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", + "
reviews.ratingsentiment_numhigh_rating
count34626.00000034626.00000034626.000000
mean4.5845610.8592960.933258
std0.7356600.4533550.249578
min1.000000-1.0000000.000000
25%4.0000001.0000001.000000
50%5.0000001.0000001.000000
75%5.0000001.0000001.000000
max5.0000001.0000001.000000
\n", + "
" + ], + "text/plain": [ + " reviews.rating sentiment_num high_rating\n", + "count 34626.000000 34626.000000 34626.000000\n", + "mean 4.584561 0.859296 0.933258\n", + "std 0.735660 0.453355 0.249578\n", + "min 1.000000 -1.000000 0.000000\n", + "25% 4.000000 1.000000 1.000000\n", + "50% 5.000000 1.000000 1.000000\n", + "75% 5.000000 1.000000 1.000000\n", + "max 5.000000 1.000000 1.000000" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Summary statistics\n", + "df_filtered.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "c8ba0ee8", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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+aSOHTsm6dcg7+rq6nDB/smTJ/X6669XWv9SvkNWxcbGSvp1FOlsqampF1yvadOmGjdunHr16nXFT1ej7mGkCbhMO3fuNK8nycvL04YNG7R06VK5uLgoLS2t0p1uZ3vhhRe0Zs0a9e/fX02bNtWpU6fMu38qfol5e3urWbNmev/999WjRw/5+fkpICCgWrfHS7+OcgwcOFApKSkKCQnRG2+8oYyMDM2ZM0cNGjSQJN1yyy0KDw/X5MmTdfr0afn6+iotLU0bN26stL3IyEi9++67WrRokaKiolSvXj2H51adbfr06eb1Po899pj8/Py0fPlyrVy5Uk899ZTsdnu1julcs2fPVq9evdStWzdNnjxZ7u7uWrhwoXbu3Kk333zzkp/KfjFz5sxRdHS0/va3v+mll17S448/royMDHXu3FkTJkxQeHi4Tp06pf379+vjjz/WCy+84PAMrREjRuitt97SuHHj1KRJE0sB5rnnntPvf/97de3aVX/605/UvHlzHTt2TN9++60+/PBDrVmzxqzt3r27bDabVq1a5fAcpZ49e2rYsGHmz9Xl5uamWbNmafDgwXruuef017/+Vf3799e8efOUmJio0aNH68iRI5o7d26Vo1mRkZFKTU3VW2+9peuvv17169dXZGRktfuRpD59+qhLly6aNGmSioqKFBUVpc2bN+u1116TJNWr9+uYQWFhobp166bExETdeOON8vb21tatW5Wenq5BgwZdVg+4Cjn7SnSgrqq4w6zi5e7ubgQGBhqxsbHGrFmzjLy8vErrnHtH2+bNm40777zTaNasmeHh4WH4+/sbsbGxxgcffOCw3urVq43f/e53hoeHhyHJGDZsmMP2Dh8+fNF9Gcavd8/179/fePvtt4127doZ7u7uRvPmzY158+ZVWv8///mPER8fb/j4+BiNGzc2xo8fb96RdPbdc0ePHjXuvvtuo1GjRobNZnPYp6q462/Hjh1GQkKCYbfbDXd3d6NDhw4Od0cZxv+/S+uf//ynw/yq7qY6nw0bNhjdu3c3vLy8DE9PT6NTp07Ghx9+WOX2LuXuufPV3nPPPYarq6vx7bffGobx612PEyZMMFq0aGG4ubkZfn5+RlRUlDFt2jTj+PHjDuuWl5cbYWFhhiRj2rRp5933uce9b98+Y8SIEcZ1111nuLm5GY0bNzY6d+5szJw5s9I2fve73xmSjE2bNpnzfvrpJ0NSpbvZzud8n0uF6Ohow9fX17wL8pVXXjHCw8MNDw8P4/rrrzdmz55tvPzyy5XuzNy/f78RHx9veHt7G5LMuzEvdPfcud/5qu74PHr0qHH//fcbjRo1Mho0aGD06tXLyMrKMiQZzz33nGEYhnHq1Cnjj3/8o9G+fXvDx8fH8PT0NMLDw43p06ebd5MCFWyGcZHbewAAuEqsWLFCQ4cO1aZNmyxf+A5UIDQBAK5Kb775pn766SdFRkaqXr16ysrK0tNPP63f/e535iMJgEvBNU0AgKuSt7e3UlNTNXPmTBUXFyskJETDhw/XzJkznd0a6ihGmgAAACzgkQMAAAAWEJoAAAAsIDQBAABYwIXgNejMmTP6+eef5e3tXeMPzwMAAFeGYRg6duyYQkNDzQefVoXQVIN+/vnnSn+9HQAA1A0HDx50eFr/uQhNNaji7zkdPHhQPj4+Tu4GAABYUVRUpLCwMPP3+PkQmmpQxSk5Hx8fQhMAAHXMxS6t4UJwAAAACwhNAAAAFhCaAAAALCA0AQAAWEBoAgAAsIDQBAAAYAGhCQAAwAJCEwAAgAWEJgAAAAsITQAAABYQmgAAACwgNAEAAFhAaAIAALCA0AQAAGABoQkAAMACV2c3AAAAzm/BpA+d3UKdNu6ZhBrbFiNNAAAAFhCaAAAALCA0AQAAWEBoAgAAsIDQBAAAYAGhCQAAwAJCEwAAgAWEJgAAAAsITQAAABYQmgAAACwgNAEAAFhAaAIAALCA0AQAAGABoQkAAMACQhMAAIAFhCYAAAALCE0AAAAWEJoAAAAsIDQBAABYQGgCAACwgNAEAABgAaEJAADAAkITAACABYQmAAAACwhNAAAAFhCaAAAALCA0AQAAWEBoAgAAsIDQBAAAYAGhCQAAwAJCEwAAgAWEJgAAAAsITQAAABYQmgAAACwgNAEAAFhAaAIAALCA0AQAAGABoQkAAMACQhMAAIAFhCYAAAALCE0AAAAWEJoAAAAsIDQBAABYQGgCAACwgNAEAABgAaEJAADAAkITAACABYQmAAAACwhNAAAAFhCaAAAALHBqaJo9e7ZuueUWeXt7KzAwUHfccYf27NnjUGMYhlJSUhQaGipPT0/FxcVp165dDjUlJSUaP368AgIC5OXlpYEDB+rHH390qMnPz1dSUpLsdrvsdruSkpJUUFDgUHPgwAElJCTIy8tLAQEBmjBhgkpLS6/IsQMAgLrFqaEpMzNTY8eOVVZWljIyMnT69GnFx8eruLjYrHnqqac0b948LViwQFu3blVwcLB69eqlY8eOmTXJyclKS0tTamqqNm7cqOPHj2vAgAEqLy83axITE5Wdna309HSlp6crOztbSUlJ5vLy8nL1799fxcXF2rhxo1JTU/XOO+9o0qRJv82bAQAAajWbYRiGs5uocPjwYQUGBiozM1O33XabDMNQaGiokpOTNXXqVEm/jioFBQVpzpw5evDBB1VYWKjGjRvr9ddf17333itJ+vnnnxUWFqaPP/5YvXv31u7du9W2bVtlZWUpOjpakpSVlaWYmBh98803Cg8P17/+9S8NGDBABw8eVGhoqCQpNTVVw4cPV15ennx8fC7af1FRkex2uwoLCy3VAwBwMQsmfejsFuq0cc8kXLTG6u/vWnVNU2FhoSTJz89PkrRv3z7l5uYqPj7erPHw8FBsbKw+++wzSdL27dtVVlbmUBMaGqqIiAizZvPmzbLb7WZgkqROnTrJbrc71ERERJiBSZJ69+6tkpISbd++/QodMQAAqCtcnd1ABcMwNHHiRP3+979XRESEJCk3N1eSFBQU5FAbFBSkH374waxxd3eXr69vpZqK9XNzcxUYGFhpn4GBgQ415+7H19dX7u7uZs25SkpKVFJSYk4XFRVZPl4AAFC31JqRpnHjxumrr77Sm2++WWmZzWZzmDYMo9K8c51bU1V9dWrONnv2bPPCcrvdrrCwsAv2BAAA6q5aEZrGjx+vDz74QGvXrlWTJk3M+cHBwZJUaaQnLy/PHBUKDg5WaWmp8vPzL1hz6NChSvs9fPiwQ825+8nPz1dZWVmlEagKDz/8sAoLC83XwYMHL+WwAQBAHeLU0GQYhsaNG6d3331Xa9asUYsWLRyWt2jRQsHBwcrIyDDnlZaWKjMzU507d5YkRUVFyc3NzaEmJydHO3fuNGtiYmJUWFioLVu2mDWff/65CgsLHWp27typnJwcs2bVqlXy8PBQVFRUlf17eHjIx8fH4QUAAK5OTr2maezYsVqxYoXef/99eXt7myM9drtdnp6estlsSk5O1qxZs9SqVSu1atVKs2bNUoMGDZSYmGjWjhw5UpMmTZK/v7/8/Pw0efJkRUZGqmfPnpKkNm3aqE+fPho1apQWL14sSRo9erQGDBig8PBwSVJ8fLzatm2rpKQkPf300zp69KgmT56sUaNGEYYAAIBzQ9OiRYskSXFxcQ7zly5dquHDh0uSpkyZopMnT2rMmDHKz89XdHS0Vq1aJW9vb7N+/vz5cnV11eDBg3Xy5En16NFDy5Ytk4uLi1mzfPlyTZgwwbzLbuDAgVqwYIG53MXFRStXrtSYMWPUpUsXeXp6KjExUXPnzr1CRw8AAOqSWvWcprqO5zQBAGoaz2m6PFftc5oAAABqK0ITAACABYQmAAAACwhNAAAAFhCaAAAALCA0AQAAWEBoAgAAsIDQBAAAYAGhCQAAwAJCEwAAgAWEJgAAAAsITQAAABYQmgAAACwgNAEAAFhAaAIAALCA0AQAAGABoQkAAMACQhMAAIAFhCYAAAALCE0AAAAWEJoAAAAsIDQBAABYQGgCAACwgNAEAABgAaEJAADAAkITAACABYQmAAAACwhNAAAAFhCaAAAALCA0AQAAWEBoAgAAsIDQBAAAYAGhCQAAwAJCEwAAgAWEJgAAAAsITQAAABYQmgAAACwgNAEAAFhAaAIAALCA0AQAAGABoQkAAMACQhMAAIAFhCYAAAALCE0AAAAWEJoAAAAsIDQBAABYQGgCAACwgNAEAABgAaEJAADAAkITAACABYQmAAAACwhNAAAAFhCaAAAALCA0AQAAWEBoAgAAsIDQBAAAYAGhCQAAwAJCEwAAgAWEJgAAAAsITQAAABYQmgAAACwgNAEAAFhAaAIAALDAqaFp/fr1SkhIUGhoqGw2m9577z2H5cOHD5fNZnN4derUyaGmpKRE48ePV0BAgLy8vDRw4ED9+OOPDjX5+flKSkqS3W6X3W5XUlKSCgoKHGoOHDighIQEeXl5KSAgQBMmTFBpaemVOGwAAFAHOTU0FRcXq0OHDlqwYMF5a/r06aOcnBzz9fHHHzssT05OVlpamlJTU7Vx40YdP35cAwYMUHl5uVmTmJio7OxspaenKz09XdnZ2UpKSjKXl5eXq3///iouLtbGjRuVmpqqd955R5MmTar5gwYAAHWSqzN33rdvX/Xt2/eCNR4eHgoODq5yWWFhoV5++WW9/vrr6tmzpyTpjTfeUFhYmFavXq3evXtr9+7dSk9PV1ZWlqKjoyVJS5YsUUxMjPbs2aPw8HCtWrVKX3/9tQ4ePKjQ0FBJ0jPPPKPhw4friSeekI+PTw0eNQAAqItq/TVN69atU2BgoFq3bq1Ro0YpLy/PXLZ9+3aVlZUpPj7enBcaGqqIiAh99tlnkqTNmzfLbrebgUmSOnXqJLvd7lATERFhBiZJ6t27t0pKSrR9+/YrfYgAAKAOcOpI08X07dtX99xzj5o1a6Z9+/bp0UcfVffu3bV9+3Z5eHgoNzdX7u7u8vX1dVgvKChIubm5kqTc3FwFBgZW2nZgYKBDTVBQkMNyX19fubu7mzVVKSkpUUlJiTldVFRU7WMFAAC1W60OTffee6/5c0REhDp27KhmzZpp5cqVGjRo0HnXMwxDNpvNnD7758upOdfs2bM1Y8aMix4HAACo+2r96bmzhYSEqFmzZtq7d68kKTg4WKWlpcrPz3eoy8vLM0eOgoODdejQoUrbOnz4sEPNuSNK+fn5KisrqzQCdbaHH35YhYWF5uvgwYOXdXwAAKD2qlOh6ciRIzp48KBCQkIkSVFRUXJzc1NGRoZZk5OTo507d6pz586SpJiYGBUWFmrLli1mzeeff67CwkKHmp07dyonJ8esWbVqlTw8PBQVFXXefjw8POTj4+PwAgAAVyennp47fvy4vv32W3N63759ys7Olp+fn/z8/JSSkqK77rpLISEh2r9/vx555BEFBATozjvvlCTZ7XaNHDlSkyZNkr+/v/z8/DR58mRFRkaad9O1adNGffr00ahRo7R48WJJ0ujRozVgwACFh4dLkuLj49W2bVslJSXp6aef1tGjRzV58mSNGjWKIAQAACQ5OTRt27ZN3bp1M6cnTpwoSRo2bJgWLVqkHTt26LXXXlNBQYFCQkLUrVs3vfXWW/L29jbXmT9/vlxdXTV48GCdPHlSPXr00LJly+Ti4mLWLF++XBMmTDDvshs4cKDDs6FcXFy0cuVKjRkzRl26dJGnp6cSExM1d+7cK/0WAACAOsJmGIbh7CauFkVFRbLb7SosLGSECgBQIxZM+tDZLdRp455JuGiN1d/fdeqaJgAAAGchNAEAAFhAaAIAALCA0AQAAGABoQkAAMACQhMAAIAFhCYAAAALCE0AAAAWEJoAAAAsIDQBAABYQGgCAACwgNAEAABgAaEJAADAAkITAACABdUKTd27d1dBQUGl+UVFRerevfvl9gQAAFDrVCs0rVu3TqWlpZXmnzp1Shs2bLjspgAAAGob10sp/uqrr8yfv/76a+Xm5prT5eXlSk9P13XXXVdz3QEAANQSlxSabrrpJtlsNtlstipPw3l6eur555+vseYAAABqi0sKTfv27ZNhGLr++uu1ZcsWNW7c2Fzm7u6uwMBAubi41HiTAAAAznZJoalZs2aSpDNnzlyRZgAAAGqrSwpNZ/vPf/6jdevWKS8vr1KIeuyxxy67MQAAgNqkWqFpyZIl+tOf/qSAgAAFBwfLZrOZy2w2G6EJAABcdaoVmmbOnKknnnhCU6dOrel+AAAAaqVqPacpPz9f99xzT033AgAAUGtVKzTdc889WrVqVU33AgAAUGtV6/TcDTfcoEcffVRZWVmKjIyUm5ubw/IJEybUSHMAAAC1RbVC04svvqiGDRsqMzNTmZmZDstsNhuhCQAAXHWqFZr27dtX030AAADUatW6pgkAAOBaU62RphEjRlxw+SuvvFKtZgAAAGqraoWm/Px8h+mysjLt3LlTBQUFVf4hXwAAgLquWqEpLS2t0rwzZ85ozJgxuv766y+7KQAAgNqmxq5pqlevnv785z9r/vz5NbVJAACAWqNGLwT/7rvvdPr06ZrcJAAAQK1QrdNzEydOdJg2DEM5OTlauXKlhg0bViONAQAA1CbVCk1ffvmlw3S9evXUuHFjPfPMMxe9sw4AAKAuqlZoWrt2bU33AQAAUKtVKzRVOHz4sPbs2SObzabWrVurcePGNdUXAABArVKtC8GLi4s1YsQIhYSE6LbbblPXrl0VGhqqkSNH6sSJEzXdIwAAgNNVKzRNnDhRmZmZ+vDDD1VQUKCCggK9//77yszM1KRJk2q6RwAAAKer1um5d955R2+//bbi4uLMef369ZOnp6cGDx6sRYsW1VR/AAAAtUK1RppOnDihoKCgSvMDAwM5PQcAAK5K1QpNMTExmj59uk6dOmXOO3nypGbMmKGYmJgaaw4AAKC2qNbpuWeffVZ9+/ZVkyZN1KFDB9lsNmVnZ8vDw0OrVq2q6R4BAACcrlqhKTIyUnv37tUbb7yhb775RoZhaMiQIRo6dKg8PT1rukcAAACnq1Zomj17toKCgjRq1CiH+a+88ooOHz6sqVOn1khzAAAAtUW1rmlavHixbrzxxkrz27VrpxdeeOGymwIAAKhtqhWacnNzFRISUml+48aNlZOTc9lNAQAA1DbVCk1hYWHatGlTpfmbNm1SaGjoZTcFAABQ21TrmqYHHnhAycnJKisrU/fu3SVJn376qaZMmcITwQEAwFWpWqFpypQpOnr0qMaMGaPS0lJJUv369TV16lQ9/PDDNdogAABAbVCt0GSz2TRnzhw9+uij2r17tzw9PdWqVSt5eHjUdH8AAAC1QrVCU4WGDRvqlltuqaleAAAAaq1qXQgOAABwrSE0AQAAWEBoAgAAsIDQBAAAYAGhCQAAwAJCEwAAgAWEJgAAAAsITQAAABYQmgAAACwgNAEAAFjg1NC0fv16JSQkKDQ0VDabTe+9957DcsMwlJKSotDQUHl6eiouLk67du1yqCkpKdH48eMVEBAgLy8vDRw4UD/++KNDTX5+vpKSkmS322W325WUlKSCggKHmgMHDighIUFeXl4KCAjQhAkTzD9GDAAA4NTQVFxcrA4dOmjBggVVLn/qqac0b948LViwQFu3blVwcLB69eqlY8eOmTXJyclKS0tTamqqNm7cqOPHj2vAgAEqLy83axITE5Wdna309HSlp6crOztbSUlJ5vLy8nL1799fxcXF2rhxo1JTU/XOO+9o0qRJV+7gAQBAnWIzDMNwdhOSZLPZlJaWpjvuuEPSr6NMoaGhSk5O1tSpUyX9OqoUFBSkOXPm6MEHH1RhYaEaN26s119/Xffee68k6eeff1ZYWJg+/vhj9e7dW7t371bbtm2VlZWl6OhoSVJWVpZiYmL0zTffKDw8XP/61780YMAAHTx4UKGhoZKk1NRUDR8+XHl5efLx8bF0DEVFRbLb7SosLLS8DgAAF7Jg0ofObqFOG/dMwkVrrP7+rrXXNO3bt0+5ubmKj48353l4eCg2NlafffaZJGn79u0qKytzqAkNDVVERIRZs3nzZtntdjMwSVKnTp1kt9sdaiIiIszAJEm9e/dWSUmJtm/ffkWPEwAA1A2uzm7gfHJzcyVJQUFBDvODgoL0ww8/mDXu7u7y9fWtVFOxfm5urgIDAyttPzAw0KHm3P34+vrK3d3drKlKSUmJSkpKzOmioiKrhwcAAOqYWjvSVMFmszlMG4ZRad65zq2pqr46NeeaPXu2eXG53W5XWFjYBfsCAAB1V60NTcHBwZJUaaQnLy/PHBUKDg5WaWmp8vPzL1hz6NChSts/fPiwQ825+8nPz1dZWVmlEaizPfzwwyosLDRfBw8evMSjBAAAdUWtDU0tWrRQcHCwMjIyzHmlpaXKzMxU586dJUlRUVFyc3NzqMnJydHOnTvNmpiYGBUWFmrLli1mzeeff67CwkKHmp07dyonJ8esWbVqlTw8PBQVFXXeHj08POTj4+PwAgAAVyenXtN0/Phxffvtt+b0vn37lJ2dLT8/PzVt2lTJycmaNWuWWrVqpVatWmnWrFlq0KCBEhMTJUl2u10jR47UpEmT5O/vLz8/P02ePFmRkZHq2bOnJKlNmzbq06ePRo0apcWLF0uSRo8erQEDBig8PFySFB8fr7Zt2yopKUlPP/20jh49qsmTJ2vUqFEEIQAAIMnJoWnbtm3q1q2bOT1x4kRJ0rBhw7Rs2TJNmTJFJ0+e1JgxY5Sfn6/o6GitWrVK3t7e5jrz58+Xq6urBg8erJMnT6pHjx5atmyZXFxczJrly5drwoQJ5l12AwcOdHg2lIuLi1auXKkxY8aoS5cu8vT0VGJioubOnXul3wIAAFBH1JrnNF0NeE4TAKCm8Zymy3NNPKcJAACgNiE0AQAAWEBoAgAAsIDQBAAAYAGhCQAAwAJCEwAAgAWEJgAAAAsITQAAABYQmgAAACwgNAEAAFhAaAIAALCA0AQAAGABoQkAAMACQhMAAIAFhCYAAAALXJ3dAACg9sm8LdbZLdRpsesznd0CrgBGmgAAACwgNAEAAFhAaAIAALCA0AQAAGABoQkAAMACQhMAAIAFhCYAAAALCE0AAAAWEJoAAAAsIDQBAABYQGgCAACwgNAEAABgAaEJAADAAkITAACABYQmAAAACwhNAAAAFhCaAAAALCA0AQAAWEBoAgAAsIDQBAAAYAGhCQAAwAJCEwAAgAWEJgAAAAsITQAAABYQmgAAACwgNAEAAFhAaAIAALCA0AQAAGABoQkAAMACQhMAAIAFhCYAAAALCE0AAAAWEJoAAAAsIDQBAABYQGgCAACwgNAEAABgAaEJAADAAkITAACABYQmAAAACwhNAAAAFhCaAAAALCA0AQAAWEBoAgAAsIDQBAAAYAGhCQAAwAJCEwAAgAWEJgAAAAtqdWhKSUmRzWZzeAUHB5vLDcNQSkqKQkND5enpqbi4OO3atcthGyUlJRo/frwCAgLk5eWlgQMH6scff3Soyc/PV1JSkux2u+x2u5KSklRQUPBbHCIAAKgjanVokqR27dopJyfHfO3YscNc9tRTT2nevHlasGCBtm7dquDgYPXq1UvHjh0za5KTk5WWlqbU1FRt3LhRx48f14ABA1ReXm7WJCYmKjs7W+np6UpPT1d2draSkpJ+0+MEAAC1m6uzG7gYV1dXh9GlCoZh6Nlnn9W0adM0aNAgSdKrr76qoKAgrVixQg8++KAKCwv18ssv6/XXX1fPnj0lSW+88YbCwsK0evVq9e7dW7t371Z6erqysrIUHR0tSVqyZIliYmK0Z88ehYeH/3YHCwAAaq1aP9K0d+9ehYaGqkWLFhoyZIi+//57SdK+ffuUm5ur+Ph4s9bDw0OxsbH67LPPJEnbt29XWVmZQ01oaKgiIiLMms2bN8tut5uBSZI6deoku91u1gAAANTqkabo6Gi99tprat26tQ4dOqSZM2eqc+fO2rVrl3JzcyVJQUFBDusEBQXphx9+kCTl5ubK3d1dvr6+lWoq1s/NzVVgYGClfQcGBpo151NSUqKSkhJzuqio6NIPEgAA1Am1OjT17dvX/DkyMlIxMTFq2bKlXn31VXXq1EmSZLPZHNYxDKPSvHOdW1NVvZXtzJ49WzNmzLjocQAAgLqv1p+eO5uXl5ciIyO1d+9e8zqnc0eD8vLyzNGn4OBglZaWKj8//4I1hw4dqrSvw4cPVxrFOtfDDz+swsJC83Xw4MFqHxsAAKjd6lRoKikp0e7duxUSEqIWLVooODhYGRkZ5vLS0lJlZmaqc+fOkqSoqCi5ubk51OTk5Gjnzp1mTUxMjAoLC7Vlyxaz5vPPP1dhYaFZcz4eHh7y8fFxeAEAgKtTrT49N3nyZCUkJKhp06bKy8vTzJkzVVRUpGHDhslmsyk5OVmzZs1Sq1at1KpVK82aNUsNGjRQYmKiJMlut2vkyJGaNGmS/P395efnp8mTJysyMtK8m65Nmzbq06ePRo0apcWLF0uSRo8erQEDBnDnHAAAMNXq0PTjjz/qvvvu0y+//KLGjRurU6dOysrKUrNmzSRJU6ZM0cmTJzVmzBjl5+crOjpaq1atkre3t7mN+fPny9XVVYMHD9bJkyfVo0cPLVu2TC4uLmbN8uXLNWHCBPMuu4EDB2rBggW/7cECAIBazWYYhuHsJq4WRUVFstvtKiws5FQdgDot87ZYZ7dQp8Wuz6yxbS2Y9GGNbetaNO6ZhIvWWP39XaeuaQIAAHAWQhMAAIAFhCYAAAALCE0AAAAWEJoAAAAsIDQBAABYQGgCAACwgNAEAABgAaEJAADAAkITAACABYQmAAAACwhNAAAAFhCaAAAALCA0AQAAWEBoAgAAsIDQBAAAYAGhCQAAwAJCEwAAgAWEJgAAAAsITQAAABYQmgAAACwgNAEAAFhAaAIAALCA0AQAAGABoQkAAMACQhMAAIAFhCYAAAALCE0AAAAWEJoAAAAsIDQBAABYQGgCAACwgNAEAABgAaEJAADAAkITAACABYQmAAAACwhNAAAAFhCaAAAALCA0AQAAWEBoAgAAsIDQBAAAYAGhCQAAwAJCEwAAgAWEJgAAAAsITQAAABYQmgAAACwgNAEAAFjg6uwGAKBCl+e7OLuFOmvT+E3ObgG46jHSBAAAYAGhCQAAwAJCEwAAgAWEJgAAAAsITQAAABYQmgAAACwgNAEAAFhAaAIAALCA0AQAAGABoQkAAMACQhMAAIAFhCYAAAALCE0AAAAWEJoAAAAsIDQBAABY4OrsBq5VUX95zdkt1Fnbn/6fGt3egccja3R715Kmj+1wdgsA8JthpOkcCxcuVIsWLVS/fn1FRUVpw4YNzm4JAADUAoSms7z11ltKTk7WtGnT9OWXX6pr167q27evDhw44OzWAACAkxGazjJv3jyNHDlSDzzwgNq0aaNnn31WYWFhWrRokbNbAwAATkZo+q/S0lJt375d8fHxDvPj4+P12WefOakrAABQW3Ah+H/98ssvKi8vV1BQkMP8oKAg5ebmVrlOSUmJSkpKzOnCwkJJUlFR0UX3V15y8jK6vbZZeX8vxbFT5TW6vWtJTX8Wp0+ertHtXUtq+rMoPs1ncTlq8vM4WXKixrZ1LbLyWVTUGIZxwTpC0zlsNpvDtGEYleZVmD17tmbMmFFpflhY2BXpDb+yP/9HZ7eACrPtzu4A/2WfymdRq9j5PGqLKf+wXnvs2DHZL/DZEZr+KyAgQC4uLpVGlfLy8iqNPlV4+OGHNXHiRHP6zJkzOnr0qPz9/c8btGq7oqIihYWF6eDBg/Lx8XF2O9c0Povahc+j9uCzqD2uls/CMAwdO3ZMoaGhF6wjNP2Xu7u7oqKilJGRoTvvvNOcn5GRodtvv73KdTw8POTh4eEwr1GjRleyzd+Mj49Pnf4HcDXhs6hd+DxqDz6L2uNq+CwuNMJUgdB0lokTJyopKUkdO3ZUTEyMXnzxRR04cEB//COngwAAuNYRms5y77336siRI3r88ceVk5OjiIgIffzxx2rWrJmzWwMAAE5GaDrHmDFjNGbMGGe34TQeHh6aPn16pdOO+O3xWdQufB61B59F7XGtfRY242L31wEAAICHWwIAAFhBaAIAALCA0AQAAGABoQkAAMACQhMkSevXr1dCQoJCQ0Nls9n03nvvObula9bs2bN1yy23yNvbW4GBgbrjjju0Z88eZ7d1TVq0aJHat29vPrgvJiZG//rXv5zdFvTrvxObzabk5GRnt3JNSklJkc1mc3gFBwc7u60rjtAESVJxcbE6dOigBQsWOLuVa15mZqbGjh2rrKwsZWRk6PTp04qPj1dxcbGzW7vmNGnSRE8++aS2bdumbdu2qXv37rr99tu1a9cuZ7d2Tdu6datefPFFtW/f3tmtXNPatWunnJwc87Vjxw5nt3TF8ZwmSJL69u2rvn37OrsNSEpPT3eYXrp0qQIDA7V9+3bddtttTurq2pSQkOAw/cQTT2jRokXKyspSu3btnNTVte348eMaOnSolixZopkzZzq7nWuaq6vrNTG6dDZGmoBarrCwUJLk5+fn5E6ubeXl5UpNTVVxcbFiYmKc3c41a+zYserfv7969uzp7FaueXv37lVoaKhatGihIUOG6Pvvv3d2S1ccI01ALWYYhiZOnKjf//73ioiIcHY716QdO3YoJiZGp06dUsOGDZWWlqa2bds6u61rUmpqqr744gtt3brV2a1c86Kjo/Xaa6+pdevWOnTokGbOnKnOnTtr165d8vf3d3Z7VwyhCajFxo0bp6+++kobN250divXrPDwcGVnZ6ugoEDvvPOOhg0bpszMTILTb+zgwYN66KGHtGrVKtWvX9/Z7Vzzzr6cIzIyUjExMWrZsqVeffVVTZw40YmdXVmEJqCWGj9+vD744AOtX79eTZo0cXY71yx3d3fdcMMNkqSOHTtq69ateu6557R48WInd3Zt2b59u/Ly8hQVFWXOKy8v1/r167VgwQKVlJTIxcXFiR1e27y8vBQZGam9e/c6u5UritAE1DKGYWj8+PFKS0vTunXr1KJFC2e3hLMYhqGSkhJnt3HN6dGjR6W7s+6//37deOONmjp1KoHJyUpKSrR792517drV2a1cUYQmSPr1jpRvv/3WnN63b5+ys7Pl5+enpk2bOrGza8/YsWO1YsUKvf/++/L29lZubq4kyW63y9PT08ndXVseeeQR9e3bV2FhYTp27JhSU1O1bt26Snc44srz9vaudF2fl5eX/P39ud7PCSZPnqyEhAQ1bdpUeXl5mjlzpoqKijRs2DBnt3ZFEZogSdq2bZu6detmTleckx42bJiWLVvmpK6uTYsWLZIkxcXFOcxfunSphg8f/ts3dA07dOiQkpKSlJOTI7vdrvbt2ys9PV29evVydmuAU/3444+677779Msvv6hx48bq1KmTsrKy1KxZM2e3dkXZDMMwnN0EAABAbcdzmgAAACwgNAEAAFhAaAIAALCA0AQAAGABoQkAAMACQhMAAIAFhCYAAAALCE0A6qyUlBTddNNNzm7jili2bJkaNWrk7DYAnIWHWwKos44fP66SkhL5+/s7u5XL0rx5cyUnJys5Odmcd/LkSR07dkyBgYHOawyAA/6MCgCnKC0tlbu7+2Vto2HDhmrYsGENdVSzDMNQeXm5XF2r959ZT09P/tYgUMtweg7AbyIuLk7jxo3TxIkTFRAQoF69eunrr79Wv3791LBhQwUFBSkpKUm//PKLJGnx4sW67rrrdObMGYftDBw40PyjoFWdnlu6dKnatGmj+vXr68Ybb9TChQvNZXfddZfGjx9vTicnJ8tms2nXrl2SpNOnT8vb21uffPKJJOntt99WZGSkPD095e/vr549e6q4uLjK41u3bp1sNps++eQTdezYUR4eHtqwYYO+++473X777QoKClLDhg11yy23aPXq1Q7vyw8//KA///nPstlsstlskiqfnqs41tdff13NmzeX3W7XkCFDdOzYMbPm2LFjGjp0qLy8vBQSEqL58+crLi7OYQQLQPURmgD8Zl599VW5urpq06ZNevLJJxUbG6ubbrpJ27ZtU3p6ug4dOqTBgwdLku655x798ssvWrt2rbl+fn6+PvnkEw0dOrTK7S9ZskTTpk3TE088od27d2vWrFl69NFH9eqrr0r6NaCsW7fOrM/MzFRAQIAyMzMlSVu3btWpU6fUpUsX5eTk6L777tOIESO0e/durVu3ToMGDdLFrmiYMmWKZs+erd27d6t9+/Y6fvy4+vXrp9WrV+vLL79U7969lZCQoAMHDkiS3n33XTVp0kSPP/64cnJylJOTc95tf/fdd3rvvff00Ucf6aOPPlJmZqaefPJJc/nEiRO1adMmffDBB8rIyNCGDRv0xRdfXLBfAJfAAIDfQGxsrHHTTTeZ048++qgRHx/vUHPw4EFDkrFnzx7DMAxj4MCBxogRI8zlixcvNoKDg43Tp08bhmEY06dPNzp06GAuDwsLM1asWOGwzb/97W9GTEyMYRiG8dVXXxk2m804fPiwcfToUcPNzc2YOXOmcc899xiGYRizZs0yoqOjDcMwjO3btxuSjP3791s6vrVr1xqSjPfee++itW3btjWef/55c7pZs2bG/PnzHWqWLl1q2O12c3r69OlGgwYNjKKiInPeX/7yF7PfoqIiw83NzfjnP/9pLi8oKDAaNGhgPPTQQ5aOAcCFMdIE4DfTsWNH8+ft27dr7dq15nVJDRs21I033ijp1xEVSRo6dKjeeecdlZSUSJKWL1+uIUOGyMXFpdK2Dx8+rIMHD2rkyJEO25w5c6a5vYiICPn7+yszM1MbNmxQhw4dNHDgQHOkad26dYqNjZUkdejQQT169FBkZKTuueceLVmyRPn5+Zd0jJJUXFysKVOmqG3btmrUqJEaNmyob775xhxpuhTNmzeXt7e3OR0SEqK8vDxJ0vfff6+ysjLdeuut5nK73a7w8PBL3g+AqnEhOIDfjJeXl/nzmTNnlJCQoDlz5lSqCwkJkSQlJCTozJkzWrlypW655RZt2LBB8+bNq3LbFdc+LVmyRNHR0Q7LKkKWzWbTbbfdpnXr1snd3V1xcXGKiIhQeXm5duzYoc8++8y8/sfFxUUZGRn67LPPtGrVKj3//POaNm2aPv/8c7Vo0cLSMUrSX/7yF33yySeaO3eubrjhBnl6euruu+9WaWnpRd6tytzc3BymbTabedzGf08bVlwTVcHgBmmgxhCaADjFzTffrHfeeUfNmzc/7x1mnp6eGjRokJYvX65vv/1WrVu3VlRUVJW1QUFBuu666/T999+f95on6dfrml588UW5u7vr8ccfl81mU9euXTV37lydPHlSXbp0MWttNpu6dOmiLl266LHHHlOzZs2UlpamiRMnWj7ODRs2aPjw4brzzjsl/fqYhP379zvUuLu7q7y83PI2q9KyZUu5ublpy5YtCgsLkyQVFRVp79695ugZgMvD6TkATjF27FgdPXpU9913n7Zs2aLvv/9eq1at0ogRIxwCxNChQ7Vy5Uq98sor+sMf/nDBbaakpGj27Nl67rnn9J///Ec7duzQ0qVLHUan4uLitGvXLu3YsUNdu3Y15y1fvlw333yzfHx8JEmff/65Zs2apW3btunAgQN69913dfjwYbVp00aSlJaWZp5OvJAbbrhB7777rrKzs/Xvf/9biYmJle4IbN68udavX6+ffvrJvHvwUnl7e2vYsGH6y1/+orVr12rXrl0aMWKE6tWrV2n0CUD1EJoAOEVoaKg2bdqk8vJy9e7dWxEREXrooYdkt9tVr97//09T9+7d5efnpz179igxMfGC23zggQf00ksvadmyZYqMjFRsbKyWLVvmcDotIiJCAQEB6tChgxmQYmNjVV5e7jAi4+Pjo/Xr16tfv35q3bq1/vrXv+qZZ55R3759JUmFhYXas2fPRY9z/vz58vX1VefOnZWQkKDevXvr5ptvdqh5/PHHtX//frVs2VKNGze++Jt3HvPmzVNMTIwGDBignj17qkuXLubjFwBcPp4IDgBXqeLiYl133XV65plnNHLkSGe3A9R5XNMEAFeJL7/8Ut98841uvfVWFRYW6vHHH5ck3X777U7uDLg6EJoA4Coyd+5c7dmzR+7u7oqKitKGDRsUEBDg7LaAqwKn5wAAACzgQnAAAAALCE0AAAAWEJoAAAAsIDQBAABYQGgCAACwgNAEAABgAaEJAADAAkITAACABYQmAAAAC/4fyf8qXThCjSkAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Distribution of review ratings\n", + "sns.countplot(x='reviews.rating', data=df_filtered)\n", + "plt.title('Distribution of Review Ratings')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "5f6b0970", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk0AAAHFCAYAAADv8c1wAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAABGLklEQVR4nO3df3zP9f7/8fvb7Lft3Wb2izUKM204rb6Myu+NjKSiM58d64hKcYbFh87JVKwIdfiQnEIi+hyUqB3Kj5P8XjkachQyH5uJeY9hm+31/aOP18fbRi8zbXS7Xi7vy8Xr+Xq8nq/n692r7b7n6/V+vW2GYRgCAADAVdWq7gEAAADcDAhNAAAAFhCaAAAALCA0AQAAWEBoAgAAsIDQBAAAYAGhCQAAwAJCEwAAgAWEJgAAAAsITUANMW/ePNlsNvPl4eGh4OBgdezYUenp6crLyyu3TVpammw22zXt5+zZs0pLS9P69euvabuK9tWwYUMlJCRcUz+/ZNGiRXrjjTcqXGez2ZSWllal+6tqX3zxhe655x55e3vLZrPpo48+umJtdna2hgwZoqZNm8rT01P+/v6Kjo7WoEGDlJ2dfUPHOXPmTM2bN69c+6FDh2Sz2SpcV5Ns2rRJaWlpOnXqVHUPBb8htat7AACczZ07V82aNVNJSYny8vK0ceNGvfbaa3r99de1ZMkSdenSxax98skn1a1bt2vq/+zZsxo/frwkqUOHDpa3q8y+KmPRokXKyspSSkpKuXWbN29WgwYNbvgYKsswDPXt21dNmzbVihUr5O3trYiIiAprjxw5orvvvlu33XabRo4cqYiICDkcDu3Zs0cffvihDhw4oLCwsBs21pkzZyogIEDJyclO7SEhIdq8ebPuvPPOG7bvqrBp0yaNHz9eycnJuu2226p7OPiNIDQBNUxUVJTuuecec/mRRx7R8OHDdd9996lPnz7av3+/goKCJEkNGjS44SHi7Nmz8vLy+lX29UvatGlTrfv/JUePHtXJkyf18MMPq3PnzletnTNnjn766Sdt27ZNjRo1Mtt79+6tsWPHqqys7EYPt0Lu7u41/n0GqguX54CbwO23364pU6bo9OnTmj17ttle0SWztWvXqkOHDqpbt648PT11++2365FHHtHZs2d16NAh1atXT5I0fvx481LgxdmGi/19/fXXevTRR+Xn52fOOFztUuDy5cvVokULeXh46I477tBf//pXp/UXLz0eOnTIqX39+vWy2WzmpcIOHTpo1apV+vHHH50uVV5U0eW5rKwsPfTQQ/Lz85OHh4datWql+fPnV7ifDz74QC+88IJCQ0Pl6+urLl26aN++fVd+4y+xceNGde7cWT4+PvLy8lLbtm21atUqc31aWpoZKkePHi2bzaaGDRtesb8TJ06oVq1aCgwMrHB9rVrOP5537NihXr16yd/fXx4eHvrd736nDz/80Knm4vu8bt06PfPMMwoICFDdunXVp08fHT161Kxr2LChdu/erQ0bNpjv8cWxVnR57uJ/+127dumxxx6T3W6Xv7+/RowYoQsXLmjfvn3q1q2bfHx81LBhQ02aNKnc8RQUFCg1NVWNGjWSm5ub6tevr5SUFBUWFjrV2Ww2Pffcc1qwYIEiIyPl5eWlli1bauXKlU7jef755yVJjRo1Mo/hWi85A9eK0ATcJB588EG5uLjon//85xVrDh06pB49esjNzU3vvvuuMjIy9Oqrr8rb21vFxcUKCQlRRkaGJGngwIHavHmzNm/erL/85S9O/fTp00eNGzfWf//3f+utt9666rh27typlJQUDR8+XMuXL1fbtm31pz/9Sa+//vo1H+PMmTPVrl07BQcHm2PbvHnzFev37duntm3bavfu3frrX/+qZcuWqXnz5kpOTq7wF/fYsWP1448/6m9/+5vefvtt7d+/Xz179lRpaelVx7VhwwZ16tRJDodD77zzjj744AP5+PioZ8+eWrJkiaSfL18uW7ZMkjR06FBt3rxZy5cvv2KfsbGxKisrU58+ffSPf/xDBQUFV6xdt26d2rVrp1OnTumtt97Sxx9/rFatWqlfv34V3nv05JNPytXVVYsWLdKkSZO0fv16/cd//Ie5fvny5brjjjv0u9/9znyPrzbWi/r27auWLVtq6dKlGjRokKZNm6bhw4erd+/e6tGjh5YvX65OnTpp9OjR5nsh/Txb2b59e82fP1/Dhg3TZ599ptGjR2vevHnq1auXDMNw2s+qVas0Y8YMvfTSS1q6dKn8/f318MMP68CBA+bxDR06VJK0bNky8xjuvvvuXzwG4LoYAGqEuXPnGpKM7du3X7EmKCjIiIyMNJfHjRtnXPq/8d///ndDkrFz584r9nH8+HFDkjFu3Lhy6y729+KLL15x3aXCw8MNm81Wbn9du3Y1fH19jcLCQqdjO3jwoFPdunXrDEnGunXrzLYePXoY4eHhFY798nE//vjjhru7u3H48GGnuu7duxteXl7GqVOnnPbz4IMPOtV9+OGHhiRj8+bNFe7vojZt2hiBgYHG6dOnzbYLFy4YUVFRRoMGDYyysjLDMAzj4MGDhiRj8uTJV+3PMAyjrKzMeOqpp4xatWoZkgybzWZERkYaw4cPL/c+NWvWzPjd735nlJSUOLUnJCQYISEhRmlpqWEY//c+DxkyxKlu0qRJhiQjJyfHbLvrrruM9u3blxvXxWOYO3eu2Xbxv/2UKVOcalu1amVIMpYtW2a2lZSUGPXq1TP69OljtqWnpxu1atUqd25fPF8//fRTs02SERQUZBQUFJhtubm5Rq1atYz09HSzbfLkyRWeU8CNxEwTcBMxLvuL/HKtWrWSm5ubBg8erPnz55t/mV+rRx55xHLtXXfdpZYtWzq1JSYmqqCgQF9//XWl9m/V2rVr1blz53I3TCcnJ+vs2bPlZql69erltNyiRQtJ0o8//njFfRQWFmrr1q169NFHVadOHbPdxcVFSUlJOnLkiOVLfJey2Wx66623dODAAc2cOVNPPPGESkpKNG3aNN11113asGGDJOn777/Xd999p/79+0uSLly4YL4efPBB5eTklNt/ZY7Tiss/KRkZGSmbzabu3bubbbVr11bjxo2d9rVy5UpFRUWpVatWTuOPj4+v8LJax44d5ePjYy4HBQUpMDDwuscPXC9CE3CTKCws1IkTJxQaGnrFmjvvvFOff/65AgMD9eyzz+rOO+/UnXfeqTfffPOa9hUSEmK5Njg4+IptJ06cuKb9XqsTJ05UONaL79Hl+69bt67Tsru7uyTp3LlzV9xHfn6+DMO4pv1ci/DwcD3zzDN65513tH//fi1ZskTnz58379k5duyYJCk1NVWurq5OryFDhkiSfvrpJ6c+K3OcVvj7+zstu7m5ycvLSx4eHuXaz58/by4fO3ZMu3btKjd+Hx8fGYbxi+O/eAzXO37gevHpOeAmsWrVKpWWlv7iYwLuv/9+3X///SotLdWOHTs0ffp0paSkKCgoSI8//rilfV3Ls59yc3Ov2Hbxl9/FX6pFRUVOdZf/srxWdevWVU5OTrn2izc9BwQEXFf/kuTn56datWrd8P1c1LdvX6WnpysrK8up7zFjxqhPnz4VbnOlxxrUFAEBAfL09NS77757xfXAzYCZJuAmcPjwYaWmpsput+upp56ytI2Li4tat26t//qv/5Ik81JZVc06XLR7927961//cmpbtGiRfHx8zBtzL34ya9euXU51K1asKNfftcwodO7cWWvXrnX6ZJgkvffee/Ly8qqSj857e3urdevWWrZsmdO4ysrK9P7776tBgwZq2rTpNfdbUQiTpDNnzig7O9ucxYqIiFCTJk30r3/9S/fcc0+Fr0svZVn1a87cJCQk6IcfflDdunUrHP/VPmV4JVV9HgNWMNME1DBZWVnmPR95eXn68ssvNXfuXLm4uGj58uXmIwMq8tZbb2nt2rXq0aOHbr/9dp0/f9786/7iQzF9fHwUHh6ujz/+WJ07d5a/v78CAgIq9YtL+vkSVa9evZSWlqaQkBC9//77WrNmjV577TV5eXlJku69915FREQoNTVVFy5ckJ+fn5YvX66NGzeW6y86OlrLli3TrFmzFBMTo1q1ajk9t+pS48aN08qVK9WxY0e9+OKL8vf318KFC7Vq1SpNmjRJdru9Usd0ufT0dHXt2lUdO3ZUamqq3NzcNHPmTGVlZemDDz645qeyS9KECRP01VdfqV+/fmrVqpU8PT118OBBzZgxQydOnNDkyZPN2tmzZ6t79+6Kj49XcnKy6tevr5MnT2rv3r36+uuv9d///d/XvP/o6GgtXrxYS5Ys0R133CEPDw9FR0dfcz9WpKSkaOnSpXrggQc0fPhwtWjRQmVlZTp8+LBWr16tkSNHqnXr1tc8fkl68803NWDAALm6uioiIqJSARKwitAE1DBPPPGEpJ/vC7ntttsUGRmp0aNH68knn7xqYJJ+vhF89erVGjdunHJzc1WnTh1FRUVpxYoViouLM+veeecdPf/88+rVq5eKioo0YMCASn9tRqtWrfTEE09o3Lhx2r9/v0JDQzV16lQNHz7crHFxcdEnn3yi5557Tk8//bTc3d31+OOPa8aMGerRo4dTf3/605+0e/dujR07Vg6HQ4ZhXPEG+IiICG3atEljx47Vs88+q3PnzikyMlJz584t96Tr69G+fXutXbtW48aNU3JyssrKytSyZUutWLGi0l8jk5SUJElavHixJk+eLIfDIX9/f8XExOjTTz91urm6Y8eO2rZtmyZMmKCUlBTl5+erbt26at68ufr2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cePGio+P18mTJyVJf/nLX7Rnzx599tln2rt3r2bNmqWAgIBy/YWFhWnp0qWSpH379iknJ0dvvvlmubr+/ftr69at+uGHH8y23bt369tvv1X//v0lSXPmzNELL7ygCRMmaO/evZo4caL+8pe/aP78+TfircCvxMXFRRMnTtT06dN15MiRcuu//fZbxcfHq0+fPtq1a5eWLFmijRs36rnnnjNr/vCHP+jo0aNav369li5dqrfffrvcL45atWrpr3/9q7KysjR//nytXbtWo0aNkiS1bdtWb7zxhnx9fZWTk6OcnJwKZ1z79++vFStWmGFLkv7xj3+osLBQjzzyiCTpz3/+s+bOnatZs2Zp9+7dGj58uP7jP/5DGzZsqJL3C9WnKs7VX7Jt2zZJ0ueff66cnBwtW7bMXPfFF19o7969WrNmjVauXCnp5xmnl19+Wf/617/00Ucf6eDBg+YfprgKA7hGAwYMMB566CFzeevWrUbdunWNRx991HB1dTUWLlxorisuLjZCQ0ONSZMmGYZhGD179jSeeOKJCvs9ePCgIcn45ptvDMMwjHXr1hmSjPz8fKe69u3bG3/605/M5RYtWhgvvfSSuTxmzBjj3nvvNZfDwsKMRYsWOfXx8ssvG7Gxsddy2KhBLj0H27RpY/zxj380DMMwli9fblz8sZaUlGQMHjzYabsvv/zSqFWrlnHu3Dlj7969hiRj+/bt5vr9+/cbkoxp06Zdcd8ffvihUbduXXN57ty5ht1uL1cXHh5u9lNcXGwEBAQY7733nrn+97//vfHYY48ZhmEYZ86cMTw8PIxNmzY59TFw4EDj97///dXfDNRoVXGuGoZhSDKWL1/uVGO32425c+cahlH+5+el+w8KCjKKioquOs5t27YZkozTp08bhnHln7+/dcw0oVJWrlypOnXqyMPDQ7GxsXrggQc0dOhQlZSUqF27dmadq6ur/t//+3/au3evJOmZZ57R4sWL1apVK40aNUqbNm267rH0799fCxculPTzJY4PPvjAnGU6fvy4srOzNXDgQNWpU8d8vfLKK06zU7h5vfbaa5o/f7727Nnj1J6Zmal58+Y5/XePj49XWVmZDh48qH379ql27dq6++67zW0aN24sPz8/p37WrVunrl27qn79+vLx8dEf/vAHnThx4po++ODq6qrHHnvMPE8LCwv18ccfm+fpnj17dP78eXXt2tVpvO+99x7n6S2ksufq9YqOjpabm5tT2zfffKOHHnpI4eHh8vHxMS/nHT58+Lr3dyvju+dQKR07dtSsWbPk6uqq0NBQubq66l//+pcklftEiGEYZlv37t31448/atWqVfr888/VuXNnPfvss3r99dcrPZbExET953/+p77++mudO3dO2dnZ5v0jZWVlkn6+RNe6dWun7VxcXCq9T9QcDzzwgOLj4zV27FinywtlZWV66qmnNGzYsHLb3H777dq3b1+F/RmXfLPUjz/+qAcffFBPP/20Xn75Zfn7+2vjxo0aOHCgSkpKrmmc/fv3V/v27ZWXl6c1a9bIw8ND3bt3N8cqSatWrVL9+vWdtuN7xW4dlT1XpZ9/rhqXfeuZ1XPQ29vbabmwsFBxcXGKi4vT+++/r3r16unw4cOKj4/nRvFfQGhCpXh7e6tx48ZObY0bN5abm5s2btyoxMREST//T71jxw6n5yrVq1dPycnJSk5O1v3336/nn3++wtB08S+j0tLSq46lQYMGeuCBB7Rw4UKdO3dOXbp0UVBQkCQpKChI9evX14EDB8y/6nHrefXVV9WqVSvzJldJuvvuu7V79+5y5+lFzZo104ULF/TNN98oJiZGkvT99987PeJix44dunDhgqZMmaJatX6emP/www+d+nFzc/vFc1T6+f6nsLAwLVmyRJ999pkee+wx8xxv3ry53N3ddfjwYbVv3/6ajh03l8qcq9LPPzdzcnLM5f379+vs2bPmstWfl5L03Xff6aefftKrr76qsLAwST+f6/hlhCZUGW9vbz3zzDN6/vnn5e/vr9tvv12TJk3S2bNnNXDgQEnSiy++qJiYGN11110qKirSypUrFRkZWWF/4eHhstlsWrlypR588EF5enqqTp06Fdb2799faWlpKi4u1rRp05zWpaWladiwYfL19VX37t1VVFSkHTt2KD8/XyNGjKjaNwHVIjo6Wv3799f06dPNttGjR6tNmzZ69tlnNWjQIHl7e5s3w06fPl3NmjVTly5dNHjwYHPWdOTIkfL09DRnRu+8805duHBB06dPV8+ePfXVV1/prbfectp3w4YNdebMGX3xxRdq2bKlvLy8KnzUgM1mU2Jiot566y39+9//1rp168x1Pj4+Sk1N1fDhw1VWVqb77rtPBQUF2rRpk+rUqaMBAwbcoHcO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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Distribution of sentiment\n", + "sns.countplot(x='sentiment', data=df_filtered)\n", + "plt.title('Distribution of Sentiment')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "3e2debe7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " reviews.rating sentiment_num\n", + "reviews.rating 1.000000 0.196656\n", + "sentiment_num 0.196656 1.000000\n" + ] + } + ], + "source": [ + "# Correlation analysis\n", + "correlation_matrix = df_filtered[['reviews.rating', 'sentiment_num']].corr()\n", + "print(correlation_matrix)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "31362124", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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9esHAEhPT1ctHTt2RGxsbK5VyS9evMA333yDKlWqwMDAAAYGBjA3N0dycjKuXLmSn8PFn3/+CUDzeHv16gUzMzON461Xrx4qVqyoem1sbIxq1aqpNfHk5LfffkNSUhKGDBmiKhsyZAiEEKqq5beVKVMGjRo1UiurU6eOxr5+//13eHl5wdzcHAYGBjA0NMSaNWvee04qVaqEzp07Y+nSpapqy02bNiExMRFffPGFar1GjRph7969mDhxIo4cOYJXr16991jr1asHIyMjDB8+HD///DNu3br13s+8rVatWqhbt65aWd++fZGUlISzZ88CAHbv3g03NzfUq1dP7Vry9fXNc6/yNm3a4NWrV4iIiADwpsmkXbt2aNu2LcLDw1VlANC2bVsAQEREBB4/foyBAweq7TczMxPt27fH6dOnkZycjNevX+PQoUPo3r07TE1NNa73169f459//lGL5+1mTuDN3xvAe68vW1tbHD9+HKdPn8asWbPQtWtXXL9+HYGBgahduzYSEhIAAPv370d6ejoGDBigFo+xsTG8vb01zplCoYCfn59GTHm53nPj6OgId3d31WsbGxuULl0a9erVQ9myZVXlrq6uAP7v+IvynObm1q1b6Nu3L8qUKQN9fX0YGhrC29sbADS+d3k5h4cPH4aFhYVGrH379tUqrt69e8PQ0FDV3JeUlIQ9e/agVKlSALQ7fx06dECZMmXU7k379+/HgwcP1O5h79LmPp+f79/7NGnSBIaGhrCwsED79u1hbW2NP/74Q6PpMb/3zffJy9/76NGjqvje9sknnxRo34Upz0mHnZ0dTE1NER0dnaf1ExMTASDb3uZly5ZVvZ8lt17p776X1aY2fvx4GBoaqi2ff/45AKhujtnp27cvfvzxR/j7+2P//v04deoUTp8+DXt7+zz9EGYnMTERBgYGGp3dFAoFypQpo3G8tra2GttQKpV52v+aNWtgbGyM9u3b4+nTp3j69Cnq1KkDZ2dnrFu3DhkZGVrva9u2bfj4449Rrlw5bNy4ESdOnMDp06cxZMgQvH79+r0xffXVV/jvv/9UX/AlS5bA09NTrUf2okWL8M0332DHjh1o1aoVbGxs0K1bt1x7xFeuXBkHDx5E6dKlMWrUKFSuXBmVK1fGwoUL3xsT8Cbhyqks62/y8OFDXLhwQeNasrCwgBAi12spS1ZfpIMH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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Visualizing the correlation\n", + "sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm')\n", + "plt.title('Correlation Analysis between Sentiment and Review Rating')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "id": "a4eb6bbf", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "f8d616c571594a8a8fa90a84be89ac14", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Summarize dataset: 0%| | 0/5 [00:00" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Pandas Profiling\n", + "pp.ProfileReport(df_filtered)" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "id": "d85c9537", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "e2393f9a2f7046edae422fe3d648c371", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " | | [ 0%] 00:00 -> (? left)" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# SweetViz\n", + "my_report = sv.analyze(df_filtered)" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "id": "302dd7f6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Report SWEETVIZ_REPORT.html was generated! NOTEBOOK/COLAB USERS: the web browser MAY not pop up, regardless, the report IS saved in your notebook/colab files.\n" + ] + } + ], + "source": [ + "my_report.show_html()" + ] + }, + { + "cell_type": "markdown", + "id": "841b1f1d", + "metadata": {}, + "source": [ + "## Modeling: Logistic Regression" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "6149a075", + "metadata": {}, + "outputs": [], + "source": [ + "# Define feature and target variables\n", + "X = df_filtered[['sentiment_num']] # Feature: sentiment score\n", + "y = df_filtered['high_rating'] # Target: high rating" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "0a605598", + "metadata": {}, + "outputs": [], + "source": [ + "# Train-test split (80% training, 20% testing)\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "90cd769f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "LogisticRegression()" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Initialize and train logistic regression model\n", + "log_reg = LogisticRegression()\n", + "log_reg.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "e49cf694", + "metadata": {}, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "y_pred = log_reg.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "1b4f0639", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/nmn/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_classification.py:1318: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", + " _warn_prf(average, modifier, msg_start, len(result))\n", + "/Users/nmn/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_classification.py:1318: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", + " _warn_prf(average, modifier, msg_start, len(result))\n", + "/Users/nmn/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_classification.py:1318: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", + " _warn_prf(average, modifier, msg_start, len(result))\n" + ] + }, + { + "data": { + "text/plain": [ + "(0.9371931850996246,\n", + " ' precision recall f1-score support\\n\\n 0 0.00 0.00 0.00 435\\n 1 0.94 1.00 0.97 6491\\n\\n accuracy 0.94 6926\\n macro avg 0.47 0.50 0.48 6926\\nweighted avg 0.88 0.94 0.91 6926\\n')" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Calculate accuracy and display classification report\n", + "accuracy = accuracy_score(y_test, y_pred)\n", + "classification_report_output = classification_report(y_test, y_pred)\n", + "\n", + "accuracy, classification_report_output" + ] + }, + { + "cell_type": "markdown", + "id": "70c6a863", + "metadata": {}, + "source": [ + "## Model Interpretation and Evaluation" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "id": "510b002c", + "metadata": {}, + "outputs": [], + "source": [ + "# Calculate the confusion matrix\n", + "conf_matrix = confusion_matrix(y_test, y_pred)" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "id": "b6b4eb01", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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u+86J+mUlBTnDT0/apfOBJ3AwED17t1bP/zwg958801deeWVqlWrVo7zez99DBw4UFFRUTIz55aEV7FiZy7aeU+K52vXrl36z3/+oxIlSuipp55Samqq82k3J97n4qWXXnJuWe3evVuff/65goOD1bRp0z9UR25CQkLUpEkTHT9+XLNnz3ban3322Sz1eC+Xz5w509lPExISnE+BualcubLCw8N18OBBVatWTWPGjFHDhg2VkJCg3bt3S8rbc3zVVVdJkj744ANnf0xKSlL16tUVGRmZ7VNsbho0aKDevXsrPj5eDz/8sCQpNjZWpUuX1tatW/XRRx858x48eFAvvviiM09QUJAWLFigvXv3OvPs2rXLdZvh4eFq0KCBTp06paefftppT0xM1LRp02Rm2rJli0JDQ9W4cWN5PB41atRIU6dOVbFixZzj6l//+pdCQ0P1+OOPKyIiQl26dHH2pdyOvQuxP3nPFU2aNFHt2rX10ksvac+ePerfv798fX2zzV+rVi2VL19e33//fZZbIt5bmt6ar7jiCknSa6+95szz+7DdtGlTBQQEaOHChVq3bl2W+c7en5GLC9JTAvnm9OnT1qxZM6dD16BBg+z66683Pz8/83g8WXr8P/zww05nrb59+zq9gRs2bOgMIcqpM+P69etNkrVs2dJpy2m+9PR0pxf/lVdeab1793ZGQHh3rZSUFKtZs6ZJslatWtmgQYOcZe666y4zy7nz5NChQ53Og/369bNatWo5vb29vB3GvB3kzMzef/99k3IfNmj2W8c27/dYrFq1yml7/vnnnfm8Hbu8nR69vd6rV69uAwYMsNq1azvLnd0BsGzZsk7nrrfeesvZZk6dqH7f7u04Nm3aNDMzp+Pl2cP5zpaSkmL169c3SdaoUSPr27ev850BU6dOdeY7306PsbGx1qtXryw/AwcONLMzwz/9/PzMz8/PevTo4fTgj4iIsF27djnr8va2v/TSS23gwIHOKAWdo9Ojd/sVK1a0W2+91RmBUalSJUtJSTGzM8PrpDMjXXr06GEHDx7McR/q06ePSbIaNWpYXFycM9JmxIgRuT7+s/ddr507d5q/v78FBwc7o5Nmzpxp0pnRRV26dLFbbrnFSpQoYcHBwU7HwIkTJ5okK1OmjPXr1895PpRDp8ez92Ezs4ULF5qfn5/TATEuLs7KlStnPj4+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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Plot the confusion matrix\n", + "plt.figure(figsize=(6, 4))\n", + "sns.heatmap(conf_matrix, annot=True, fmt='d', cmap='Blues', cbar=False)\n", + "plt.xlabel('Predicted')\n", + "plt.ylabel('Actual')\n", + "plt.title('Confusion Matrix of Logistic Regression Model')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "id": "09a8d82b", + "metadata": {}, + "outputs": [], + "source": [ + "# Calculate and plot ROC curve\n", + "y_pred_proba = log_reg.predict_proba(X_test)[:, 1]\n", + "fpr, tpr, thresholds = roc_curve(y_test, y_pred_proba)\n", + "roc_auc = roc_auc_score(y_test, y_pred_proba)" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "id": "6c814ba5", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAq0AAAIdCAYAAAAXlkTeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAACHcUlEQVR4nOzdd1hW5R/H8TcgQxRE3NucpebIvTVza47cI81R5koty4alqf0sRzkyM8vce68cqbnTnKm5tyluUUBZ5/fHnSiJBgqcB/i8rotLzuE85/nCk/Hxfu77eztZlmUhIiIiIuLAnO0uQERERETkvyi0ioiIiIjDU2gVEREREYen0CoiIiIiDk+hVUREREQcnkKriIiIiDg8hVYRERERcXgKrSIiIiLi8BRaRURERMThKbSKiPxLlSpVcHJyivhwd3cnf/789OjRg8uXLz9y/e+//06DBg1Inz493t7elClThqlTp0Z574CAAAYMGMDzzz+Ph4cHadOmpXHjxuzdu/c/6woNDWXkyJEUKVKEFClS4OPjQ82aNVm/fv2zfssiIg7PSdu4iohEVqVKFX777TcaNmxIlixZCA4O5vfff2f//v1ky5aNffv2kTp1agAWLlxI8+bNsSyLunXr4uvry6pVq/j777/p2bMno0aNirjvnTt3qFixInv37iV37tyUK1eOq1evsmrVKtzc3Ni2bRtFixaNsqawsDDq1q3LqlWryJIlC5UrVyYwMJAVK1YQEhLCsmXLqFOnTnz8eERE7GGJiEgklStXtgBr/fr1EefCwsKs6tWrW4A1cuRIy7Is69q1a5avr68FWGvXro249ubNm9YLL7zwyPk+ffpYgFWnTh3r7t27EeenTZtmAVbx4sUfW9Po0aMjrrlx40bE+Y0bN1pOTk5W+vTprbCwsKf+nkNCQp76sSIi8UHTA0REosHZ2ZlXX30VgMOHDwMwd+5crl+/ziuvvEK1atUirk2VKhX9+vUDYMKECYB5a//nn38G4H//+x/u7u4R17ds2ZI0adKwf//+KKcfAEycOBGATz/9FB8fn4jzFStWpEiRIly7do1du3YB4OTkRMqUKSM9vmHDhjg5ObFhwwbgwRSIgQMHkitXLvLmzcvHH3+Mk5MTn332WcTjbt26hZubG15eXty9exeA48eP89prr5E6dWq8vLyoW7cuR44cif4PU0Tk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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Plot ROC Curve\n", + "plt.figure(figsize=(8, 6))\n", + "plt.plot(fpr, tpr, color='blue', label=f'Logistic Regression (AUC = {roc_auc:.2f})')\n", + "plt.plot([0, 1], [0, 1], color='red', linestyle='--')\n", + "plt.xlabel('False Positive Rate')\n", + "plt.ylabel('True Positive Rate')\n", + "plt.title('ROC Curve')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "8b5c5e75", + "metadata": {}, + "source": [ + "## Visualizations and Final Analysis" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "id": "f900a1ab", + "metadata": {}, + "outputs": [], + "source": [ + "# Group by sentiment and rating to calculate count\n", + "sentiment_rating_counts = df_filtered.groupby(['reviews.rating', 'sentiment']).size().unstack()" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "id": "5fbdd6e1", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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xYr2UDZw4EAjycyYMcO+7uQvc0899VSKbd4qYNWvX9/+Bfv33383WbJkMd7e3im+2N4uYBljzK+//mokmVq1aqWY78ZlCxYsaCSZb7/91t7Wo0cPI8n06dMnRV316tWz7+cPP/xg//Kbmri4OOPr62s8PDzMgQMHjDHGXL161f5l7o033rjpmPz7i2hqli1bZoKCguzH6aGHHjKTJk0y8fHx9nk2bNhgJJk6derY38Pjx48bNzc3U6FCBYf2J7VjeauAVapUKXP58mVjzD9h3Wazme+//94YY8y1a9dMeHi4kWT++OMPY4wxdevWvelc7Nevn5Fk/zKffA6uX7/ePk9yyEr+0hsTE5Piy+rtfP755ynOxdWrVxtJpkOHDinmK1++/E3B68knnzSSzLx584wxxv4HieQgbowxR44cMTabzeTMmdOcOXPGGGNMfHy8/cvzggULjDHGdO7c2UgyCxcuNMZcD361a9c2ERERJjo62ly5csW4urqagIAAk5iYaIwxZt26dSYiIuKmz9G/3RiwEhMTzY8//mgPecOHDzfG3Poz2a1bNyPJjBo1yt42d+5cI8kUL17cGGPM9u3bjSSTO3du+2cyISHB/llyJGANHjzYSDIvvPCCfZ45c+YYSaZnz57GmFt/lm904++2S5cumeXLl5vAwEBjs9nMDz/8YIwx5v333zddunQxGzdutC+bHKCT2251Tt0qYM2aNcs+T9++fY0kM3nyZGPMP4H73+/1d999l2L9Bw8eNJJMRESEfZ558+aZiIgIM3LkyNvuN4A7wyWCANLdvy9NM8akOk+lSpUkSS+99JK+/vprubi4aOvWrfrxxx/l4vLfv6oKFy6cplqKFi1qrydPnjyqWbOm4uPjtW/fvjQtn1b79+/XwYMHFRERoerVq9vbo6KiJEmbNm1KMX+xYsXs+1moUCFJUnR0dKrr3rRpky5evKgGDRqoYMGCkiRXV1f17t071XWnRaNGjXTo0CG9+eabqlSpkr7//nv169dPJUqU0M6dOyVdv9xRkq5cuaL+/furX79+eu2115QlSxbt3LkzxbF1ZH/+S3h4uP3SxeTj7O3trcqVK0u6fqlW/vz5JUknT57U5cuXtW7dOrm7u2vRokXq16+f+vXrp127dknSTZcSlihRwv7z3dSafKlkx44dJV2/xCs0NFSfffaZYmNjJV0f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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Plot sentiment distribution across different ratings\n", + "sentiment_rating_counts.plot(kind='bar', stacked=True, figsize=(10, 6), colormap='viridis')\n", + "plt.xlabel('Product Ratings')\n", + "plt.ylabel('Number of Reviews')\n", + "plt.title('Distribution of Sentiment Across Product Ratings')\n", + "plt.xticks(rotation=0)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "da0592f0", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.9.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Presentation3.pptx b/Presentation3.pptx new file mode 100644 index 0000000..d99d21c Binary files /dev/null and b/Presentation3.pptx differ diff --git a/README - Analysis of consumer preferences and trends for foundation at Sephora.md b/README - Analysis of consumer preferences and trends for foundation at Sephora.md new file mode 100644 index 0000000..588e638 --- /dev/null +++ b/README - Analysis of consumer preferences and trends for foundation at Sephora.md @@ -0,0 +1,121 @@ +# Analysis of Consumer Preferences and Trends for Foundation at Sephora + +## Project Overview +This project focuses on understanding and analyzing foundation products in the beauty industry. The analysis includes: + +**Price Prediction:** Leveraging regression techniques to predict the price of foundation products based on their features. + +**Product Clustering:** Grouping products based on their price and reviews to identify patterns and similarities. + +**Popularity Classification:** Classifying products as popular or not based on reviews, ratings, and other relevant features. + +## Table of Contents +* Installation +* Dataset +* Exploratory Data Analysis (EDA) +* Methods +* Results +* Conclusion +* Future Work + +## Installation +To run the analysis, ensure you have the following installed: +* Python 3.8+ +* Jupyter Notebook + +### Libraries: +* pandas +* numpy +* matplotlib +* seaborn +* scikit-learn +* xgboost + +## Dataset +The dataset consists of foundation product details, including: +* Product name +* Price +* Ratings +* Number of reviews +* Brand name +* Number of colors available +* Whether the product is Sephora Exclusive +* Whether the product is Limited Edition +* Whether the product is Natural +* Whether the product is Organic +* Whether the product is Sponsored + +## Exploratory Data Analysis (EDA) +### Key insights from the data: +**Price Distribution:** Most foundation products fall within the 10 - 50 (dollars) range. There is an outlier of > 100 dollars. + +**Ratings & Reviews:** Higher-rated products tend to have more reviews, but price does not always correlate with rating. + +**Popular Brands:** Certain brands dominate the market, influencing pricing and popularity trends. + +EDA visualizations are available in the notebook and include: + +* Histograms for price and review distributions. + +* Heatmaps for feature correlations. + +## Methods +### Price Prediction +**Objective:** Predict product prices using features like brand, reviews, and ratings. + +**Techniques:** Applied Random Forest Regressor model. + +**Metrics:** Evaluated using RMSE and R². + +### Product Clustering +**Objective:** Identify groups of similar products based on price and reviews. + +**Techniques:** + +K-Means Clustering to segment products. + +Elbow method to determine the optimal number of clusters. + +### Popularity Classification +**Objective:** Classify products into "Popular" and "Not Popular" categories. + +**Techniques:** + +Binary classification model: Random Forest Classifier. + +Feature engineering to create popularity metrics. + +Performance measured with Precision, Recall, and F1 Score. + +## Results +### Price Prediction +**Best model:** RMSE of 3.93 and R² of 0.88. + +Features such as rating, brand name, and reviews were highly predictive of price. + +### Product Clustering +**Optimal clusters:** 2 distinct groups, visualized through scatter plots. + +**Observations:** + +Cluster 0: Wider price range with low to moderate number of reviews. + +Cluster 1: Lower price range with higher review counts. + +### Popularity Classification +Best model: Random Forest Classifier achieving accuracy of 0.96. + +Features such as review count and rating were highly predictive of popularity. + +## Conclusion +This project provides actionable insights into the beauty industry's foundation product segment. The models accurately predict prices, group similar products, and identify popular items, aiding brands and consumers in decision-making. + +## Future Work +* Incorporate additional product features such as ingredients and packaging information. +* Expand the dataset to include a wider range of beauty products. +* Develop a web application for real-time price prediction and popularity analysis. + + +```python + +``` diff --git a/finalproject_data.xlsx b/finalproject_data.xlsx new file mode 100644 index 0000000..518ac7a Binary files /dev/null and b/finalproject_data.xlsx differ