{ "cells": [ { "cell_type": "markdown", "id": "41b4b1fb", "metadata": {}, "source": [ "# Phone cost prediction \n", "
\n", "Author: Presnyakov Oleg\n", "
\n", "Course Project, UC Irvine, Math 10, S24\n", "
\n", "I would like to post my notebook on the course’s website. Yes" ] }, { "cell_type": "markdown", "id": "4ccf31fc", "metadata": {}, "source": [ "## Introduction:\n", "In this project I am aimimg to build a model that will predict a price for a phone using it's features. \n", "
\n", "The data was taken from a relatively new dataset on kaggle:
\n", "https://www.kaggle.com/datasets/dewangmoghe/mobile-phone-price-prediction/data" ] }, { "cell_type": "markdown", "id": "5e4fa5b6", "metadata": {}, "source": [ "## Importing and setting up the data" ] }, { "cell_type": "code", "execution_count": 303, "id": "0d70f9e2", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import altair as alt\n", "import numpy as np\n", "import re\n", "import matplotlib.pyplot as plt\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.linear_model import LinearRegression\n", "from sklearn.metrics import mean_squared_error\n", "from sklearn.tree import DecisionTreeClassifier, plot_tree\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.linear_model import LogisticRegression\n", "from sklearn.metrics import mean_squared_error, classification_report\n", "from sklearn.preprocessing import StandardScaler\n", "from sklearn.neighbors import KNeighborsClassifier\n", "from sklearn.cluster import KMeans\n", "from sklearn.ensemble import RandomForestRegressor\n", "from sklearn.model_selection import KFold\n", "from sklearn.metrics import r2_score\n", "from sklearn.impute import SimpleImputer" ] }, { "cell_type": "code", "execution_count": 304, "id": "fa049b5d", "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", "
Unnamed: 0NameRatingSpec_scoreNo_of_simRamBatteryDisplayCameraExternal_MemoryAndroid_versionPricecompanyInbuilt_memoryfast_chargingScreen_resolutionProcessorProcessor_name
00Samsung Galaxy F14 5G4.6568Dual Sim, 3G, 4G, 5G, VoLTE,4 GB RAM6000 mAh Battery6.6 inches50 MP + 2 MP Dual Rear & 13 MP Front CameraMemory Card Supported, upto 1 TB139,999Samsung128 GB inbuilt25W Fast Charging2408 x 1080 px Display with Water Drop NotchOcta Core ProcessorExynos 1330
11Samsung Galaxy A114.2063Dual Sim, 3G, 4G, VoLTE,2 GB RAM4000 mAh Battery6.4 inches13 MP + 5 MP + 2 MP Triple Rear & 8 MP Fro...Memory Card Supported, upto 512 GB109,990Samsung32 GB inbuilt15W Fast Charging720 x 1560 px Display with Punch Hole1.8 GHz ProcessorOcta Core
22Samsung Galaxy A134.3075Dual Sim, 3G, 4G, VoLTE,4 GB RAM5000 mAh Battery6.6 inches50 MP Quad Rear & 8 MP Front CameraMemory Card Supported, upto 1 TB1211,999Samsung64 GB inbuilt25W Fast Charging1080 x 2408 px Display with Water Drop Notch2 GHz ProcessorOcta Core
33Samsung Galaxy F234.1073Dual Sim, 3G, 4G, VoLTE,4 GB RAM6000 mAh Battery6.4 inches48 MP Quad Rear & 13 MP Front CameraMemory Card Supported, upto 1 TB1211,999Samsung64 GB inbuiltNaN720 x 1600 pxOcta CoreHelio G88
44Samsung Galaxy A03s (4GB RAM + 64GB)4.1069Dual Sim, 3G, 4G, VoLTE,4 GB RAM5000 mAh Battery6.5 inches13 MP + 2 MP + 2 MP Triple Rear & 5 MP Fro...Memory Card Supported, upto 1 TB1111,999Samsung64 GB inbuilt15W Fast Charging720 x 1600 px Display with Water Drop NotchOcta CoreHelio P35
\n", "
" ], "text/plain": [ " Unnamed: 0 Name Rating Spec_score \\\n", "0 0 Samsung Galaxy F14 5G 4.65 68 \n", "1 1 Samsung Galaxy A11 4.20 63 \n", "2 2 Samsung Galaxy A13 4.30 75 \n", "3 3 Samsung Galaxy F23 4.10 73 \n", "4 4 Samsung Galaxy A03s (4GB RAM + 64GB) 4.10 69 \n", "\n", " No_of_sim Ram Battery Display \\\n", "0 Dual Sim, 3G, 4G, 5G, VoLTE, 4 GB RAM 6000 mAh Battery 6.6 inches \n", "1 Dual Sim, 3G, 4G, VoLTE, 2 GB RAM 4000 mAh Battery 6.4 inches \n", "2 Dual Sim, 3G, 4G, VoLTE, 4 GB RAM 5000 mAh Battery 6.6 inches \n", "3 Dual Sim, 3G, 4G, VoLTE, 4 GB RAM 6000 mAh Battery 6.4 inches \n", "4 Dual Sim, 3G, 4G, VoLTE, 4 GB RAM 5000 mAh Battery 6.5 inches \n", "\n", " Camera \\\n", "0 50 MP + 2 MP Dual Rear & 13 MP Front Camera \n", "1 13 MP + 5 MP + 2 MP Triple Rear & 8 MP Fro... \n", "2 50 MP Quad Rear & 8 MP Front Camera \n", "3 48 MP Quad Rear & 13 MP Front Camera \n", "4 13 MP + 2 MP + 2 MP Triple Rear & 5 MP Fro... \n", "\n", " External_Memory Android_version Price company \\\n", "0 Memory Card Supported, upto 1 TB 13 9,999 Samsung \n", "1 Memory Card Supported, upto 512 GB 10 9,990 Samsung \n", "2 Memory Card Supported, upto 1 TB 12 11,999 Samsung \n", "3 Memory Card Supported, upto 1 TB 12 11,999 Samsung \n", "4 Memory Card Supported, upto 1 TB 11 11,999 Samsung \n", "\n", " Inbuilt_memory fast_charging \\\n", "0 128 GB inbuilt 25W Fast Charging \n", "1 32 GB inbuilt 15W Fast Charging \n", "2 64 GB inbuilt 25W Fast Charging \n", "3 64 GB inbuilt NaN \n", "4 64 GB inbuilt 15W Fast Charging \n", "\n", " Screen_resolution Processor \\\n", "0 2408 x 1080 px Display with Water Drop Notch Octa Core Processor \n", "1 720 x 1560 px Display with Punch Hole 1.8 GHz Processor \n", "2 1080 x 2408 px Display with Water Drop Notch 2 GHz Processor \n", "3 720 x 1600 px Octa Core \n", "4 720 x 1600 px Display with Water Drop Notch Octa Core \n", "\n", " Processor_name \n", "0 Exynos 1330 \n", "1 Octa Core \n", "2 Octa Core \n", "3 Helio G88 \n", "4 Helio P35 " ] }, "execution_count": 304, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.read_csv(\"/Users/olegpresnyakov/Desktop/prediction.csv\")\n", "df.head(5)" ] }, { "cell_type": "markdown", "id": "b26badb9", "metadata": {}, "source": [ "At first let's look at all mising values that we have in our data and try to figure out how we can fill them in. While finding solution for that problem, we also want to clear data to numerical, that will allows us to apply numerical algorithms on data" ] }, { "cell_type": "code", "execution_count": 305, "id": "94ab1591", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 305, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.isnull().values.any()" ] }, { "cell_type": "code", "execution_count": 306, "id": "72751ea9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Columns with missing values:\n", "Index(['Android_version', 'Inbuilt_memory', 'fast_charging',\n", " 'Screen_resolution', 'Processor'],\n", " dtype='object')\n" ] } ], "source": [ "columns_with_missing_values = df.columns[df.isnull().any()]\n", "print(\"Columns with missing values:\")\n", "print(columns_with_missing_values)" ] }, { "cell_type": "code", "execution_count": 307, "id": "b3673d1e", "metadata": {}, "outputs": [], "source": [ "df['Ram'] = df['Ram'].str.extract('(\\d+)').astype(float)\n", "df['Battery'] = df['Battery'].str.extract('(\\d+)').astype(float)\n", "df['Display'] = df['Display'].str.extract('(\\d+.\\d+)').astype(float)\n", "df['Price'] = df['Price'].str.replace(',', '').astype(float)\n", "df['fast_charging'] = df['fast_charging'].str.extract('(\\d+)').astype(float)" ] }, { "cell_type": "code", "execution_count": 308, "id": "7c6ba81a", "metadata": {}, "outputs": [], "source": [ "df['fast_charging'].fillna('0', inplace=True)\n", "df['Rating'].fillna(df['Rating'].median(), inplace=True)\n", "df['Spec_score'].fillna(df['Spec_score'].median(), inplace=True)\n", "df['Ram'].fillna(df['Ram'].median(), inplace=True)\n", "df['Battery'].fillna(df['Battery'].median(), inplace=True)\n", "df['Display'].fillna(df['Display'].median(), inplace=True)\n", "df['Price'].fillna(df['Price'].median(), inplace=True)" ] }, { "cell_type": "markdown", "id": "bef7c678", "metadata": {}, "source": [ "## Working with a memory representation and screen resolution" ] }, { "cell_type": "code", "execution_count": 309, "id": "6e938a2f", "metadata": {}, "outputs": [], "source": [ "df['EXT_Memory_GB'] = df['External_Memory'].str.extract(r'(\\d+)').astype(float)\n", "df['Unit'] = df['External_Memory'].str.extract(r'(\\w+)$')\n", "\n", "conversion_factors = {'TB': 1024, 'GB': 1}\n", "df['EXT_Memory_GB'] *= df['Unit'].map(conversion_factors)\n", "df.drop(columns=['External_Memory', 'Unit'], inplace=True)" ] }, { "cell_type": "code", "execution_count": 310, "id": "5fda2b5d", "metadata": {}, "outputs": [], "source": [ "df['Memory_GB'] = df['Inbuilt_memory'].str.extract(r'(\\d+)').astype(float)\n", "df['Unit'] = df['Inbuilt_memory'].str.extract(r'(\\w+)$')\n", "df.loc[df['Unit'] == 'TB', 'Memory_GB'] *= 1024\n", "df.drop(columns=['Unit'], inplace=True)" ] }, { "cell_type": "code", "execution_count": 311, "id": "64e904be", "metadata": {}, "outputs": [], "source": [ "df[['px', 'Feature']] = df['Screen_resolution'].str.extract(r'(\\d+ x \\d+) px Display with (Water Drop Notch|Punch Hole)')\n", "df['Display with Water Drop Notch'] = df['Feature'].apply(lambda x: 1 if x == 'Water Drop Notch' else 0)\n", "df['Display with Punch Hole'] = df['Feature'].apply(lambda x: 1 if x == 'Punch Hole' else 0)\n", "df.drop(columns=['Screen_resolution', 'Feature'], inplace=True)\n", "df['No_of_sim_count'] = df['No_of_sim'].str.count(',') + 1\n", "df.drop(columns=['No_of_sim'], inplace=True)" ] }, { "cell_type": "code", "execution_count": 312, "id": "e3c67567", "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", "
Unnamed: 0NameRatingSpec_scoreRamBatteryDisplayCameraAndroid_versionPrice...Inbuilt_memoryfast_chargingProcessorProcessor_nameEXT_Memory_GBMemory_GBpxDisplay with Water Drop NotchDisplay with Punch HoleNo_of_sim_count
00Samsung Galaxy F14 5G4.65684.06000.06.650 MP + 2 MP Dual Rear & 13 MP Front Camera139999.0...128 GB inbuilt25.0Octa Core ProcessorExynos 13301024.0128.02408 x 1080106
11Samsung Galaxy A114.20632.04000.06.413 MP + 5 MP + 2 MP Triple Rear & 8 MP Fro...109990.0...32 GB inbuilt15.01.8 GHz ProcessorOcta Core512.032.0720 x 1560015
22Samsung Galaxy A134.30754.05000.06.650 MP Quad Rear & 8 MP Front Camera1211999.0...64 GB inbuilt25.02 GHz ProcessorOcta Core1024.064.01080 x 2408105
33Samsung Galaxy F234.10734.06000.06.448 MP Quad Rear & 13 MP Front Camera1211999.0...64 GB inbuilt0Octa CoreHelio G881024.064.0NaN005
44Samsung Galaxy A03s (4GB RAM + 64GB)4.10694.05000.06.513 MP + 2 MP + 2 MP Triple Rear & 5 MP Fro...1111999.0...64 GB inbuilt15.0Octa CoreHelio P351024.064.0720 x 1600105
\n", "

5 rows × 21 columns

\n", "
" ], "text/plain": [ " Unnamed: 0 Name Rating Spec_score Ram \\\n", "0 0 Samsung Galaxy F14 5G 4.65 68 4.0 \n", "1 1 Samsung Galaxy A11 4.20 63 2.0 \n", "2 2 Samsung Galaxy A13 4.30 75 4.0 \n", "3 3 Samsung Galaxy F23 4.10 73 4.0 \n", "4 4 Samsung Galaxy A03s (4GB RAM + 64GB) 4.10 69 4.0 \n", "\n", " Battery Display Camera \\\n", "0 6000.0 6.6 50 MP + 2 MP Dual Rear & 13 MP Front Camera \n", "1 4000.0 6.4 13 MP + 5 MP + 2 MP Triple Rear & 8 MP Fro... \n", "2 5000.0 6.6 50 MP Quad Rear & 8 MP Front Camera \n", "3 6000.0 6.4 48 MP Quad Rear & 13 MP Front Camera \n", "4 5000.0 6.5 13 MP + 2 MP + 2 MP Triple Rear & 5 MP Fro... \n", "\n", " Android_version Price ... Inbuilt_memory fast_charging \\\n", "0 13 9999.0 ... 128 GB inbuilt 25.0 \n", "1 10 9990.0 ... 32 GB inbuilt 15.0 \n", "2 12 11999.0 ... 64 GB inbuilt 25.0 \n", "3 12 11999.0 ... 64 GB inbuilt 0 \n", "4 11 11999.0 ... 64 GB inbuilt 15.0 \n", "\n", " Processor Processor_name EXT_Memory_GB Memory_GB px \\\n", "0 Octa Core Processor Exynos 1330 1024.0 128.0 2408 x 1080 \n", "1 1.8 GHz Processor Octa Core 512.0 32.0 720 x 1560 \n", "2 2 GHz Processor Octa Core 1024.0 64.0 1080 x 2408 \n", "3 Octa Core Helio G88 1024.0 64.0 NaN \n", "4 Octa Core Helio P35 1024.0 64.0 720 x 1600 \n", "\n", " Display with Water Drop Notch Display with Punch Hole No_of_sim_count \n", "0 1 0 6 \n", "1 0 1 5 \n", "2 1 0 5 \n", "3 0 0 5 \n", "4 1 0 5 \n", "\n", "[5 rows x 21 columns]" ] }, "execution_count": 312, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "markdown", "id": "46cfa0e8", "metadata": {}, "source": [ "## Working with camera" ] }, { "cell_type": "code", "execution_count": 313, "id": "509db050", "metadata": {}, "outputs": [], "source": [ "def sum_megapixels(camera_str):\n", " rear_megapixels = sum(map(int, re.findall(r'(\\d+)\\s*MP', camera_str.split('&')[0])))\n", " if len(camera_str.split('&')) > 1:\n", " front_megapixels = sum(map(int, re.findall(r'(\\d+)\\s*MP', camera_str.split('&')[1])))\n", " else:\n", " front_megapixels = 0\n", " return rear_megapixels, front_megapixels\n", "\n", "df['Rear'], df['Front'] = zip(*df['Camera'].apply(sum_megapixels))\n", "df.drop(columns=['Camera'], inplace=True)" ] }, { "cell_type": "code", "execution_count": 314, "id": "eca0d7fa", "metadata": {}, "outputs": [], "source": [ "def resolution_to_product(resolution_str):\n", " if isinstance(resolution_str, str):\n", " parts = resolution_str.split('x')\n", " if len(parts) == 2:\n", " try:\n", " width = int(parts[0])\n", " height = int(parts[1])\n", " return width * height\n", " except ValueError:\n", " return None\n", " else:\n", " return None\n", " elif isinstance(resolution_str, int):\n", " return resolution_str\n", " else:\n", " return None\n", "\n", "df['px'] = df['px'].apply(resolution_to_product)" ] }, { "cell_type": "code", "execution_count": 315, "id": "a85ad5c1", "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", "
Unnamed: 0NameRatingSpec_scoreRamBatteryDisplayAndroid_versionPricecompany...ProcessorProcessor_nameEXT_Memory_GBMemory_GBpxDisplay with Water Drop NotchDisplay with Punch HoleNo_of_sim_countRearFront
00Samsung Galaxy F14 5G4.65684.06000.06.6139999.0Samsung...Octa Core ProcessorExynos 13301024.0128.02600640.01065213
11Samsung Galaxy A114.20632.04000.06.4109990.0Samsung...1.8 GHz ProcessorOcta Core512.032.01123200.0015208
22Samsung Galaxy A134.30754.05000.06.61211999.0Samsung...2 GHz ProcessorOcta Core1024.064.02600640.0105508
33Samsung Galaxy F234.10734.06000.06.41211999.0Samsung...Octa CoreHelio G881024.064.0NaN0054813
44Samsung Galaxy A03s (4GB RAM + 64GB)4.10694.05000.06.51111999.0Samsung...Octa CoreHelio P351024.064.01152000.0105175
\n", "

5 rows × 22 columns

\n", "
" ], "text/plain": [ " Unnamed: 0 Name Rating Spec_score Ram \\\n", "0 0 Samsung Galaxy F14 5G 4.65 68 4.0 \n", "1 1 Samsung Galaxy A11 4.20 63 2.0 \n", "2 2 Samsung Galaxy A13 4.30 75 4.0 \n", "3 3 Samsung Galaxy F23 4.10 73 4.0 \n", "4 4 Samsung Galaxy A03s (4GB RAM + 64GB) 4.10 69 4.0 \n", "\n", " Battery Display Android_version Price company ... \\\n", "0 6000.0 6.6 13 9999.0 Samsung ... \n", "1 4000.0 6.4 10 9990.0 Samsung ... \n", "2 5000.0 6.6 12 11999.0 Samsung ... \n", "3 6000.0 6.4 12 11999.0 Samsung ... \n", "4 5000.0 6.5 11 11999.0 Samsung ... \n", "\n", " Processor Processor_name EXT_Memory_GB Memory_GB px \\\n", "0 Octa Core Processor Exynos 1330 1024.0 128.0 2600640.0 \n", "1 1.8 GHz Processor Octa Core 512.0 32.0 1123200.0 \n", "2 2 GHz Processor Octa Core 1024.0 64.0 2600640.0 \n", "3 Octa Core Helio G88 1024.0 64.0 NaN \n", "4 Octa Core Helio P35 1024.0 64.0 1152000.0 \n", "\n", " Display with Water Drop Notch Display with Punch Hole No_of_sim_count \\\n", "0 1 0 6 \n", "1 0 1 5 \n", "2 1 0 5 \n", "3 0 0 5 \n", "4 1 0 5 \n", "\n", " Rear Front \n", "0 52 13 \n", "1 20 8 \n", "2 50 8 \n", "3 48 13 \n", "4 17 5 \n", "\n", "[5 rows x 22 columns]" ] }, "execution_count": 315, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "code", "execution_count": 316, "id": "af03f5ea", "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", "
Unnamed: 0NameRatingSpec_scoreRamBatteryDisplayAndroid_versionPriceInbuilt_memory...Processor_name_Tiger T616Processor_name_Unisoc SC9836AProcessor_name_Unisoc SC9863AProcessor_name_Unisoc T606Processor_name_Unisoc SC9832EProcessor_name_Unisoc SC9863AProcessor_name_Unisoc T603Processor_name_Unisoc T606Processor_name_Unisoc T610Processor_name_Unisoc T612
00Samsung Galaxy F14 5G4.65684.06000.06.6139999.0128 GB inbuilt...0000000000
11Samsung Galaxy A114.20632.04000.06.4109990.032 GB inbuilt...0000000000
22Samsung Galaxy A134.30754.05000.06.61211999.064 GB inbuilt...0000000000
33Samsung Galaxy F234.10734.06000.06.41211999.064 GB inbuilt...0000000000
44Samsung Galaxy A03s (4GB RAM + 64GB)4.10694.05000.06.51111999.064 GB inbuilt...0000000000
\n", "

5 rows × 335 columns

\n", "
" ], "text/plain": [ " Unnamed: 0 Name Rating Spec_score Ram \\\n", "0 0 Samsung Galaxy F14 5G 4.65 68 4.0 \n", "1 1 Samsung Galaxy A11 4.20 63 2.0 \n", "2 2 Samsung Galaxy A13 4.30 75 4.0 \n", "3 3 Samsung Galaxy F23 4.10 73 4.0 \n", "4 4 Samsung Galaxy A03s (4GB RAM + 64GB) 4.10 69 4.0 \n", "\n", " Battery Display Android_version Price Inbuilt_memory ... \\\n", "0 6000.0 6.6 13 9999.0 128 GB inbuilt ... \n", "1 4000.0 6.4 10 9990.0 32 GB inbuilt ... \n", "2 5000.0 6.6 12 11999.0 64 GB inbuilt ... \n", "3 6000.0 6.4 12 11999.0 64 GB inbuilt ... \n", "4 5000.0 6.5 11 11999.0 64 GB inbuilt ... \n", "\n", " Processor_name_Tiger T616 Processor_name_Unisoc SC9836A \\\n", "0 0 0 \n", "1 0 0 \n", "2 0 0 \n", "3 0 0 \n", "4 0 0 \n", "\n", " Processor_name_Unisoc SC9863A Processor_name_Unisoc T606 \\\n", "0 0 0 \n", "1 0 0 \n", "2 0 0 \n", "3 0 0 \n", "4 0 0 \n", "\n", " Processor_name_Unisoc SC9832E Processor_name_Unisoc SC9863A \\\n", "0 0 0 \n", "1 0 0 \n", "2 0 0 \n", "3 0 0 \n", "4 0 0 \n", "\n", " Processor_name_Unisoc T603 Processor_name_Unisoc T606 \\\n", "0 0 0 \n", "1 0 0 \n", "2 0 0 \n", "3 0 0 \n", "4 0 0 \n", "\n", " Processor_name_Unisoc T610 Processor_name_Unisoc T612 \n", "0 0 0 \n", "1 0 0 \n", "2 0 0 \n", "3 0 0 \n", "4 0 0 \n", "\n", "[5 rows x 335 columns]" ] }, "execution_count": 316, "metadata": {}, "output_type": "execute_result" } ], "source": [ "columns_for_dummies = ['company', 'Processor', 'Processor_name']\n", "dummy_variables = pd.get_dummies(df[columns_for_dummies])\n", "df_with_dummies = pd.concat([df, dummy_variables], axis=1)\n", "df_with_dummies.drop(columns_for_dummies, axis=1, inplace=True)\n", "df = df_with_dummies\n", "\n", "df.head()" ] }, { "cell_type": "markdown", "id": "f0cd0895", "metadata": {}, "source": [ "Now let's finally apply algorithms to predict price for a phone:" ] }, { "cell_type": "markdown", "id": "93387aaf", "metadata": {}, "source": [ "#### Simple linear regression" ] }, { "cell_type": "code", "execution_count": 317, "id": "43300ec8", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train RMSE: 10665.29\n", "Test RMSE: 203643.32\n", "Train R^2: 0.88\n", "Test R^2: -45.00\n" ] }, { "data": { "image/png": "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unVrAEB+fj7279+PuXPnVrvuRERE9GiyiTlHaWlp6NKlC3x9fTFv3jzcuHEDGRkZpeYOBQUFYdOmTQAeHE6bOHEi5syZg02bNuHUqVMYOXIknJycMHToUEs0g4iIiGyARUeO9LV7926cP38e58+fR8OGDXVek16JIDk5GWq1Wvt88uTJuH//Pl5//XXcvn0b7du3x+7du+Hq6mq2uhMREZFtsdnrHJkLr3NERERke2rkdY6IiIiITIHhiIiIiEiC4YiIiIhIguGIiIiISILhiIiIiEiC4YiIiIhIguGIiIiISILhiIiIiEiC4YiIiIhIguGIiIiISILhiIiIiEiC4YiIiIhIguGIiIiISILhiIiIiEiC4YiIiIhIguGIiIiISILhiIiIiEiC4YiIiIhIguGIiIiISILhiIiIiEiC4YiIiIhIguGIiIiISILhiIiIiEiC4YiIiIhIguGIiIiISILhiIiIiEiC4YiIiIhIguGIiIiISILhiIiIiEiC4YiIiIhIguGIiIiISILhiIiIiEiC4YiIiIhIguGIiIiISILhiIiIiEiC4YiIiIhIguGIiIiISILhiIiIiEiC4YiIiIhIguGIiIiISILhiIiIiEjCJsJRamoqXnnlFQQEBMDR0RGBgYGYPn068vPzK1xv5MiRkMlkOo8OHTqYqdZERERki2pbugL6OHv2LIqLi7FkyRI0btwYp06dwujRo3H37l3MmzevwnUjIyMRFxenfW5vb2/q6hIREZENs4lwFBkZicjISO3zRo0aITk5GYsWLao0HCkUCnh7e5u6ikRERPSIsInDamVRq9Vwd3evtFx8fDw8PT3RtGlTjB49GpmZmRWW12g0yMnJ0XkQERFRzWGT4ejChQv44osvMHbs2ArLRUVFYfXq1di7dy8+++wzJCYmIiIiAhqNptx1YmNjoVQqtQ9fX19jV5+IiIismEwIISz15jExMZgxY0aFZRITE/HUU09pn6elpSEsLAxhYWH45ptvDHq/9PR0+Pn5Ye3atRgwYECZZTQajU54ysnJga+vL9RqNdzc3Ax6PyIiIrKMnJwcKJXKKvXfFp1zNH78eAwZMqTCMv7+/tqf09LSEB4ejtDQUHz99dcGv5+Pjw/8/Pxw7ty5cssoFAooFAqDt01ERESPBouGIw8PD3h4eOhV9tq1awgPD8eTTz6JuLg41Kpl+BHBrKwsXLlyBT4+PgavS0RERDWDTcw5SktLQ5cuXeDr64t58+bhxo0byMjIQEZGhk65oKAgbNq0CQBw584dvPvuu0hISEBqairi4+PRp08feHh44LnnnrNEM4iIiMgG2MSp/Lt378b58+dx/vx5NGzYUOc16ZSp5ORkqNVqAICdnR1OnjyJVatWITs7Gz4+PggPD8e6devg6upq1voTERGR7bDohGxbUJ0JXURERGQZ1em/beKwGhEREZG5MBwRERERSTAcEREREUkwHBERERFJMBwRERERSTAcEREREUkwHBERERFJMBwRERERSTAcEREREUkwHBERERFJMBwRERERSTAcEREREUkwHBERERFJMBwRERERSTAcEREREUkwHBERERFJMBwRERERSTAcEREREUkwHBERERFJMBwRERERSTAcEREREUkwHBERERFJMBwRERERSTAcEREREUkwHBERERFJMBwRERERSTAcEREREUkwHBERERFJMBwRERERSTAcEREREUkwHBERERFJMBwRERERSTAcEREREUkwHBERERFJMBwRERERSTAcEREREUkwHBERERFJMBwRERERSTAcEREREUkwHBERERFJMBwRERERSdhMOOrbty8ee+wxODg4wMfHByNGjEBaWlqF6wghEBMTA5VKBUdHR3Tp0gWnT582U42JiIjIFtlMOAoPD8f69euRnJyMDRs24MKFCxg0aFCF63zyySeYP38+vvzySyQmJsLb2xvdunVDbm6umWpNREREtkYmhBCWrkRVbNmyBf3794dGo4FcLi/1uhACKpUKEydOxJQpUwAAGo0GXl5emDt3LsaMGaPX++Tk5ECpVEKtVsPNzc2obSAiIiLTqE7/bTMjR1K3bt3C6tWr0bFjxzKDEQCkpKQgIyMD3bt31y5TKBQICwvDoUOHyt22RqNBTk6OzoOIiIhqDpsKR1OmTIGzszPq1auHy5cv48cffyy3bEZGBgDAy8tLZ7mXl5f2tbLExsZCqVRqH76+vsapPBEREdkEi4ajmJgYyGSyCh9Hjx7Vlv/Xv/6FP//8E7t374adnR1eeuklVHZUUCaT6TwXQpRaJjV16lSo1Wrt48qVK9VrJBEREdmU2pZ88/Hjx2PIkCEVlvH399f+7OHhAQ8PDzRt2hTNmzeHr68vDh8+jNDQ0FLreXt7A3gwguTj46NdnpmZWWo0SUqhUEChUBjYkpqpqFjgSMotZObmwdPVAe0C3GFXq/zgSUREZAssGo5Kwk5VlIwYaTSaMl8PCAiAt7c39uzZg9atWwMA8vPzsX//fsydO7dqFSatXafSMWNrEtLVedplPkoHTO8TjMgQnwrWJCIism42MefoyJEj+PLLL3H8+HFcunQJ+/btw9ChQxEYGKgzahQUFIRNmzYBeHA4beLEiZgzZw42bdqEU6dOYeTIkXBycsLQoUMt1ZRHwq5T6Rj33TGdYAQAGeo8jPvuGHadSrdQzYiIiKrPoiNH+nJ0dMTGjRsxffp03L17Fz4+PoiMjMTatWt1DoElJydDrVZrn0+ePBn379/H66+/jtu3b6N9+/bYvXs3XF1dLdGMR0JRscCMrUkoa6aXACADMGNrEroFe/MQGxER2SSbvc6RufA6R7oSLmThxaWHKy23ZnQHhAbWM0ONiIiISqtx1zkiy8nMzau8kAHliIiIrA3DERnE09XBqOWIiIisDcMRGaRdgDt8lA4obzaRDA/OWmsX4G7OahERERkNwxEZxK6WDNP7BANAqYBU8nx6n2BOxiYiIpvFcEQGiwzxwaLhbeCt1D105q10wKLhbXidIyIismk2cSo/WZ/IEB90C/bmFbKJiOiRw3BEVWZXS8bT9YmI6JHDw2pEREREEgxHRERERBIMR0REREQSDEdEREREEgxHRERERBIMR0REREQSDEdEREREEgxHRERERBIMR0REREQSvEJ2JYQQAICcnBwL14SIiIj0VdJvl/TjhmA4qkRubi4AwNfX18I1ISIiIkPl5uZCqVQatI5MVCVS1SDFxcVIS0uDq6srZLJ/bqqak5MDX19fXLlyBW5ubhasoenVlLaynY+emtLWmtJOoOa0taa0EzBdW4UQyM3NhUqlQq1ahs0i4shRJWrVqoWGDRuW+7qbm9sj/8EtUVPaynY+empKW2tKO4Ga09aa0k7ANG01dMSoBCdkExEREUkwHBERERFJMBxVkUKhwPTp06FQKCxdFZOrKW1lOx89NaWtNaWdQM1pa01pJ2CdbeWEbCIiIiIJjhwRERERSTAcEREREUkwHBERERFJMBwRERERSTAcVdHChQsREBAABwcHPPnkkzhw4IClqwQAiI2NRdu2beHq6gpPT0/0798fycnJOmVGjhwJmUym8+jQoYNO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V9a+4uJi9OnTB3Pnzi31mo+Pj0F1JaLq48gREZlMYWEhVq1ahc8++wzHjx/XPk6cOAE/Pz+sXr0aANCqVSv88ssv5W7H3t4eRUVFOsvq16+PjIwMnYD08HyfAwcOYMKECejZsydatGgBhUJRpUnOzs7OaNy4Mfz8/EoFI320bNkSxcXF2L9/f5mvt2nTBqdPn4a/vz8aN26s86gseBGR8TEcEZHJbNu2Dbdv38Yrr7yCkJAQncegQYO0Z2tNnz4da9aswfTp03HmzBmcPHkSn3zyiXY7/v7++PXXX3Ht2jVtuOnSpQtu3LiBTz75BBcuXMBXX32FnTt36rx/48aN8e233+LMmTP4/fffMWzYsCqNUlWXv78/oqOjMWrUKGzevBkpKSmIj4/H+vXrAQBvvPEGbt26hRdffBFHjhzBxYsXsXv3bowaNapUKCQi02M4IiKTWbZsGbp27QqlUlnqtYEDB+L48eM4duwYunTpgh9++AFbtmzBE088gYiICPz+++/asjNnzkRqaioCAwO1c3uaN2+OhQsX4quvvsLjjz+OI0eOlLr20PLly3H79m20bt0aI0aMwIQJE+Dp6WnaRpdj0aJFGDRoEF5//XUEBQVh9OjR2gtJqlQqHDx4EEVFRejRowdCQkLw1ltvQalUolYt/psmMjeZePigPREREVENxq8kRERERBIMR0REREQSDEdEREREEgxHRERERBIMR0REREQSDEdEREREEgxHRERERBIMR0REREQSDEdEREREEgxHRERERBIMR0REREQSDEdEREREEv8Hfj7an7ybvyMAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "numeric_cols = df.select_dtypes(include=['number']).columns\n", "df_numeric = df[numeric_cols]\n", "\n", "imputer = SimpleImputer(strategy='mean')\n", "df_imputed = pd.DataFrame(imputer.fit_transform(df_numeric), columns=df_numeric.columns)\n", "\n", "X = df_imputed.drop(columns=['Price'])\n", "y = df_imputed['Price']\n", "\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n", "\n", "model = LinearRegression()\n", "model.fit(X_train, y_train)\n", "\n", "train_rmse = mean_squared_error(y_train, model.predict(X_train), squared=False)\n", "test_rmse = mean_squared_error(y_test, model.predict(X_test), squared=False)\n", "r2_train = r2_score(y_train, model.predict(X_train))\n", "r2_test = r2_score(y_test, model.predict(X_test))\n", "\n", "print(f'Train RMSE: {train_rmse:.2f}')\n", "print(f'Test RMSE: {test_rmse:.2f}')\n", "print(f'Train R^2: {r2_train:.2f}')\n", "print(f'Test R^2: {r2_test:.2f}')\n", "\n", "y_pred = model.predict(X_test)\n", "plt.scatter(y_test, y_pred)\n", "plt.xlabel('Actual Price')\n", "plt.ylabel('Predicted Price')\n", "plt.title('Actual vs Predicted Price')\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "dcd2ce4e", "metadata": {}, "source": [ "#### Simple linear regression with KFold" ] }, { "cell_type": "code", "execution_count": 318, "id": "922917d7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mean Train R^2: 0.01\n", "Mean Test R^2: 0.01\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "numeric_cols = df.select_dtypes(include=['number']).columns\n", "df_numeric = df[numeric_cols]\n", "\n", "imputer = SimpleImputer(strategy='mean')\n", "df_imputed = pd.DataFrame(imputer.fit_transform(df_numeric), columns=df_numeric.columns)\n", "\n", "y = df_imputed['Price']\n", "\n", "kf = KFold(n_splits=5, shuffle=True, random_state=42)\n", "train_r2_scores = []\n", "test_r2_scores = []\n", "\n", "for train_index, test_index in kf.split(X_pca):\n", " X_train, X_test = X_pca[train_index], X_pca[test_index]\n", " y_train, y_test = y.iloc[train_index], y.iloc[test_index]\n", " \n", " model = LinearRegression()\n", " model.fit(X_train, y_train)\n", " \n", " train_r2_scores.append(r2_score(y_train, model.predict(X_train)))\n", " test_r2_scores.append(r2_score(y_test, model.predict(X_test)))\n", "\n", "mean_train_r2 = np.mean(train_r2_scores)\n", "mean_test_r2 = np.mean(test_r2_scores)\n", "\n", "print(f'Mean Train R^2: {mean_train_r2:.2f}')\n", "print(f'Mean Test R^2: {mean_test_r2:.2f}')\n", "plt.scatter(y_test, model.predict(X_test), label='Actual vs Predicted Price')\n", "plt.plot(y_test, y_test, color='red', label='Perfect Predictions')\n", "plt.xlabel('Actual Price')\n", "plt.ylabel('Predicted Price')\n", "plt.title('Actual vs Predicted Price')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "f9f74831", "metadata": {}, "source": [ "Notice that the model that was constructed using linear regression is very bad in terms of mean R^2. We can only explain 1% of the data using this method. This is why, lets try to implement more advanced structure on the dataset." ] }, { "cell_type": "markdown", "id": "a4462cd0", "metadata": {}, "source": [ "#### Random forest" ] }, { "cell_type": "code", "execution_count": 319, "id": "1419ac2a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train R^2: 0.86\n", "Test R^2: 0.12\n" ] } ], "source": [ "imputer = SimpleImputer(strategy='mean')\n", "X_train_imputed = imputer.fit_transform(X_train)\n", "X_test_imputed = imputer.transform(X_test)\n", "\n", "model = RandomForestRegressor(n_estimators=100, random_state=42)\n", "model.fit(X_train_imputed, y_train)\n", "\n", "train_r2 = r2_score(y_train, model.predict(X_train_imputed))\n", "test_r2 = r2_score(y_test, model.predict(X_test_imputed))\n", "\n", "print(f'Train R^2: {train_r2:.2f}')\n", "print(f'Test R^2: {test_r2:.2f}')\n" ] }, { "cell_type": "markdown", "id": "d6bd3ee5", "metadata": {}, "source": [ "#### Random forest using KFold " ] }, { "cell_type": "code", "execution_count": 320, "id": "65828285", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mean Train R^2: 0.98\n", "Mean Test R^2: 0.83\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "imputer = SimpleImputer(strategy='mean')\n", "X_imputed = imputer.fit_transform(X)\n", "\n", "model = RandomForestRegressor(n_estimators=100, random_state=42)\n", "\n", "kf = KFold(n_splits=5, shuffle=True, random_state=42)\n", "train_r2_scores = []\n", "test_r2_scores = []\n", "\n", "for train_index, test_index in kf.split(X_imputed):\n", " X_train, X_test = X_imputed[train_index], X_imputed[test_index]\n", " y_train, y_test = y[train_index], y[test_index]\n", " \n", " model.fit(X_train, y_train)\n", " \n", " train_r2_scores.append(r2_score(y_train, model.predict(X_train)))\n", " test_r2_scores.append(r2_score(y_test, model.predict(X_test)))\n", "\n", "mean_train_r2 = np.mean(train_r2_scores)\n", "mean_test_r2 = np.mean(test_r2_scores)\n", "\n", "print(f'Mean Train R^2: {mean_train_r2:.2f}')\n", "print(f'Mean Test R^2: {mean_test_r2:.2f}')\n", "\n", "plt.scatter(y_test, model.predict(X_test), label='Actual vs Predicted Price')\n", "plt.plot(y_test, y_test, color='red', label='Perfect Predictions')\n", "plt.xlabel('Actual Price')\n", "plt.ylabel('Predicted Price')\n", "plt.title('Actual vs Predicted Price')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "b3422a51", "metadata": {}, "source": [ "## Summary\n", "We tackled the challenge of predicting smartphone prices using machine learning. Leveraging a dataset with key features, our algorithm, a Random Forest regressor with K-Fold cross-validation, showed promising results in accurately predicting prices. This approach sheds light on pricing dynamics and underscores the potential of data-driven decision-making in the smartphone industry." ] }, { "cell_type": "markdown", "id": "96e680b4", "metadata": {}, "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.19" } }, "nbformat": 4, "nbformat_minor": 5 }