{ "cells": [ { "cell_type": "markdown", "id": "edd718da-1295-49c4-b556-3cc7b718f93c", "metadata": {}, "source": [ "# Data Preparation and Quality\n", "Lecture Data Engineering and Analytics
\n", "Eva Zangerle" ] }, { "cell_type": "code", "execution_count": 106, "id": "5b126eda-5b79-4531-b8ea-72898d09dc6d", "metadata": {}, "outputs": [], "source": [ "# import required packages\n", "import json\n", "import os\n", "from pprint import pprint\n", "from sys import getsizeof\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas as pd\n", "import seaborn as sns\n", "import sklearn.preprocessing as preproc\n", "from matplotlib import cm\n", "from matplotlib.colors import ListedColormap\n", "from scipy import stats\n", "from sklearn import linear_model\n", "from sklearn.cluster import DBSCAN, KMeans\n", "from sklearn.datasets import make_blobs\n", "from sklearn.feature_extraction import text\n", "from sklearn.metrics import pairwise_distances_argmin\n", "from sklearn.feature_extraction import FeatureHasher" ] }, { "cell_type": "code", "execution_count": 107, "id": "5406f6f3-1c06-4f3b-aaaf-9ac6f2967729", "metadata": {}, "outputs": [], "source": [ "data_dir = \"../data\"" ] }, { "cell_type": "markdown", "id": "de6ba96a-a20d-4c9e-bb38-46b80ab6ae1f", "metadata": {}, "source": [ "## Enhancing Features" ] }, { "cell_type": "markdown", "id": "05832b33-0bb8-4496-a2a1-f23f8c7927b1", "metadata": {}, "source": [ "### Scaling and Normalization" ] }, { "cell_type": "markdown", "id": "45b0f558-ce94-4349-a525-d65e09db72f8", "metadata": {}, "source": [ "The following example is based on the online news popularity dataset (taken from the UCI Machine Learning Repository: https://archive.ics.uci.edu/ml/datasets/online+news+popularity). The dataset provides set of features about articles published by Mashable in a period of two years and was originally used for predicting popularity of articles in social networks. In the following example, we are primarily interested in the word count for each article (`n_tokens_content`) and showcase the results of different scaling methods. This example is adapted from the FeatEng book." ] }, { "cell_type": "code", "execution_count": 62, "id": "5b966c0f-b892-408f-935f-d6fcb26db76c", "metadata": {}, "outputs": [], "source": [ "news = pd.read_csv(\n", " os.path.join(data_dir, \"OnlineNewsPopularity.csv\"),\n", " delimiter=\", \",\n", " engine=\"python\",\n", ")" ] }, { "cell_type": "markdown", "id": "071c9705-c8a4-486b-b124-0a55583d412f", "metadata": {}, "source": [ "
\n", "Note: We use `, ` as a delimiter here. If we would use only the comma as a delimiter, we would be able to read the dataframe, but for instance, accessing a specific field would fails as the key is not recognized due to the trailing space. Furthermore, we specify the python parsing engine to allow separators of more than one character.
" ] }, { "cell_type": "code", "execution_count": 63, "id": "70e9a7e8-a3da-43be-b561-ac73ed655728", "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
urltimedeltan_tokens_titlen_tokens_contentn_unique_tokensn_non_stop_wordsn_non_stop_unique_tokensnum_hrefsnum_self_hrefsnum_imgsnum_videosaverage_token_lengthnum_keywordsdata_channel_is_lifestyledata_channel_is_entertainment...global_rate_positive_wordsglobal_rate_negative_wordsrate_positive_wordsrate_negative_wordsavg_positive_polaritymin_positive_polaritymax_positive_polarityavg_negative_polaritymin_negative_polaritymax_negative_polaritytitle_subjectivitytitle_sentiment_polarityabs_title_subjectivityabs_title_sentiment_polarityshares
0http://mashable.com/2013/01/07/amazon-instant-video-browser/731.012.0219.00.6635941.00.8153854.02.01.00.04.6803655.00.01.0...0.0456620.0136990.7692310.2307690.3786360.1000000.70-0.350000-0.600-0.2000000.500000-0.1875000.0000000.187500593
1http://mashable.com/2013/01/07/ap-samsung-sponsored-tweets/731.09.0255.00.6047431.00.7919463.01.01.00.04.9137254.00.00.0...0.0431370.0156860.7333330.2666670.2869150.0333330.70-0.118750-0.125-0.1000000.0000000.0000000.5000000.000000711
2http://mashable.com/2013/01/07/apple-40-billion-app-downloads/731.09.0211.00.5751301.00.6638663.01.01.00.04.3933656.00.00.0...0.0568720.0094790.8571430.1428570.4958330.1000001.00-0.466667-0.800-0.1333330.0000000.0000000.5000000.0000001500
3http://mashable.com/2013/01/07/astronaut-notre-dame-bcs/731.09.0531.00.5037881.00.6656359.00.01.00.04.4048967.00.01.0...0.0414310.0207160.6666670.3333330.3859650.1363640.80-0.369697-0.600-0.1666670.0000000.0000000.5000000.0000001200
4http://mashable.com/2013/01/07/att-u-verse-apps/731.013.01072.00.4156461.00.54089019.019.020.00.04.6828367.00.00.0...0.0746270.0121270.8602150.1397850.4111270.0333331.00-0.220192-0.500-0.0500000.4545450.1363640.0454550.136364505
................................................................................................
39639http://mashable.com/2014/12/27/samsung-app-autism/8.011.0346.00.5290521.00.6847839.07.01.01.04.5231218.00.00.0...0.0375720.0144510.7222220.2777780.3337910.1000000.75-0.260000-0.500-0.1250000.1000000.0000000.4000000.0000001800
39640http://mashable.com/2014/12/27/seth-rogen-james-franco-will-live-tweet-the-interview/8.012.0328.00.6962961.00.8850579.07.03.048.04.4054887.00.00.0...0.0396340.0091460.8125000.1875000.3748250.1363640.70-0.211111-0.400-0.1000000.3000001.0000000.2000001.0000001900
39641http://mashable.com/2014/12/27/son-pays-off-mortgage/8.010.0442.00.5163551.00.64412824.01.012.01.05.0769238.00.00.0...0.0339370.0248870.5769230.4230770.3072730.1363640.50-0.356439-0.800-0.1666670.4545450.1363640.0454550.1363641900
39642http://mashable.com/2014/12/27/ukraine-blasts/8.06.0682.00.5394931.00.69266110.01.01.00.04.9750735.00.00.0...0.0205280.0234600.4666670.5333330.2368510.0625000.50-0.205246-0.500-0.0125000.0000000.0000000.5000000.0000001100
39643http://mashable.com/2014/12/27/youtube-channels-2015/8.010.0157.00.7019871.00.8461541.01.00.02.04.4713384.00.01.0...0.0636940.0127390.8333330.1666670.2473380.1000000.50-0.200000-0.200-0.2000000.3333330.2500000.1666670.2500001300
\n", "

39644 rows × 61 columns

\n", "
" ], "text/plain": [ " url \\\n", "0 http://mashable.com/2013/01/07/amazon-instant-video-browser/ \n", "1 http://mashable.com/2013/01/07/ap-samsung-sponsored-tweets/ \n", "2 http://mashable.com/2013/01/07/apple-40-billion-app-downloads/ \n", "3 http://mashable.com/2013/01/07/astronaut-notre-dame-bcs/ \n", "4 http://mashable.com/2013/01/07/att-u-verse-apps/ \n", "... ... \n", "39639 http://mashable.com/2014/12/27/samsung-app-autism/ \n", "39640 http://mashable.com/2014/12/27/seth-rogen-james-franco-will-live-tweet-the-interview/ \n", "39641 http://mashable.com/2014/12/27/son-pays-off-mortgage/ \n", "39642 http://mashable.com/2014/12/27/ukraine-blasts/ \n", "39643 http://mashable.com/2014/12/27/youtube-channels-2015/ \n", "\n", " timedelta n_tokens_title n_tokens_content n_unique_tokens \\\n", "0 731.0 12.0 219.0 0.663594 \n", "1 731.0 9.0 255.0 0.604743 \n", "2 731.0 9.0 211.0 0.575130 \n", "3 731.0 9.0 531.0 0.503788 \n", "4 731.0 13.0 1072.0 0.415646 \n", "... ... ... ... ... \n", "39639 8.0 11.0 346.0 0.529052 \n", "39640 8.0 12.0 328.0 0.696296 \n", "39641 8.0 10.0 442.0 0.516355 \n", "39642 8.0 6.0 682.0 0.539493 \n", "39643 8.0 10.0 157.0 0.701987 \n", "\n", " n_non_stop_words n_non_stop_unique_tokens num_hrefs num_self_hrefs \\\n", "0 1.0 0.815385 4.0 2.0 \n", "1 1.0 0.791946 3.0 1.0 \n", "2 1.0 0.663866 3.0 1.0 \n", "3 1.0 0.665635 9.0 0.0 \n", "4 1.0 0.540890 19.0 19.0 \n", "... ... ... ... ... \n", "39639 1.0 0.684783 9.0 7.0 \n", "39640 1.0 0.885057 9.0 7.0 \n", "39641 1.0 0.644128 24.0 1.0 \n", "39642 1.0 0.692661 10.0 1.0 \n", "39643 1.0 0.846154 1.0 1.0 \n", "\n", " num_imgs num_videos average_token_length num_keywords \\\n", "0 1.0 0.0 4.680365 5.0 \n", "1 1.0 0.0 4.913725 4.0 \n", "2 1.0 0.0 4.393365 6.0 \n", "3 1.0 0.0 4.404896 7.0 \n", "4 20.0 0.0 4.682836 7.0 \n", "... ... ... ... ... \n", "39639 1.0 1.0 4.523121 8.0 \n", "39640 3.0 48.0 4.405488 7.0 \n", "39641 12.0 1.0 5.076923 8.0 \n", "39642 1.0 0.0 4.975073 5.0 \n", "39643 0.0 2.0 4.471338 4.0 \n", "\n", " data_channel_is_lifestyle data_channel_is_entertainment ... \\\n", "0 0.0 1.0 ... \n", "1 0.0 0.0 ... \n", "2 0.0 0.0 ... \n", "3 0.0 1.0 ... \n", "4 0.0 0.0 ... \n", "... ... ... ... \n", "39639 0.0 0.0 ... \n", "39640 0.0 0.0 ... \n", "39641 0.0 0.0 ... \n", "39642 0.0 0.0 ... \n", "39643 0.0 1.0 ... \n", "\n", " global_rate_positive_words global_rate_negative_words \\\n", "0 0.045662 0.013699 \n", "1 0.043137 0.015686 \n", "2 0.056872 0.009479 \n", "3 0.041431 0.020716 \n", "4 0.074627 0.012127 \n", "... ... ... \n", "39639 0.037572 0.014451 \n", "39640 0.039634 0.009146 \n", "39641 0.033937 0.024887 \n", "39642 0.020528 0.023460 \n", "39643 0.063694 0.012739 \n", "\n", " rate_positive_words rate_negative_words avg_positive_polarity \\\n", "0 0.769231 0.230769 0.378636 \n", "1 0.733333 0.266667 0.286915 \n", "2 0.857143 0.142857 0.495833 \n", "3 0.666667 0.333333 0.385965 \n", "4 0.860215 0.139785 0.411127 \n", "... ... ... ... \n", "39639 0.722222 0.277778 0.333791 \n", "39640 0.812500 0.187500 0.374825 \n", "39641 0.576923 0.423077 0.307273 \n", "39642 0.466667 0.533333 0.236851 \n", "39643 0.833333 0.166667 0.247338 \n", "\n", " min_positive_polarity max_positive_polarity avg_negative_polarity \\\n", "0 0.100000 0.70 -0.350000 \n", "1 0.033333 0.70 -0.118750 \n", "2 0.100000 1.00 -0.466667 \n", "3 0.136364 0.80 -0.369697 \n", "4 0.033333 1.00 -0.220192 \n", "... ... ... ... \n", "39639 0.100000 0.75 -0.260000 \n", "39640 0.136364 0.70 -0.211111 \n", "39641 0.136364 0.50 -0.356439 \n", "39642 0.062500 0.50 -0.205246 \n", "39643 0.100000 0.50 -0.200000 \n", "\n", " min_negative_polarity max_negative_polarity title_subjectivity \\\n", "0 -0.600 -0.200000 0.500000 \n", "1 -0.125 -0.100000 0.000000 \n", "2 -0.800 -0.133333 0.000000 \n", "3 -0.600 -0.166667 0.000000 \n", "4 -0.500 -0.050000 0.454545 \n", "... ... ... ... \n", "39639 -0.500 -0.125000 0.100000 \n", "39640 -0.400 -0.100000 0.300000 \n", "39641 -0.800 -0.166667 0.454545 \n", "39642 -0.500 -0.012500 0.000000 \n", "39643 -0.200 -0.200000 0.333333 \n", "\n", " title_sentiment_polarity abs_title_subjectivity \\\n", "0 -0.187500 0.000000 \n", "1 0.000000 0.500000 \n", "2 0.000000 0.500000 \n", "3 0.000000 0.500000 \n", "4 0.136364 0.045455 \n", "... ... ... \n", "39639 0.000000 0.400000 \n", "39640 1.000000 0.200000 \n", "39641 0.136364 0.045455 \n", "39642 0.000000 0.500000 \n", "39643 0.250000 0.166667 \n", "\n", " abs_title_sentiment_polarity shares \n", "0 0.187500 593 \n", "1 0.000000 711 \n", "2 0.000000 1500 \n", "3 0.000000 1200 \n", "4 0.136364 505 \n", "... ... ... \n", "39639 0.000000 1800 \n", "39640 1.000000 1900 \n", "39641 0.136364 1900 \n", "39642 0.000000 1100 \n", "39643 0.250000 1300 \n", "\n", "[39644 rows x 61 columns]" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# look at data\n", "news" ] }, { "cell_type": "code", "execution_count": 64, "id": "280cf353-a469-4ea1-94f8-d74173600310", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = news[\"n_tokens_content\"].hist()\n", "fig.set_xlabel(\"Word Count\")\n", "fig.set_ylabel(\"Articles\");" ] }, { "cell_type": "code", "execution_count": 65, "id": "0a88dfdf-9fae-44e9-8ba1-857f965b31c6", "metadata": {}, "outputs": [], "source": [ "# min max scaling\n", "news[\"minmax\"] = preproc.minmax_scale(news[\"n_tokens_content\"])" ] }, { "cell_type": "code", "execution_count": 66, "id": "975f64b2-33d6-4a3a-bbcf-b46c6c3c903c", "metadata": {}, "outputs": [], "source": [ "# standardization\n", "news[\"standardized\"] = preproc.StandardScaler().fit_transform(\n", " news[[\"n_tokens_content\"]]\n", ")" ] }, { "cell_type": "code", "execution_count": 67, "id": "d9ce7284-8c2a-4d95-9962-c5eb867c3145", "metadata": {}, "outputs": [], "source": [ "# l2 normalization\n", "news[\"normalized\"] = preproc.normalize(news[[\"n_tokens_content\"]], axis=0)" ] }, { "cell_type": "code", "execution_count": 68, "id": "b4bab441-0d1d-402c-8141-d81d49c66a63", "metadata": {}, "outputs": [ { "data": { "image/png": "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4e3QoUO2nw3DIC0tjaysLGfWJCIiIiJ21P99V1Sf2vzd735HZmams+oRERERkQtwOPO2fft2289VVVV8+eWX+Pj4OLUoEREREambw/C2c+dO28+enp507NiR1157zalFiYiIiEjdHIa3RYsWuaIOEREREakHu+Ft+fLldlcymUwkJCQ4pSBxLj37TURExL3ZDW9XXXVVrbZz587x3nvvUVhYqPDmpvTsNxEREfdmN7z94Q9/sP185swZ1q1bx6ZNmxg2bFiN70RERETEdS54zVthYSFr1qxhy5YtxMXFkZycjL+/v6tqa/Su7dy1oUsQERGRZsZueHvhhRf48MMPGTNmDFu2bKFVq1aurMsttPL10SlIERERcSm74W3NmjV4e3uzYsUKVq5caWs3DAOTyaTXY4mIiIg0ALvh7auvvnJlHSIiIiJSDxf1eiwRERERaVgKb0JJeWW92kRERKThOXzDgjR9evabiIiI+9DMm4iIiIgbUXgTERERcSMKbyIiIiJuROFN6mTvhgXdyCAiItKwdMOC1KmumxhANzKIiIg0NKfNvD355JP069eP4cOH29oKCwuZOHEigwYNYuLEiRQVFQHVb214/vnniYqKIiYmhiNHjtjWSU5OZtCgQQwaNIjk5GRnlSsiIiLiFpwW3kaNGsXrr79eo2316tX069eP7du3069fP1avXg1ARkYGOTk5bN++neeee45nnnkGqA57y5cvZ8OGDWzcuJHly5fbAp+IiIhIc+S08NarVy/8/f1rtKWlpREbGwtAbGwsO3bsqNFuMpno0aMHxcXF5OXlkZmZSXh4OAEBAfj7+xMeHs6ePXucVbKIiIhIo+fSa97y8/MJCgoCoH379uTn5wNgtVoJDg62LRccHIzVaq3VbjabsVqtDvdTWlpKdnb2Fa6+ttDQUKfvozFyRd82tJKSkmZxnM2Vxrdp0/g2bRrfBrxhwWQyYTKZnLJtHx+fZhusnK2kvLJW35aUV9KyhWcDVeQc2dnZ+h1qwjS+TZvGt2lriuN7sWHUpeGtXbt25OXlERQURF5eHoGBgUD1jFpubq5tudzcXMxmM2azmU8++cTWbrVa6d27tytLlvPoVVoiIiINy6XPebNYLKSkpACQkpLCwIEDa7QbhkFWVhZ+fn4EBQURERFBZmYmRUVFFBUVkZmZSUREhCtLFhEREWlUnDbz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mRQVFVFUVERmZiYRERENcUjy/3v88cfJyMggPT2dl156ib59+/Liiy/Sp08ftm3bBlTfZfjL36rFYrHdabht2zb69u2LyWTCYrGQmppKWVkZx48fJycnh+7duzfYcUm19u3bExwczLfffgvA3r17ue666/S320R06NCBzz//nJ9//hnDMNi7dy/XX3+9/n4vQG9YuAS7d+9m4cKFtld1TZkypaFLknr49NNP+f3vf88NN9xguy5q5syZdO/enenTp3Pq1Ck6dOhAYmIiAQEBGIbBs88+y549e/D19WXhwoXceuutACQlJbFq1SoAHn74Ye65554GOy6paf/+/bzxxhusWrWK48ePM2PGDIqKiggNDWXp0qV4e3tTWlrKrFmzyM7Oxt/fn2XLlhESEgLAihUreO+99/D09OSpp54iMjKygY9IALKzs5k7dy7l5eWEhISwaNEiqqqq9LfbRLzyyiv87//+L15eXoSGhrJgwQKsVqv+fu1QeBMRERFxIzptKiIiIuJGFN5ERERE3IjCm4iIiIgbUXgTERERcSMKbyIiIiJuROFNRBrUjh07uPHGG/nmm2/sLlNcXMw777xj+2y1Wpk2bdoFt3v//ffzxRdfXLE6L1XPnj0bZL9vvvkmP//8c4PsW0ScS+FNRBrUBx98wB133EFqamqd31dUVFBcXMz69ettbWazmVdeecVVJdbbL0+DbwzWrVun8CbSRCm8iUiDOXv2LJ999hkLFiyoEd7279/PuHHjePjhh4mOjubFF1/k2LFjjBw5khdeeIETJ04wfPhwACorK3nhhRcYPnw4MTExvPXWW7X2k5mZydixY4mLi2PatGmcPXu2xvf5+fmMGjUKgK+++oobb7yRH374AYDf/e53/Pzzz5w4cYLx48cTExPDhAkTbN/PmTOHefPmMXr0aP7yl79w/Phxxo4dS0xMDMuWLbN77CkpKcTExDBixAhmzZoFcMF9bN261bbuL7N5+/fv5/7772fatGkMGTKExx9/HMMwWLduHXl5eUyYMIH777//4gZFRBo9r4YuQESar7S0NO6++266dOlC27Zt+fLLL20vl//nP//Jli1bCAkJ4cSJE3z99dds3rwZqA45v3j33Xc5efIkKSkpeHl5UVhYWGMfP/30EytWrGDNmjVcddVVrF69mjVr1vDII4/YlmnXrh2lpaWcOXOG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cB/2tGjRggEDBgBwyy238NFHH11weRFxDZ02FZF6sVgsLFmypMYp07p4e3vXalu2bBkjR45k5MiRtZYzmUw11vHw8KCiooLjx4/zxhtv8Oabb7JlyxZ++9vfUlpaCkBVVRXffPMNLVu2pKioqNb+vLy8SEpKYsiQIezcuZNJkybZrXf//v18/PHHvPvuu7z//vvcfPPNtv38wjAM4uLi2Lx5M5s3b2bbtm08+uijF+yHX+vVqxefffYZn332GX369CEwMJCtW7dy5513OlzX19e33vu5FJ6enlRVVdk+//rYW7RoYXunpoeHh+1UsYg0LIU3EamX+Ph4EhIS6pztcWTGjBm24FNfZ8+exdfXFz8/P3788UcyMjJs37355ptcd911vPjiizz55JOUl5fXWvf06dNERkby1FNP8a9//QuAfv368be//Q2AyspKTp8+zenTp/H398fX15dvvvmGrKysWrX069ePbdu2kZ+fD0BhYSEnT56ke/fuHDhwgIKCAsrLy+1e43f11VdTUFBATk4OISEh3H777bzxxhu28HbnnXeyZcsWoHrm7NSpU3Tt2rXWdnr16sUHH3wAwL///W/bcf1aly5d+M9//sPhw4cBOHPmDBUVFXb30bFjR7766iuqqqo4deqUbb0LadWqFWfPnnW4nIg4h06biki9BAcHM378eJft76abbuLmm29m6NChBAcHc/vttwPw7bffsnHjRjZu3Ejr1q3p1asXK1asYNq0abZ1z549y9SpU22zSL/cBDF37lz+9Kc/8d577+Hh4cEzzzxD//79+fvf/87QoUPp0qULPXr0qFXL9ddfz/Tp0/nDH/5AVVUVLVq0YN68efTo0YNHHnmEe++9Fz8/P0JDQ+0eT/fu3W0zXHfeeScvvfQSd9xxBwDjxo3jmWeeISYmBk9PTxYtWlTnDOZ9991nu7HjuuuuIywsrNYy3t7eLFu2jOeff56SkhJatmzJmjVr7O7jjjvuoGPHjgwbNszuNs83bNgw/vSnP/HWW2/xyiuvcO211zpcR0SuHJNhGEZDFyEiIiIi9aPTpiIiIiJuROFNRERExI0ovImIiIi4EYU3ERERETei8CYiIiLiRprko0KysrLw8fFp6DKcrrS0tFkc56VQ39RN/WKf+qZu6hf71Dd1U7/YZ69vSktL63xMkT1NMrz5+Phc8HlLTcUv73+U2tQ3dVO/2Ke+qZv6xT71Td3UL/bZ65vs7OyL2o5Om4qIiIi4EYU3ERERETei8CYiIiLiRhTeRERERNyIwpuIiIiIG1F4ExEREXEjCm8NpKS8sl5tIiIiIr/WJJ/z5g5atvCk85zUGm05i6MbqBoRERFxF5p5ExEREXEjCm8iIiIibkThTURERMSNKLy5gG5EEBERkStFNyy4gG5OEBERkStFM28iIiIibkThTURERMSNKLyJiIiIuBGFNxERERE3ovAmIiIi4kYU3kRERETciMKbiIiIiBtReBMRERFxIwpvIiIiIm5E4U1ERETEjTj19VgWi4VWrVrh4eGBp6cnmzZtorCwkBkzZnDy5Ek6duxIYmIi/v7+GIbBggUL2L17Ny1btmTx4sWEhYUBkJyczIoVKwCYMmUKcXFxzixbREREpNFy+szb2rVr2bx5M5s2bQJg9erV9OvXj+3bt9OvXz9Wr14NQEZGBjk5OWzfvp3nnnuOZ555BoDCwkKWL1/Ohg0b2LhxI8uXL6eoqMjZZYuIiIg0Si4/bZqWlkZsbCwAsbGx7Nixo0a7yWSiR48eFBcXk5eXR2ZmJuHh4QQEBODv7094eDh79uxxddkiIiIijYJTT5sCPPjgg5hMJsaOHcvYsWPJz88nKCgIgPbt25Ofnw+A1WolODjYtl5wcDBWq7VWu9lsxmq1XnCfpaWlZGdnO+FoLk1oaGi9l72YuktKShrVcTYm6pu6qV/sU9/UTf1in/qmbuoX+65U3zg1vK1fvx6z2Ux+fj4TJ06ka9euNb43mUyYTKYrvl8fH5+LCkyNycUGPXc9TmdT39RN/WKf+qZu6hf71Dd1U7/YZ69vLjbQOfW0qdlsBqBdu3ZERUVx+PBh2rVrR15eHgB5eXkEBgbals3NzbWtm5ubi9lsrtVutVpt2xURERFpbpwW3s6dO8eZM2dsP3/00Ud069YNi8VCSkoKACkpKQwcOBDA1m4YBllZWfj5+REUFERERASZmZkUFRVRVFREZmYmERERzipbREREpFFz2mnT/Px8EhISAKisrGT48OH079+fW2+9lenTp5OUlESHDh1ITEwEIDIykt27dxMVFYWvry8LFy4EICAggKlTpxIfHw9AQkICAQEBzipbREREpFFzWngLCQnh/fffr9Xetm1b1q5dW6vdZDIxf/78OrcVHx9vC28iIiIizZnesCAiIiLiRhTeRERERNyIwpuIiIiIG1F4ExEREXEjCm8iIiIibkThTURERMSNKLyJiIiIuBGFNxERERE3ovAmIiIi4kYU3kRERETcyEWFt6qqKtvL5kVERETE9RyGt8cff5wzZ85w7tw5hg8fzrBhw3j99dddUZuIiIiInMdheDt69CitW7dmx44d9O/fn7S0NDZv3uyK2kRERETkPA7DW0VFBeXl5ezYsQOLxUKLFi0wmUyuqE1EREREzuMwvI0dOxaLxcLPP/9Mr169OHnyJK1bt3ZFbc1OSXllvdpERESk+fJytMD48eMZP3687XPHjh1Zt26dU4tqrlq28KTznNQabTmLoxuoGhEREWmMHM68/fjjjzz11FNMmjQJqL4GLjk52emFiYiIiEhtDsPbnDlziIiIIC8vD4DOnTtr5k1ERESkgTgMbwUFBQwbNgwPj+pFvby8bD+LiIiIiGs5TGFXXXUVBQUFtjtMs7Ky8PPzc3phIiIiIlKbwxsW5syZw5QpUzh27Bj33nsvBQUFvPzyy66oTURERETO4zC8hYWF8fbbb/Pdd99hGAZdunShRYsW9d5BZWUl99xzD2azmVWrVnH8+HFmzpxJYWEhYWFhLFmyBG9vb8rKypg9ezZHjhwhICCAZcuWcc011wCwatUqkpKS8PDw4Omnn+buu+++9CMWERERcWN2w9v27dvrbM/JyQFg0KBB9drBunXruO6662zvRF26dCkPPPAA0dHRzJs3j6SkJMaNG8fGjRtp06YNH374IampqSxdupTExESOHj1KamoqqampWK1WJk6cyLZt2/D09LzIQxURERFxf3avedu5c+cF/9VHbm4uu3btIj4+HgDDMNi3bx+DBw8GIC4ujrS0NADS09OJi4sDYPDgwezduxfDMEhLSyM6Ohpvb29CQkLo1KkThw8fvqyDFhEREXFXdmfeFi1adNkbX7hwIbNmzeLs2bNA9Z2rbdq0wcurerfBwcFYrVYArFYrV199dXVRXl74+flRUFCA1Wrltttus23TbDbb1rGntLSU7Ozsy67/SgkNDb2s9e0dS0lJSaM6zsZEfVM39Yt96pu6qV/sU9/UTf1i35XqG4fXvL300ktMmjSJNm3aAFBUVMQbb7zBjBkzLrjezp07CQwM5JZbbmH//v2XXejF8PHxuezA1JjYO5bs7OwmdZxXkvqmbuoX+9Q3dVO/2Ke+qZv6xT57fXOxgc7ho0IyMjJswQ3A39+fjIwMhxs+ePAg6enpWCwWZs6cyb59+1iwYAHFxcVUVFQA1adVzWYzUD2jdurUKQAqKio4ffo0bdu2xWw2k5uba9uu1Wq1rSMiIiLS3DgMb5WVlZSVldk+l5SU1Phsz+OPP05GRgbp6em89NJL9O3blxdffJE+ffqwbds2AJKTk7FYLABYLBbba7e2bdtG3759MZlMWCwWUlNTKSsr4/jx4+Tk5NC9e/dLOlgRERERd+fwtGlMTAwTJkxg1KhRAGzatInY2NhL3uGsWbOYMWMGiYmJhIaGMnr0aADi4+OZNWsWUVFR+Pv7s2zZMgC6devG0KFDGTZsGJ6ensybN093moqIiEiz5TC8TZ48mRtvvJF9+/YBMHXq1It+zlqfPn3o06cPACEhISQlJdVaxsfHh1deeaXO9adMmcKUKVMuap8iIiIiTZHD8AYQGRlJZGSks2sREREREQfshrf77ruP9evX07NnT9t7TaH6WW0mk4mDBw+6pEARERER+T92w9v69esBOHTokMuKEREREZELc3i36axZs+rVJiIiIiLO5zC8HT16tMbniooKjhw54rSCRERERMQ+u6dNV61axcqVKyktLeX2228Hqq938/b2ZsyYMS4rUERERET+j93w9tBDD/HHP/6RuXPnXpH3nIqIiIjI5bvgaVMPDw++/PJLV9UiIiIiIg44vObt5ptv5vDhw66oRUREREQccPiQ3s8//5wtW7bQoUMHfH19be1btmxxamEiIiIiUpvD8PY///M/rqhDREREROrBYXjr2LEjAPn5+ZSWljq9IHdXUl5JyxaeDV2GiIiINFEOw1taWhovvPACeXl5BAYG8sMPP3DdddeRmprqivrcTssWnnSeU7NvchZHX/L26gqDCogiIiLNl8Pw9vLLL/Puu+8yceJEUlJS2LdvH++//74rahOufBgUERER9+bwblMvLy/atm1LVVUVVVVV9O3bV48PEREREWkgDmfe2rRpw9mzZ+nVqxdPPPEEgYGBXHXVVa6oTURERETO43Dm7bXXXsPX15cnn3ySu+++m2uvvZYVK1a4ojYREREROY/DmbdfZtk8PDyIi4tzekEiIiIiYp/DmTcRERERaTwU3kRERETciN3wNmHCBAD+8pe/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zvW7d+/OgQMHKCgooLy8nK1bt9Zapry8nMcee4wnnnjCNksFEBERwVtvvVXjuC5U0/nuvPNO3njjDXr16sXNN9/M/v378fb2xs/Pjy5dunDy5EnbbOHmzZvp1atXrW107dqVkydPcuzYMQBSU1Pr3Nddd93Fu+++awtahYWFF9xHx44d+fLLLwHYvn17ndv8tV+Po4g0Lpp5E5GLdu7cOZ5//nmKi4vx9PSkU6dOtsdxjBkzhkmTJhEUFMRbb73FzTffzNChQwkODub22293uO2EhAQef/xxoqOj6dmzpy0U9u/fn7///e8MHTqULl260KNHjzrXDwoK4pFHHuHee+/Fz8+P0NDQWsscOnSIL7/8kldffZVXX30VgNWrVzN37lyeffZZYmJiqKys5M477+TZZ5+1W9P57rzzTk6dOsWdd96Jp6cnV199NV27dgWqZwcXLVrEY489ZruZoK67X318fHj22WeZPHmy7YaFukLU6NGjycnJYcSIEXh5eTFmzBj+67/+y+4+HnnkEebOncvLL79Mnz59HI5D27Ztuf322xk+fDh33323blgQaURMhlHHbVMiIiIi0ijptKmIiIiIG1F4ExEREXEjCm8iIiIibkThTURERMSNKLyJiIiIuJEm+aiQrKysS37I5sUoLS11yX6aG/Wrc6hfnUP96hzqV+dQvzrH5fZraWmp3ccf1aVJhjcfH586n+10pWVnZ7tkP82N+tU51K/OoX51DvWrc6hfneNy+/WXB4LXl06bioiIiLgRhTcRERERN6LwJiIiIuJGFN5ERERE3IjCm4iIiIgbUXgTERERcSMKbw2kpLyyXm0iIiIiv9Ykn/PmDlq28KTznNQabTmLoxuoGhEREXEXmnkTERERcSMKbyIiIiJuROFNRERExI0ovLmAbkQQERGRK0U3LLiAbk4QERGRK0UzbyIiIiJuROFNRERExI0ovImIiIi4EYU3ERERETei8CYiIiLiRhTeRERERNyIwpuIiIiIG1F4ExEREXEjCm8iIiIibkThTURERMSNOPX1WBaLhVatWuHh4YGnpyebNm2isLCQGTNmcPLkSTp27EhiYiL+/v4YhsGCBQvYvXs3LVu2ZPHixYSFhQGQnJzMihUrAJgyZQpxcXHOLFtERESk0XL6zNvatWvZvHkzmzZtAmD16tX069eP7du3069fP1avXg1ARkYGOTk5bN++neeee45nnnkGgMLCQpYvX86GDRvYuHEjy5cvp6ioyNlli4iIiDRKLj9tmpaWRmxsLACxsbHs2LGjRrvJZKJHjx4UFxeTl5dHZmYm4eHhBAQE4O/vT3h4OHv27HF12SIiIiKNglNPmwI8+OCDmEwmxo4dy9ixY8nPzycoKAiA9u3bk5+fD4DVaiU4ONi2XnBwMFartVa72WzGarVecJ+lpaVkZ2c74WhqKikpqdd+QkND671NV9Td2NW3X+XiqF+dQ/3qHOpX51C/Ooer+9Wp4W39+vWYzWby8/OZOHEiXbt2rfG9yWTCZDJd8f36+PhcVGC6VNnZ2Vd8P66ou7FzRr+K+tVZ1K/OoX51DvWrc1xuv15s8HPqaVOz2QxAu3btiIqK4vDhw7Rr1468vDwA8vLyCAwMtC2bm5trWzc3Nxez2Vyr3Wq12rYrIiIi0tw4LbydO3eOM2fO2H7+6KOP6NatGxaLhZSUFABSUlIYOHAggK3dMAyysrLw8/MjKCiIiIgIMjMzKSoqoqioiMzMTCIiIpxVtoiIiEij5rTTpvn5+SQkJABQWVnJ8OHD6d+/P7feeivTp08nKSmJDh06kJiYCEBkZCS7d+8mKioKX19fFi5cCEBAQABTp04lPj4egISEBAICApxVtoiIiEij5rTwFhISwvvvv1+rvW3btqxdu7ZWu8lkYv78+XVuKz4+3hbeRERERJozvWFBRERExI0ovImIiIi4EYU3ERERETei8CYiIiLiRhTeRERERNyIwpuIiIiIG1F4ExEREXEjCm8iIiIibkThTURERMSNXFR4q6qqsr2vVERERERcz2F4e/zxxzlz5gznzp1j+PDhDBs2jNdff90VtYmIiIjIeRyGt6NHj9K6dWt27NhB//79SUtLY/Pmza6oTURERETO4zC8VVRUUF5ezo4dO7BYLLRo0QKTyeSK2kRERETkPA7D29ixY7FYLPz888/06tWLkydP0rp1a1fU1uyUlFfWq01ERESaLy9HC4wfP57x48fbPnfs2JF169Y5tajmqmULTzrPSa3RlrM4uoGqERERkcbI4czbjz/+yFNPPcWkSZOA6mvgkpOTnV6YiIiIiNTmMLzNmTOHiIgI8vLyAOjcubNm3kREREQaiMPwVlBQwLBhw/DwqF7Uy8vL9rOIiIiIuJbDFHbVVVdRUFBgu8M0KysLPz8/pxcmIiIiIrU5vGFhzpw5TJkyhWPHjnHvvfdSUFDAyy+/7IraREREROQ8DsNbWFgYb7/9Nt999x2GYdClSxdatGhR7x1UVlZyzz33YDabWbVqFcePH2fmzJkUFhYSFhbGkiVL8Pb2pqysjNmzZ3PkyBECAgJYtmwZ11xzDQCrVq0iKSkJDw8Pnn76ae6+++5LP2IRERERN2Y3vG3fvr3O9pycHAAGDRpUrx2sW7eO6667zvZO1KVLl/LAAw8QHR3NvHnzSEpKYty4cWzcuJE2bdrw4YcfkpqaytKlS0lMTOTo0aOkpqaSmpqK1Wpl4sSJbNu2DU9Pz4s8VBERERH3Z/eat507d17wX33k5uaya9cu4uPjATAMg3379jF48GAA4uLiSEtLAyA9PZ24uDgABg8ezN69ezEMg7S0NKKjo/H29iYkJIROnTpx+PDhyzpoEREREXdld+Zt0aJFl73xhQsXMmvWLM6ePQtU37napk0bvLyqdxscHIzVagXAarVy9dVXVxfl5YWfnx8FBQVYrVZuu+022zbNZrNtHREREZHmxuE1by+99BKTJk2iTZs2ABQVFfHGG28wY8aMC663c+dOAgMDueWWW9i/f/+VqbaeSktLyc7Odvp+SkpK6rWf0NDQy9qPK46lMalvv8rFUb86h/rVOdSvzqF+dQ5X96vD8JaRkcHMmTNtn/39/cnIyHAY3g4ePEh6ejoZGRmUlpZy5swZFixYQHFxMRUVFXh5eZGbm4vZbAaqZ9ROnTpFcHAwFRUVnD59mrZt22I2m8nNzbVt12q12taxx8fH57IDU31kZ2e7ZD+u2Edj4qp+bW7Ur86hfnUO9atzqF+d43L79WKDn8PnvFVWVlJWVmb7XFJSUuOzPY8//jgZGRmkp6fz0ksv0bdvX1588UX69OnDtm3bAEhOTsZisQBgsVhsr93atm0bffv2xWQyYbFYSE1NpaysjOPHj5OTk0P37t0v6iBFREREmgqHM28xMTFMmDCBUaNGAbBp0yZiY2MveYezZs1ixowZJCYmEhoayujRowGIj49n1qxZREVF4e/vz7JlywDo1q0bQ4cOZdiwYXh6ejJv3jzdaSoiIiLNlsPwNnnyZG688Ub27dsHwNSpU/+/9u48quo6/+P484JBiApSAi64pU7ukuCS2wjhhiiYOqNTqVPpGO5L2Tij6ZRm2WS5m+VILqOiQA6TG6Zpmqm5pGHaqIkLl3LDJa5A398fnu4vBbzo5V64+nqc4zncz733+31/33HodT7f5XPXz1lr3rw5zZs3ByAoKIj4+Pg8n/H09OT999/P9/uDBw9m8ODBd7VPERERkfuRzfAG0K5dO9q1a+foWkRERETEhgLDW58+fVi+fDnBwcHWdU3h5rPaTCYTX3/9tVMKFBEREZH/V2B4W758OQD79u1zWjEiIiIicmc27zYdO3ZsocZERERExPFshrfvv//+ltc5OTkcPnzYYQWJiIiISMEKPG06f/585s2bh8Vi4YknngBuXu/m4eFB7969nVagiIiIiPy/AsPboEGDePHFFxk/fnyRrHMqIiIiIva742lTNzc3Dh065KxaRERERMQGm9e81atXj4MHDzqjFhERERGxweZDeg8cOMDatWupVKkSXl5e1vG1a9c6tDARERERyctmePvwww+dUYeIiIiIFILN8Fa5cmUAzp8/j8VicXhBIiIiIlIwm+EtJSWFadOmkZGRgZ+fH2fPnuWxxx4jOTnZGfW5nKzsXB5+yL24yxAREZH7lM3w9t5777FixQoGDBhAYmIiX375JZ988okzanNJDz/kTvVxtwbbk29G3vP28guDCogiIiIPLpvhrVSpUpQvX55ffvmFX375hRYtWjBlyhRn1CYUfRgUERER12YzvJUrV45r164RGhrKmDFj8PPzo3Tp0s6oTURERERuY/M5b3PmzMHLy4tXX32VNm3aULVqVebOneuM2kRERETkNjZn3n6dZXNzcyMmJsbhBYmIiIhIwWzOvImIiIhIyaHwJiIiIuJCCgxv/fr1A+Dtt992WjEiIiIicmcFXvP2448/8vXXX7N582YiIyMxDOOW9+vXr3/HDVssFv70pz9x48YNcnNz6dixI8OGDSMtLY1Ro0Zx6dIl6tevz1tvvYWHhwc3btzg5Zdf5vDhw/j6+vLuu+9SpUoVAObPn098fDxubm787W9/o02bNkVw6CIiIiKup8DwNmzYMObMmUN6ejpTp0695T2TyURcXNwdN+zh4cHixYvx9vYmOzubvn370rZtWxYtWkT//v2JjIxkwoQJxMfH07dvX1atWkW5cuXYuHEjycnJTJ8+nRkzZvD999+TnJxMcnIyZrOZAQMGsH79etzd9ZBaERERefAU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690GP5unTWvXrs2VK1fuqZjs7GyGDRtGVFQUHTp0AOCRRx4hIyMDgIyMDPz8/ICbM2rp6enW76anpxMQEJBn3Gw2ExAQcE/1iIiIiLg6m+HtypUrdO7cmeeff56//OUv1n+2GIbB+PHjqVmzJgMGDLCOh4WFkZiYCEBiYiLh4eG3jBuGwf79+ylbtiz+/v60bt2a7du3c/nyZS5fvsz27dtp3br1PR6uiIiIiGuzedp06NCh97ThvXv3kpSURJ06dejevTsAo0aNYuDAgYwYMYL4+HgqVarEjBkzAGjXrh1bt24lIiICLy8vpkyZAoCvry8vvfQSPXv2BG4+usTX1/eeanrQaMksERGR+4/N8NasWbN72nBISAjfffddvu8tXrw4z5jJZGLixIn5fr5nz57W8CaFpyWzRERE7j82w1twcLD1poLs7GxycnLw8vLi66+/dnhxIiIiInIrm+Ft37591p8NwyAlJYX9+/c7siYRERERKUDh17vi5qnNp556iu3btzuqHhERERG5A5szbxs2bLD+/Msvv3Do0CE8PT0dWpSIiIiI5M9mePvss8+sP7u7u1O5cmXmzJnj0KJEREREJH82w9vUqVOdUYeIiIiIFEKB4W3WrFkFfslkMhEbG+uQgsSx9Ow3ERER11ZgeCtdunSesevXr7N69WouXbqk8Oai9Ow3ERER11ZgePvzn/9s/fnq1avExcWxZs0aunTpcst7IiIiIuI8d7zm7dKlSyxatIi1a9cSExNDQkICPj4+zqqtxKtavWZxlyAiIiIPmALD27Rp09i4cSO9e/dm7dq1eHt7O7Mul+Dt5alTkCIiIuJUBYa3RYsW4eHhwdy5c5k3b5513DAMTCaTlscSERERKQYFhrcjR444sw4RERERKYS7Wh5LRERERIqXwpuQlZ1bqDEREREpfjZXWJD7n579JiIi4jo08yYiIiLiQhTeRERERFyIwpuIiIiIC1F4k3wVdMOCbmQQEREpXrphQfKV300MoBsZREREipvDZt5effVVWrZsSdeuXa1jly5dYsCAAXTo0IEBAwZw+fJl4OaqDa+//joRERFERUVx+PBh63cSEhLo0KEDHTp0ICEhwVHlioiIiLgEh4W3Hj16sHDhwlvGFixYQMuWLdmwYQMtW7ZkwYIFAHz++eecPHmSDRs28I9//IPXXnsNuBn2Zs2axcqVK1m1ahWzZs2yBj4RERGRB5HDwltoaCg+Pj63jKWkpBAdHQ1AdHQ0mzZtumXcZDLRpEkTMjMzycjIYPv27bRq1QpfX198fHxo1aoV27Ztc1TJIiIiIiWeU695O3/+PP7+/gBUqFCB8+fPA2A2mwkMDLR+LjAwELPZnGc8ICAAs9lscz8Wi4XU1NQirj6vunXrOnwfJZGje5uVleWU/34PGvXVMdRXx1BfHUN9dQxn97XYblgwmUyYTCaHbNvT0/OBDVaOlpWdm6e3Wdm5PPyQe5HtIzU1Vf/9HEB9dQz11THUV8dQXx3D3r7ebfBzanh75JFHyMjIwN/fn4yMDPz8/ICbM2rp6enWz6WnpxMQEEBAQABfffWVddxsNtOsWTNnliy30VJaIiIixcupz3kLCwsjMTERgMTERMLDw28ZNwyD/fv3U7ZsWfz9/WndujXbt2/n8uXLXL58me3bt9O6dWtnliwiIiJSojhs5m3UqFF89dVXXLx4kbZt2zJ06FAGDhzIiBEjiI+Pp1KlSsyYMQOAdu3asXXrViIiIvDy8mLKlCkA+Pr68tJLL9GzZ08AYmNj8fX1dVTJIiIiIiWew8LbP//5z3zHFy9enGfMZDIxceLEfD/fs2dPa3gTERERedBpeSwRERERF6LwJiIiIuJCFN5EREREXIjCm4iIiIgLUXgTu2Vl5xZqTEREROxXbCssyP1DD+4VERFxHs28iYiIiLgQhTcRERERF6LwJg6h6+BEREQcQ9e8iUPoOjgRERHH0MybiIiIiAtReBOn0alUERER++m0qTiNTqWKiIjYTzNvUqzym3mrWr1mMVQiIiLiGjTzJsVKs3EiIiJ3RzNvUuLo2jgREZGCaeZNShzNxomIiBRMM2/iEjQbJyIicpNm3sQl5Dcbd+QfnfJ8Lis7l4cfcndWWSIiIk6n8CYuy55Ap5AnIiKuSuFN7isFXS+na+hEROR+4TLXvH3++ed07NiRiIgIFixYUNzliIsr7DV0BV1Xp2vwRESkuLjEzFtubi6TJ09m0aJFBAQE0LNnT8LCwqhVq1ZxlyYu6m5m6G4fK2jcnlO2Oo0rIiKF5RLh7eDBg1SrVo2goCAAIiMjSUlJUXiTEsWeQFjUwS+/seqP1b7nfYiISMlhMgzDKO4ibFm3bh3btm3jjTfeACAxMZGDBw8yYcKEfD+/f/9+PD09nVmiiIiIyD2xWCw0adKk0J93iZm3u3U3DRARERFxJS5xw0JAQADp6enW12azmYCAgGKsSERERKR4uER4a9iwISdPniQtLY0bN26QnJxMWFhYcZclIiIi4nQucdq0VKlSTJgwgRdeeIHc3FyefvppatfOe/G1iIiIyP3OJW5YEBEREZGbXOK0qYiIiIjcpPAmIiIi4kIU3vJhaymuGzduMGLECCIiIujVqxenT5+2vjd//nwiIiLo2LEj27Ztc2bZJd699vXixYs8++yzBAcHM3nyZGeXXeLda1+/+OILevToQVRUFD169GDnzp3OLr1Eu9e+Hjx4kO7du9O9e3e6devGxo0bnV16iWbP31eAs2fPEhwczIcffuiskl3Cvfb19OnTNGrUyPo7W9DzUx9U9vy+HjlyhD/84Q9ERkYSFRWFxWIpusIMuUVOTo4RHh5unDp1yrBYLEZUVJRx7NixWz6zZMkS4+9//7thGIbxn//8xxg+fLhhGIZx7NgxIyoqyrBYLMapU6eM8PBwIycnx9mHUCLZ09dr164Zu3fvNpYtW2ZMmjTJ2aWXaPb09fDhw0Z6erphGIbx3XffGa1bt3Zq7SWZPX29fv26kZ2dbRiGYZjNZqNFixbW1w86e/r6q6FDhxpDhw41Fi5c6KyySzx7+pqWlmZERkY6u2SXYE9fs7Ozja5duxqpqamGYRjGhQsXijQPaObtNr9disvDw8O6FNdvbd68mZiYGAA6duzIzp07MQyDlJQUIiMj8fDwICgoiGrVqnHw4MHiOIwSx56+li5dmpCQEK2akQ97+lqvXj3r8xJr166NxWLhxo0bTj+Gksievnp5eVGq1M0b+S0WCyaTyen1l1T29BVg06ZNVK5cWU8buI29fZX82dPXL774gt/97nc8/vjjAJQvXx5396JbdlDh7TZms5nAwEDr64CAAMxmc57PVKxYEbj5GJOyZcty8eLFQn33QWVPX6VgRdXX9evXU69ePTw8PBxftAuwt68HDhwgMjKSbt26MWnSJGuYe9DZ09dr167xwQcfMGTIEKfW7Ars/X09ffo00dHRPPPMM+zZs8d5hZdw9vT1xIkTmEwmnn/+eWJiYvjggw+KtDb9RRF5wB07dozp06fz0UcfFXcp943GjRuTnJzM//73P1555RXatm2rmWM7zZo1i379+uHt7V3cpdxX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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# compare different results\n", "fig, (ax1, ax2, ax3, ax4) = plt.subplots(4, 1, figsize=(10, 15))\n", "# fig.tight_layout();\n", "news[\"n_tokens_content\"].hist(ax=ax1, bins=100)\n", "ax1.set_xlabel(\"Article word count\")\n", "ax1.set_ylabel(\"Number of articles\")\n", "news[\"minmax\"].hist(ax=ax2, bins=100)\n", "ax2.set_xlabel(\"Min-max scaled word count\")\n", "ax2.set_ylabel(\"Number of articles\")\n", "news[\"standardized\"].hist(ax=ax3, bins=100)\n", "ax3.set_xlabel(\"Standardized word count\")\n", "ax3.set_ylabel(\"Number of articles\")\n", "news[\"normalized\"].hist(ax=ax4, bins=100)\n", "ax4.set_xlabel(\"L2-normalized word count\")\n", "ax4.set_ylabel(\"Number of articles\");" ] }, { "cell_type": "markdown", "id": "4fef108e-a831-4454-a8be-f9bb90bdd0d9", "metadata": {}, "source": [ "### Power Transforms" ] }, { "cell_type": "markdown", "id": "c154449a-6dc6-4707-b3fd-39ea0c2ae3e3", "metadata": {}, "source": [ "For investigating power transforms, we will look at an example we already discussed during our exploratory data analysis: the count of ratings per movie. " ] }, { "cell_type": "code", "execution_count": 69, "id": "f2eba9b9-c768-46f7-9171-f94aa2c12896", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 855598 entries, 0 to 855597\n", "Data columns (total 9 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 userID 855598 non-null int64 \n", " 1 movieID 855598 non-null int64 \n", " 2 rating 855598 non-null float64\n", " 3 date_day 855598 non-null int64 \n", " 4 date_month 855598 non-null int64 \n", " 5 date_year 855598 non-null int64 \n", " 6 date_hour 855598 non-null int64 \n", " 7 date_minute 855598 non-null int64 \n", " 8 date_second 855598 non-null int64 \n", "dtypes: float64(1), int64(8)\n", "memory usage: 58.7 MB\n" ] } ], "source": [ "# read in rating data\n", "ratings = pd.read_csv(\n", " os.path.join(data_dir, \"hetrec/user_ratedmovies.dat\"), delimiter=\"\\t\"\n", ")\n", "ratings.info(memory_usage=\"deep\")" ] }, { "cell_type": "code", "execution_count": 70, "id": "513fc696-bc60-462c-9166-8a5f53f578b2", "metadata": {}, "outputs": [], "source": [ "# asymmetric, skewed distribution\n", "# number of ratings per movie\n", "rating_counts = ratings.groupby(\"movieID\")[\"rating\"].agg(\"count\")" ] }, { "cell_type": "code", "execution_count": 71, "id": "061330ae-f08f-4b3f-8059-f7a575a2e3f6", "metadata": {}, "outputs": [ { "data": { "image/png": "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QMtzek3j8ePHNX78ePvzcePGafny5W4NBQCAL0tLS9Ojjz6qw4cP684771RJSYleffVVT8cCAKBJnBaNoaGhys7O1siRIyVJa9asUWhoqLtzAQDgs/r06aN33nlHP/zwgwzDUK9evdSmTRtPxwIAoEmcFo1z5szRCy+8oLlz58pkMun666/X3LlzWyIbAAA+ZdeuXYqOjtaGDRtqbC8oKJAkDR8+3AOpAABoHqdFY/fu3bVkyZKWyAIAgE/bu3evoqOjtWXLljr3UzQCAHyRw6Jx9uzZ9R747LPPujwMAAC+bMqUKZLOjaGBgSzYAgDwDw6Lxvfee0+RkZFKSEhQWFiYDMNoyVwAAPisYcOG6eabb1ZiYqJuvPFG+yqqaL6ySluNFVRrPwcAuJ7DonHHjh1at26d1q5dq6CgICUmJio+Pl6dO3duyXwAAPicTz75RFu2bNG7776rZ555RrfccosSExN1ww03eDqazzt/+43zCuYleTANALQODu/TeNFFF+muu+7S22+/rblz56q0tFSJiYlatWpVC8YDAMD3tGvXTomJiVq0aJFWrlyp06dP67777nP562zatEnPPvuspk6dqp07d7q8fV9QVmmr8zEAwHWcLoTz1Vdfac2aNfrss88UExOjvn37tkQuAAB82p49e7R27Vrt2LFDffv21cKFCxt0XHp6urZu3apu3bppzZo19u3bt2/Xiy++qLNnzyolJUWTJk3SrbfeqltvvVUnT57USy+9pCFDhripN96r+plHzjoCgHs4LBpfffVVbdu2Tb1791ZSUpKeeOIJBQU5rTEBAGj1LBaLoqKilJCQoKeeekrt27dv8LHjxo3Tvffeq6efftq+zWazadasWVq2bJnMZrOSk5NlsVh01VVXSZIWL16se+65x+X9AABAqqdoXLx4sS6//HJ98803+uabb7RgwYIa+1evXu32cAAA+KKPP/5YHTt2bNKxAwYM0JEjR2psy8vLU48ePRQRESFJSkpKUm5urq688krNnz9fMTEx6tOnT7NzAwBQF4dFY25ubkvmAADAb5w+fVpPP/209u3bJ0m64YYb9Mwzzyg8PLxJ7Vmt1hrHms1m5eXl6e2339auXbt06tQp/fjjj7rrrructlVeXq78/Pwm5TgvKiqqWce7S+2VVH/5tVyHC753flxZWbP/TbyJP/XHn/oi0R9v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mUwm3Xrrrdq5c6enowBuUVZp83QEAG7GmUYAAFxsw4YN9sdnz57VwYMHFRIS4sFEgPs09HpHAL6LohEAABfbsmWL/XFgYKC6d++uN99804OJAABoOopGAABcbO7cuZ6OADRaU2+r4c4cUVFR3LYD8AIUjQAAuMiiRYsc7jOZTEpNTXXp6xUWFmrx4sU6ffq0XnvtNZe2jdbHW26rwW07AO/DQjgAALhI+/btL/hPkj788ENlZGQ0qI309HRFR0dr5MiRNbZv375d8fHxiouL09KlSyVJERERmjNnjms7Ach7F7epnctbcwL+hjONAAC4yEMPPWR/fPr0aWVmZuqjjz5SYmJijX31GTdunO699149/fTT9m02m02zZs3SsmXLZDablZycLIvFoquuusrlfQAk7z3b5625AH9H0dhAtefTM78eAFCXEydOaNmyZVq9erXGjh2rlStXqkuXLg0+fsCAATpy5EiNbXl5eerRo4ciIiIkSUlJScrNzaVoBAC0CIrGBuKbLQCAMy+99JI2btyo22+/XatXr1aHDh1c0q7ValV4eLj9udlsVl5enkpKSvSXv/xF//rXv/TWW2/pkUcecdpWeXm58vPzm5UnKiqqWcejdWns562uz9f5Nurb5wvKysp8Kq8z9Kf1oGgEAMBFli1bpuDgYC1evFhLliyxbzcMQyaTSfv27XPp61100UWaNWtWo44JCQmh6EOLcsXnrb42fOnznJ+f71N5naE/3s2VBTBFIwAALvL111+7pV2z2ayioiL7c6vVKrPZ7JbXAgCgNlZPBQDAy/Xr108FBQUqLCxURUWFcnJyZLFYPB0LaDJ3rILa1Dar/xyrsQJ140wjAABeZNq0adqzZ49KSkoUExOjyZMnKyUlRTNmzNDEiRNls9k0fvx4RUZGejoq0GR1rRXRkHtENrbNxh7HmhVA3SgaAQDwIgsWLKhze2xsrGJjY1s4DQAATE8FAAAAANSDohEAAAB+zR3XULoD11fCWzE9FQAAAH7NV+63zfWV8FacaQQAAAAAOETRCAAAALdw93TLprbp6izeOv3VW3PB9zA9FQAAAG5Re7qlq6deNnU6p6ungXrr9FdvzQXfw5lGAAAAAIBDFI0AAAAAAIcoGgEAAAAADlE0AgAAwGu15OItLBwD1I2FcAAAAOC1WvLehSwcA9SNM40AAAAAAIco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FVdIkj777DMtXbpUv/zyi9LS0jR06FDZbDbNnz9fe/bsUUVFhe655x7deeed2r17t1599VV17txZP/zwg9avX18jz5o1a/TWW2/JMAzFxsbqySef1KJFi7Rv3z4988wzslgsevrpp+vsZ2BgoPr37y+r1SpJ2rx5sxYvXqzKykqFhoZq/vz5Kisr03vvvaeAgAB9/PHHeu6557Rr1y61b99eDz/8sO677z71799fu3fv1qlTp/Tiiy/qhhtu0K+//qq0tDR999136tWrl4qLizVjxgz913/9l5555hkdPHhQJpNJ48eP1wMPPODidxAA4A6Mj4yPaJ0oGgEH7rnnHt12222aOHFig4/5+uuvtXbtWoWGhmrYsGFKSUlRVlaWli9frrffflvPPPOMJOno0aPKysrS4cOHNWHCBN10001atWqVOnXqpA8//FAVFRW68847NXjwYEnSv/71L61evVoRERE1Xs9qtWr+/Pn66KOP1LlzZz300EPatGmTfv/732v37t166qmn1K9fP4d5y8vL9c9//tOe67//+7/1wQcfyGQyacWKFcrIyFBaWpruvPNO+yAoSbt27arRjs1mU1ZWlrZt26ZFixbpr3/9q/72t7+pS5cuWrt2rb799lv7N6/5+fmyWq1as2aNJKm0tLTB/74AAM9jfGR8ROtD0Qg40LFjR40ePVqZmZlq27Ztg47p16+fwsLCJJ2b4nJ+ULv66qu1e/du+88lJCQoICBAPXv2VEREhL7//nt9+umn+uabb+zflJ46dUo//vij2rRpo379+l0wIErSl19+qYEDB6pr166SpFGjRmnv3r269dZb6815+PBhjR49WkeOHNEtt9yia665RpJUVFSkxx9/XD///LMqKip0+eWXN6jfcXFxkqQ+ffro6NGjkqR//OMfmjBhgr3/v/nNbyRJERERKiws1AsvvKDY2FgNGTKkQa8BAPAOjI+Mj2h9uKYRqMf999+vDz/8UL/++qt9W2BgoM6ePStJOnv2bI2L5IODg+2PAwIC7M8DAgJks9ns+0wmU43XMZlMMgxDzz77rLKzs5Wdna3NmzfbB4z27du7tF/nr9nYuHGjDh48qNzcXEnS7Nmzdc8992j16tWaNWuWKioqGtSeo37WpUuXLsrOztbAgQP13nvv2b/FBQD4DsZHxke0LhSNQD1CQ0M1YsQIZWVl2bd1795dX331laRz1zg4W1mtLuvWrdPZs2d1+PBhFRYWqlevXhoyZIj+/ve/29v74YcfdObMmXrb6d+/v/bu3avjx4/LZrMpJydHAwYMaHCOrl27avr06Vq6dKmkc9/ems1mSaqx+luHDh30yy+/NKqPv/3tb+0LCBw6dEjffvutJOn48eMyDEPx8fGaOnWq/vWvfzWqXQCA5zE+nsP4iNaC6amAEw899JDeffdd+/Pbb79djz32mG677TbdfPPNTfqW89JLL1VycrJ++eUXPf/88woJCVFKSoqOHj2qcePGyTAMXXTRRXrzzTfrbScsLExPPPGE7r//fvuF/s6m3tR266236vXXX9cXX3yh3//+9/rDH/6gLl26aNCgQTpy5IgkaejQoZoyZYpyc3P13HPPNajdu+++W2lpaUpMTFTv3r111VVXqVOnTiouLlZ6err92+hp06Y1Ki8AwDswPjI+ovUwGYZheDoEAP9js9lUVVWlkJAQHT58WA888IDWrVtXY4oSAACtDeMjfBFnGgG4xa+//qoJEyaoqqpKhmFo5syZDIgAgFaP8RG+iDONAAAAAACHWAgHAAAAAOAQRSMAAAAAwCGKRgAAAACAQxSNAAAAAACHKBoBAAAAAA5RNAIAAAAAHPr/AFbBsrHidy7YAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# histogram of number of movies with given number of ratings\n", "# (binned value counts)\n", "fig, axes = plt.subplots(1, 2, figsize=(15, 5))\n", "axes[0].hist(rating_counts, bins=100)\n", "axes[0].set_ylabel(\"Number of Movies\")\n", "axes[0].set_xlabel(\"Number of Ratings\")\n", "axes[1].hist(rating_counts, log=True, bins=100)\n", "axes[1].set_ylabel(\"Number of Movies (log)\")\n", "axes[1].set_xlabel(\"Number of Ratings\");" ] }, { "cell_type": "markdown", "id": "d13a1272-f61c-486d-bd0a-7ad95dcd627e", "metadata": {}, "source": [ "Another example is the number of words in an article as already shown previously as part of the news popularity dataset." ] }, { "cell_type": "code", "execution_count": 72, "id": "e89f79a5-ecfd-4d19-8499-9ed7b650c745", "metadata": {}, "outputs": [ { "data": { "image/png": "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U7fccouWL1/uePyb3/xGv/rVr5pl3nPmzNGOHTuaZV6X8v7772vs2LGaMmVKnfbk5GTHGJFS7diBq1atcjx+/PHHtWvXrita5pYtW7R48eImTWu32zVz5szLXsapU6fUu3dvvfXWW5ec7ne/+52+/fZbx+Of/exnKisra3T6X/3qV/rNb35z2fUAaF4ENQBOBQQEaNeuXTp16pSnS6nj4l3Lm2LTpk16/vnn9fvf/75O+6233qojR45Iqh0f9JprrlFubq7j+aNHj2rgwIFNWkZNTU2T6/k+q9Wq119//bJft2PHDvXv318ZGRmXrGvjxo11gtr//u//qkOHDldUKwD3IagBcKpVq1b6r//6L23YsKHec9/vEbsYaj766CPdd999mjFjhkaPHq2XX35Zf/zjH5WYmKi4uDgdP37c8ZoPPvhAkyZNUkxMjPbu3SupNly88MILuuuuuxQXF6c//OEPjvnee++9mj59umJjY+vVs337dsXFxWn8+PF66aWXJEkrV67UkSNHNG/ePL3wwgt1ph84cKCOHj0qqTaUjRo1SqdOnZJhGCooKFCbNm3UpUuXBud78fXLly/XhAkTdPToUW3evFkxMTFKTEx0BECptkdv/PjxmjBhgn7605/Wq7uwsFDjx4+XVNsT99hjj+mhhx5SdHS0XnzxxUb3TUZGhubMmSO73V5n+Jzv1rV69WoVFxfrgQcecPQoRkZGOoJ3Wlqa4uLiNGHCBM2ePbveMo4fP66HHnpIkyZN0r333qu///3vjdYDoHm18nQBAFqGn/70p5owYYIefvjhJr/miy++0HvvvaeQkBCNHj1akydP1qZNm7Rhwwb9/ve/17x58yRJX3/9tTZt2qTjx4/r/vvv1x133KG0tDS1b99emzdvVmVlpf77v/9bw4YNkyR9/vnn2rZtm+Nu5BfZ7Xa9/PLL2rJlizp06KCpU6dqz549euyxx/TRRx/p5z//ueMO9Rf16dNHX375pSorK3X06FENGjRIBQUF+vvf/67PP/9cAwcObHS+P/nJT3T+/Hn169dPc+bMUXFxsWbNmqUtW7YoKChI999/v370ox9JklatWqXf/OY3slqtlzzkeJHNZlNaWpoCAgI0ZswYTZkyRdddd12daU6cOKFvvvlG/fr109ixY/Xee+9p6tSpklSnLqk2/G3YsMExHuZFX375pVav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9PssFosMw1CHDh2Unp7e4DRt27a93PIb1b17d505c0Z79+7VgAEDJEl9+vTRli1b1LVrV7Vr1+6Sr29KLcHBwUpPT1dOTo7+8Ic/6P333/eJcRoBs6NHDUCzat++vTp06OA4zyo9PV2DBg1Shw4d1K5dO33yySeS1OB5ZpJ022236f3331dNTY1OnTqljz/+WP369Wvy8idOnKgPP/zQcR6ZJF177bX6+9//rgsXLmjPnj2XvU4XLlzQzp07JdUeWvzxj3+soKAg/eAHP9D7778vqfbcuu9eddqY2267Tdu2bZMkHTt2TCdOnFCPHj2cvq5///7auHGjo0dywIAB2rBhg2699dbLmu+gQYO0fft2SdLf/vY3/fWvf5UknTp1SoZhKCYmRikpKfr888+d1gTA9ehRA3BVvv32W40YMcLxOCkpSS+88IIWLFigb7/9VuHh4Y6emSVLlujZZ5+Vn5+fBg0a1ODhtaioKB09elTx8fGyWCyaPXu2unTp0uR6AgICNGXKFC1ZssTR9tRTT+mRRx5Rp06d1KdPH50/f/6y1vGaa65RXl6eVq9erU6dOjmuLH3ppZe0cOFCrV69WtXV1Ro3bpx++MMfXnJe9957rxYuXKi4uDj5+/tr2bJldXryGnPrrbcqOztbffr0kVQb1AoKChzBranzveeeexwXTNx0003q3bu3JKm4uFhz58513OYjNTW1ydsHgOtYjIs35wEAFzt37pzjMN26detUXFysZ5991sNVAYB50aMGwG3279+vtWvXqqamRtdff72WL1/u6ZIAwNToUQMAADApLiYAAAAwKYIaAACASRHUAAAATIqgBgAAYFIENQAAAJMiqAEAAJjU/wdjTboENVx1XQAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# shift + 1 due to log(0)\n", "news[\"log_n_tokens_content\"] = np.log10(news[\"n_tokens_content\"] + 1)\n", "\n", "fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 10))\n", "news[\"n_tokens_content\"].hist(ax=ax1, bins=100)\n", "ax1.set_xlabel(\"Number of Words in Article\")\n", "ax1.set_ylabel(\"Number of Articles\")\n", "news[\"log_n_tokens_content\"].hist(ax=ax2, bins=100)\n", "ax2.set_xlabel(\"Log of Number of Words\")\n", "ax2.set_ylabel(\"Number of Articles\");" ] }, { "cell_type": "code", "execution_count": 73, "id": "8dfed8b5-cf59-4186-8f22-39b0013bf844", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.38045297261832045" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# box-cov transform\n", "# again, +1 as boxcox expects data to be positive\n", "# log transform\n", "news[\"n_tokens_content_lmbda0\"] = stats.boxcox(\n", " news[\"n_tokens_content\"] + 1, lmbda=0\n", ")\n", "\n", "# as close to normal distribution as possible (optimal box-cox transform)\n", "# If the lmbda parameter is None, the second returned argument\n", "# is the lambda that maximizes the log-likelihood function.\n", "values, lambda_param = stats.boxcox(news[\"n_tokens_content\"] + 1)\n", "news[\"n_tokens_content_opt\"] = values\n", "lambda_param" ] }, { "cell_type": "code", "execution_count": 74, "id": "792ae313-f920-4ddd-8f2d-d5fd6921ba24", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmQAAANeCAYAAAC8hxLDAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABt8ElEQVR4nO3de3gU5d3/8U/O4VA5CRsoKcrJJ3LQCAGiSCAQAgYQCbEoQkV5gMpBjKIgFSEIiiKxKgoYT7TaFuSkCUpLEKIVEAu4WmMraCQIWQTCOZvDZn5/8GMfIgksIZPZZN+v68p1MZPdme/s7G4+3Pc99/gZhmEIAAAAlvG3ugAAAABfRyADAACwGIEMAADAYgQyAAAAixHIAAAALEYgAwAAsBiBDMBlS0hI0Pbt2y/5uOuuu04//vhjNVRkjunTpys1NbXKtnfgwAFFRkbK5XJV2TYB1A4EMsAHjRo1SlFRUSoqKrrkY8sLJRkZGerevbtZ5Wn16tW66667TNu+Gfvcv3+/rrvuOpWUlJRZf/7r16JFC+3atUsBAQGm1gKg5iGQAT5m//79+uKLL+Tn56fMzMyLPpaWnNrHMAyVlpZaXQaAXyCQAT5m7dq1uuGGG3THHXdo7dq1ZX43ffp0Pfnkk/rf//1f3XjjjXrvvff0wQcf6PXXX1dkZKQmTJggSYqNjdVnn30m6WxoW7Jkifr166fIyEgNGzZMBw8evGC/RUVFWrBggXr37q2bb75Zs2bNktPpvOz69+7dqzFjxqhbt26Kj4/X+vXry9Q/Z84cjRs3TpGRkUpKStK+ffvcv//0008VHx+vLl26aPbs2brnnnu0cuVK7d27V08++aR2796tyMhIde3a1f2cEydOVLi9y/XLVrTVq1erb9++ioyMVGxsrN5///0Kazl58qQeffRR9ejRQ3369NErr7ziDlYul0vPPPOMunfvrtjYWP35z38us59Ro0YpNTVVI0aM0A033KDc3FytWrVKAwcOVGRkpPr27au//vWv7jq3b9+uXr166bXXXlN0dLR69uypjRs3asuWLYqPj1e3bt20ZMmSSr8OAMphAPAp/fr1M/785z8bX331lXH99dcbP//8s/t3jz32mHHTTTcZX3zxheFyuQyn02k89thjxqJFi8pso0+fPsY///lPwzAM47XXXjMGDRpk7N271ygtLTWys7ONo0ePGoZhGO3btzdycnIMwzCMefPmGePHjzfy8/ONkydPGuPHjzcWLlxYbo2rVq0yRowYccH606dPG7169TLee+89o7i42Pj3v/9tdOvWzfjuu+/c9Xfr1s348ssvjeLiYiM5OdmYOnWqYRiGceTIESMyMtLYsGGDUVxcbLz11lvG9ddfb6xYsaLCfV5se7+Um5trtG/f3iguLr5gG+dev/Mfc/r0aSMyMtLYu3evYRiG4XA4jP/+978V1jJt2jRjwoQJxsmTJ43c3Fyjf//+7trfffddY+DAgcbBgweNY8eOGb/73e/K1HLPPfcYMTExxn//+1+juLjYKCoqMj7++GPjxx9/NEpLS43t27cbnTt3Nr7++mvDMAxj27ZtRkREhPHSSy8ZRUVFxt/+9jeje/fuRnJysnHy5Enjv//9r9GpUydj37595b4WAC4fLWSAD/niiy904MABDRw4UB07dlR4eLjS09PLPKZv377q0qWL/P39FRIScsltrly5Ug8++KBat24tPz8//c///I8aNWpU5jGGYWjFihV6/PHH1bBhQ9WvX1/jx49XRkbGZdW/efNm/frXv1ZiYqICAwN1/fXXKz4+Xh999JH7Mf369VPnzp0VGBioIUOGKDs7W5KUlZWldu3aqX///goMDNTo0aN19dVXX3KfFW2vIj169FDXrl3dP798fc/n7++v7777Tk6nU82aNVO7du3KfZzL5dL69ev18MMPq379+mrZsqXGjBmj999/X5L04YcfavTo0QoLC1ODBg00bty4C7Zxxx13qF27dgoMDFRQUJB69+6t3/zmN/Lz81O3bt10yy236IsvvnA/PjAwUL///e8VFBSk2267Tfn5+Ro9erTq16+vdu3aqW3btvrPf/5zydcPgGcCrS4AQPVZu3atbrnlFjVu3FiSNGjQIK1Zs0b33nuv+zHNmze/rG3m5eXpN7/5zUUfc/ToURUUFGjYsGHudUYlxjL99NNPstvtZboUXS6XhgwZ4l4+P2SFhobqzJkzkqRDhw4pLCzM/Ts/P78yyxWpaHsV2bZtmwID/++rdfr06eU+rm7dukpNTdUbb7yhmTNn6qabbtJjjz2mNm3aXPDY/Px8FRcXq0WLFu51LVq0kMPhcB/b+eetvOP65XndsmWLFi9erJycHJWWlsrpdKp9+/bu3zds2NB98UFoaKgkqUmT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U1RUlAYMGKBvvvmm0q8D4K0IZICXePXVV/Xll19q3bp1ev/99/XVV1/plVdekSRlZWXprbfe0ptvvql//OMf2r59e6X3s2PHDq1fv16vv/66JKlXr17asGGDtm7dquuvv/6Crq/169dr0qRJ2rFjh37zm98oNTVVkvTpp5/qiy++0IYNG/Svf/1LL7zwgho2bKgpU6Zo/PjxGjhwoHbt2qWkpCStXr1aa9as0fLly7Vx40adOXOmTPAory673a7rrrtO27dv16BBg5ScnKyvvvpK//jHP/Tcc88pJSVFp0+fliQtXLhQP/zwg9auXau///3vOnTokBYvXux+7d544w298cYb+vvf/66tW7dW6nXbuHGjli5dqpdffllbt25Vly5d9PDDD5d5zObNm/Xee+/p/fff14cffqhPPvlEkrRixQplZWVp3bp1WrNmjTZu3Oh+zkMPPaSuXbtq1qxZ2rVrl2bNmnXJ7V2pNWvW6NSpU9q8ebO2b9+uOXPmKDQ0tNxajh07pvHjx2vUqFHavn27xowZo/Hjxys/P1+S9Mgjj6hz587avn27Jk2apHXr1l2wv8t9z3344YeaOnWqtm3bpuDgYP32t79Vhw4dtG3bNsXHx+vpp5+uktcB8CYEMsBLfPDBB5o4caKaNGmixo0ba+LEiXr//fclnf0DNWzYMLVr10516tTR5MmTK72fyZMnq27dugoNDZUkDR8+XPXr11dwcLAmT56sb7/91t16JUn9+vVT586dFRgYqCFDhig7O1uSFBgYqNOnT+v777+XYRhq06aNmjVrVuGx3XvvvQoPD1e9evWUnJys9evXq6SkpMK6WrZsqcTERAUEBOi2227TwYMHNXHiRAUHB6tnz54KDg7Wvn37ZBiGVqxYoccff1wNGzZU/fr1NX78eHfX7bnXrn379qpbt64mTZpUqdftr3/9q8aNG6c2bdooMDBQEyZMUHZ2dplWsv/93//VVVddpRYtWqh79+769ttv3TWMHj1aYWFhatCggcaNG+fRPivaXnk++ugjde3atcxPRQIDA3Xs2DH9+OOPCggIUMeOHVW/fv1yH7t582a1atVKQ4cOVWBgoAYNGqTWrVvr448/1oEDB/TVV19pypQpCg4OVteuXRUbG3vBNi73PRcXF6eOHTsqJCREcXFxCgkJ0dChQ93vhXPvQaA2oTMf8BKH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8uVWl1PG9u3b1atXL6vLuCgzahw7dqzWrFlTpdsEcCECGVBJsbGx6ty5syIjIxUVFaVx48bp4MGDpuzr1KlTmjdvnnr37q3IyEj169dP8+bN09GjR6tk+wcOHFBkZKT757rrrtONN97oXv7iiy+qZD+XkpaWpu7du2vXrl0aPXp0teyzqlx33XX68ccfa9Q+R40apZUrV5ZZ98tQl5aWpjvuuMP0WgBfRyADrsCSJUu0a9cuffrpp2rSpInmzp1b5fsoKirS7373O+3Zs0dpaWn617/+pb/97W9q2LChvvrqqyrZR4sWLbRr1y73jyStW7fOvdy1a1f3Y0tKSqpkn+U5cOCA2rVrV6nnmlkXrMW5hS8gkAFVICQkRAMGDNDevXvd606ePKlHH31UPXr0UJ8+ffTKK6+otLRUx44dU69evbRp0yZJ0unTpxUXF6e1a9eWu+1169bp4MGDevnll9W2bVv5+/urSZMmmjhxomJiYiRJe/fu1ahRo9S1a1clJCQoMzNTkrRz5051797d3XL37bffKioqqkydl7J69WqNGDFC8+fPV/fu3fXSSy9p3759Gj16tLp3767u3bvr4Ycf1okTJ9zPiY2N1euvv67BgwerS5cumjp1qgoLCyVJR48e1fjx49W1a1d169ZNd999t0pLSzV69Ght375dKSkpioyM1A8//FDha1hRXdOnT9fs2bM1duxYRUZGasSIEfr55581b948RUVFacCAAfrmm2/cdTocDk2ePFk9evRQbGxsmW5Sp9Op6dOnKyoqSrfddlulw29RUZEWLFig3r176+abb9asWbPkdDol/V9r1BtvvKHo6Gj17NlTq1atcj83Pz9fEyZM0E033aTExESlpqbqrrvukiSNHDlSktxdvOvXr3c/r6LtVcb5rWg//vij7rnnHnXp0kXdu3fX1KlTL1rLihUrFBcXp27dumnChAlyOBzu7X766aeKj49Xly5dNHv2bN1zzz3u/VT2PZeWlqbBgwfrxhtv1OOPP67Dhw+73wv33nuvjh8/fkWvBWAqA0Cl9OnTx/jnP/9pGIZhnDlzxnj00UeNadOmuX8/bdo0Y8KECcbJkyeN3Nxco3///saKFSsMwzCMTz75xLj55puNw4cPGzNnzjQmT55c4X6mTp1qPProoxX+vqioyOjXr5/x6quvGoWFhcZnn31m3Hjj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/ft95vjz8vKMPn36GAUFBYZhnP3cr1q1qto//3RZVsBut6tVq1YKDw9XcHCwEhISlJmZaXVZpoqKirrgfz+ZmZkaOnSoJGno0KHauHGjBZVVj2bNmqlDhw6SpPr166t169ZyOBw+8Rr4+fmpXr16kqSSkhKVlJTIz89P27ZtU3x8vCTpjjvuqNWfgby8PG3evFnDhw+XJBmG4VPHXx5feO9L0smTJ7Vjxw73uQ8ODtZVV13lM8d/vq1btyo8PFy//vWvfer4XS6XnE6nSkpK5HQ61bRp02r//BPIKuBwOBQWFuZettlscjgcFlZkjSNHjqhZs2aSpKZNm+rIkSMWV1Q99u/fr+zsbN1www0+8xq4XC7dfvvtuvnmm3XzzTcrPDxcV111lQIDz45sCAsLq9Wfgfnz52vatGny9z/7tZifn+9Txy9J999/v4YNG6a//e1vknzn879//341btxYM2bM0NChQzVz5kydOXPGZ47/fBkZGRo0aJAk3zn/NptN9913n/r06aOePXuqfv366tChQ7V//glk8Jifn5/8/PysLsN0p0+f1pQpU/T444+rfv36ZX5Xm1+DgIAArVu3Tlu2bJHdbtf3339vdUnV5uOPP1bjxo3VsWNHq0uxzF/+8hetWbNGr732mt555x3t2LGjzO9r83u/pKRE33zzje666y6tXbtWderU0bJly8o8pjYf/zlFRUXatGmTBgwYcMHvavPxHz9+XJmZmcrMzNQnn3yigoICffLJJ9VeB4GsAjabTXl5ee5lh8Mhm81mYUXWaNKkiQ4dOiRJOnTokBo3bmxxReYqLi7WlClTNHjwYPXv31+S770GV111lbp3767du3frxIkTKikpkXS2S6+2fgZ27typTZs2KTY2VsnJydq2bZvmzZvnM8cvyX1sTZo0UVxcnOx2u8+898PCwhQWFqYbbrhBkjRgwAB98803PnP852RlZalDhw66+uqrJfnOd99nn32mli1bqnHjxgoKClL//v21c+fOav/8E8gq0KlTJ+Xk5Cg3N1dFRUXKyMhQbGys1WVVu9jYWK1du1aStHbtWvXt29fagkxkGIZmzpyp1q1ba8yYMe71vvAaHD16VCdOnJAkOZ1OffbZZ2rTpo26d++uDRs2SJLWrFlTaz8DDz/8sLKysrRp0yYtWrRIPXr00PPPP+8zx3/mzBmdOnXK/e9//vOfateunU+896Wz3XFhYWHuVuGtW7eqTZs2PnP852RkZCghIcG97CvH36JFC3355ZcqKCiQYRjaunWr2rZtW+2ffz/DMAxT91CDbdmyRfPnz3dfCv/73//e6pJMlZycrM8//1z5+flq0qSJJk+erH79+mnq1Kk6ePCgWrRooRdeeEENGza0ulRTfPHFFxo5cqTat2/vHkeUnJyszp071/rX4Ntvv9X06dPlcrlkGIYGDBigSZMmKTc3Vw899JCOHz+uiIgILVy4sNZO+3DO9u3b9cYbb7invfCF48/NzdXEiRMlnR1LOGjQIP3+979Xfn5+rX/vn5Odna2ZM2equLhY4eHhevrpp1VaWuozx3/mzBn16dNHGzdu1K9+9StJ8qnz/+KLL2r9+vUKDAxURESE5s2bJ4fDUa2ffwIZAACAxeiyBAAAsBiBDAAAwGIEMgAAAIsRyAAAACxGIAMAALAYgQwAAMBiBDIAAACL/T+399dn8tdviwAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, (ax1, ax2, ax3) = plt.subplots(3, 1, figsize=(10, 15))\n", "\n", "news[\"n_tokens_content\"].hist(ax=ax1, bins=100)\n", "ax1.set_yscale(\"log\")\n", "ax1.set_title(\"Article Length Histogram\")\n", "ax1.set_xlabel(\"\")\n", "ax1.set_ylabel(\"Occurrence\")\n", "\n", "news[\"n_tokens_content_lmbda0\"].hist(ax=ax2, bins=100)\n", "ax2.set_yscale(\"log\")\n", "ax2.set_title(\"Log Transformed Length Histogram\")\n", "ax2.set_xlabel(\"\")\n", "ax2.set_ylabel(\"Occurrence\")\n", "\n", "news[\"n_tokens_content_opt\"].hist(ax=ax3, bins=100)\n", "ax3.set_yscale(\"log\")\n", "ax3.set_title(\"Box-Cox Transformed Length Histogram\")\n", "ax3.set_xlabel(\"\")\n", "ax3.set_ylabel(\"Occurrence\");" ] }, { "cell_type": "markdown", "id": "d978ee33-f2e4-4941-a369-f053466316de", "metadata": {}, "source": [ "### Discretization" ] }, { "cell_type": "markdown", "id": "7be77ad3-8608-4577-a57c-6bf757a9e75a", "metadata": {}, "source": [ "In a first step, we will look at synthetic count data: we create uniformly distributed random counts (once small values, once with a wide range)." ] }, { "cell_type": "code", "execution_count": 75, "id": "a72e595e-dbf2-4247-b9cc-4a258ea6e3a6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([88, 4, 54, 78, 45, 57, 98, 23, 17, 40, 5, 3, 5, 13, 70, 3, 62,\n", " 74, 26, 42])" ] }, "execution_count": 75, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# uniformly distributed, small values\n", "small_counts = np.random.randint(0, 100, 20)\n", "small_counts" ] }, { "cell_type": "code", "execution_count": 76, "id": "82b66c99-f869-4330-a93e-522ec78ea7b2", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([8, 0, 5, 7, 4, 5, 9, 2, 1, 4, 0, 0, 0, 1, 7, 0, 6, 7, 2, 4])" ] }, "execution_count": 76, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# fixed width binning by division\n", "np.floor_divide(small_counts, 10)" ] }, { "cell_type": "code", "execution_count": 77, "id": "70968305-2047-46fe-a71c-ea4e87d2fe1e", "metadata": {}, "outputs": [], "source": [ "# counts spanning a wide value range\n", "large_counts = [\n", " 296,\n", " 8286,\n", " 64011,\n", " 80,\n", " 3,\n", " 725,\n", " 867,\n", " 2215,\n", " 7689,\n", " 11495,\n", " 91897,\n", " 44,\n", " 28,\n", " 7971,\n", " 926,\n", " 122,\n", " 22222,\n", "]" ] }, { "cell_type": "code", "execution_count": 78, "id": "03396b9f-c3bb-4f18-8930-30253bf4470b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([2., 3., 4., 1., 0., 2., 2., 3., 3., 4., 4., 1., 1., 3., 2., 2., 4.])" ] }, "execution_count": 78, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# fixed width binning via powers of 10 (0-9, 10-99, 100-999, 1000-999, etc.)\n", "np.floor(np.log10(large_counts))" ] }, { "cell_type": "markdown", "id": "be6e9522-b474-4d1e-8a90-3952acceae56", "metadata": {}, "source": [ "In the next step, we look at quantile binning to avoid empty bins." ] }, { "cell_type": "code", "execution_count": 79, "id": "09f2515a-439a-40f9-a350-dffeda1b27a0", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.1 2.0\n", "0.2 5.0\n", "0.3 8.0\n", "0.4 13.0\n", "0.5 21.0\n", "0.6 34.0\n", "0.7 56.0\n", "0.8 104.0\n", "0.9 230.0\n", "Name: rating, dtype: float64" ] }, "execution_count": 79, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# compute 10 deciles\n", "deciles = rating_counts.quantile([0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])\n", "deciles" ] }, { "cell_type": "code", "execution_count": 80, "id": "3c6a23d2-0fb2-4e87-b158-9833176856cf", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "movieID\n", "1 (230.0, 1670.0]\n", "2 (230.0, 1670.0]\n", "3 (230.0, 1670.0]\n", "4 (34.0, 56.0]\n", "5 (104.0, 230.0]\n", " ... \n", "65088 (0.999, 2.0]\n", "65091 (0.999, 2.0]\n", "65126 (0.999, 2.0]\n", "65130 (0.999, 2.0]\n", "65133 (2.0, 5.0]\n", "Name: rating, Length: 10109, dtype: category\n", "Categories (10, interval[float64, right]): [(0.999, 2.0] < (2.0, 5.0] < (5.0, 8.0] < (8.0, 13.0] ... (34.0, 56.0] < (56.0, 104.0] < (104.0, 230.0] < (230.0, 1670.0]]" ] }, "execution_count": 80, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# actually use deciles to bin data\n", "pd.qcut(rating_counts, 10)" ] }, { "cell_type": "code", "execution_count": 81, "id": "fe53b730-6fe8-41b4-b70d-0eec41627b10", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0.5, 0, 'Review Count (log)')" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0, 0.5, 'Occurrence (log)')" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0.5, 0, 'Review Count (log)')" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0, 0.5, 'Occurrence (log)')" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0.5, 0, 'Review Count (log)')" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0, 0.5, 'Occurrence (log)')" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0.5, 0, 'Review Count (log)')" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0, 0.5, 'Occurrence (log)')" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0.5, 0, 'Review Count (log)')" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0, 0.5, 'Occurrence (log)')" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0.5, 0, 'Review Count (log)')" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0, 0.5, 'Occurrence (log)')" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0.5, 0, 'Review Count (log)')" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0, 0.5, 'Occurrence (log)')" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0.5, 0, 'Review Count (log)')" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0, 0.5, 'Occurrence (log)')" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0.5, 0, 'Review Count (log)')" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0, 0.5, 'Occurrence (log)')" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Visualize the deciles on the histogram\n", "sns.set_style(\"white\")\n", "fig, ax = plt.subplots()\n", "rating_counts.hist(ax=ax, bins=100)\n", "for pos in deciles:\n", " handle = plt.axvline(pos, color=\"r\")\n", " ax.legend([handle], [\"deciles\"])\n", " ax.set_yscale(\"log\")\n", " ax.set_xscale(\"log\")\n", " ax.set_xlabel(\"Review Count (log)\")\n", " ax.set_ylabel(\"Occurrence (log)\");" ] }, { "cell_type": "code", "execution_count": 82, "id": "752c20ea-849a-4c99-886f-4c202214f0d9", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0.5, 0, 'Review Count (log)')" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0, 0.5, 'Occurrence')" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0.5, 0, 'Review Count (log)')" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0, 0.5, 'Occurrence')" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0.5, 0, 'Review Count (log)')" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0, 0.5, 'Occurrence')" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0.5, 0, 'Review Count (log)')" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0, 0.5, 'Occurrence')" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0.5, 0, 'Review Count (log)')" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0, 0.5, 'Occurrence')" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0.5, 0, 'Review Count (log)')" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0, 0.5, 'Occurrence')" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0.5, 0, 'Review Count (log)')" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0, 0.5, 'Occurrence')" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0.5, 0, 'Review Count (log)')" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0, 0.5, 'Occurrence')" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0.5, 0, 'Review Count (log)')" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0, 0.5, 'Occurrence')" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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pHg7XmJiInJycvDDDz8AAAYNGoS0tDQAgJeXF5588kmEh4fDxsYGycnJsLGxMXnd1dXVSEhIAABotVpERkYiMDAQvr6+WLFiBT766CM89NBDePPNNwE0T4989OhRhIaGwtHREa+//rrJawaaA+/bb78VjycAbNiwQXHHOjExEUVFRaipqUFgYCCWLl2KZ5991qBje++99+KFF17AnDlzAAAJCQm49957TVrztm3boNFoxD+QHnnkEaSlpeHkyZPYvHkzbG1tYW1tjdTUVLG21157DUlJSVCr1QgMDGzTj2KquouKigz+Tpj6d0xHdcfFxeHQoUNt/kgCYPTjzaHgiYhIsl53OYuIiIyHIUJERJIxRIiISDKGCBERScYQISIiyRgipGje3t6IiYlBZGQknnvuOXHkV0P94x//wLfffmvU2o4ePYrY2FiEh4dj5syZsjzJ/O6776K+vr7T95ctW4aKigoAzc8t3LhxQ9J+1q1bh2PHjknalno3hggpmoODA7Kzs5GTk4P+/ftj9+7dktpZvnw5Hn/8caPV9eOPP2LNmjXYsGEDDh06hP3792Pw4MFGa7/Frl27Og2Rc+fOQavVwsPDo9v7WbBgAd55551ut0O9D0OELMa4cePEAeEuXbokDvg4f/58XLhwAbdv38a0adOg0+kAND9MGBQUhMbGRqxcuRKffvopgOY5ExYsWIDY2FjEx8fj2rVrqK6uFudB+eGHH/Dwww/jypUrAIDp06e3+0WemZmJ5557Dp6engAAGxsbzJ8/H0Dz4HaLFi1CVFQUnnnmGbGd1jUAwKOPPgoAOHHiBBYuXIhly5bhiSeewIsvvghBELBr1y5cu3YNzzzzDBYuXNjueHzyySedPlG8Y8cOREZGIjIyEu+++664/K233kJYWBjmzZuHxMREbN++HUDzQ3Q3b97E9evX9f3nIALAECELodVqcezYMXH4iNWrV2P16tU4cOAAXn75ZaSmpqJfv34YNWoUioqKAAAFBQUICAiAnZ2d2E5jYyPS09OxefNmHDhwALNnz8amTZvg4uKChoYG1NbWori4GGPGjEFxcTEuX74MFxeXNsN0AM1nAWPGjOmw1vT0dMyaNQuffPIJoqKikJ6eftfP9/3332PVqlU4dOgQKisrcerUKSxatAiurq7YuXMn3nvvvXbbnD59Wpw6oLXS0lIcOHAAe/fuxYcffoh9+/bh+++/h0qlwueff46PP/4Y77zzDkpLS9tsN3r0aJw+ffqutRK11uuGPSHLolarERMTg6qqKnh6emLy5Mm4c+cOSkpKsHz5cnE9jUYDAAgPD8ehQ4cwadIk5ObmimcHLcrLy/Hjjz+KQ2/odDo88MADAJrPDE6dOoWTJ0/iueeew1dffQVBEDB+/HiDai4pKcGWLVsAADExMdiwYcNdtxk7dqw4vtGoUaNw+fJlTJgwocttrl+/Lg682NqpU6cwffp0ODk5AQBCQ0NRXFwMnU6HkJAQ9OnTB3369MG0adPabNd6UEcifTFESNFa+kTq6+sRHx+P3bt3IzY2Fvfccw+ys7PbrR8cHIxNmzbh5s2bOHv2LCZNmtTmfUEQ4OXlJc550tqECRNw6tQpXLlyBSEhIWIfwdSpU9utO2LECJSWlmLUqFF6fxYbGxvxUptOp0NjY6P4nr29fZv1WgbI60qfPn3Q0NCg9/7vpqGhAQ4ODkZrj3oHXs4ii+Do6IhXX30VO3bsgIODA9zd3XH48GEAzcHQMkCes7MzxowZg7/97W+YOnVqu0EShw0bhhs3bqCkpARA8+Wtc+fOAWgOkY8//hhDhgyBtbU1+vfvj8LCwg7PROLj47F161aUl5cDaA6FPXv2AGg+o8nNzQXQ3G/RckYxaNAgcc7zL774ok2IdMbZ2Rl37tzp8D1PT09cunSp3fIJEyYgLy8P9fX1qKurQ15eHiZMmIDHHnsMX375JRoaGnDnzh0UFBS02e7ixYuKGYyULAfPRMhijB49Gg8//DBycnKwYcMGpKSkICMjA01NTQgPDxfPCsLDw7F8+fIO+xHs7e2xefNmpKen4/bt29BqtXjmmWfg5eUFd3d3CIIAPz8/AMD48eNx9erVDqcdHTVqFFatWoUXX3wR9fX1sLKyEs9YVq9ejaSkJGzfvh33338/1q5dCwB46qmn8MILLyA6OhpTpkwRLzd15amnnsKSJUvg6ura7vMEBQXhxIkT7e468/HxQWxsLOLi4gAAc+bMwejRowE0n6lFR0fDxcUFI0eORL9+/QA0h+nPP//caT8PUWc4ii+RhVKr1Vi0aBH27Nmj97D0d+7cgbOzM+rr6/H0009jzZo18PHxwZEjR3D27FmsWLFC3qKpx+GZCJGFcnBwwNKlS1FVVYWHHnpIr22Sk5Nx/vx5NDQ0YNasWeLdXU1NTfjzn/8sZ7nUQ/FMhIiIJGPHOhERScYQISIiyRgiREQkGUOEiIgkY4gQEZFk/wcD0lc7etlfvgAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Visualize the deciles on the histogram - now with x-axis not on log scale\n", "sns.set_style(\"white\")\n", "fig, ax = plt.subplots()\n", "rating_counts.hist(ax=ax, bins=100)\n", "for pos in deciles:\n", " handle = plt.axvline(pos, color=\"r\")\n", " ax.legend([handle], [\"deciles\"])\n", " ax.set_yscale(\"log\")\n", " ax.set_xlabel(\"Review Count (log)\")\n", " ax.set_ylabel(\"Occurrence\");" ] }, { "cell_type": "markdown", "id": "2154d441-f801-4276-ae79-d9b69b247ffa", "metadata": {}, "source": [ "### Discretization: Clustering" ] }, { "cell_type": "markdown", "id": "1aaed8c0-d909-4bc4-992e-053d8af6cf65", "metadata": {}, "source": [ "In the following, we will dive into clustering algorithms based on a synthetic data set randomly created." ] }, { "cell_type": "code", "execution_count": 83, "id": "efc4e87c-3afb-40b5-bc6c-399b934c87c3", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "X, y_true = make_blobs(\n", " n_samples=500, centers=4, cluster_std=0.6, random_state=0\n", ")\n", "plt.scatter(X[:, 0], X[:, 1], s=50)\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"y\");" ] }, { "cell_type": "markdown", "id": "84e4f7eb-8915-4dc5-a88c-a2b139938c50", "metadata": {}, "source": [ "Now we can compute k-means and also experiment with the number of clusters to be chosen." ] }, { "cell_type": "code", "execution_count": 84, "id": "fd875714-cc16-4f7b-8955-3cec153fbfb6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "KMeans(init='random', max_iter=200, n_clusters=4)" ] }, "execution_count": 84, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# compute kmeans, repeat 10 times\n", "# init could also be 'kmeans++'\n", "kmeans = KMeans(n_clusters=4, init=\"random\", n_init=10, max_iter=200)\n", "kmeans.fit(X)\n", "y_kmeans = kmeans.predict(X)" ] }, { "cell_type": "code", "execution_count": 85, "id": "7d0caecc-89cb-4541-9d8c-ed636943cdf2", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# visualize results\n", "plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, s=50, cmap=\"Set1\")\n", "centers = kmeans.cluster_centers_\n", "plt.scatter(centers[:, 0], centers[:, 1], c=\"black\", s=200, alpha=0.5);" ] }, { "cell_type": "markdown", "id": "2f30522f-a728-4278-bc9f-291c0d269ac8", "metadata": {}, "source": [ "For determining the number of clusters k, we can compute the sum of squared errors of each point to their closest cluster center for different k." ] }, { "cell_type": "code", "execution_count": 86, "id": "6e19fa6c-f455-4055-87af-9d2a4b5c37ae", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# calculate sum of squared errors for different k\n", "k_candidates = range(1, 10)\n", "sse = []\n", "for i in k_candidates:\n", " km = KMeans(n_clusters=i, init=\"random\", n_init=20, max_iter=200)\n", " km.fit(X)\n", " sse.append(km.inertia_)\n", "\n", "# plot\n", "plt.plot(k_candidates, sse, marker=\"o\")\n", "plt.xlabel(\"Number of clusters\")\n", "plt.ylabel(\"Distortion\")\n", "plt.show();" ] }, { "cell_type": "markdown", "id": "84bf2b4f-cf67-493d-8ae3-c3e34825f172", "metadata": {}, "source": [ "The following example decomposes k-means into the expectation and the maximization steps (taken from DSHandbook):" ] }, { "cell_type": "code", "execution_count": 87, "id": "6a3414b0-a14d-4279-bc21-06ffe74382d6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.98, 0.98, 'Random Initialization')" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0.4967141530112327, 3.861735698828815, '')" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0.6476885381006925, 5.523029856408026, '')" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(-0.23415337472333597, 3.7658630430508193, '')" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(1.5792128155073915, 4.7674347291529084, '')" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0.95, 0.95, 'E-Step')" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0.95, 0.95, 'M-Step')" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(1.617884036481574, 1.7302164268618159, '')" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(-1.05544831815144, 7.31289000117005, '')" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(-1.5304909178700825, 2.8944167383856816, '')" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(1.5802860667196599, 4.421012702817745, '')" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0.95, 0.95, 'E-Step')" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0.95, 0.95, 'M-Step')" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(1.9825828101483296, 0.8677131436145118, '')" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(-1.3732439791827424, 7.75368870941779, '')" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(-1.570847026766382, 2.8553540230789376, '')" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0.9700766645513808, 4.415327315087125, '')" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0.95, 0.95, 'E-Step')" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0.95, 0.95, 'M-Step')" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0.98, 0.98, 'Final Clustering')" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "X, y_true = make_blobs(\n", " n_samples=300, centers=4, cluster_std=0.60, random_state=0\n", ")\n", "\n", "rng = np.random.RandomState(42)\n", "centers = [0, 4] + rng.randn(4, 2)\n", "\n", "\n", "def draw_points(ax, c, factor=1):\n", " ax.scatter(X[:, 0], X[:, 1], c=c, cmap=\"inferno\", s=50 * factor, alpha=1)\n", "\n", "\n", "def draw_centers(ax, centers, factor=1, alpha=1.0):\n", " ax.scatter(\n", " centers[:, 0],\n", " centers[:, 1],\n", " c=np.arange(4),\n", " cmap=\"inferno\",\n", " s=200 * factor,\n", " alpha=alpha,\n", " )\n", " ax.scatter(\n", " centers[:, 0], centers[:, 1], c=\"black\", s=50 * factor, alpha=alpha\n", " )\n", "\n", "\n", "def make_ax(fig, gs):\n", " ax = fig.add_subplot(gs)\n", " ax.xaxis.set_major_formatter(plt.NullFormatter())\n", " ax.yaxis.set_major_formatter(plt.NullFormatter())\n", " return ax\n", "\n", "\n", "fig = plt.figure(figsize=(15, 4))\n", "gs = plt.GridSpec(\n", " 4, 15, left=0.02, right=0.98, bottom=0.05, top=0.95, wspace=0.2, hspace=0.2\n", ")\n", "ax0 = make_ax(fig, gs[:4, :4])\n", "ax0.text(\n", " 0.98,\n", " 0.98,\n", " \"Random Initialization\",\n", " transform=ax0.transAxes,\n", " ha=\"right\",\n", " va=\"top\",\n", " size=16,\n", ")\n", "draw_points(ax0, \"gray\", factor=2)\n", "draw_centers(ax0, centers, factor=2)\n", "\n", "for i in range(3):\n", " ax1 = make_ax(fig, gs[:2, 4 + 2 * i : 6 + 2 * i])\n", " ax2 = make_ax(fig, gs[2:, 5 + 2 * i : 7 + 2 * i])\n", "\n", " # E-step\n", " y_pred = pairwise_distances_argmin(X, centers)\n", " draw_points(ax1, y_pred)\n", " draw_centers(ax1, centers)\n", "\n", " # M-step\n", " new_centers = np.array([X[y_pred == i].mean(0) for i in range(4)])\n", " draw_points(ax2, y_pred)\n", " draw_centers(ax2, centers, alpha=0.3)\n", " draw_centers(ax2, new_centers)\n", " for i in range(4):\n", " ax2.annotate(\n", " \"\",\n", " new_centers[i],\n", " centers[i],\n", " arrowprops=dict(arrowstyle=\"->\", linewidth=1),\n", " )\n", "\n", " # Finish iteration\n", " centers = new_centers\n", " ax1.text(\n", " 0.95,\n", " 0.95,\n", " \"E-Step\",\n", " transform=ax1.transAxes,\n", " ha=\"right\",\n", " va=\"top\",\n", " size=14,\n", " )\n", " ax2.text(\n", " 0.95,\n", " 0.95,\n", " \"M-Step\",\n", " transform=ax2.transAxes,\n", " ha=\"right\",\n", " va=\"top\",\n", " size=14,\n", " )\n", "\n", "\n", "# Final E-step\n", "y_pred = pairwise_distances_argmin(X, centers)\n", "axf = make_ax(fig, gs[:4, -4:])\n", "draw_points(axf, y_pred, factor=2)\n", "draw_centers(axf, centers, factor=2)\n", "axf.text(\n", " 0.98,\n", " 0.98,\n", " \"Final Clustering\",\n", " transform=axf.transAxes,\n", " ha=\"right\",\n", " va=\"top\",\n", " size=16,\n", ")" ] }, { "cell_type": "code", "execution_count": 88, "id": "eecbf7a6-5cb8-4373-a6f2-ce9f744b38c9", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "DBSCAN()" ] }, "execution_count": 88, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# compute kmeans, repeat 10 times\n", "# init could also be 'kmeans++'\n", "dbscan = DBSCAN(eps=0.5, min_samples=5)\n", "dbscan.fit(X)\n", "y_dbscan = dbscan.labels_" ] }, { "cell_type": "code", "execution_count": 89, "id": "4b6bf319-81c4-40b1-b9a8-ebefd7bcc9e0", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 89, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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li00a9asvM0KSoUS6s8//zys8wYPHsytt95aoYS6MNsnT57Mv//+y+eff16hXrPC/c4rOomJiQVcSsnJySQmJpajRWcGHo+HMWPGMHjwYPr371/e5hSZ2NhYunTpwrx58yq0UFcaH/WuXbvy/jxr1qxK4zsFMxrhk08+4f333yciIqK8zTktadOmDbt27WLv3r243W7++OMPzj///PI267RGCMFjjz1Go0aNGDVqVHmbEzZHjx7Ni7xyOp0sWLCgwutJpamed/fdd7Nz504URSEpKYmnn3660qyY+vXrh9vtJj4+HoB27drxzDPPlK9RYTBz5kyeffZZjh49SmxsLC1btuTTTz8tb7OCMmfOHF544QV0Xeeyyy7j9ttvL2+TwuK+++5jyZIlHDt2jKpVq3L33XdzxRVXlLdZhbJs2TKGDx9Os2bNUFVzzXfffffRq1evcrYsNJs2beLhhx9G13WEEAwcOJC77rqrvM0KSaURaolEIjlTqTSuD4lEIjlTkUItkUgkFRwp1BKJRFLBkUItkUgkFRwp1BKJRFLBkUItkUgkFRwp1BKJRFLB+T8YA1dqI/9acgAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# visualize results\n", "plt.scatter(X[:, 0], X[:, 1], c=y_dbscan, s=50, cmap=\"inferno\")" ] }, { "cell_type": "markdown", "id": "c118aedd-677f-43f5-87f4-5dca871843d9", "metadata": {}, "source": [ "### Text Data Features" ] }, { "cell_type": "markdown", "id": "5183ed93-0ca5-44ee-8928-8ce8d1abf5aa", "metadata": {}, "source": [ "In the following, we will look at different representations of text and feature extraction methods for text. We will make use of the Yelp Dataset (https://www.kaggle.com/yelp-dataset/yelp-dataset): \"This dataset is a subset of Yelp's businesses, reviews, and user data. It was originally put together for the Yelp Dataset Challenge which is a chance for students to conduct research or analysis on Yelp's data and share their discoveries. In the most recent dataset you'll find information about businesses across 8 metropolitan areas in the USA and Canada.\" This example is adapted from the FeatEng book." ] }, { "cell_type": "code", "execution_count": 90, "id": "b0218975-9c55-4953-bcc5-816ed530c252", "metadata": {}, "outputs": [], "source": [ "# read in review data\n", "# restrict to first 5000 reviews\n", "with open(os.path.join(data_dir, \"yelp_academic_dataset_review.json\")) as fh:\n", " lines_read = 0\n", " data = []\n", " for line in fh:\n", " data.append(json.loads(line))\n", " lines_read += 1\n", " if lines_read == 5000:\n", " break\n", "reviews = pd.DataFrame(data)" ] }, { "cell_type": "code", "execution_count": 91, "id": "7e6dede3-d6a1-4ad8-ab55-2f6dabae4456", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 5000 entries, 0 to 4999\n", "Data columns (total 9 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 review_id 5000 non-null object \n", " 1 user_id 5000 non-null object \n", " 2 business_id 5000 non-null object \n", " 3 stars 5000 non-null float64\n", " 4 useful 5000 non-null int64 \n", " 5 funny 5000 non-null int64 \n", " 6 cool 5000 non-null int64 \n", " 7 text 5000 non-null object \n", " 8 date 5000 non-null object \n", "dtypes: float64(1), int64(3), object(5)\n", "memory usage: 351.7+ KB\n" ] } ], "source": [ "reviews.info()" ] }, { "cell_type": "code", "execution_count": 92, "id": "d5cb54db-4e22-42d5-822e-12a78cbdb53d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3614 One star because I had to, and because pretty tile. I paid extra for express delivery. Not only was not delivered express, delivery deadline was postponed twice. Tile setter is waiting for two weeks, entire job deadline getting pushed back. NOT HAPPY. Someone dropped the ball in a big way and only my rep at Great Floors seems interested in making it right. Suggest them only if you don't need special order or anything shipped.\n", "Name: text, dtype: object" ] }, "execution_count": 92, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# inspect single review\n", "pd.set_option(\"display.max_colwidth\", None)\n", "reviews.sample(1)[\"text\"]" ] }, { "cell_type": "code", "execution_count": 93, "id": "48fb9b9c-9281-4d23-950d-e7a006c5d3da", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "<5000x19525 sparse matrix of type ''\n", "\twith 371018 stored elements in Compressed Sparse Row format>" ] }, "execution_count": 93, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# extract bag-of-words\n", "bow_converter = text.CountVectorizer(token_pattern=\"(?u)\\\\b\\\\w+\\\\b\")\n", "bow = bow_converter.fit_transform(reviews[\"text\"])\n", "bow" ] }, { "cell_type": "code", "execution_count": 94, "id": "3e2f80ad-3cee-4b79-91af-a9556eb71456", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['0', '00', '000', '00am', '00pm', '01', '02', '05', '07', '08'],\n", " dtype=object)" ] }, "execution_count": 94, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "array(['cancelling', 'seized', 'consignment', 'soooooo', 'loudly',\n", " 'efficacy', 'kenny', 'knots', 'eh', 'thatneverhappened', 'styling',\n", " 'bellboys', 'mangoes', 'standard', 'suhang', 'association',\n", " 'tuning', 'believer', 'fabrics', 'gunk'], dtype=object)" ] }, "execution_count": 94, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# bow returns a sparse matrix, extract feature name mapping\n", "words = bow_converter.get_feature_names_out()\n", "words[:10]\n", "np.random.choice(words, 20)" ] }, { "cell_type": "code", "execution_count": 95, "id": "133ff6b7-6dbc-4872-8aa9-c5da2b248d52", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "19525" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# size of vocabulary\n", "len(words)" ] }, { "cell_type": "code", "execution_count": 96, "id": "5ab802f5-0881-4725-8c14-280d18369358", "metadata": {}, "outputs": [], "source": [ "# extract bag-of-bigrams\n", "bigram_converter = text.CountVectorizer(\n", " ngram_range=(2, 2), token_pattern=\"(?u)\\\\b\\\\w+\\\\b\"\n", ")\n", "bob = bigram_converter.fit_transform(reviews[\"text\"])" ] }, { "cell_type": "code", "execution_count": 97, "id": "6b032c40-dde6-43eb-ae7c-06026f154dbf", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['0 1', '0 2', '0 25', '0 30', '0 4', '0 40', '0 50', '0 9mi',\n", " '0 books', '0 environment'], dtype=object)" ] }, "execution_count": 97, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "array(['garden area', 'beautiful each', 'renovation bigger',\n", " 'chili holliadaise', 'anyway she', 'darn the', 'everyday on',\n", " 'end mattresses', 'always punctual', 'really messy', 'box for',\n", " 'treatment is', 'those of', 'our tuxedo', 'trying one', 'heart if',\n", " 'nutella milkshake', 'sandwich he', 'picky customer', 'room but'],\n", " dtype=object)" ] }, "execution_count": 97, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# extract feature name mapping\n", "bigrams = bigram_converter.get_feature_names_out()\n", "bigrams[:10]\n", "np.random.choice(bigrams, 20)" ] }, { "cell_type": "code", "execution_count": 98, "id": "c28ea5e6-a868-45ac-a655-89972a8e0570", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "193577" ] }, "execution_count": 98, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# size of bigram vocabulary\n", "len(bigrams)" ] }, { "cell_type": "code", "execution_count": 41, "id": "5ac88c2a-293c-46fb-b774-3b9bb8881bb1", "metadata": {}, "outputs": [], "source": [ "# extract bag-of-trirams\n", "trigram_converter = text.CountVectorizer(\n", " ngram_range=(3, 3), token_pattern=\"(?u)\\\\b\\\\w+\\\\b\"\n", ")\n", "bot = trigram_converter.fit_transform(reviews[\"text\"])" ] }, { "cell_type": "code", "execution_count": 42, "id": "b1f59230-c2f2-4db6-a53e-44949f27fbbb", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['0 1 stars', '0 25 oysters', '0 30 possible', '0 4 miles',\n", " '0 40 oz', '0 50 for', '0 9mi 22min', '0 books on',\n", " '0 environment 5', '0 i would'], dtype=object)" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "array(['great the show', 'cool small pub', 'broad as i',\n", " 'of rice everything', 'was last able', 'gotten so popular',\n", " 'the blueberries pancakes', 'raising a brow', 'the crowd seems',\n", " 'few years now', 'like mehdi and', 'from bad this', 'did from the',\n", " 'requests she asked', 'back she noticed', '700 different species',\n", " 'find another japanese', 'give people a', 'male staffers that',\n", " 'parm subs the'], dtype=object)" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# extract feature name mapping\n", "trigrams = trigram_converter.get_feature_names_out()\n", "trigrams[:10]\n", "np.random.choice(trigrams, 20)" ] }, { "cell_type": "code", "execution_count": 43, "id": "8ac01cd6-cd4f-4059-b5ed-77ebf93fa4eb", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "409449" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# size of trigram vocabulary\n", "len(trigrams)" ] }, { "cell_type": "code", "execution_count": 44, "id": "a1b15405-3461-4002-b7b8-443707e19739", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# compare vocabulary size of uni, bi, and trigrams\n", "sns.set_style(\"whitegrid\")\n", "counts = [len(words), len(bigrams), len(trigrams)]\n", "plt.plot(counts)\n", "plt.plot(counts, \"bo\")\n", "plt.margins(0.1)\n", "plt.xticks(range(3), [\"unigram\", \"bigram\", \"trigram\"])\n", "plt.title(\"Number of ngrams in the first 5,000 reviews of the Yelp dataset\")\n", "plt.show();" ] }, { "cell_type": "code", "execution_count": 58, "id": "6c4e24b0-b2b7-4401-a3f3-bc22d7bc0c1b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(5000, 193577)\n" ] }, { "data": { "text/plain": [ "array(['x0', 'x1', 'x2', ..., 'x193574', 'x193575', 'x193576'],\n", " dtype=object)" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create the tf-idf representation using the bag-of-words matrix\n", "tfidf_transformer = text.TfidfTransformer(norm=None, use_idf=True)\n", "tf_idf = tfidf_transformer.fit_transform(bob)\n", "tfidf_transformer.get_feature_names_out()\n", "print(tf_idf.shape)" ] }, { "cell_type": "markdown", "id": "ad5dcf0a-c279-4295-b138-73b3857d4f95", "metadata": {}, "source": [ "### Categorical Features" ] }, { "cell_type": "markdown", "id": "3ff4d805-993f-483a-a211-4befd6b2e1b3", "metadata": {}, "source": [ "The following example showcases encoding of categorical variables (dataset and code adapted from FeatEng)." ] }, { "cell_type": "code", "execution_count": 108, "id": "bdf41196-1783-4f87-bb3c-551c4cb8369a", "metadata": {}, "outputs": [], "source": [ "# renting data per city\n", "rent_data = pd.DataFrame(\n", " {\n", " \"City\": [\n", " \"SF\",\n", " \"SF\",\n", " \"SF\",\n", " \"NYC\",\n", " \"NYC\",\n", " \"NYC\",\n", " \"Seattle\",\n", " \"Seattle\",\n", " \"Seattle\",\n", " ],\n", " \"Rent\": [3999, 4000, 4001, 3499, 3500, 3501, 2499, 2500, 2501],\n", " }\n", ")" ] }, { "cell_type": "code", "execution_count": 109, "id": "50eb31c9-3d47-439f-b07e-1e37b0b4ddf0", "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", "
CityRent
0SF3999
1SF4000
2SF4001
3NYC3499
4NYC3500
5NYC3501
6Seattle2499
7Seattle2500
8Seattle2501
\n", "
" ], "text/plain": [ " City Rent\n", "0 SF 3999\n", "1 SF 4000\n", "2 SF 4001\n", "3 NYC 3499\n", "4 NYC 3500\n", "5 NYC 3501\n", "6 Seattle 2499\n", "7 Seattle 2500\n", "8 Seattle 2501" ] }, "execution_count": 109, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "3333.3333333333335" ] }, "execution_count": 109, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# inspect data\n", "rent_data\n", "rent_data[\"Rent\"].mean()" ] }, { "cell_type": "code", "execution_count": 110, "id": "7ca30c5f-8169-4fbc-a5bd-3c62569428a8", "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", "
Rentcity_NYCcity_SFcity_Seattle
03999010
14000010
24001010
33499100
43500100
53501100
62499001
72500001
82501001
\n", "
" ], "text/plain": [ " Rent city_NYC city_SF city_Seattle\n", "0 3999 0 1 0\n", "1 4000 0 1 0\n", "2 4001 0 1 0\n", "3 3499 1 0 0\n", "4 3500 1 0 0\n", "5 3501 1 0 0\n", "6 2499 0 0 1\n", "7 2500 0 0 1\n", "8 2501 0 0 1" ] }, "execution_count": 110, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# convert categorical variable (city) to one-hot-encoding\n", "one_hot_rent = pd.get_dummies(rent_data, prefix=[\"city\"])\n", "one_hot_rent" ] }, { "cell_type": "code", "execution_count": 111, "id": "fc9043a5-24bd-453c-8914-5222729175b8", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "LinearRegression()" ] }, "execution_count": 111, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "array([ 166.66666667, 666.66666667, -833.33333333])" ] }, "execution_count": 111, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "3333.3333333333335" ] }, "execution_count": 111, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# fit a linear regression model\n", "# y = w1x1 + ... + wnxn + b\n", "lin_reg = linear_model.LinearRegression()\n", "lin_reg.fit(\n", " one_hot_rent[[\"city_NYC\", \"city_SF\", \"city_Seattle\"]], one_hot_rent[\"Rent\"]\n", ")\n", "\n", "# inspect regression coefficients (y = w1x1 + ... + wnxn + b)\n", "# for one-hot encoding\n", "# coefficients: difference from global mean\n", "# intercept: global mean of rent\n", "lin_reg.coef_\n", "lin_reg.intercept_" ] }, { "cell_type": "code", "execution_count": 112, "id": "010243bb-4220-4fc3-b1cc-7e389fd749b6", "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", "
Rentcity_SFcity_Seattle
0399910
1400010
2400110
3349900
4350000
5350100
6249901
7250001
8250101
\n", "
" ], "text/plain": [ " Rent city_SF city_Seattle\n", "0 3999 1 0\n", "1 4000 1 0\n", "2 4001 1 0\n", "3 3499 0 0\n", "4 3500 0 0\n", "5 3501 0 0\n", "6 2499 0 1\n", "7 2500 0 1\n", "8 2501 0 1" ] }, "execution_count": 112, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# convert categorical variable (city) to dummy coding\n", "# reference level not shown anymore\n", "dummy_rent = pd.get_dummies(rent_data, prefix=[\"city\"], drop_first=True)\n", "dummy_rent" ] }, { "cell_type": "code", "execution_count": 113, "id": "b9cca547-09ea-4471-9757-65b37063d350", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "LinearRegression()" ] }, "execution_count": 113, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "array([ 500., -1000.])" ] }, "execution_count": 113, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "3500.0" ] }, "execution_count": 113, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# inspect regression coefficients (y = w1x1 + ... + wnxn + b)\n", "# for dummy coding:\n", "# coefficients: difference per category to mean of reference category\n", "# intercept: mean of reference category\n", "lin_reg.fit(dummy_rent[[\"city_SF\", \"city_Seattle\"]], dummy_rent[\"Rent\"])\n", "lin_reg.coef_\n", "lin_reg.intercept_" ] }, { "cell_type": "code", "execution_count": 114, "id": "b470bd89-05b7-4bb7-878f-ed3b572f276b", "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", "
Rentcity_SFcity_Seattle
0399910
1400010
2400110
33499-1-1
43500-1-1
53501-1-1
6249901
7250001
8250101
\n", "
" ], "text/plain": [ " Rent city_SF city_Seattle\n", "0 3999 1 0\n", "1 4000 1 0\n", "2 4001 1 0\n", "3 3499 -1 -1\n", "4 3500 -1 -1\n", "5 3501 -1 -1\n", "6 2499 0 1\n", "7 2500 0 1\n", "8 2501 0 1" ] }, "execution_count": 114, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# convert categorical variable (city) to effect coding\n", "effect_rent = dummy_rent.copy()\n", "effect_rent[\"city_Seattle\"] = effect_rent[\"city_Seattle\"].astype(\"int32\")\n", "effect_rent[\"city_SF\"] = effect_rent[\"city_SF\"].astype(\"int32\")\n", "effect_rent.loc[3:5, [\"city_SF\", \"city_Seattle\"]] = -1.0\n", "effect_rent" ] }, { "cell_type": "code", "execution_count": 115, "id": "7b8e650d-4ae4-4f0b-8afb-45b1b0094318", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "LinearRegression()" ] }, "execution_count": 115, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "array([ 666.66666667, -833.33333333])" ] }, "execution_count": 115, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "3333.3333333333335" ] }, "execution_count": 115, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# inspect regression coefficients (y = w1x1 + ... + wnxn + b)\n", "# for dummy coding:\n", "# coefficients: difference per category to mean of reference category\n", "# intercept: mean of reference category\n", "lin_reg.fit(effect_rent[[\"city_SF\", \"city_Seattle\"]], effect_rent[\"Rent\"])\n", "lin_reg.coef_\n", "lin_reg.intercept_" ] }, { "cell_type": "markdown", "id": "1ba0c1ce-3524-40a2-b783-c32185bb326a", "metadata": {}, "source": [ "In the following, we will briefly dive into feature hashing based on the Yelp review dataset used previously." ] }, { "cell_type": "code", "execution_count": 116, "id": "80f35142-c195-4b67-89ff-faae20e6f55f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2795\n" ] } ], "source": [ "# we will define m as equal to the unique number of business_id\n", "m = len(reviews.business_id.unique())\n", "print(m)" ] }, { "cell_type": "code", "execution_count": 117, "id": "640ab4fc-d38a-4208-ae7a-ca16c87886ce", "metadata": {}, "outputs": [], "source": [ "feature_hasher = FeatureHasher(n_features=m, input_type='string')\n", "hashed = feature_hasher.transform(reviews['business_id'])" ] }, { "cell_type": "code", "execution_count": 118, "id": "ea541357-d52e-48c1-a9a4-cbc9be12ae1f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Our pandas Series, in bytes: 395144\n", "Our hashed numpy array, in bytes: 48\n" ] } ], "source": [ "# We can see how this will make a difference in the future by looking at the size of each\n", "print('Our pandas Series, in bytes: ', getsizeof(reviews['business_id']))\n", "print('Our hashed numpy array, in bytes: ', getsizeof(hashed))" ] }, { "cell_type": "code", "execution_count": 121, "id": "4c8d67cb-a29f-4136-855c-c4bd02a97010", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['buF9druCkbuXLX526sGELQ',\n", " 'RA4V8pr014UyUbDvI-LW2A',\n", " '_sS2LBIGNT5NQb6PD1Vtjw',\n", " '0AzLzHfOJgL7ROwhdww2ew',\n", " '8zehGz9jnxPqXtOc7KaJxA']" ] }, "execution_count": 121, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "array([[0., 0., 0., ..., 0., 0., 0.],\n", " [0., 0., 0., ..., 0., 0., 0.],\n", " [0., 0., 0., ..., 0., 0., 0.],\n", " ...,\n", " [0., 0., 0., ..., 0., 0., 0.],\n", " [0., 0., 0., ..., 0., 0., 0.],\n", " [0., 0., 0., ..., 0., 0., 0.]])" ] }, "execution_count": 121, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# compare oriignal data to hashed data \n", "reviews['business_id'].unique().tolist()[0:5]\n", "hashed.toarray()" ] }, { "cell_type": "markdown", "id": "fef7c751-7be0-45e4-84cc-27e2bebb4d44", "metadata": {}, "source": [ "## Expanding Features" ] }, { "cell_type": "markdown", "id": "9bb42d44-a081-46e1-97e7-beb4dd674586", "metadata": {}, "source": [ "### Value Imputation" ] }, { "cell_type": "markdown", "id": "6c497c77-a87a-44f8-89cf-46f326a35d52", "metadata": {}, "source": [ "Different imputation methods showcased, adapted from CleanData." ] }, { "cell_type": "code", "execution_count": null, "id": "8df460fc-829c-4592-ad72-80b5f43d4dbf", "metadata": {}, "outputs": [], "source": [ "np.random.seed(1)\n", "\n", "# Histopathological Attributes: (values 0, 1, 2, 3)\n", "# Clinical Attributes: (values 0, 1, 2, 3, unless indicated)\n", "features = [\n", " \"erythema\",\n", " \"scaling\",\n", " \"definite borders\",\n", " \"itching\",\n", " \"koebner phenomenon\",\n", " \"polygonal papules\",\n", " \"follicular papules\",\n", " \"oral mucosal involvement\",\n", " \"knee and elbow involvement\",\n", " \"scalp involvement\",\n", " \"family history\", # 0 or 1\n", " \"melanin incontinence\",\n", " \"eosinophils in the infiltrate\",\n", " \"PNL infiltrate\",\n", " \"fibrosis of the papillary dermis\",\n", " \"exocytosis\",\n", " \"acanthosis\",\n", " \"hyperkeratosis\",\n", " \"parakeratosis\",\n", " \"clubbing of the rete ridges\",\n", " \"elongation of the rete ridges\",\n", " \"thinning of the suprapapillary epidermis\",\n", " \"spongiform pustule\",\n", " \"munro microabcess\",\n", " \"focal hypergranulosis\",\n", " \"disappearance of the granular layer\",\n", " \"vacuolisation and damage of basal layer\",\n", " \"spongiosis\",\n", " \"saw-tooth appearance of retes\",\n", " \"follicular horn plug\",\n", " \"perifollicular parakeratosis\",\n", " \"inflammatory monoluclear inflitrate\",\n", " \"band-like infiltrate\",\n", " \"Age\", # linear; missing marked '?'\n", " \"TARGET\", # See mapping\n", "]\n", "\n", "targets = {\n", " 1: \"psoriasis\", # 112 instances\n", " 2: \"seboreic dermatitis\", # 61\n", " 3: \"lichen planus\", # 72\n", " 4: \"pityriasis rosea\", # 49\n", " 5: \"cronic dermatitis\", # 52\n", " 6: \"pityriasis rubra pilaris\", # 20\n", "}\n", "\n", "data = os.path.join(data_dir, \"dermatology.data\")\n", "metadata = os.path.join(data_dir, \"dermatology.names\")\n", "df = pd.read_csv(data, header=None, names=features, na_values=[\"?\"])\n", "df[\"TARGET\"] = df.TARGET.map(targets)\n", "\n", "derm = df.copy()\n", "derm.loc[derm.Age == \"?\", \"Age\"] = None\n", "derm[\"Age\"] = derm.Age.astype(float)" ] }, { "cell_type": "code", "execution_count": null, "id": "90fcb5e3-4e4c-466a-8f76-c9481ed04593", "metadata": {}, "outputs": [], "source": [ "# use iloc on both axes and sample\n", "df.iloc[:, [0, 1, 2, 3, -2, -1]].sample(6)" ] }, { "cell_type": "code", "execution_count": null, "id": "43734f3f-a997-436c-93c9-04785c6a5c47", "metadata": {}, "outputs": [], "source": [ "clean, suspicious = [], {}\n", "for col in df.columns:\n", " values = df[col].unique()\n", " if set(values) <= {0, 1, 2, 3}:\n", " clean.append(col)\n", " else:\n", " suspicious[col] = values" ] }, { "cell_type": "code", "execution_count": null, "id": "46b6f7d4-77a0-4e7d-b70e-039caa83568d", "metadata": {}, "outputs": [], "source": [ "print(\"No problem detected:\")\n", "pprint(clean[:8])\n", "print(f\"... {len(clean) - 8} other fields\")" ] }, { "cell_type": "code", "execution_count": null, "id": "d1180b53-e9b0-407d-bd1a-22474288e195", "metadata": {}, "outputs": [], "source": [ "# Notice age has some expected ages and also a '?'\n", "print(\"Suspicious:\")\n", "pprint(suspicious)" ] }, { "cell_type": "code", "execution_count": null, "id": "afb090dc-1a70-4aa3-945f-ac8331cc84db", "metadata": {}, "outputs": [], "source": [ "# dataset encodes missing values as ?\n", "# --> added ? to na_values list to be recognized when reading\n", "# file in panda's read_csv\n", "df.loc[df.Age.isnull()].iloc[:, -4:]\n", "# alternatively:\n", "# Assign missing ages marked with '?' as None\n", "# df.loc[df.Age == '?', 'Age'] = None # or NaN\n", "# Convert string/None ages to floating-point\n", "# df['Age'] = df.Age.astype(float)" ] }, { "cell_type": "markdown", "id": "58f8b344-39d7-4593-be81-ad90ad57830f", "metadata": {}, "source": [ "#### Typical-Value Imputation " ] }, { "cell_type": "code", "execution_count": null, "id": "aae335f1-0472-48e9-bd30-4939bb3c3196", "metadata": {}, "outputs": [], "source": [ "# example plot taken from CleanData\n", "# compare to df.Age.mode() with xticks activated\n", "# problem?\n", "(\n", " df.Age.value_counts()\n", " .sort_index()\n", " .plot(\n", " kind=\"bar\",\n", " xticks=[],\n", " # xticks = np.arange(df['Age'].min(), df['Age'].max(), 10),\n", " yticks=[],\n", " title=\"Age distribution of patients \"\n", " f\"({df.Age.min():.0f} to {df.Age.max():.0f})\",\n", " )\n", ")" ] }, { "cell_type": "code", "execution_count": null, "id": "2e990956-1d39-4894-ab5e-a3ac8712cfea", "metadata": {}, "outputs": [], "source": [ "# improved distribution setup\n", "distribution = pd.DataFrame(\n", " [\n", " df[df.Age == x][\"Age\"].count()\n", " for x in np.arange(df[\"Age\"].min(), df[\"Age\"].max())\n", " ]\n", ")\n", "distribution.plot(\n", " kind=\"bar\",\n", " xlabel=\"Age\",\n", " ylabel=\"Count\",\n", " xticks=np.arange(df[\"Age\"].min(), df[\"Age\"].max(), 10),\n", " legend=False,\n", ")" ] }, { "cell_type": "code", "execution_count": null, "id": "86677c98-7415-4126-840c-a5bc5fffec5b", "metadata": {}, "outputs": [], "source": [ "# seem like best solution\n", "df.Age.mean(), df.Age.median()" ] }, { "cell_type": "code", "execution_count": null, "id": "f153af7d-d05e-4902-82be-45be358be237", "metadata": {}, "outputs": [], "source": [ "df.Age.mode()" ] }, { "cell_type": "markdown", "id": "e9888b03-63b3-466e-b8ac-8e862a8c5bb6", "metadata": {}, "source": [ "Alternatively, this dataset was created in Turkey - we might also want to use domain knowledge and use the mean/median age in Turkey at the time of dataset creation." ] }, { "cell_type": "code", "execution_count": null, "id": "91dcff8e-7f3a-4293-8e4c-c26429f7ac39", "metadata": {}, "outputs": [], "source": [ "# hmean((df.loc[df['Age'].notna()]['Age']).values)" ] }, { "cell_type": "markdown", "id": "5be55127-f078-4a6f-a4d8-80e7c9c9d4ee", "metadata": {}, "source": [ "#### Locality Imputation" ] }, { "cell_type": "code", "execution_count": null, "id": "c289112b-0a6b-438a-98f2-9c911f1dc9ea", "metadata": {}, "outputs": [], "source": [ "# load digits dataset (adopted, now missing a few pixels)\n", "digits = np.load(os.path.join(data_dir, \"digits.npy\"))\n", "print(\"Array shape:\", digits.shape)" ] }, { "cell_type": "code", "execution_count": null, "id": "e1526d7e-8c7b-48dd-953a-1db09d8d050d", "metadata": {}, "outputs": [], "source": [ "# display digits\n", "def show_digits(digits=digits, x=3, y=3, title=\"Digits\"):\n", " \"Display of 'corrupted numerals'\"\n", " if digits.min() >= 0:\n", " newcm = cm.get_cmap(\"Greys\", 17)\n", " else:\n", " gray = cm.get_cmap(\"Greys\", 18)\n", " newcolors = gray(np.linspace(0, 1, 18))\n", " newcolors[:1, :] = np.array([1.0, 0.9, 0.9, 1])\n", " newcm = ListedColormap(newcolors)\n", "\n", " fig, axes = plt.subplots(\n", " x,\n", " y,\n", " figsize=(x * 2.5, y * 2.5),\n", " subplot_kw={\"xticks\": (), \"yticks\": ()},\n", " )\n", "\n", " for ax, img in zip(axes.ravel(), digits):\n", " ax.imshow(img, cmap=newcm)\n", " for i in range(8):\n", " for j in range(8):\n", " if img[i, j] == -1:\n", " s = \"╳\"\n", " c = \"k\"\n", " else:\n", " s = str(img[i, j])\n", " c = \"k\" if img[i, j] < 8 else \"w\"\n", " _ = ax.text(j, i, s, color=c, ha=\"center\", va=\"center\")\n", " fig.suptitle(title, y=0)\n", " fig.tight_layout()" ] }, { "cell_type": "code", "execution_count": null, "id": "6b4cf573-8f4d-4f8e-9c38-1528a875dce2", "metadata": {}, "outputs": [], "source": [ "show_digits(digits, title=\"Digits with missing pixels\")" ] }, { "cell_type": "code", "execution_count": null, "id": "b81a57ad-a81f-445b-83b2-d2352e614167", "metadata": {}, "outputs": [], "source": [ "# Coded for clarity, not for best vectorized speed\n", "# Function definition only; used in later cell\n", "def fill_missing(digit):\n", " digit = digit.copy()\n", " missing = np.where(digit == -1)\n", " for y, x in zip(*missing): # Pull off x/y position of pixel\n", " # Do not want negative indices in slice\n", " x_start = max(0, x - 1)\n", " y_start = max(0, y - 1)\n", " # No harm in index larger than size\n", " x_end = x + 2\n", " y_end = y + 2\n", " # What if another -1 is in region? Remove all the -1s\n", " region = digit[y_start:y_end, x_start:x_end].flatten()\n", " region = region[region >= 0]\n", " total = np.sum(region)\n", " avg = total // region.size\n", " digit[y, x] = avg\n", " return digit" ] }, { "cell_type": "code", "execution_count": null, "id": "a92431e8-ede0-4e84-ab13-3669b2f91d73", "metadata": {}, "outputs": [], "source": [ "new = np.empty_like(digits)\n", "for n in range(new.shape[0]):\n", " new[n] = fill_missing(digits[n])\n", "\n", "show_digits(digits, title=\"Digits with missing pixels\"), show_digits(\n", " new, title=\"Digits with imputed pixels\"\n", ")" ] }, { "cell_type": "markdown", "id": "41904e77-0f98-43c3-afd1-dcfd0c98200b", "metadata": { "tags": [] }, "source": [ "## Reducing Features" ] }, { "cell_type": "markdown", "id": "3f534ff5-e3be-4a5e-8b99-12ef78fe8263", "metadata": {}, "source": [ "
\n", "Work in progress.\n", "
" ] } ], "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.7" } }, "nbformat": 4, "nbformat_minor": 5 }