{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "provenance": [], "authorship_tag": "ABX9TyNrAEj5spgyaRSeKk8D6f+L", "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", "source": [ "\n", "\n", "```\n", "!pip install pandas, scikit-learn\n", "```\n", "\n" ], "metadata": { "id": "fe9x9YAVc9pW" } }, { "cell_type": "code", "execution_count": 1, "metadata": { "id": "uI84VutZZWsA" }, "outputs": [], "source": [ "import pandas as pd\n", "\n" ] }, { "cell_type": "code", "source": [ "data = pd.read_csv(\"https://raw.githubusercontent.com/lovnishverma/datasets/refs/heads/main/Crop.csv\")" ], "metadata": { "id": "Y2WWfQReZmdm" }, "execution_count": 2, "outputs": [] }, { "cell_type": "code", "source": [ "data.head()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 206 }, "id": "KYQZPyn4Z17-", "outputId": "9db809e5-6822-424b-c0fe-13dd995b918c" }, "execution_count": 3, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " N P K ph EC S Cu Fe Mn Zn B \\\n", "0 143 69 217 5.9 0.58 0.23 10.20 116.35 59.96 54.85 21.29 \n", "1 170 36 216 5.9 0.15 0.28 15.69 114.20 56.87 31.28 28.62 \n", "2 158 66 219 6.8 0.34 0.20 15.29 65.87 51.81 57.12 27.59 \n", "3 133 45 207 6.4 0.94 0.21 8.48 103.10 43.81 68.50 47.29 \n", "4 132 48 218 6.7 0.54 0.19 5.59 63.40 56.40 46.71 31.04 \n", "\n", " label \n", "0 pomegranate \n", "1 pomegranate \n", "2 pomegranate \n", "3 pomegranate \n", "4 pomegranate " ], "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", "
NPKphECSCuFeMnZnBlabel
0143692175.90.580.2310.20116.3559.9654.8521.29pomegranate
1170362165.90.150.2815.69114.2056.8731.2828.62pomegranate
2158662196.80.340.2015.2965.8751.8157.1227.59pomegranate
3133452076.40.940.218.48103.1043.8168.5047.29pomegranate
4132482186.70.540.195.5963.4056.4046.7131.04pomegranate
\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": "data", "summary": "{\n \"name\": \"data\",\n \"rows\": 620,\n \"fields\": [\n {\n \"column\": \"N\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 31,\n \"min\": 30,\n \"max\": 198,\n \"num_unique_values\": 135,\n \"samples\": [\n 198,\n 97,\n 185\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"P\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 24,\n \"min\": 10,\n \"max\": 100,\n \"num_unique_values\": 90,\n \"samples\": [\n 46,\n 76,\n 84\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"K\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 81,\n \"min\": 51,\n \"max\": 369,\n \"num_unique_values\": 238,\n \"samples\": [\n 92,\n 179,\n 263\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ph\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.6937820626620604,\n \"min\": 4.5,\n \"max\": 8.0,\n \"num_unique_values\": 36,\n \"samples\": [\n 7.6,\n 7.1,\n 4.7\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"EC\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.6372142070339794,\n \"min\": 0.01,\n \"max\": 2.48,\n \"num_unique_values\": 210,\n \"samples\": [\n 0.95,\n 1.81,\n 1.39\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"S\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 5.775388452880446,\n \"min\": 0.0111,\n \"max\": 113.2,\n \"num_unique_values\": 314,\n \"samples\": [\n 0.235,\n 0.138,\n 0.1037\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Cu\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 6.441150316889301,\n \"min\": 0.18,\n \"max\": 35.0,\n \"num_unique_values\": 469,\n \"samples\": [\n 7.98,\n 13.53,\n 14.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Fe\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 62.77519909973455,\n \"min\": 3.81,\n \"max\": 276.72,\n \"num_unique_values\": 554,\n \"samples\": [\n 117.45,\n 102.44,\n 129.92\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Mn\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 341.99879331904594,\n \"min\": 20.58,\n \"max\": 1572.54,\n \"num_unique_values\": 604,\n \"samples\": [\n 70.27,\n 55.68,\n 62.28\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Zn\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 11.543871067835484,\n \"min\": 17.99,\n \"max\": 70.0,\n \"num_unique_values\": 574,\n \"samples\": [\n 36.52,\n 34.29,\n 44.92\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"B\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 19.636447035070628,\n \"min\": 1.02,\n \"max\": 74.56,\n \"num_unique_values\": 586,\n \"samples\": [\n 12.32,\n 39.3,\n 22.19\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"label\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 6,\n \"samples\": [\n \"pomegranate\",\n \"mango\",\n \"potato\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" } }, "metadata": {}, "execution_count": 3 } ] }, { "cell_type": "code", "source": [ "data.describe()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 320 }, "id": "iLrevjACc2x1", "outputId": "95466116-fd6b-44dc-e106-8bedd96e3329" }, "execution_count": 19, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " N P K ph EC S \\\n", "count 620.000000 620.000000 620.000000 620.000000 620.000000 620.000000 \n", "mean 135.701613 52.508065 161.401613 6.106290 0.885468 0.484085 \n", "std 31.808083 24.673538 81.285780 0.693782 0.637214 5.775388 \n", "min 30.000000 10.000000 51.000000 4.500000 0.010000 0.011100 \n", "25% 116.000000 30.000000 89.000000 5.700000 0.297500 0.086000 \n", "50% 138.000000 54.000000 157.500000 6.100000 0.780000 0.168000 \n", "75% 160.000000 75.000000 206.000000 6.500000 1.390000 0.240000 \n", "max 198.000000 100.000000 369.000000 8.000000 2.480000 113.200000 \n", "\n", " Cu Fe Mn Zn B \n", "count 620.000000 620.000000 620.000000 620.000000 620.000000 \n", "mean 17.315452 117.212500 219.905887 34.340839 28.750710 \n", "std 6.441150 62.775199 341.998793 11.543871 19.636447 \n", "min 0.180000 3.810000 20.580000 17.990000 1.020000 \n", "25% 12.592500 68.312500 58.785000 24.727500 13.442500 \n", "50% 16.910000 108.245000 73.580000 31.425000 23.225000 \n", "75% 21.102500 155.620000 163.665000 43.542500 42.767500 \n", "max 35.000000 276.720000 1572.540000 70.000000 74.560000 " ], "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", "
NPKphECSCuFeMnZnB
count620.000000620.000000620.000000620.000000620.000000620.000000620.000000620.000000620.000000620.000000620.000000
mean135.70161352.508065161.4016136.1062900.8854680.48408517.315452117.212500219.90588734.34083928.750710
std31.80808324.67353881.2857800.6937820.6372145.7753886.44115062.775199341.99879311.54387119.636447
min30.00000010.00000051.0000004.5000000.0100000.0111000.1800003.81000020.58000017.9900001.020000
25%116.00000030.00000089.0000005.7000000.2975000.08600012.59250068.31250058.78500024.72750013.442500
50%138.00000054.000000157.5000006.1000000.7800000.16800016.910000108.24500073.58000031.42500023.225000
75%160.00000075.000000206.0000006.5000001.3900000.24000021.102500155.620000163.66500043.54250042.767500
max198.000000100.000000369.0000008.0000002.480000113.20000035.000000276.7200001572.54000070.00000074.560000
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", "
\n" ], "application/vnd.google.colaboratory.intrinsic+json": { "type": "dataframe", "summary": "{\n \"name\": \"data\",\n \"rows\": 8,\n \"fields\": [\n {\n \"column\": \"N\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 187.69025991893974,\n \"min\": 30.0,\n \"max\": 620.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 135.7016129032258,\n 138.0,\n 620.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"P\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 203.75703993709269,\n \"min\": 10.0,\n \"max\": 620.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 52.50806451612903,\n 54.0,\n 620.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"K\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 190.7218234658289,\n \"min\": 51.0,\n \"max\": 620.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 161.4016129032258,\n 157.5,\n 620.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ph\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 217.31453051639215,\n \"min\": 0.6937820626620604,\n \"max\": 620.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 6.106290322580644,\n 6.1,\n 620.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"EC\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 218.87709933870127,\n \"min\": 0.01,\n \"max\": 620.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 0.8854677419354838,\n 0.78,\n 620.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"S\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 216.73040414579344,\n \"min\": 0.0111,\n \"max\": 620.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 0.4840848870967742,\n 0.168,\n 620.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Cu\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 213.91831275585332,\n \"min\": 0.18,\n \"max\": 620.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 17.315451612903225,\n 16.91,\n 620.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Fe\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 196.32541013931126,\n \"min\": 3.81,\n \"max\": 620.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 117.2125,\n 108.245,\n 620.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Mn\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 518.2058582122571,\n \"min\": 20.58,\n \"max\": 1572.54,\n \"num_unique_values\": 8,\n \"samples\": [\n 219.9058870967742,\n 73.58,\n 620.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Zn\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 208.17522401943938,\n \"min\": 11.543871067835484,\n \"max\": 620.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 34.34083870967742,\n 31.424999999999997,\n 620.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"B\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 210.09273424805565,\n \"min\": 1.02,\n \"max\": 620.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 28.75070967741935,\n 23.225,\n 620.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" } }, "metadata": {}, "execution_count": 19 } ] }, { "cell_type": "code", "source": [ "# Step 1: Separate features and target\n", "X = data[['N',\t'P',\t'K',\t'ph',\t'EC',\t'S',\t'Cu',\t'Fe',\t'Mn',\t'Zn',\t'B']]\n", "\n", "y = data['label']" ], "metadata": { "id": "cTOLMjWLaBGG" }, "execution_count": 4, "outputs": [] }, { "cell_type": "markdown", "source": [ "**or**" ], "metadata": { "id": "tYLT7am6a7eX" } }, { "cell_type": "code", "source": [ "# Slicing\n", "X = data.iloc[:,:-1] # rows , columns\n", "\n", "y = data.iloc[:,-1]" ], "metadata": { "id": "aVFDfI6Qaese" }, "execution_count": 10, "outputs": [] }, { "cell_type": "code", "source": [ "# Step 2: Do train-test split\n", "from sklearn.model_selection import train_test_split\n", "\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n", "\n" ], "metadata": { "id": "uZVv3N45bA42" }, "execution_count": 13, "outputs": [] }, { "cell_type": "code", "source": [ "X_train.describe()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 320 }, "id": "TDTLSSPncXiU", "outputId": "ed4b37c0-e9c5-46ac-e69b-ef4d0170d7a5" }, "execution_count": 15, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " N P K ph EC S \\\n", "count 496.000000 496.000000 496.000000 496.000000 496.000000 496.000000 \n", "mean 136.477823 52.500000 162.705645 6.114919 0.881794 0.565803 \n", "std 31.688055 24.274607 81.627919 0.694407 0.628641 6.455623 \n", "min 30.000000 10.000000 51.000000 4.500000 0.010000 0.011100 \n", "25% 116.000000 30.000000 90.750000 5.700000 0.310000 0.087087 \n", "50% 139.000000 53.000000 157.500000 6.100000 0.780000 0.167500 \n", "75% 161.000000 74.250000 207.000000 6.500000 1.375000 0.240000 \n", "max 198.000000 99.000000 369.000000 8.000000 2.480000 113.200000 \n", "\n", " Cu Fe Mn Zn B \n", "count 496.000000 496.000000 496.000000 496.000000 496.000000 \n", "mean 17.207460 118.600242 221.061008 34.457440 28.709355 \n", "std 6.447591 63.377239 344.385068 11.706243 19.783541 \n", "min 0.180000 3.810000 20.580000 17.990000 1.020000 \n", "25% 12.592500 69.125000 59.505000 25.032500 13.167500 \n", "50% 16.745000 108.945000 73.580000 31.230000 23.225000 \n", "75% 21.315000 157.287500 167.945000 43.542500 43.635000 \n", "max 35.000000 276.720000 1572.540000 70.000000 74.150000 " ], "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", "
NPKphECSCuFeMnZnB
count496.000000496.000000496.000000496.000000496.000000496.000000496.000000496.000000496.000000496.000000496.000000
mean136.47782352.500000162.7056456.1149190.8817940.56580317.207460118.600242221.06100834.45744028.709355
std31.68805524.27460781.6279190.6944070.6286416.4556236.44759163.377239344.38506811.70624319.783541
min30.00000010.00000051.0000004.5000000.0100000.0111000.1800003.81000020.58000017.9900001.020000
25%116.00000030.00000090.7500005.7000000.3100000.08708712.59250069.12500059.50500025.03250013.167500
50%139.00000053.000000157.5000006.1000000.7800000.16750016.745000108.94500073.58000031.23000023.225000
75%161.00000074.250000207.0000006.5000001.3750000.24000021.315000157.287500167.94500043.54250043.635000
max198.00000099.000000369.0000008.0000002.480000113.20000035.000000276.7200001572.54000070.00000074.150000
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", "
\n" ], "application/vnd.google.colaboratory.intrinsic+json": { "type": "dataframe", "summary": "{\n \"name\": \"X_train\",\n \"rows\": 8,\n \"fields\": [\n {\n \"column\": \"N\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 146.64635957331163,\n \"min\": 30.0,\n \"max\": 496.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 136.47782258064515,\n 139.0,\n 496.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"P\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 160.57454102711984,\n \"min\": 10.0,\n \"max\": 496.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 52.5,\n 53.0,\n 496.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"K\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 154.7076851633402,\n \"min\": 51.0,\n \"max\": 496.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 162.70564516129033,\n 157.5,\n 496.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ph\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 173.47610386341282,\n \"min\": 0.694407089252717,\n \"max\": 496.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 6.11491935483871,\n 6.1,\n 496.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"EC\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 175.03753849656613,\n \"min\": 0.01,\n \"max\": 496.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 0.8817943548387097,\n 0.78,\n 496.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"S\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 173.75199358804744,\n \"min\": 0.0111,\n \"max\": 496.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 0.5658033064516129,\n 0.1675,\n 496.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Cu\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 170.14493783899846,\n \"min\": 0.18,\n \"max\": 496.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 17.20745967741935,\n 16.744999999999997,\n 496.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Fe\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 157.1227814027901,\n \"min\": 3.81,\n \"max\": 496.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 118.60024193548388,\n 108.945,\n 496.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Mn\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 511.5812316723871,\n \"min\": 20.58,\n \"max\": 1572.54,\n \"num_unique_values\": 8,\n \"samples\": [\n 221.06100806451616,\n 73.58,\n 496.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Zn\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 164.51527061324938,\n \"min\": 11.706242990209512,\n \"max\": 496.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 34.45743951612903,\n 31.23,\n 496.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"B\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 166.54121932194445,\n \"min\": 1.02,\n \"max\": 496.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 28.70935483870968,\n 23.225,\n 496.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" } }, "metadata": {}, "execution_count": 15 } ] }, { "cell_type": "code", "source": [ "y_train.describe()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 209 }, "id": "9_WxdkFKcl4t", "outputId": "16dd5c7e-e039-4df0-c28b-259eb2cbfab0" }, "execution_count": 17, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "count 496\n", "unique 6\n", "top ragi\n", "freq 88\n", "Name: label, dtype: object" ], "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", "
label
count496
unique6
topragi
freq88
\n", "

" ] }, "metadata": {}, "execution_count": 17 } ] }, { "cell_type": "code", "source": [ "X_test.describe()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 320 }, "id": "4qkxndKVcbEF", "outputId": "e7983e50-7dd6-4544-ad1d-71eb86914aab" }, "execution_count": 16, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " N P K ph EC S \\\n", "count 124.000000 124.000000 124.000000 124.000000 124.000000 124.000000 \n", "mean 132.596774 52.540323 156.185484 6.071774 0.900161 0.157211 \n", "std 32.225809 26.311888 80.015585 0.693003 0.672864 0.094275 \n", "min 33.000000 11.000000 52.000000 4.500000 0.030000 0.014200 \n", "25% 117.500000 29.500000 82.000000 5.700000 0.255000 0.083305 \n", "50% 135.500000 55.500000 154.500000 6.100000 0.790000 0.169000 \n", "75% 154.000000 75.000000 201.250000 6.500000 1.407500 0.240500 \n", "max 198.000000 100.000000 365.000000 7.800000 2.480000 0.330000 \n", "\n", " Cu Fe Mn Zn B \n", "count 124.000000 124.000000 124.000000 124.000000 124.000000 \n", "mean 17.747419 111.661532 215.285403 33.874435 28.916129 \n", "std 6.423124 60.235262 333.610014 10.903097 19.114269 \n", "min 5.480000 38.300000 22.040000 19.130000 1.640000 \n", "25% 12.652500 66.517500 55.965000 23.467500 14.712500 \n", "50% 17.595000 99.670000 73.935000 32.485000 23.275000 \n", "75% 21.042500 145.440000 157.812500 43.187500 39.217500 \n", "max 33.670000 260.730000 1532.580000 67.530000 74.560000 " ], "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", "
NPKphECSCuFeMnZnB
count124.000000124.000000124.000000124.000000124.000000124.000000124.000000124.000000124.000000124.000000124.000000
mean132.59677452.540323156.1854846.0717740.9001610.15721117.747419111.661532215.28540333.87443528.916129
std32.22580926.31188880.0155850.6930030.6728640.0942756.42312460.235262333.61001410.90309719.114269
min33.00000011.00000052.0000004.5000000.0300000.0142005.48000038.30000022.04000019.1300001.640000
25%117.50000029.50000082.0000005.7000000.2550000.08330512.65250066.51750055.96500023.46750014.712500
50%135.50000055.500000154.5000006.1000000.7900000.16900017.59500099.67000073.93500032.48500023.275000
75%154.00000075.000000201.2500006.5000001.4075000.24050021.042500145.440000157.81250043.18750039.217500
max198.000000100.000000365.0000007.8000002.4800000.33000033.670000260.7300001532.58000067.53000074.560000
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", "
\n" ], "application/vnd.google.colaboratory.intrinsic+json": { "type": "dataframe", "summary": "{\n \"name\": \"X_test\",\n \"rows\": 8,\n \"fields\": [\n {\n \"column\": \"N\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 57.06749729624629,\n \"min\": 32.22580881432171,\n \"max\": 198.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 132.59677419354838,\n 135.5,\n 124.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"P\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 38.6528714200499,\n \"min\": 11.0,\n \"max\": 124.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 52.54032258064516,\n 55.5,\n 124.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"K\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 99.055503424194,\n \"min\": 52.0,\n \"max\": 365.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 156.18548387096774,\n 154.5,\n 124.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ph\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 42.006058685275754,\n \"min\": 0.6930034178954613,\n \"max\": 124.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 6.071774193548386,\n 6.1,\n 124.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"EC\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 43.517064122688545,\n \"min\": 0.03,\n \"max\": 124.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 0.9001612903225806,\n 0.79,\n 124.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"S\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 43.78575225903372,\n \"min\": 0.0142,\n \"max\": 124.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 0.15721120967741936,\n 0.169,\n 124.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Cu\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 39.081433957167846,\n \"min\": 5.48,\n \"max\": 124.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 17.747419354838705,\n 17.595,\n 124.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Fe\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 69.38608513646051,\n \"min\": 38.3,\n \"max\": 260.73,\n \"num_unique_values\": 8,\n \"samples\": [\n 111.66153225806451,\n 99.67,\n 124.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Mn\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 502.1402024533732,\n \"min\": 22.04,\n \"max\": 1532.58,\n \"num_unique_values\": 8,\n \"samples\": [\n 215.28540322580645,\n 73.935,\n 124.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Zn\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 36.496806804633735,\n \"min\": 10.903096621551752,\n \"max\": 124.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 33.87443548387097,\n 32.485,\n 124.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"B\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 39.994734988822884,\n \"min\": 1.64,\n \"max\": 124.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 28.916129032258066,\n 23.275,\n 124.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" } }, "metadata": {}, "execution_count": 16 } ] }, { "cell_type": "code", "source": [ "y_test.describe()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 209 }, "id": "EnUWIcVGciQG", "outputId": "bcaed7cf-395c-4eca-c62e-7a925e0654a1" }, "execution_count": 18, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "count 124\n", "unique 6\n", "top grapes\n", "freq 24\n", "Name: label, dtype: object" ], "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", "
label
count124
unique6
topgrapes
freq24
\n", "

" ] }, "metadata": {}, "execution_count": 18 } ] }, { "cell_type": "code", "source": [ "# Step 3: Model Training\n", "from sklearn.linear_model import LogisticRegression\n", "\n", "model = LogisticRegression()\n", "model.fit(X_train, y_train)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 239 }, "id": "KGv9v24ndQXr", "outputId": "82a6d9ee-342d-42e3-f0de-b90e295cc7ec" }, "execution_count": 24, "outputs": [ { "output_type": "stream", "name": "stderr", "text": [ "/usr/local/lib/python3.12/dist-packages/sklearn/linear_model/_logistic.py:465: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. OF ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " n_iter_i = _check_optimize_result(\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "LogisticRegression()" ], "text/html": [ "
LogisticRegression()
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": 24 } ] }, { "cell_type": "code", "source": [ "#Step 4: Model Evaluation\n", "\n", "from sklearn.metrics import accuracy_score, classification_report\n", "\n", "y_pred = model.predict(X_test)\n", "\n", "accuracy = accuracy_score(y_test, y_pred)\n", "print(f\"Accuracy: {accuracy}\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "fJAb9dhhdxDG", "outputId": "f69c9832-f9b7-4eaf-a198-02f230db0b15" }, "execution_count": 25, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Accuracy: 0.9758064516129032\n" ] } ] }, { "cell_type": "code", "source": [ "# classification_report\n", "print(classification_report(y_test, y_pred))" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "_lxlWlf6eShN", "outputId": "1395d855-c791-4ae4-bc85-5895e31e83b7" }, "execution_count": 26, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ " precision recall f1-score support\n", "\n", " grapes 0.96 0.96 0.96 24\n", " mango 0.94 0.94 0.94 18\n", " mulberry 1.00 1.00 1.00 21\n", " pomegranate 1.00 0.95 0.98 22\n", " potato 1.00 1.00 1.00 23\n", " ragi 0.94 1.00 0.97 16\n", "\n", " accuracy 0.98 124\n", " macro avg 0.97 0.98 0.97 124\n", "weighted avg 0.98 0.98 0.98 124\n", "\n" ] } ] }, { "cell_type": "code", "source": [ "# Confusion matrix\n", "from sklearn.metrics import confusion_matrix\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "\n", "cm = confusion_matrix(y_test, y_pred)\n", "sns.heatmap(cm, annot=True, fmt='d')\n", "plt.xlabel('Predicted')\n", "plt.ylabel('Actual')\n", "plt.show()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 449 }, "id": "17eG-viNerE9", "outputId": "a77857d4-0be2-418c-fcc2-d67195044f1b" }, "execution_count": 28, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": {} } ] }, { "cell_type": "code", "source": [ "# Step 5: Save the model using joblib\n", "\n", "import joblib\n", "\n", "joblib.dump(model, 'crop_recommendation_model.joblib')" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "UeBtqGzlfLI3", "outputId": "531d3667-79fa-4cdd-d78f-050f24683627" }, "execution_count": 29, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "['crop_recommendation_model.joblib']" ] }, "metadata": {}, "execution_count": 29 } ] }, { "cell_type": "code", "source": [ "# Load saved model\n", "\n", "loaded_model = joblib.load('crop_recommendation_model.joblib')\n", "\n", "# Make predictions\n", "\n", "predict = model.predict([[175,\t36,\t216,\t5.9,\t0.15,\t0.28,\t15.69,\t114.20,\t56.87,\t31.28,\t28.62]])\n", "\n", "\n", "print(predict[0])" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "tXnd0Ra3fS3G", "outputId": "d389c94e-53f2-4421-a0c8-9554b5cce6da" }, "execution_count": 32, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "pomegranate\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "/usr/local/lib/python3.12/dist-packages/sklearn/utils/validation.py:2739: UserWarning: X does not have valid feature names, but LogisticRegression was fitted with feature names\n", " warnings.warn(\n" ] } ] } ] }