{ "cells": [ { "metadata": {}, "cell_type": "markdown", "source": "", "id": "8a77807f92f26ee" }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T10:00:23.434531Z", "start_time": "2026-04-25T10:00:23.381273Z" } }, "cell_type": "markdown", "source": [ "## This is the Q1 Notebook!\n", "\n", "It's tracked via GitHub! hence the need for this line for the init commit" ], "id": "193cc36275a60171" }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T14:53:58.236470700Z", "start_time": "2026-04-25T14:53:58.228674500Z" } }, "cell_type": "code", "source": [ "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns" ], "id": "edaea0c939a83b79", "outputs": [], "execution_count": 371 }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T14:53:58.254179900Z", "start_time": "2026-04-25T14:53:58.237468900Z" } }, "cell_type": "code", "source": "df = pd.read_csv('data/googleplaystore_new.csv')", "id": "e657e9baacc13e6b", "outputs": [], "execution_count": 372 }, { "metadata": {}, "cell_type": "markdown", "source": "## Part A\n", "id": "751a6161e8e12bdd" }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T14:53:58.271506100Z", "start_time": "2026-04-25T14:53:58.256180900Z" } }, "cell_type": "code", "source": [ "df = df.dropna()\n", "df = df.drop_duplicates()" ], "id": "756c92821453bbb3", "outputs": [], "execution_count": 373 }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T14:53:58.305298200Z", "start_time": "2026-04-25T14:53:58.272504Z" } }, "cell_type": "code", "source": "df.head(10)", "id": "4e1be303d63f47a4", "outputs": [ { "data": { "text/plain": [ " App Category Rating Reviews Size \\\n", "0 Market Update Helper LIBRARIES_AND_DEMO 4.1 20145 11k \n", "1 SuperLivePro BUSINESS 4.3 46353 21M \n", "2 Wifi Connect Library LIBRARIES_AND_DEMO 3.9 58055 41k \n", "3 Apk Installer LIBRARIES_AND_DEMO 3.8 7750 292k \n", "4 English speaking texts EDUCATION 4.4 1619 3.0M \n", "5 Eternal life LIBRARIES_AND_DEMO 5.0 26 2.5M \n", "6 Dresses Ideas & Fashions +3000 BEAUTY 4.5 473 8.2M \n", "7 GO Notifier COMMUNICATION 4.2 124346 695k \n", "8 Prosperity EVENTS 5.0 16 2.3M \n", "9 NSE Mobile Trading FINANCE 4.1 13868 1.4M \n", "\n", " Installs Type Price Content Rating Genres Android Ver \n", "0 1,000,000+ Free 0 Everyone Libraries & Demo 1.5 and up \n", "1 1,000,000+ Free 0 Everyone Business 1.5 and up \n", "2 5,000,000+ Free 0 Everyone Libraries & Demo 1.5 and up \n", "3 1,000,000+ Free 0 Everyone Libraries & Demo 1.6 and up \n", "4 1,000,000+ Free 0 Everyone Education 1.6 and up \n", "5 1,000+ Free 0 Everyone Libraries & Demo 1.6 and up \n", "6 100,000+ Free 0 Mature 17+ Beauty 1.6 and up \n", "7 10,000,000+ Free 0 Everyone Communication 2.0 and up \n", "8 100+ Free 0 Everyone Events 2.0 and up \n", "9 1,000,000+ Free 0 Everyone Finance 2.1 and up " ], "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", "
AppCategoryRatingReviewsSizeInstallsTypePriceContent RatingGenresAndroid Ver
0Market Update HelperLIBRARIES_AND_DEMO4.12014511k1,000,000+Free0EveryoneLibraries & Demo1.5 and up
1SuperLiveProBUSINESS4.34635321M1,000,000+Free0EveryoneBusiness1.5 and up
2Wifi Connect LibraryLIBRARIES_AND_DEMO3.95805541k5,000,000+Free0EveryoneLibraries & Demo1.5 and up
3Apk InstallerLIBRARIES_AND_DEMO3.87750292k1,000,000+Free0EveryoneLibraries & Demo1.6 and up
4English speaking textsEDUCATION4.416193.0M1,000,000+Free0EveryoneEducation1.6 and up
5Eternal lifeLIBRARIES_AND_DEMO5.0262.5M1,000+Free0EveryoneLibraries & Demo1.6 and up
6Dresses Ideas & Fashions +3000BEAUTY4.54738.2M100,000+Free0Mature 17+Beauty1.6 and up
7GO NotifierCOMMUNICATION4.2124346695k10,000,000+Free0EveryoneCommunication2.0 and up
8ProsperityEVENTS5.0162.3M100+Free0EveryoneEvents2.0 and up
9NSE Mobile TradingFINANCE4.1138681.4M1,000,000+Free0EveryoneFinance2.1 and up
\n", "
" ] }, "execution_count": 374, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 374 }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T13:14:34.819448Z", "start_time": "2026-04-25T13:14:34.807334900Z" } }, "cell_type": "markdown", "source": "## Part B", "id": "5e0e0e76635904b6" }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T14:53:58.318866300Z", "start_time": "2026-04-25T14:53:58.306302Z" } }, "cell_type": "code", "source": [ "# Getting the column for size, checking if it's ending with an M or a k and converting the Mb to kb with 1024* and then again from kb to just b by another 1024*\n", "def parse_size(size_str):\n", " if isinstance(size_str, str):\n", " if size_str.endswith('M'):\n", " return float(size_str[:-1]) * 1024 * 1024\n", " elif size_str.endswith('k'):\n", " return float(size_str[:-1]) * 1024\n", " return size_str" ], "id": "c15cb7f9831e0f81", "outputs": [], "execution_count": 375 }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T14:53:58.334856400Z", "start_time": "2026-04-25T14:53:58.320864Z" } }, "cell_type": "code", "source": "df['Size in bytes'] = df['Size'].apply(parse_size)", "id": "c76da70de24ddc72", "outputs": [], "execution_count": 376 }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T14:53:58.352396100Z", "start_time": "2026-04-25T14:53:58.335858Z" } }, "cell_type": "code", "source": "df[['Size', 'Size in bytes']].head(10)", "id": "73784ad66975e81f", "outputs": [ { "data": { "text/plain": [ " Size Size in bytes\n", "0 11k 11264.0\n", "1 21M 22020096.0\n", "2 41k 41984.0\n", "3 292k 299008.0\n", "4 3.0M 3145728.0\n", "5 2.5M 2621440.0\n", "6 8.2M 8598323.2\n", "7 695k 711680.0\n", "8 2.3M 2411724.8\n", "9 1.4M 1468006.4" ], "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", "
SizeSize in bytes
011k11264.0
121M22020096.0
241k41984.0
3292k299008.0
43.0M3145728.0
52.5M2621440.0
68.2M8598323.2
7695k711680.0
82.3M2411724.8
91.4M1468006.4
\n", "
" ] }, "execution_count": 377, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 377 }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T14:53:58.384474Z", "start_time": "2026-04-25T14:53:58.367405200Z" } }, "cell_type": "code", "source": "print(11*1024) # Just checking the kb and mb conversion happened properly, by checking 2 of the values manually.", "id": "7ac34d8bc88327a1", "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "11264\n" ] } ], "execution_count": 378 }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T14:53:58.423348900Z", "start_time": "2026-04-25T14:53:58.385473600Z" } }, "cell_type": "code", "source": "print((21*1024)*1024) # Ideally this is the same as doing the calculation without the ( ) but just incase!", "id": "f72b05042c5a16fa", "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "22020096\n" ] } ], "execution_count": 379 }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T14:53:58.445406400Z", "start_time": "2026-04-25T14:53:58.423348900Z" } }, "cell_type": "code", "source": "print(1.4*1024*1024) # This one seemed odd... Checked on an online converted to double-check but turns out the 0.4 bytes shows up there too.", "id": "dcaf54123ea0d75d", "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1468006.4\n" ] } ], "execution_count": 380 }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T14:53:58.464146900Z", "start_time": "2026-04-25T14:53:58.446404300Z" } }, "cell_type": "code", "source": "df.head(10)", "id": "3e1112ae100d010c", "outputs": [ { "data": { "text/plain": [ " App Category Rating Reviews Size \\\n", "0 Market Update Helper LIBRARIES_AND_DEMO 4.1 20145 11k \n", "1 SuperLivePro BUSINESS 4.3 46353 21M \n", "2 Wifi Connect Library LIBRARIES_AND_DEMO 3.9 58055 41k \n", "3 Apk Installer LIBRARIES_AND_DEMO 3.8 7750 292k \n", "4 English speaking texts EDUCATION 4.4 1619 3.0M \n", "5 Eternal life LIBRARIES_AND_DEMO 5.0 26 2.5M \n", "6 Dresses Ideas & Fashions +3000 BEAUTY 4.5 473 8.2M \n", "7 GO Notifier COMMUNICATION 4.2 124346 695k \n", "8 Prosperity EVENTS 5.0 16 2.3M \n", "9 NSE Mobile Trading FINANCE 4.1 13868 1.4M \n", "\n", " Installs Type Price Content Rating Genres Android Ver \\\n", "0 1,000,000+ Free 0 Everyone Libraries & Demo 1.5 and up \n", "1 1,000,000+ Free 0 Everyone Business 1.5 and up \n", "2 5,000,000+ Free 0 Everyone Libraries & Demo 1.5 and up \n", "3 1,000,000+ Free 0 Everyone Libraries & Demo 1.6 and up \n", "4 1,000,000+ Free 0 Everyone Education 1.6 and up \n", "5 1,000+ Free 0 Everyone Libraries & Demo 1.6 and up \n", "6 100,000+ Free 0 Mature 17+ Beauty 1.6 and up \n", "7 10,000,000+ Free 0 Everyone Communication 2.0 and up \n", "8 100+ Free 0 Everyone Events 2.0 and up \n", "9 1,000,000+ Free 0 Everyone Finance 2.1 and up \n", "\n", " Size in bytes \n", "0 11264.0 \n", "1 22020096.0 \n", "2 41984.0 \n", "3 299008.0 \n", "4 3145728.0 \n", "5 2621440.0 \n", "6 8598323.2 \n", "7 711680.0 \n", "8 2411724.8 \n", "9 1468006.4 " ], "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", "
AppCategoryRatingReviewsSizeInstallsTypePriceContent RatingGenresAndroid VerSize in bytes
0Market Update HelperLIBRARIES_AND_DEMO4.12014511k1,000,000+Free0EveryoneLibraries & Demo1.5 and up11264.0
1SuperLiveProBUSINESS4.34635321M1,000,000+Free0EveryoneBusiness1.5 and up22020096.0
2Wifi Connect LibraryLIBRARIES_AND_DEMO3.95805541k5,000,000+Free0EveryoneLibraries & Demo1.5 and up41984.0
3Apk InstallerLIBRARIES_AND_DEMO3.87750292k1,000,000+Free0EveryoneLibraries & Demo1.6 and up299008.0
4English speaking textsEDUCATION4.416193.0M1,000,000+Free0EveryoneEducation1.6 and up3145728.0
5Eternal lifeLIBRARIES_AND_DEMO5.0262.5M1,000+Free0EveryoneLibraries & Demo1.6 and up2621440.0
6Dresses Ideas & Fashions +3000BEAUTY4.54738.2M100,000+Free0Mature 17+Beauty1.6 and up8598323.2
7GO NotifierCOMMUNICATION4.2124346695k10,000,000+Free0EveryoneCommunication2.0 and up711680.0
8ProsperityEVENTS5.0162.3M100+Free0EveryoneEvents2.0 and up2411724.8
9NSE Mobile TradingFINANCE4.1138681.4M1,000,000+Free0EveryoneFinance2.1 and up1468006.4
\n", "
" ] }, "execution_count": 381, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 381 }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T13:28:40.682532800Z", "start_time": "2026-04-25T13:28:40.678521Z" } }, "cell_type": "markdown", "source": "# Part C", "id": "9883e69704d0a69e" }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T14:53:58.503091400Z", "start_time": "2026-04-25T14:53:58.483650900Z" } }, "cell_type": "code", "source": "df['Numeric Installs'] = df['Installs'].str.replace('+', '').str.replace(',', '').astype(int)", "id": "c8d4f46526918c20", "outputs": [], "execution_count": 382 }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T14:53:58.525317500Z", "start_time": "2026-04-25T14:53:58.504718Z" } }, "cell_type": "code", "source": "df.head(10)", "id": "cffd24a82d242352", "outputs": [ { "data": { "text/plain": [ " App Category Rating Reviews Size \\\n", "0 Market Update Helper LIBRARIES_AND_DEMO 4.1 20145 11k \n", "1 SuperLivePro BUSINESS 4.3 46353 21M \n", "2 Wifi Connect Library LIBRARIES_AND_DEMO 3.9 58055 41k \n", "3 Apk Installer LIBRARIES_AND_DEMO 3.8 7750 292k \n", "4 English speaking texts EDUCATION 4.4 1619 3.0M \n", "5 Eternal life LIBRARIES_AND_DEMO 5.0 26 2.5M \n", "6 Dresses Ideas & Fashions +3000 BEAUTY 4.5 473 8.2M \n", "7 GO Notifier COMMUNICATION 4.2 124346 695k \n", "8 Prosperity EVENTS 5.0 16 2.3M \n", "9 NSE Mobile Trading FINANCE 4.1 13868 1.4M \n", "\n", " Installs Type Price Content Rating Genres Android Ver \\\n", "0 1,000,000+ Free 0 Everyone Libraries & Demo 1.5 and up \n", "1 1,000,000+ Free 0 Everyone Business 1.5 and up \n", "2 5,000,000+ Free 0 Everyone Libraries & Demo 1.5 and up \n", "3 1,000,000+ Free 0 Everyone Libraries & Demo 1.6 and up \n", "4 1,000,000+ Free 0 Everyone Education 1.6 and up \n", "5 1,000+ Free 0 Everyone Libraries & Demo 1.6 and up \n", "6 100,000+ Free 0 Mature 17+ Beauty 1.6 and up \n", "7 10,000,000+ Free 0 Everyone Communication 2.0 and up \n", "8 100+ Free 0 Everyone Events 2.0 and up \n", "9 1,000,000+ Free 0 Everyone Finance 2.1 and up \n", "\n", " Size in bytes Numeric Installs \n", "0 11264.0 1000000 \n", "1 22020096.0 1000000 \n", "2 41984.0 5000000 \n", "3 299008.0 1000000 \n", "4 3145728.0 1000000 \n", "5 2621440.0 1000 \n", "6 8598323.2 100000 \n", "7 711680.0 10000000 \n", "8 2411724.8 100 \n", "9 1468006.4 1000000 " ], "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", "
AppCategoryRatingReviewsSizeInstallsTypePriceContent RatingGenresAndroid VerSize in bytesNumeric Installs
0Market Update HelperLIBRARIES_AND_DEMO4.12014511k1,000,000+Free0EveryoneLibraries & Demo1.5 and up11264.01000000
1SuperLiveProBUSINESS4.34635321M1,000,000+Free0EveryoneBusiness1.5 and up22020096.01000000
2Wifi Connect LibraryLIBRARIES_AND_DEMO3.95805541k5,000,000+Free0EveryoneLibraries & Demo1.5 and up41984.05000000
3Apk InstallerLIBRARIES_AND_DEMO3.87750292k1,000,000+Free0EveryoneLibraries & Demo1.6 and up299008.01000000
4English speaking textsEDUCATION4.416193.0M1,000,000+Free0EveryoneEducation1.6 and up3145728.01000000
5Eternal lifeLIBRARIES_AND_DEMO5.0262.5M1,000+Free0EveryoneLibraries & Demo1.6 and up2621440.01000
6Dresses Ideas & Fashions +3000BEAUTY4.54738.2M100,000+Free0Mature 17+Beauty1.6 and up8598323.2100000
7GO NotifierCOMMUNICATION4.2124346695k10,000,000+Free0EveryoneCommunication2.0 and up711680.010000000
8ProsperityEVENTS5.0162.3M100+Free0EveryoneEvents2.0 and up2411724.8100
9NSE Mobile TradingFINANCE4.1138681.4M1,000,000+Free0EveryoneFinance2.1 and up1468006.41000000
\n", "
" ] }, "execution_count": 383, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 383 }, { "metadata": {}, "cell_type": "markdown", "source": "## Part D", "id": "1818d3183dae5398" }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T14:53:58.573387900Z", "start_time": "2026-04-25T14:53:58.546001500Z" } }, "cell_type": "code", "source": "df.to_csv('data/googleplaystore_new_new.csv', index=False)", "id": "5a99edb9f8b29b12", "outputs": [], "execution_count": 384 }, { "metadata": {}, "cell_type": "markdown", "source": "# Part E", "id": "5372c799c0b2662" }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T14:53:58.580316100Z", "start_time": "2026-04-25T14:53:58.575389500Z" } }, "cell_type": "code", "source": [ "from sklearn.model_selection import train_test_split\n", "from sklearn.linear_model import LinearRegression, Ridge\n", "from sklearn.preprocessing import PolynomialFeatures\n", "from sklearn.metrics import mean_absolute_error, mean_squared_error" ], "id": "8cc741d5b19eaa62", "outputs": [], "execution_count": 385 }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T14:53:58.591629700Z", "start_time": "2026-04-25T14:53:58.583316400Z" } }, "cell_type": "code", "source": "df_new = pd.read_csv('data/googleplaystore_new_new.csv')", "id": "bc158bb312aa3cd7", "outputs": [], "execution_count": 386 }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T14:53:58.607120700Z", "start_time": "2026-04-25T14:53:58.591629700Z" } }, "cell_type": "code", "source": [ "columns_to_keep = ['Category', 'Reviews', 'Content Rating', 'Size in bytes', 'Numeric Installs', 'Rating']\n", "df_min = df_new[columns_to_keep]" ], "id": "585677f9cc3efc16", "outputs": [], "execution_count": 387 }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T14:53:58.628153200Z", "start_time": "2026-04-25T14:53:58.608117200Z" } }, "cell_type": "code", "source": "df_min.head(20)", "id": "76760facf2a6e8cb", "outputs": [ { "data": { "text/plain": [ " Category Reviews Content Rating Size in bytes \\\n", "0 LIBRARIES_AND_DEMO 20145 Everyone 11264.0 \n", "1 BUSINESS 46353 Everyone 22020096.0 \n", "2 LIBRARIES_AND_DEMO 58055 Everyone 41984.0 \n", "3 LIBRARIES_AND_DEMO 7750 Everyone 299008.0 \n", "4 EDUCATION 1619 Everyone 3145728.0 \n", "5 LIBRARIES_AND_DEMO 26 Everyone 2621440.0 \n", "6 BEAUTY 473 Mature 17+ 8598323.2 \n", "7 COMMUNICATION 124346 Everyone 711680.0 \n", "8 EVENTS 16 Everyone 2411724.8 \n", "9 FINANCE 13868 Everyone 1468006.4 \n", "10 COMMUNICATION 32254 Everyone 5767168.0 \n", "11 COMMUNICATION 125232 Everyone 2831155.2 \n", "12 EDUCATION 430 Everyone 538624.0 \n", "13 EDUCATION 275 Everyone 2411724.8 \n", "14 BOOKS_AND_REFERENCE 1778 Mature 17+ 5138022.4 \n", "15 BUSINESS 2287 Everyone 1572864.0 \n", "16 LIBRARIES_AND_DEMO 126862 Everyone 638976.0 \n", "17 COMMUNICATION 255 Everyone 1677721.6 \n", "18 LIFESTYLE 360 Everyone 4823449.6 \n", "19 EDUCATION 656 Everyone 569344.0 \n", "\n", " Numeric Installs Rating \n", "0 1000000 4.1 \n", "1 1000000 4.3 \n", "2 5000000 3.9 \n", "3 1000000 3.8 \n", "4 1000000 4.4 \n", "5 1000 5.0 \n", "6 100000 4.5 \n", "7 10000000 4.2 \n", "8 100 5.0 \n", "9 1000000 4.1 \n", "10 1000000 4.4 \n", "11 10000000 4.2 \n", "12 10000 4.0 \n", "13 50000 4.0 \n", "14 500000 3.9 \n", "15 1000000 4.4 \n", "16 10000000 3.5 \n", "17 10000 4.1 \n", "18 10000 4.1 \n", "19 10000 4.3 " ], "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", "
CategoryReviewsContent RatingSize in bytesNumeric InstallsRating
0LIBRARIES_AND_DEMO20145Everyone11264.010000004.1
1BUSINESS46353Everyone22020096.010000004.3
2LIBRARIES_AND_DEMO58055Everyone41984.050000003.9
3LIBRARIES_AND_DEMO7750Everyone299008.010000003.8
4EDUCATION1619Everyone3145728.010000004.4
5LIBRARIES_AND_DEMO26Everyone2621440.010005.0
6BEAUTY473Mature 17+8598323.21000004.5
7COMMUNICATION124346Everyone711680.0100000004.2
8EVENTS16Everyone2411724.81005.0
9FINANCE13868Everyone1468006.410000004.1
10COMMUNICATION32254Everyone5767168.010000004.4
11COMMUNICATION125232Everyone2831155.2100000004.2
12EDUCATION430Everyone538624.0100004.0
13EDUCATION275Everyone2411724.8500004.0
14BOOKS_AND_REFERENCE1778Mature 17+5138022.45000003.9
15BUSINESS2287Everyone1572864.010000004.4
16LIBRARIES_AND_DEMO126862Everyone638976.0100000003.5
17COMMUNICATION255Everyone1677721.6100004.1
18LIFESTYLE360Everyone4823449.6100004.1
19EDUCATION656Everyone569344.0100004.3
\n", "
" ] }, "execution_count": 388, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 388 }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T14:53:58.644258400Z", "start_time": "2026-04-25T14:53:58.629151300Z" } }, "cell_type": "code", "source": "df_encoded = pd.get_dummies(df_min, columns=['Category', 'Content Rating'])", "id": "8c4742ab98b8b6ca", "outputs": [], "execution_count": 389 }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T14:53:58.650381200Z", "start_time": "2026-04-25T14:53:58.645767200Z" } }, "cell_type": "code", "source": [ "X = df_encoded.drop('Rating', axis=1)\n", "y = df_encoded['Rating']" ], "id": "7faed3f843076351", "outputs": [], "execution_count": 390 }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T14:53:58.668155500Z", "start_time": "2026-04-25T14:53:58.652896500Z" } }, "cell_type": "code", "source": "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=101)", "id": "8646df724923b0f5", "outputs": [], "execution_count": 391 }, { "metadata": {}, "cell_type": "markdown", "source": "## Trying Linear Regression", "id": "e52a65f09530a141" }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T14:53:58.677596300Z", "start_time": "2026-04-25T14:53:58.670162100Z" } }, "cell_type": "code", "source": [ "linear_model = LinearRegression()\n", "linear_model.fit(X_train, y_train)\n", "y_hat_linear = linear_model.predict(X_test)" ], "id": "db88942671bdf26a", "outputs": [], "execution_count": 392 }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T14:57:40.714273700Z", "start_time": "2026-04-25T14:57:40.674040700Z" } }, "cell_type": "code", "source": "X_test", "id": "32a5d474cc8ed681", "outputs": [ { "data": { "text/plain": [ " Reviews Size in bytes Numeric Installs Category_ART_AND_DESIGN \\\n", "303 70782 52428800.0 1000000 False \n", "805 132014 26214400.0 10000000 False \n", "352 58 15728640.0 10000 False \n", "952 1658 10171187.2 100000 False \n", "514 10852 18874368.0 1000000 False \n", "... ... ... ... ... \n", "1096 120 10485760.0 500 False \n", "551 27396 61865984.0 1000000 False \n", "660 11506 15728640.0 100000 False \n", "655 1015 11534336.0 100000 True \n", "473 7976 46137344.0 500000 False \n", "\n", " Category_AUTO_AND_VEHICLES Category_BEAUTY \\\n", "303 False False \n", "805 False False \n", "352 False False \n", "952 False False \n", "514 False False \n", "... ... ... \n", "1096 False False \n", "551 False False \n", "660 False False \n", "655 False False \n", "473 False False \n", "\n", " Category_BOOKS_AND_REFERENCE Category_BUSINESS Category_COMICS \\\n", "303 False False False \n", "805 False False False \n", "352 False False False \n", "952 False False False \n", "514 False False False \n", "... ... ... ... \n", "1096 False False False \n", "551 False False False \n", "660 False False False \n", "655 False False False \n", "473 False False False \n", "\n", " Category_COMMUNICATION ... Category_GAME Category_HEALTH_AND_FITNESS \\\n", "303 False ... False False \n", "805 True ... False False \n", "352 False ... False False \n", "952 False ... False False \n", "514 False ... False False \n", "... ... ... ... ... \n", "1096 False ... False False \n", "551 False ... False True \n", "660 False ... False True \n", "655 False ... False False \n", "473 False ... False True \n", "\n", " Category_HOUSE_AND_HOME Category_LIBRARIES_AND_DEMO \\\n", "303 False False \n", "805 False False \n", "352 False True \n", "952 False False \n", "514 False False \n", "... ... ... \n", "1096 False False \n", "551 False False \n", "660 False False \n", "655 False False \n", "473 False False \n", "\n", " Category_LIFESTYLE Content Rating_Adults only 18+ \\\n", "303 False False \n", "805 False False \n", "352 False False \n", "952 True False \n", "514 False False \n", "... ... ... \n", "1096 False False \n", "551 False False \n", "660 False False \n", "655 False False \n", "473 False False \n", "\n", " Content Rating_Everyone Content Rating_Everyone 10+ \\\n", "303 True False \n", "805 True False \n", "352 True False \n", "952 True False \n", "514 True False \n", "... ... ... \n", "1096 False False \n", "551 False False \n", "660 True False \n", "655 True False \n", "473 True False \n", "\n", " Content Rating_Mature 17+ Content Rating_Teen \n", "303 False False \n", "805 False False \n", "352 False False \n", "952 False False \n", "514 False False \n", "... ... ... \n", "1096 True False \n", "551 True False \n", "660 False False \n", "655 False False \n", "473 False False \n", "\n", "[333 rows x 26 columns]" ], "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", "
ReviewsSize in bytesNumeric InstallsCategory_ART_AND_DESIGNCategory_AUTO_AND_VEHICLESCategory_BEAUTYCategory_BOOKS_AND_REFERENCECategory_BUSINESSCategory_COMICSCategory_COMMUNICATION...Category_GAMECategory_HEALTH_AND_FITNESSCategory_HOUSE_AND_HOMECategory_LIBRARIES_AND_DEMOCategory_LIFESTYLEContent Rating_Adults only 18+Content Rating_EveryoneContent Rating_Everyone 10+Content Rating_Mature 17+Content Rating_Teen
3037078252428800.01000000FalseFalseFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseTrueFalseFalseFalse
80513201426214400.010000000FalseFalseFalseFalseFalseFalseTrue...FalseFalseFalseFalseFalseFalseTrueFalseFalseFalse
3525815728640.010000FalseFalseFalseFalseFalseFalseFalse...FalseFalseFalseTrueFalseFalseTrueFalseFalseFalse
952165810171187.2100000FalseFalseFalseFalseFalseFalseFalse...FalseFalseFalseFalseTrueFalseTrueFalseFalseFalse
5141085218874368.01000000FalseFalseFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseTrueFalseFalseFalse
..................................................................
109612010485760.0500FalseFalseFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseTrueFalse
5512739661865984.01000000FalseFalseFalseFalseFalseFalseFalse...FalseTrueFalseFalseFalseFalseFalseFalseTrueFalse
6601150615728640.0100000FalseFalseFalseFalseFalseFalseFalse...FalseTrueFalseFalseFalseFalseTrueFalseFalseFalse
655101511534336.0100000TrueFalseFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseTrueFalseFalseFalse
473797646137344.0500000FalseFalseFalseFalseFalseFalseFalse...FalseTrueFalseFalseFalseFalseTrueFalseFalseFalse
\n", "

333 rows × 26 columns

\n", "
" ] }, "execution_count": 401, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 401 }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T14:53:58.695046Z", "start_time": "2026-04-25T14:53:58.677596300Z" } }, "cell_type": "code", "source": [ "print(f\"Mean absolute error = {mean_absolute_error(y_test, y_hat_linear)}\")\n", "print(f\"Root mean squared error = {np.sqrt(mean_squared_error(y_test, y_hat_linear))}\")" ], "id": "12af54f4b3a1a88d", "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mean absolute error = 0.28061256731153783\n", "Root mean squared error = 0.38671187333256235\n" ] } ], "execution_count": 393 }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T14:53:58.773436200Z", "start_time": "2026-04-25T14:53:58.696048500Z" } }, "cell_type": "code", "source": [ "residual_error = y_test - y_hat_linear\n", "\n", "plt.figure(figsize=(8,5))\n", "plt.scatter(y_test, residual_error, alpha=0.5)\n", "plt.axhline(y=0, color='r', linestyle='--') # Adds a red line at 0 error for reference\n", "plt.title(\"Residual Error Plot (Linear Regression)\")\n", "plt.xlabel(\"True Rating Values (y)\")\n", "plt.ylabel(\"Residual Error (y - y_hat)\")\n", "plt.show()" ], "id": "8c3be82a8033d876", "outputs": [ { "data": { "text/plain": [ "
" ], "image/png": "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JYBHFWbEdQng0Gw0Si8CWV9cY7s3stFERNSDwS9KHebMmaPtzj799FNxOp26v7a2VtugERHFSmAJYCz1iyWA61vc4vH59BrbvbEEsCMkGx1Ob2SjiYioB4PfX//61/LII4/I448/Ljbb/o8h0eoMwTARUSwFlgCeOChb24tt3dOo11gCON5tzhI1G01ERMZ1OTWxbt06+cY3vtFhf3Z2ttTU1HT14YiI+tQSwIFsNHoMI/uMjhModUDGF4Fvb2SjiYioB4Pf4uJi2bhxY4e2Zqj3LS0t7erDERF1aQngRMpGowcxJr9V1LVoqQOy0Qh8452NJiKiHgx+L730UrnqqqvkySef1MkdO3fu1GWOf/rTn8rNN9/c1YcjIuqTEikbTUREPRj8zp8/X3w+n5xwwgnS1NSkJRApKSka/P74xz/u6sMREfVZiZSNJiIiY0z+9jM2DHK5XFr+0NDQIOPHj9dlj7G8MbpA9Cd1dXVaz4xuFllZWb19OERERER0APFat/r8gt1u16D3yCOP1K4P99xzj4wYMaK7D0dERERE1OMMB7/o53vjjTfK4YcfrotbvPTSS7p/0aJFGvTee++9cs011/TksRIRERERxafm95ZbbpFHH31UZs2aJe+//76cddZZcuGFF8oHH3ygWV9sWyyWAzsaIiIiIqJECH5feOEFeeaZZ+T000+XVatWyeTJk8Xj8cjnn3+uXR+IiIiIiPpN2cP27dtlypQp+v+JEydqhweUOTDwJSIiIqJ+F/x6vV6d5BZgtVq1wwMRERERUb8re0BHtHnz5mnGF1paWuSyyy4Th8PRZtw///nP2B8lEREREVE8g9+5c+e22T7//PNj8fxERERERIkX/KKlGRERERFRX9btRS6IiIiIiPoaBr9ERERElDQY/BIRERFR0mDwS0RERERJg8EvERERESUNBr9ERERElDQY/BIRERFR0mDwS0RERERJg8EvERERESUNBr9ERERElDQY/BIRERFR0mDwS0RERERJg8EvERERESUNBr9ERERElDQY/BIRERFR0mDwS0RERERJo88Ev7fffrtMnz5d0tPTJScnx9B95s2bJyaTqc3lpJNO6vFjJSIiIqLEZJU+wuVyyVlnnSXTpk2TP/7xj4bvh2B30aJFwe2UlJQeOkIiIiIiSnR9JvhdsGCBXj/11FNduh+C3eLi4h46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" }, "metadata": {}, "output_type": "display_data", "jetTransient": { "display_id": null } } ], "execution_count": 394 }, { "metadata": {}, "cell_type": "markdown", "source": "## Trying Polynomial Regression", "id": "28a6926de3a1a2e7" }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T14:53:58.782476500Z", "start_time": "2026-04-25T14:53:58.774436300Z" } }, "cell_type": "code", "source": [ "poly_converter = PolynomialFeatures(degree=2)\n", "X_poly = poly_converter.fit_transform(X)" ], "id": "b867289f4b8dd0ae", "outputs": [], "execution_count": 395 }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T14:53:58.787833400Z", "start_time": "2026-04-25T14:53:58.782476500Z" } }, "cell_type": "code", "source": "X_train_p, X_test_p, y_train_p, y_test_p = train_test_split(X_poly, y, test_size=0.3, random_state=101)", "id": "cf11946087afa62f", "outputs": [], "execution_count": 396 }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T14:53:58.819419400Z", "start_time": "2026-04-25T14:53:58.788835500Z" } }, "cell_type": "code", "source": [ "poly_model = LinearRegression()\n", "poly_model.fit(X_train_p, y_train_p)\n", "y_hat_poly = poly_model.predict(X_test_p)" ], "id": "61b135564e36f71d", "outputs": [], "execution_count": 397 }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T14:53:58.835519700Z", "start_time": "2026-04-25T14:53:58.820414Z" } }, "cell_type": "code", "source": [ "print(f\"Mean absolute error = {mean_absolute_error(y_test_p, y_hat_poly)}\")\n", "print(f\"Root mean squared error = {np.sqrt(mean_squared_error(y_test_p, y_hat_poly))}\")\n" ], "id": "bfd534c1abda8530", "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mean absolute error = 0.29501714163585174\n", "Root mean squared error = 0.4157783198958284\n" ] } ], "execution_count": 398 }, { "metadata": { "ExecuteTime": { "end_time": "2026-04-25T14:53:58.840547200Z", "start_time": "2026-04-25T14:53:58.836521600Z" } }, "cell_type": "markdown", "source": [ "### Model Performance Results:\n", "\n", "Linear Regression: `MAE = 0.2806 | RMSE = 0.3867`\n", "\n", "Polynomial Regression: `MAE = 0.2950 | RMSE = 0.4158`\n", "\n", "This shows that the Linear Regression model performed better than the Polynomial Regression model in terms of both MAE and RMSE, indicating that the linear model is a better fit for this dataset. The residual error plot for the linear model also suggests that there are no clear patterns in the residuals, which is a good sign for the model's performance. This means that for this particular case, handling the rating predictions with a linear regression model would be better due to its lower error rate as compared to the polynomial regression model.\n" ], "id": "eaefa3aed2214793" }, { "metadata": {}, "cell_type": "code", "outputs": [], "execution_count": null, "source": "", "id": "8e3d435421cb39d" } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.6" } }, "nbformat": 4, "nbformat_minor": 5 }