{
"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": [
" "
]
},
{
"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",
" P \n",
" K \n",
" ph \n",
" EC \n",
" S \n",
" Cu \n",
" Fe \n",
" Mn \n",
" Zn \n",
" B \n",
" label \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 143 \n",
" 69 \n",
" 217 \n",
" 5.9 \n",
" 0.58 \n",
" 0.23 \n",
" 10.20 \n",
" 116.35 \n",
" 59.96 \n",
" 54.85 \n",
" 21.29 \n",
" pomegranate \n",
" \n",
" \n",
" 1 \n",
" 170 \n",
" 36 \n",
" 216 \n",
" 5.9 \n",
" 0.15 \n",
" 0.28 \n",
" 15.69 \n",
" 114.20 \n",
" 56.87 \n",
" 31.28 \n",
" 28.62 \n",
" pomegranate \n",
" \n",
" \n",
" 2 \n",
" 158 \n",
" 66 \n",
" 219 \n",
" 6.8 \n",
" 0.34 \n",
" 0.20 \n",
" 15.29 \n",
" 65.87 \n",
" 51.81 \n",
" 57.12 \n",
" 27.59 \n",
" pomegranate \n",
" \n",
" \n",
" 3 \n",
" 133 \n",
" 45 \n",
" 207 \n",
" 6.4 \n",
" 0.94 \n",
" 0.21 \n",
" 8.48 \n",
" 103.10 \n",
" 43.81 \n",
" 68.50 \n",
" 47.29 \n",
" pomegranate \n",
" \n",
" \n",
" 4 \n",
" 132 \n",
" 48 \n",
" 218 \n",
" 6.7 \n",
" 0.54 \n",
" 0.19 \n",
" 5.59 \n",
" 63.40 \n",
" 56.40 \n",
" 46.71 \n",
" 31.04 \n",
" pomegranate \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",
" P \n",
" K \n",
" ph \n",
" EC \n",
" S \n",
" Cu \n",
" Fe \n",
" Mn \n",
" Zn \n",
" B \n",
" \n",
" \n",
" \n",
" \n",
" count \n",
" 620.000000 \n",
" 620.000000 \n",
" 620.000000 \n",
" 620.000000 \n",
" 620.000000 \n",
" 620.000000 \n",
" 620.000000 \n",
" 620.000000 \n",
" 620.000000 \n",
" 620.000000 \n",
" 620.000000 \n",
" \n",
" \n",
" mean \n",
" 135.701613 \n",
" 52.508065 \n",
" 161.401613 \n",
" 6.106290 \n",
" 0.885468 \n",
" 0.484085 \n",
" 17.315452 \n",
" 117.212500 \n",
" 219.905887 \n",
" 34.340839 \n",
" 28.750710 \n",
" \n",
" \n",
" std \n",
" 31.808083 \n",
" 24.673538 \n",
" 81.285780 \n",
" 0.693782 \n",
" 0.637214 \n",
" 5.775388 \n",
" 6.441150 \n",
" 62.775199 \n",
" 341.998793 \n",
" 11.543871 \n",
" 19.636447 \n",
" \n",
" \n",
" min \n",
" 30.000000 \n",
" 10.000000 \n",
" 51.000000 \n",
" 4.500000 \n",
" 0.010000 \n",
" 0.011100 \n",
" 0.180000 \n",
" 3.810000 \n",
" 20.580000 \n",
" 17.990000 \n",
" 1.020000 \n",
" \n",
" \n",
" 25% \n",
" 116.000000 \n",
" 30.000000 \n",
" 89.000000 \n",
" 5.700000 \n",
" 0.297500 \n",
" 0.086000 \n",
" 12.592500 \n",
" 68.312500 \n",
" 58.785000 \n",
" 24.727500 \n",
" 13.442500 \n",
" \n",
" \n",
" 50% \n",
" 138.000000 \n",
" 54.000000 \n",
" 157.500000 \n",
" 6.100000 \n",
" 0.780000 \n",
" 0.168000 \n",
" 16.910000 \n",
" 108.245000 \n",
" 73.580000 \n",
" 31.425000 \n",
" 23.225000 \n",
" \n",
" \n",
" 75% \n",
" 160.000000 \n",
" 75.000000 \n",
" 206.000000 \n",
" 6.500000 \n",
" 1.390000 \n",
" 0.240000 \n",
" 21.102500 \n",
" 155.620000 \n",
" 163.665000 \n",
" 43.542500 \n",
" 42.767500 \n",
" \n",
" \n",
" max \n",
" 198.000000 \n",
" 100.000000 \n",
" 369.000000 \n",
" 8.000000 \n",
" 2.480000 \n",
" 113.200000 \n",
" 35.000000 \n",
" 276.720000 \n",
" 1572.540000 \n",
" 70.000000 \n",
" 74.560000 \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",
" P \n",
" K \n",
" ph \n",
" EC \n",
" S \n",
" Cu \n",
" Fe \n",
" Mn \n",
" Zn \n",
" B \n",
" \n",
" \n",
" \n",
" \n",
" count \n",
" 496.000000 \n",
" 496.000000 \n",
" 496.000000 \n",
" 496.000000 \n",
" 496.000000 \n",
" 496.000000 \n",
" 496.000000 \n",
" 496.000000 \n",
" 496.000000 \n",
" 496.000000 \n",
" 496.000000 \n",
" \n",
" \n",
" mean \n",
" 136.477823 \n",
" 52.500000 \n",
" 162.705645 \n",
" 6.114919 \n",
" 0.881794 \n",
" 0.565803 \n",
" 17.207460 \n",
" 118.600242 \n",
" 221.061008 \n",
" 34.457440 \n",
" 28.709355 \n",
" \n",
" \n",
" std \n",
" 31.688055 \n",
" 24.274607 \n",
" 81.627919 \n",
" 0.694407 \n",
" 0.628641 \n",
" 6.455623 \n",
" 6.447591 \n",
" 63.377239 \n",
" 344.385068 \n",
" 11.706243 \n",
" 19.783541 \n",
" \n",
" \n",
" min \n",
" 30.000000 \n",
" 10.000000 \n",
" 51.000000 \n",
" 4.500000 \n",
" 0.010000 \n",
" 0.011100 \n",
" 0.180000 \n",
" 3.810000 \n",
" 20.580000 \n",
" 17.990000 \n",
" 1.020000 \n",
" \n",
" \n",
" 25% \n",
" 116.000000 \n",
" 30.000000 \n",
" 90.750000 \n",
" 5.700000 \n",
" 0.310000 \n",
" 0.087087 \n",
" 12.592500 \n",
" 69.125000 \n",
" 59.505000 \n",
" 25.032500 \n",
" 13.167500 \n",
" \n",
" \n",
" 50% \n",
" 139.000000 \n",
" 53.000000 \n",
" 157.500000 \n",
" 6.100000 \n",
" 0.780000 \n",
" 0.167500 \n",
" 16.745000 \n",
" 108.945000 \n",
" 73.580000 \n",
" 31.230000 \n",
" 23.225000 \n",
" \n",
" \n",
" 75% \n",
" 161.000000 \n",
" 74.250000 \n",
" 207.000000 \n",
" 6.500000 \n",
" 1.375000 \n",
" 0.240000 \n",
" 21.315000 \n",
" 157.287500 \n",
" 167.945000 \n",
" 43.542500 \n",
" 43.635000 \n",
" \n",
" \n",
" max \n",
" 198.000000 \n",
" 99.000000 \n",
" 369.000000 \n",
" 8.000000 \n",
" 2.480000 \n",
" 113.200000 \n",
" 35.000000 \n",
" 276.720000 \n",
" 1572.540000 \n",
" 70.000000 \n",
" 74.150000 \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",
" label \n",
" \n",
" \n",
" \n",
" \n",
" count \n",
" 496 \n",
" \n",
" \n",
" unique \n",
" 6 \n",
" \n",
" \n",
" top \n",
" ragi \n",
" \n",
" \n",
" freq \n",
" 88 \n",
" \n",
" \n",
"
\n",
"
dtype: object "
]
},
"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",
" P \n",
" K \n",
" ph \n",
" EC \n",
" S \n",
" Cu \n",
" Fe \n",
" Mn \n",
" Zn \n",
" B \n",
" \n",
" \n",
" \n",
" \n",
" count \n",
" 124.000000 \n",
" 124.000000 \n",
" 124.000000 \n",
" 124.000000 \n",
" 124.000000 \n",
" 124.000000 \n",
" 124.000000 \n",
" 124.000000 \n",
" 124.000000 \n",
" 124.000000 \n",
" 124.000000 \n",
" \n",
" \n",
" mean \n",
" 132.596774 \n",
" 52.540323 \n",
" 156.185484 \n",
" 6.071774 \n",
" 0.900161 \n",
" 0.157211 \n",
" 17.747419 \n",
" 111.661532 \n",
" 215.285403 \n",
" 33.874435 \n",
" 28.916129 \n",
" \n",
" \n",
" std \n",
" 32.225809 \n",
" 26.311888 \n",
" 80.015585 \n",
" 0.693003 \n",
" 0.672864 \n",
" 0.094275 \n",
" 6.423124 \n",
" 60.235262 \n",
" 333.610014 \n",
" 10.903097 \n",
" 19.114269 \n",
" \n",
" \n",
" min \n",
" 33.000000 \n",
" 11.000000 \n",
" 52.000000 \n",
" 4.500000 \n",
" 0.030000 \n",
" 0.014200 \n",
" 5.480000 \n",
" 38.300000 \n",
" 22.040000 \n",
" 19.130000 \n",
" 1.640000 \n",
" \n",
" \n",
" 25% \n",
" 117.500000 \n",
" 29.500000 \n",
" 82.000000 \n",
" 5.700000 \n",
" 0.255000 \n",
" 0.083305 \n",
" 12.652500 \n",
" 66.517500 \n",
" 55.965000 \n",
" 23.467500 \n",
" 14.712500 \n",
" \n",
" \n",
" 50% \n",
" 135.500000 \n",
" 55.500000 \n",
" 154.500000 \n",
" 6.100000 \n",
" 0.790000 \n",
" 0.169000 \n",
" 17.595000 \n",
" 99.670000 \n",
" 73.935000 \n",
" 32.485000 \n",
" 23.275000 \n",
" \n",
" \n",
" 75% \n",
" 154.000000 \n",
" 75.000000 \n",
" 201.250000 \n",
" 6.500000 \n",
" 1.407500 \n",
" 0.240500 \n",
" 21.042500 \n",
" 145.440000 \n",
" 157.812500 \n",
" 43.187500 \n",
" 39.217500 \n",
" \n",
" \n",
" max \n",
" 198.000000 \n",
" 100.000000 \n",
" 365.000000 \n",
" 7.800000 \n",
" 2.480000 \n",
" 0.330000 \n",
" 33.670000 \n",
" 260.730000 \n",
" 1532.580000 \n",
" 67.530000 \n",
" 74.560000 \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",
" label \n",
" \n",
" \n",
" \n",
" \n",
" count \n",
" 124 \n",
" \n",
" \n",
" unique \n",
" 6 \n",
" \n",
" \n",
" top \n",
" grapes \n",
" \n",
" \n",
" freq \n",
" 24 \n",
" \n",
" \n",
"
\n",
"
dtype: object "
]
},
"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"
]
}
]
}
]
}