diff --git a/11___House_price_prediction_using_Linear_Regression.ipynb b/11___House_price_prediction_using_Linear_Regression.ipynb new file mode 100644 index 0000000..31acfce --- /dev/null +++ b/11___House_price_prediction_using_Linear_Regression.ipynb @@ -0,0 +1,1508 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [], + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "I1VRs4tZkbvW" + }, + "source": [ + "# **Day-11 | House price prediction using Linear Regression-SingleVariable**" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "SAFLqwkKk8rK" + }, + "source": [ + "### *Import Libraries*" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "EgF2lvr_jzVL" + }, + "source": [ + "import pandas as pd\n", + "from sklearn.linear_model import LinearRegression\n", + "import matplotlib.pyplot as plt" + ], + "execution_count": 1, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "XWe_7j6UjxRj" + }, + "source": [ + "### *Load Dataset from Local Directory*" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "vKrHCJk_jwfJ", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 73 + }, + "outputId": "715c67be-afd2-4b0d-c041-a7d3888a5095" + }, + "source": [ + "from google.colab import files\n", + "uploaded = files.upload()" + ], + "execution_count": 2, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/html": [ + "\n", + " \n", + " \n", + " Upload widget is only available when the cell has been executed in the\n", + " current browser session. Please rerun this cell to enable.\n", + " \n", + " " + ] + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Saving dataset.csv to dataset.csv\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6gXowmSom462" + }, + "source": [ + "### *Load Dataset*" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "6JLDHSdym6wP" + }, + "source": [ + "dataset = pd.read_csv('dataset.csv')" + ], + "execution_count": 3, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-DdkIy1ZnDfA" + }, + "source": [ + "### *Load Summarize*" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "OlElQViRnGFp", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "d47549da-8c94-4e4b-ef5c-d76fae7a04d8" + }, + "source": [ + "print(dataset.shape)\n", + "print(dataset.head(5))" + ], + "execution_count": 4, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "(1460, 2)\n", + " area price\n", + "0 8450 208500\n", + "1 9600 181500\n", + "2 11250 223500\n", + "3 9550 140000\n", + "4 14260 250000\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "p5yk_BN4nMtD" + }, + "source": [ + "### *Visualize Dataset*" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "a8Mi5nkFnOTQ", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 466 + }, + "outputId": "cb410515-c01a-4870-f356-77eef2cedaa8" + }, + "source": [ + "plt.xlabel('Area')\n", + "plt.ylabel('Price')\n", + "plt.scatter(dataset.area,dataset.price,color='red',marker='*')" + ], + "execution_count": 5, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 5 + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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6mc2qxl+v/894OenlqepyccHGDZMlVeoaybglS7ETERE5OY4+8+JPG72H2A9A7AhERHAmTNqtKrm4swLFwImExAWBsyerfYxB4uIiDyAvd/fDKqcyCODKgD47jsgJQU4erTuNtHRwN69QEyM2q6vHIPZXJ2DpQVhREREboolFchxjh5VD6PR9nGjEfjww+qACmi4HENTFmImIiJyYwyqyJoIkJmpnjUvvaSey8psn1NWpvKtatLKMQQHW+8PDlavYRmEEREReTiWVCBr6emqoOe0aeqWHqACI03btsCFC2qEqagI6N5drQ+4bh2QmFj7enUtzrx/v+32REREHopBFVnTZue99pp15XTNhQvquaoKeP114JprgNxcoEsX29ezXJz5t78FJk1S23UFYURERB6KQVVLV3OWnhZU2QqoLPn7A3ff3XBO1MiRQP/+wLhxwIMPqn233qr2ExEReREGVS1dcTEwf771LD3AetHkmm64AZgxA2jduv5rm80qGb2gAHjuueqA7eBBlVOVmcmyCkRE5DVYUsGJ3LakQm6uGknKyrJOUK/L888DTzwBbNoEDB9edzuWVSAiIi/glJIK5eXlyMnJQWVl5ZVchlytrll6tmb0AdWzARuqjs6yCkRE1II06fbf5cuX8ac//QnvvPMOAODEiRPo1q0b/vSnP6FTp0544oknHNpJcgJbs/S0YHnUKGDAAOCjj4D//hc4d07tX7lSjUQZDHXfxtMCtogI6+trZRX8/Zvn9yEiInKyJo1UzZ07F1999RUyMzMRGBio709KSsJHH33ksM6RE1nO0jt5UgVSAHDHHcC77wJLlqiAylJxMTBvHvDkkyovq2ZQpqmvrAIREZGXaFJQ9cknn+Dll1/GjTfeCIPBoO/v06cPvv32W4d1jpxo5Ejggw+Ajz8GrroKWLtWbc+ZA7z3HjBxohp1sqVbN+DLL+u+jVdXwLZuncN/DSIiIldp0u2/H3/8ER06dKi1v7i42CrIIg+SmGhdN8pgAO65Ry2CnJKiks7r8sMPwJtvApGRtm8BWpZVMBhUwLZiRd21rYiIiDxQk0aqBg0ahA0bNujbWiD1xhtvICEhwTE9I/ewe7cKqK6+uu42paXA3/5W9y3AxEQVoGkBtxaweUvxT1tL+xARUYvTpJGq5557DiNGjMCxY8dQWVmJl156CceOHcOePXuw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QAYPHix79+51dZe8wtixY6Vjx44SEBAgnTp1krFjx8rJkyf14yUlJTJt2jRp06aNBAcHy5133innzp2zusaZM2dkxIgREhQUJO3atZNZs2ZJRUWFVZvt27fLgAEDJCAgQLp16yZvv/12rb7wPa62fft2AVDrMWHCBBFR0+TnzZsnkZGRYjQa5bbbbpOcnByra1y4cEHGjRsnrVu3ltDQUHnggQekqKjIqs1XX30lN954oxiNRunUqZM8//zztfqyatUqufrqqyUgIED69OkjGzZssDpuT1+8UX3v0eXLl2XYsGHSvn178ff3ly5dushDDz1U6x8JfI+al633B4DV5487fcbZ0xd3YxARcfboGBEREZG3YU4VERERkQMwqCIiIiJyAAZVRERERA7AoIqIiIjIARhUERERETkAgyoiIiIiB2BQRUREROQADKqIiIiIHIBBFREREZEDMKgiIrIhKysLvr6+SElJcXVXiMhDcJkaIiIbHnzwQbRu3RpvvvkmcnJyEB0dbbOdiKCqqgp+fn5O7iERuRuOVBER1XDp0iV89NFHmDp1KlJSUrB8+XL9WGZmJgwGAzZt2oSBAwfCaDRi165dMJvNSEtLQ1xcHIKCgtC/f3+sWbNGP6+qqgqTJk3Sj/fs2RMvvfSSC347Imou/KcVEVENq1atQq9evdCzZ0/88Y9/xPTp0zF37lwYDAa9zRNPPIFFixahW7duaNOmDdLS0vD+++/j1VdfRY8ePbBz50788Y9/RPv27XHLLbfAbDajc+fOWL16Ndq2bYs9e/Zg8uTJ6NixI+666y4X/rZE5Ci8/UdEVENiYiLuuusuPProo6isrETHjh2xevVq3HrrrcjMzMTQoUPxySefYNSoUQCAsrIyREREYOvWrUhISNCv8+CDD+Ly5cv48MMPbb7OI488gry8PKsRLSLyXBypIiKykJOTg/3792Pt2rUAAD8/P4wdOxZvvvkmbr31Vr3doEGD9J9PnjyJy5cv4ze/+Y3VtcrLy3Hdddfp20uXLsVbb72F3NxclJSUoLy8HAMGDGjW34eInIdBFRGRhTfffBOVlZVWiekiAqPRiJdfflnf16pVK/3nS5cuAQA2bNiATp06WV3PaDQCAFauXInHHnsM//jHP5CQkICQkBC88MIL2LdvX3P+OkTkRAyqiIh+UVlZiXfffRf/+Mc/MGzYMKtjo0ePxooVK9CrV69a5/Xu3RtGoxG5ubm45ZZbbF579+7dGDJkCKZNm6bv+/bbbx37CxCRSzGoIiL6xfr16/Hzzz9j0qRJCAsLszo2ZswYvPnmm3jhhRdqnRcSEoLHHnsMM2bMgNlsxo033ojCwkLs3r0boaGhmDBhAnr06IF3330XmzdvRlxcHN577z188cUXiIuLc9avR0TNjCUViIh+8eabbyIpKalWQAWooOrAgQP4+uuvbZ77t7/9DfPmzUNaWhquueYaDB8+HBs2bNCDpocffhi/+93vMHbsWMTHx+PChQtWo1ZE5Pk4+4+IiIjIAThSRUREROQADKqIiIiIHIBBFREREZEDMKgiIiIicgAGVUREREQOwKCKiIiIyAEYVBERERE5AIMqIiIiIgdgUEVERETkAAyqiIiIiByAQRURERGRA/x/bOrYdVKUcBIAAAAASUVORK5CYII=\n" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "JRyfB6prpJDP" + }, + "source": [ + "### *Segregate Dataset into Input X & Output Y*" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "x9dQcTohpK1X", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 424 + }, + "outputId": "f42cd163-c1ad-4279-da9b-845cd0644611" + }, + "source": [ + "X = dataset.drop('price',axis='columns')\n", + "X" + ], + "execution_count": 6, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " area\n", + "0 8450\n", + "1 9600\n", + "2 11250\n", + "3 9550\n", + "4 14260\n", + "... ...\n", + "1455 7917\n", + "1456 13175\n", + "1457 9042\n", + "1458 9717\n", + "1459 9937\n", + "\n", + "[1460 rows x 1 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", + "
area
08450
19600
211250
39550
414260
......
14557917
145613175
14579042
14589717
14599937
\n", + "

1460 rows × 1 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + " \n", + " \n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "variable_name": "X", + "summary": "{\n \"name\": \"X\",\n \"rows\": 1460,\n \"fields\": [\n {\n \"column\": \"area\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 9981,\n \"min\": 1300,\n \"max\": 215245,\n \"num_unique_values\": 1073,\n \"samples\": [\n 10186,\n 8163,\n 8854\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 6 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "SqxVaBO0pf1W", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 458 + }, + "outputId": "dfdcb6a7-44fb-4805-bb42-0085a18e0e45" + }, + "source": [ + "Y = dataset.price\n", + "Y" + ], + "execution_count": 7, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0 208500\n", + "1 181500\n", + "2 223500\n", + "3 140000\n", + "4 250000\n", + " ... \n", + "1455 175000\n", + "1456 210000\n", + "1457 266500\n", + "1458 142125\n", + "1459 147500\n", + "Name: price, Length: 1460, dtype: int64" + ], + "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", + "
price
0208500
1181500
2223500
3140000
4250000
......
1455175000
1456210000
1457266500
1458142125
1459147500
\n", + "

1460 rows × 1 columns

\n", + "

" + ] + }, + "metadata": {}, + "execution_count": 7 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "KsDoGjjbpmjk" + }, + "source": [ + "### *Training Dataset using Linear Regression*" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "nKmEySI1poV_", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "outputId": "e8b7d151-62fe-414c-b8c4-381bad76b2a6" + }, + "source": [ + "model = LinearRegression()\n", + "model.fit(X,Y)" + ], + "execution_count": 8, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "LinearRegression()" + ], + "text/html": [ + "
LinearRegression()
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" + ] + }, + "metadata": {}, + "execution_count": 8 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "n-UeFqpGpw9p" + }, + "source": [ + "### *Predicted Price for Land sq.Feet of custom values*" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Ollo3wTcpyKQ", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "365ec852-2686-4b53-85ec-56783730f77f" + }, + "source": [ + "x=2400\n", + "LandAreainSqFt=[[x]]\n", + "PredictedmodelResult = model.predict(LandAreainSqFt)\n", + "print(PredictedmodelResult)" + ], + "execution_count": 13, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[163876.08458098]\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.11/dist-packages/sklearn/utils/validation.py:2739: UserWarning: X does not have valid feature names, but LinearRegression was fitted with feature names\n", + " warnings.warn(\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "1PbTSCtSp3lC" + }, + "source": [ + "### Let's check is our model is Right ?\n", + "### Theory Calculation\n", + "### Y = m * X + b (m is coefficient and b is intercept)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "T5eVVDPvp8Hc" + }, + "source": [ + "*Coefficient - m*" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "1SvYtiI2p4ZB", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "d9726623-f842-4474-e680-d61ca7cefa09" + }, + "source": [ + "m=model.coef_\n", + "print(m)" + ], + "execution_count": 14, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[2.09997195]\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "nSXLgArvqBu2" + }, + "source": [ + "*Intercept - b*" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "mxyroJ6uqCet", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "f8bfef10-61d7-456b-e860-0eb4bf5a047a" + }, + "source": [ + "b=model.intercept_\n", + "print(b)" + ], + "execution_count": 15, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "158836.1518968766\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "VCLG6YIOqEaX" + }, + "source": [ + "### Y=mx+b\n", + "*x is Independant variable - Input - area*" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "kRHG8tUFqO1i", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "83287893-80dc-4c5c-d20b-595ac364519b" + }, + "source": [ + "y = m*x + b\n", + "print(\"The Price of {0} Square feet Land is: {1}\".format(x,y[0]))" + ], + "execution_count": 16, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "The Price of 2400 Square feet Land is: 163876.08458097503\n" + ] + } + ] + } + ] +} \ No newline at end of file