{
"cells": [
{
"cell_type": "markdown",
"id": "6bdfd636",
"metadata": {},
"source": [
"# Import Libaries"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "7bee9b73",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\Noor Saeed\\anaconda3\\lib\\site-packages\\pandas\\core\\computation\\expressions.py:21: UserWarning: Pandas requires version '2.8.4' or newer of 'numexpr' (version '2.8.1' currently installed).\n",
" from pandas.core.computation.check import NUMEXPR_INSTALLED\n",
"C:\\Users\\Noor Saeed\\anaconda3\\lib\\site-packages\\pandas\\core\\arrays\\masked.py:60: UserWarning: Pandas requires version '1.3.6' or newer of 'bottleneck' (version '1.3.4' currently installed).\n",
" from pandas.core import (\n"
]
}
],
"source": [
"import numpy as np\n",
"import pandas as pd"
]
},
{
"cell_type": "markdown",
"id": "2822305c",
"metadata": {},
"source": [
"# Importing Data"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "5b6f8884",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" N | \n",
" P | \n",
" K | \n",
" temperature | \n",
" humidity | \n",
" ph | \n",
" rainfall | \n",
" label | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 90 | \n",
" 42 | \n",
" 43 | \n",
" 20.879744 | \n",
" 82.002744 | \n",
" 6.502985 | \n",
" 202.935536 | \n",
" rice | \n",
"
\n",
" \n",
" 1 | \n",
" 85 | \n",
" 58 | \n",
" 41 | \n",
" 21.770462 | \n",
" 80.319644 | \n",
" 7.038096 | \n",
" 226.655537 | \n",
" rice | \n",
"
\n",
" \n",
" 2 | \n",
" 60 | \n",
" 55 | \n",
" 44 | \n",
" 23.004459 | \n",
" 82.320763 | \n",
" 7.840207 | \n",
" 263.964248 | \n",
" rice | \n",
"
\n",
" \n",
" 3 | \n",
" 74 | \n",
" 35 | \n",
" 40 | \n",
" 26.491096 | \n",
" 80.158363 | \n",
" 6.980401 | \n",
" 242.864034 | \n",
" rice | \n",
"
\n",
" \n",
" 4 | \n",
" 78 | \n",
" 42 | \n",
" 42 | \n",
" 20.130175 | \n",
" 81.604873 | \n",
" 7.628473 | \n",
" 262.717340 | \n",
" rice | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" N P K temperature humidity ph rainfall label\n",
"0 90 42 43 20.879744 82.002744 6.502985 202.935536 rice\n",
"1 85 58 41 21.770462 80.319644 7.038096 226.655537 rice\n",
"2 60 55 44 23.004459 82.320763 7.840207 263.964248 rice\n",
"3 74 35 40 26.491096 80.158363 6.980401 242.864034 rice\n",
"4 78 42 42 20.130175 81.604873 7.628473 262.717340 rice"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"crop = pd.read_csv(\"Crop_recommendation.csv\")\n",
"crop.head()"
]
},
{
"cell_type": "markdown",
"id": "e9ddfb22",
"metadata": {},
"source": [
"# Asq Six Question to yourself"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "3ca70c00",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(2200, 8)"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"crop.shape"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "e2ae9b60",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"RangeIndex: 2200 entries, 0 to 2199\n",
"Data columns (total 8 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 N 2200 non-null int64 \n",
" 1 P 2200 non-null int64 \n",
" 2 K 2200 non-null int64 \n",
" 3 temperature 2200 non-null float64\n",
" 4 humidity 2200 non-null float64\n",
" 5 ph 2200 non-null float64\n",
" 6 rainfall 2200 non-null float64\n",
" 7 label 2200 non-null object \n",
"dtypes: float64(4), int64(3), object(1)\n",
"memory usage: 137.6+ KB\n"
]
}
],
"source": [
"crop.info()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "9efad4c4",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"N 0\n",
"P 0\n",
"K 0\n",
"temperature 0\n",
"humidity 0\n",
"ph 0\n",
"rainfall 0\n",
"label 0\n",
"dtype: int64"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"crop.isnull().sum()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "1f7bf8c5",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"crop.duplicated().sum()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "3d5b7413",
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" N | \n",
" P | \n",
" K | \n",
" temperature | \n",
" humidity | \n",
" ph | \n",
" rainfall | \n",
"
\n",
" \n",
" \n",
" \n",
" count | \n",
" 2200.000000 | \n",
" 2200.000000 | \n",
" 2200.000000 | \n",
" 2200.000000 | \n",
" 2200.000000 | \n",
" 2200.000000 | \n",
" 2200.000000 | \n",
"
\n",
" \n",
" mean | \n",
" 50.551818 | \n",
" 53.362727 | \n",
" 48.149091 | \n",
" 25.616244 | \n",
" 71.481779 | \n",
" 6.469480 | \n",
" 103.463655 | \n",
"
\n",
" \n",
" std | \n",
" 36.917334 | \n",
" 32.985883 | \n",
" 50.647931 | \n",
" 5.063749 | \n",
" 22.263812 | \n",
" 0.773938 | \n",
" 54.958389 | \n",
"
\n",
" \n",
" min | \n",
" 0.000000 | \n",
" 5.000000 | \n",
" 5.000000 | \n",
" 8.825675 | \n",
" 14.258040 | \n",
" 3.504752 | \n",
" 20.211267 | \n",
"
\n",
" \n",
" 25% | \n",
" 21.000000 | \n",
" 28.000000 | \n",
" 20.000000 | \n",
" 22.769375 | \n",
" 60.261953 | \n",
" 5.971693 | \n",
" 64.551686 | \n",
"
\n",
" \n",
" 50% | \n",
" 37.000000 | \n",
" 51.000000 | \n",
" 32.000000 | \n",
" 25.598693 | \n",
" 80.473146 | \n",
" 6.425045 | \n",
" 94.867624 | \n",
"
\n",
" \n",
" 75% | \n",
" 84.250000 | \n",
" 68.000000 | \n",
" 49.000000 | \n",
" 28.561654 | \n",
" 89.948771 | \n",
" 6.923643 | \n",
" 124.267508 | \n",
"
\n",
" \n",
" max | \n",
" 140.000000 | \n",
" 145.000000 | \n",
" 205.000000 | \n",
" 43.675493 | \n",
" 99.981876 | \n",
" 9.935091 | \n",
" 298.560117 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" N P K temperature humidity \\\n",
"count 2200.000000 2200.000000 2200.000000 2200.000000 2200.000000 \n",
"mean 50.551818 53.362727 48.149091 25.616244 71.481779 \n",
"std 36.917334 32.985883 50.647931 5.063749 22.263812 \n",
"min 0.000000 5.000000 5.000000 8.825675 14.258040 \n",
"25% 21.000000 28.000000 20.000000 22.769375 60.261953 \n",
"50% 37.000000 51.000000 32.000000 25.598693 80.473146 \n",
"75% 84.250000 68.000000 49.000000 28.561654 89.948771 \n",
"max 140.000000 145.000000 205.000000 43.675493 99.981876 \n",
"\n",
" ph rainfall \n",
"count 2200.000000 2200.000000 \n",
"mean 6.469480 103.463655 \n",
"std 0.773938 54.958389 \n",
"min 3.504752 20.211267 \n",
"25% 5.971693 64.551686 \n",
"50% 6.425045 94.867624 \n",
"75% 6.923643 124.267508 \n",
"max 9.935091 298.560117 "
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"crop.describe()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "1056bfba",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"label\n",
"rice 100\n",
"maize 100\n",
"jute 100\n",
"cotton 100\n",
"coconut 100\n",
"papaya 100\n",
"orange 100\n",
"apple 100\n",
"muskmelon 100\n",
"watermelon 100\n",
"grapes 100\n",
"mango 100\n",
"banana 100\n",
"pomegranate 100\n",
"lentil 100\n",
"blackgram 100\n",
"mungbean 100\n",
"mothbeans 100\n",
"pigeonpeas 100\n",
"kidneybeans 100\n",
"chickpea 100\n",
"coffee 100\n",
"Name: count, dtype: int64"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"crop['label'].value_counts()"
]
},
{
"cell_type": "markdown",
"id": "3e3af150",
"metadata": {},
"source": [
"# Encoding"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "8c35d395",
"metadata": {},
"outputs": [],
"source": [
"crop_dict = {\n",
" 'rice': 1,\n",
" 'maize': 2,\n",
" 'jute': 3,\n",
" 'cotton': 4,\n",
" 'coconut': 5,\n",
" 'papaya': 6,\n",
" 'orange': 7,\n",
" 'apple': 8,\n",
" 'muskmelon': 9,\n",
" 'watermelon': 10,\n",
" 'grapes': 11,\n",
" 'mango': 12,\n",
" 'banana': 13,\n",
" 'pomegranate': 14,\n",
" 'lentil': 15,\n",
" 'blackgram': 16,\n",
" 'mungbean': 17,\n",
" 'mothbeans': 18,\n",
" 'pigeonpeas': 19,\n",
" 'kidneybeans': 20,\n",
" 'chickpea': 21,\n",
" 'coffee': 22\n",
"}\n",
"crop['crop_num']= crop['label'].map(crop_dict)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "b1a53f7f",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" N | \n",
" P | \n",
" K | \n",
" temperature | \n",
" humidity | \n",
" ph | \n",
" rainfall | \n",
" label | \n",
" crop_num | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 90 | \n",
" 42 | \n",
" 43 | \n",
" 20.879744 | \n",
" 82.002744 | \n",
" 6.502985 | \n",
" 202.935536 | \n",
" rice | \n",
" 1 | \n",
"
\n",
" \n",
" 1 | \n",
" 85 | \n",
" 58 | \n",
" 41 | \n",
" 21.770462 | \n",
" 80.319644 | \n",
" 7.038096 | \n",
" 226.655537 | \n",
" rice | \n",
" 1 | \n",
"
\n",
" \n",
" 2 | \n",
" 60 | \n",
" 55 | \n",
" 44 | \n",
" 23.004459 | \n",
" 82.320763 | \n",
" 7.840207 | \n",
" 263.964248 | \n",
" rice | \n",
" 1 | \n",
"
\n",
" \n",
" 3 | \n",
" 74 | \n",
" 35 | \n",
" 40 | \n",
" 26.491096 | \n",
" 80.158363 | \n",
" 6.980401 | \n",
" 242.864034 | \n",
" rice | \n",
" 1 | \n",
"
\n",
" \n",
" 4 | \n",
" 78 | \n",
" 42 | \n",
" 42 | \n",
" 20.130175 | \n",
" 81.604873 | \n",
" 7.628473 | \n",
" 262.717340 | \n",
" rice | \n",
" 1 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 2195 | \n",
" 107 | \n",
" 34 | \n",
" 32 | \n",
" 26.774637 | \n",
" 66.413269 | \n",
" 6.780064 | \n",
" 177.774507 | \n",
" coffee | \n",
" 22 | \n",
"
\n",
" \n",
" 2196 | \n",
" 99 | \n",
" 15 | \n",
" 27 | \n",
" 27.417112 | \n",
" 56.636362 | \n",
" 6.086922 | \n",
" 127.924610 | \n",
" coffee | \n",
" 22 | \n",
"
\n",
" \n",
" 2197 | \n",
" 118 | \n",
" 33 | \n",
" 30 | \n",
" 24.131797 | \n",
" 67.225123 | \n",
" 6.362608 | \n",
" 173.322839 | \n",
" coffee | \n",
" 22 | \n",
"
\n",
" \n",
" 2198 | \n",
" 117 | \n",
" 32 | \n",
" 34 | \n",
" 26.272418 | \n",
" 52.127394 | \n",
" 6.758793 | \n",
" 127.175293 | \n",
" coffee | \n",
" 22 | \n",
"
\n",
" \n",
" 2199 | \n",
" 104 | \n",
" 18 | \n",
" 30 | \n",
" 23.603016 | \n",
" 60.396475 | \n",
" 6.779833 | \n",
" 140.937041 | \n",
" coffee | \n",
" 22 | \n",
"
\n",
" \n",
"
\n",
"
2200 rows × 9 columns
\n",
"
"
],
"text/plain": [
" N P K temperature humidity ph rainfall label \\\n",
"0 90 42 43 20.879744 82.002744 6.502985 202.935536 rice \n",
"1 85 58 41 21.770462 80.319644 7.038096 226.655537 rice \n",
"2 60 55 44 23.004459 82.320763 7.840207 263.964248 rice \n",
"3 74 35 40 26.491096 80.158363 6.980401 242.864034 rice \n",
"4 78 42 42 20.130175 81.604873 7.628473 262.717340 rice \n",
"... ... .. .. ... ... ... ... ... \n",
"2195 107 34 32 26.774637 66.413269 6.780064 177.774507 coffee \n",
"2196 99 15 27 27.417112 56.636362 6.086922 127.924610 coffee \n",
"2197 118 33 30 24.131797 67.225123 6.362608 173.322839 coffee \n",
"2198 117 32 34 26.272418 52.127394 6.758793 127.175293 coffee \n",
"2199 104 18 30 23.603016 60.396475 6.779833 140.937041 coffee \n",
"\n",
" crop_num \n",
"0 1 \n",
"1 1 \n",
"2 1 \n",
"3 1 \n",
"4 1 \n",
"... ... \n",
"2195 22 \n",
"2196 22 \n",
"2197 22 \n",
"2198 22 \n",
"2199 22 \n",
"\n",
"[2200 rows x 9 columns]"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"crop"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "dff5caca",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" N | \n",
" P | \n",
" K | \n",
" temperature | \n",
" humidity | \n",
" ph | \n",
" rainfall | \n",
" crop_num | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 90 | \n",
" 42 | \n",
" 43 | \n",
" 20.879744 | \n",
" 82.002744 | \n",
" 6.502985 | \n",
" 202.935536 | \n",
" 1 | \n",
"
\n",
" \n",
" 1 | \n",
" 85 | \n",
" 58 | \n",
" 41 | \n",
" 21.770462 | \n",
" 80.319644 | \n",
" 7.038096 | \n",
" 226.655537 | \n",
" 1 | \n",
"
\n",
" \n",
" 2 | \n",
" 60 | \n",
" 55 | \n",
" 44 | \n",
" 23.004459 | \n",
" 82.320763 | \n",
" 7.840207 | \n",
" 263.964248 | \n",
" 1 | \n",
"
\n",
" \n",
" 3 | \n",
" 74 | \n",
" 35 | \n",
" 40 | \n",
" 26.491096 | \n",
" 80.158363 | \n",
" 6.980401 | \n",
" 242.864034 | \n",
" 1 | \n",
"
\n",
" \n",
" 4 | \n",
" 78 | \n",
" 42 | \n",
" 42 | \n",
" 20.130175 | \n",
" 81.604873 | \n",
" 7.628473 | \n",
" 262.717340 | \n",
" 1 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" N P K temperature humidity ph rainfall crop_num\n",
"0 90 42 43 20.879744 82.002744 6.502985 202.935536 1\n",
"1 85 58 41 21.770462 80.319644 7.038096 226.655537 1\n",
"2 60 55 44 23.004459 82.320763 7.840207 263.964248 1\n",
"3 74 35 40 26.491096 80.158363 6.980401 242.864034 1\n",
"4 78 42 42 20.130175 81.604873 7.628473 262.717340 1"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"crop.drop(['label'],axis=1,inplace=True)\n",
"crop.head()"
]
},
{
"cell_type": "markdown",
"id": "a5494675",
"metadata": {},
"source": [
"# Train Test Split"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "5a049f55",
"metadata": {},
"outputs": [],
"source": [
"X = crop.drop(['crop_num'],axis=1)\n",
"y = crop['crop_num']"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "9d223a69",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" N | \n",
" P | \n",
" K | \n",
" temperature | \n",
" humidity | \n",
" ph | \n",
" rainfall | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 90 | \n",
" 42 | \n",
" 43 | \n",
" 20.879744 | \n",
" 82.002744 | \n",
" 6.502985 | \n",
" 202.935536 | \n",
"
\n",
" \n",
" 1 | \n",
" 85 | \n",
" 58 | \n",
" 41 | \n",
" 21.770462 | \n",
" 80.319644 | \n",
" 7.038096 | \n",
" 226.655537 | \n",
"
\n",
" \n",
" 2 | \n",
" 60 | \n",
" 55 | \n",
" 44 | \n",
" 23.004459 | \n",
" 82.320763 | \n",
" 7.840207 | \n",
" 263.964248 | \n",
"
\n",
" \n",
" 3 | \n",
" 74 | \n",
" 35 | \n",
" 40 | \n",
" 26.491096 | \n",
" 80.158363 | \n",
" 6.980401 | \n",
" 242.864034 | \n",
"
\n",
" \n",
" 4 | \n",
" 78 | \n",
" 42 | \n",
" 42 | \n",
" 20.130175 | \n",
" 81.604873 | \n",
" 7.628473 | \n",
" 262.717340 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 2195 | \n",
" 107 | \n",
" 34 | \n",
" 32 | \n",
" 26.774637 | \n",
" 66.413269 | \n",
" 6.780064 | \n",
" 177.774507 | \n",
"
\n",
" \n",
" 2196 | \n",
" 99 | \n",
" 15 | \n",
" 27 | \n",
" 27.417112 | \n",
" 56.636362 | \n",
" 6.086922 | \n",
" 127.924610 | \n",
"
\n",
" \n",
" 2197 | \n",
" 118 | \n",
" 33 | \n",
" 30 | \n",
" 24.131797 | \n",
" 67.225123 | \n",
" 6.362608 | \n",
" 173.322839 | \n",
"
\n",
" \n",
" 2198 | \n",
" 117 | \n",
" 32 | \n",
" 34 | \n",
" 26.272418 | \n",
" 52.127394 | \n",
" 6.758793 | \n",
" 127.175293 | \n",
"
\n",
" \n",
" 2199 | \n",
" 104 | \n",
" 18 | \n",
" 30 | \n",
" 23.603016 | \n",
" 60.396475 | \n",
" 6.779833 | \n",
" 140.937041 | \n",
"
\n",
" \n",
"
\n",
"
2200 rows × 7 columns
\n",
"
"
],
"text/plain": [
" N P K temperature humidity ph rainfall\n",
"0 90 42 43 20.879744 82.002744 6.502985 202.935536\n",
"1 85 58 41 21.770462 80.319644 7.038096 226.655537\n",
"2 60 55 44 23.004459 82.320763 7.840207 263.964248\n",
"3 74 35 40 26.491096 80.158363 6.980401 242.864034\n",
"4 78 42 42 20.130175 81.604873 7.628473 262.717340\n",
"... ... .. .. ... ... ... ...\n",
"2195 107 34 32 26.774637 66.413269 6.780064 177.774507\n",
"2196 99 15 27 27.417112 56.636362 6.086922 127.924610\n",
"2197 118 33 30 24.131797 67.225123 6.362608 173.322839\n",
"2198 117 32 34 26.272418 52.127394 6.758793 127.175293\n",
"2199 104 18 30 23.603016 60.396475 6.779833 140.937041\n",
"\n",
"[2200 rows x 7 columns]"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "d2601fcf",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 1\n",
"1 1\n",
"2 1\n",
"3 1\n",
"4 1\n",
" ..\n",
"2195 22\n",
"2196 22\n",
"2197 22\n",
"2198 22\n",
"2199 22\n",
"Name: crop_num, Length: 2200, dtype: int64"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "c561ea31",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(2200,)"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y.shape"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "caba8efb",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import train_test_split"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "6774a9dd",
"metadata": {},
"outputs": [],
"source": [
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "41b6bcbb",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" N | \n",
" P | \n",
" K | \n",
" temperature | \n",
" humidity | \n",
" ph | \n",
" rainfall | \n",
"
\n",
" \n",
" \n",
" \n",
" 1656 | \n",
" 17 | \n",
" 16 | \n",
" 14 | \n",
" 16.396243 | \n",
" 92.181519 | \n",
" 6.625539 | \n",
" 102.944161 | \n",
"
\n",
" \n",
" 752 | \n",
" 37 | \n",
" 79 | \n",
" 19 | \n",
" 27.543848 | \n",
" 69.347863 | \n",
" 7.143943 | \n",
" 69.408782 | \n",
"
\n",
" \n",
" 892 | \n",
" 7 | \n",
" 73 | \n",
" 25 | \n",
" 27.521856 | \n",
" 63.132153 | \n",
" 7.288057 | \n",
" 45.208411 | \n",
"
\n",
" \n",
" 1041 | \n",
" 101 | \n",
" 70 | \n",
" 48 | \n",
" 25.360592 | \n",
" 75.031933 | \n",
" 6.012697 | \n",
" 116.553145 | \n",
"
\n",
" \n",
" 1179 | \n",
" 0 | \n",
" 17 | \n",
" 30 | \n",
" 35.474783 | \n",
" 47.972305 | \n",
" 6.279134 | \n",
" 97.790725 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 1638 | \n",
" 10 | \n",
" 5 | \n",
" 5 | \n",
" 21.213070 | \n",
" 91.353492 | \n",
" 7.817846 | \n",
" 112.983436 | \n",
"
\n",
" \n",
" 1095 | \n",
" 108 | \n",
" 94 | \n",
" 47 | \n",
" 27.359116 | \n",
" 84.546250 | \n",
" 6.387431 | \n",
" 90.812505 | \n",
"
\n",
" \n",
" 1130 | \n",
" 11 | \n",
" 36 | \n",
" 31 | \n",
" 27.920633 | \n",
" 51.779659 | \n",
" 6.475449 | \n",
" 100.258567 | \n",
"
\n",
" \n",
" 1294 | \n",
" 11 | \n",
" 124 | \n",
" 204 | \n",
" 13.429886 | \n",
" 80.066340 | \n",
" 6.361141 | \n",
" 71.400430 | \n",
"
\n",
" \n",
" 860 | \n",
" 32 | \n",
" 78 | \n",
" 22 | \n",
" 23.970814 | \n",
" 62.355576 | \n",
" 7.007038 | \n",
" 53.409060 | \n",
"
\n",
" \n",
"
\n",
"
1760 rows × 7 columns
\n",
"
"
],
"text/plain": [
" N P K temperature humidity ph rainfall\n",
"1656 17 16 14 16.396243 92.181519 6.625539 102.944161\n",
"752 37 79 19 27.543848 69.347863 7.143943 69.408782\n",
"892 7 73 25 27.521856 63.132153 7.288057 45.208411\n",
"1041 101 70 48 25.360592 75.031933 6.012697 116.553145\n",
"1179 0 17 30 35.474783 47.972305 6.279134 97.790725\n",
"... ... ... ... ... ... ... ...\n",
"1638 10 5 5 21.213070 91.353492 7.817846 112.983436\n",
"1095 108 94 47 27.359116 84.546250 6.387431 90.812505\n",
"1130 11 36 31 27.920633 51.779659 6.475449 100.258567\n",
"1294 11 124 204 13.429886 80.066340 6.361141 71.400430\n",
"860 32 78 22 23.970814 62.355576 7.007038 53.409060\n",
"\n",
"[1760 rows x 7 columns]"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_train"
]
},
{
"cell_type": "markdown",
"id": "ab13cdf8",
"metadata": {},
"source": [
"\n",
"# Scale the features using MinMaxScaler"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "f19981a7",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.preprocessing import MinMaxScaler\n",
"ms = MinMaxScaler()\n",
"\n",
"X_train = ms.fit_transform(X_train)\n",
"X_test = ms.transform(X_test)"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "f3f50c64",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[0.12142857, 0.07857143, 0.045 , ..., 0.9089898 , 0.48532225,\n",
" 0.29685161],\n",
" [0.26428571, 0.52857143, 0.07 , ..., 0.64257946, 0.56594073,\n",
" 0.17630752],\n",
" [0.05 , 0.48571429, 0.1 , ..., 0.57005802, 0.58835229,\n",
" 0.08931844],\n",
" ...,\n",
" [0.07857143, 0.22142857, 0.13 , ..., 0.43760347, 0.46198144,\n",
" 0.28719815],\n",
" [0.07857143, 0.85 , 0.995 , ..., 0.76763665, 0.44420505,\n",
" 0.18346657],\n",
" [0.22857143, 0.52142857, 0.085 , ..., 0.56099735, 0.54465022,\n",
" 0.11879596]])"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_train"
]
},
{
"cell_type": "markdown",
"id": "752a08ae",
"metadata": {},
"source": [
"# Training Models"
]
},
{
"cell_type": "code",
"execution_count": 51,
"id": "ac6ef55e",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Logistic Regression with accuracy : 0.9181818181818182\n",
"Confusion matrix : [[16 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 20 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 6 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1]\n",
" [ 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 3 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 21 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 23 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 17 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 10 0 0 1 0 0 13 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 18 2 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17]]\n",
"==========================================================\n",
"Naive Bayes with accuracy : 0.9954545454545455\n",
"Confusion matrix : [[17 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 21 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 23 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17]]\n",
"==========================================================\n",
"Support Vector Machine with accuracy : 0.9681818181818181\n",
"Confusion matrix : [[14 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 20 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1]\n",
" [ 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 21 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 23 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 19 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 21 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 20 2 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17]]\n",
"==========================================================\n",
"K-Nearest Neighbors with accuracy : 0.9704545454545455\n",
"Confusion matrix : [[14 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 1 0 22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 21 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 23 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 19 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 21 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 20 2 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17]]\n",
"==========================================================\n",
"Decision Tree with accuracy : 0.9818181818181818\n",
"Confusion matrix : [[17 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 20 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 3 0 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 21 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 23 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 22 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17]]\n",
"==========================================================\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Random Forest with accuracy : 0.9931818181818182\n",
"Confusion matrix : [[17 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 21 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 23 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 23 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17]]\n",
"==========================================================\n",
"Bagging with accuracy : 0.9886363636363636\n",
"Confusion matrix : [[17 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 1 0 22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 21 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 23 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 22 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17]]\n",
"==========================================================\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\Noor Saeed\\AppData\\Roaming\\Python\\Python39\\site-packages\\sklearn\\ensemble\\_weight_boosting.py:527: FutureWarning: The SAMME.R algorithm (the default) is deprecated and will be removed in 1.6. Use the SAMME algorithm to circumvent this warning.\n",
" warnings.warn(\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"AdaBoost with accuracy : 0.09545454545454546\n",
"Confusion matrix : [[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 23 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0]]\n",
"==========================================================\n",
"Gradient Boosting with accuracy : 0.9818181818181818\n",
"Confusion matrix : [[15 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 20 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 1 0 26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 21 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 23 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 23 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 22 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17]]\n",
"==========================================================\n",
"Extra Trees with accuracy : 0.8863636363636364\n",
"Confusion matrix : [[12 0 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 18 0 2 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0]\n",
" [ 6 0 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2]\n",
" [ 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 2 0 0 0 0 20 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 16 1 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 21 0 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 23 0 0 0 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 0 0 1 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 15 0 3 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 17 0 0 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 2 17 1 0 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 2 0 0 16 4 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 15 0 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 0]\n",
" [ 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 16]]\n",
"==========================================================\n"
]
}
],
"source": [
"from sklearn.linear_model import LogisticRegression\n",
"from sklearn.naive_bayes import GaussianNB\n",
"from sklearn.svm import SVC\n",
"from sklearn.neighbors import KNeighborsClassifier\n",
"from sklearn.tree import DecisionTreeClassifier\n",
"from sklearn.tree import ExtraTreeClassifier\n",
"from sklearn.ensemble import RandomForestClassifier\n",
"from sklearn.ensemble import BaggingClassifier\n",
"from sklearn.ensemble import GradientBoostingClassifier\n",
"from sklearn.ensemble import AdaBoostClassifier\n",
"from sklearn.metrics import accuracy_score,confusion_matrix\n",
"\n",
"# create instances of all models\n",
"models = {\n",
" 'Logistic Regression': LogisticRegression(),\n",
" 'Naive Bayes': GaussianNB(),\n",
" 'Support Vector Machine': SVC(),\n",
" 'K-Nearest Neighbors': KNeighborsClassifier(),\n",
" 'Decision Tree': DecisionTreeClassifier(),\n",
" 'Random Forest': RandomForestClassifier(),\n",
" 'Bagging': BaggingClassifier(),\n",
" 'AdaBoost': AdaBoostClassifier(),\n",
" 'Gradient Boosting': GradientBoostingClassifier(),\n",
" 'Extra Trees': ExtraTreeClassifier(),\n",
"}\n",
"\n",
"\n",
"for name, model in models.items():\n",
" model.fit(X_train,y_train)\n",
" ypred = model.predict(X_test)\n",
" \n",
" print(f\"{name} with accuracy : {accuracy_score(y_test,ypred)}\")\n",
" print(\"Confusion matrix : \",confusion_matrix(y_test,ypred))\n",
" print(\"==========================================================\")\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "4659be4d",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.9931818181818182"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# finally selected randomforest model\n",
"\n",
"rfc = RandomForestClassifier()\n",
"rfc.fit(X_train,y_train)\n",
"ypred = rfc.predict(X_test)\n",
"accuracy_score(y_test,ypred)"
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "3e72d7f1",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.9954545454545455"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# or gausianjb\n",
"gnb = GaussianNB()\n",
"gnb.fit(X_train,y_train)\n",
"ypred = gnb.predict(X_test)\n",
"accuracy_score(y_test,ypred)"
]
},
{
"cell_type": "markdown",
"id": "859d9922",
"metadata": {},
"source": [
"# Predictive System"
]
},
{
"cell_type": "code",
"execution_count": 61,
"id": "17f3a3fe",
"metadata": {},
"outputs": [],
"source": [
"def recommendation(N,P,k,temperature,humidity,ph,rainfal):\n",
" features = np.array([[N,P,k,temperature,humidity,ph,rainfal]])\n",
" transformed_features = ms.fit_transform(features)\n",
" prediction = rfc.predict(transformed_features)\n",
" print(prediction)\n",
" return prediction[0] "
]
},
{
"cell_type": "code",
"execution_count": 62,
"id": "64ffd9d3",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[9]\n",
"Muskmelon is a best crop to be cultivated \n"
]
}
],
"source": [
"# new inputs\n",
"\n",
"\n",
"N = 40\n",
"P = 50\n",
"k = 50\n",
"temperature = 40.0\n",
"humidity = 20\n",
"ph = 100\n",
"rainfall = 100\n",
"\n",
"predict = recommendation(N,P,k,temperature,humidity,ph,rainfall)\n",
"\n",
"crop_dict = {1: \"Rice\", 2: \"Maize\", 3: \"Jute\", 4: \"Cotton\", 5: \"Coconut\", 6: \"Papaya\", 7: \"Orange\",\n",
" 8: \"Apple\", 9: \"Muskmelon\", 10: \"Watermelon\", 11: \"Grapes\", 12: \"Mango\", 13: \"Banana\",\n",
" 14: \"Pomegranate\", 15: \"Lentil\", 16: \"Blackgram\", 17: \"Mungbean\", 18: \"Mothbeans\",\n",
" 19: \"Pigeonpeas\", 20: \"Kidneybeans\", 21: \"Chickpea\", 22: \"Coffee\"}\n",
"\n",
"if predict in crop_dict:\n",
" crop = crop_dict[predict]\n",
" print(\"{} is a best crop to be cultivated \".format(crop))\n",
"else:\n",
" print(\"Sorry are not able to recommend a proper crop for this environment\")"
]
},
{
"cell_type": "code",
"execution_count": 63,
"id": "2ea8ffda",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[9]\n",
"Muskmelon is a best crop to be cultivated \n"
]
}
],
"source": [
"# new inputs 2\n",
"\n",
"\n",
"N = 100\n",
"P = 90\n",
"k = 100\n",
"temperature = 50.0\n",
"humidity = 90.0\n",
"ph = 100\n",
"rainfall = 202.0\n",
"\n",
"predict = recommendation(N,P,k,temperature,humidity,ph,rainfall)\n",
"\n",
"crop_dict = {1: \"Rice\", 2: \"Maize\", 3: \"Jute\", 4: \"Cotton\", 5: \"Coconut\", 6: \"Papaya\", 7: \"Orange\",\n",
" 8: \"Apple\", 9: \"Muskmelon\", 10: \"Watermelon\", 11: \"Grapes\", 12: \"Mango\", 13: \"Banana\",\n",
" 14: \"Pomegranate\", 15: \"Lentil\", 16: \"Blackgram\", 17: \"Mungbean\", 18: \"Mothbeans\",\n",
" 19: \"Pigeonpeas\", 20: \"Kidneybeans\", 21: \"Chickpea\", 22: \"Coffee\"}\n",
"\n",
"if predict in crop_dict:\n",
" crop = crop_dict[predict]\n",
" print(\"{} is a best crop to be cultivated \".format(crop))\n",
"else:\n",
" print(\"Sorry are not able to recommend a proper crop for this environment\")"
]
},
{
"cell_type": "code",
"execution_count": 64,
"id": "d0dccd4e",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[9]\n",
"Muskmelon is a best crop to be cultivated \n"
]
}
],
"source": [
"# new inputs 2\n",
"N = 10\n",
"P = 10\n",
"k = 10\n",
"temperature = 15.0\n",
"humidity = 80.0\n",
"ph = 4.5\n",
"rainfall = 10.0\n",
"\n",
"predict = recommendation(N,P,k,temperature,humidity,ph,rainfall)\n",
"\n",
"crop_dict = {1: \"Rice\", 2: \"Maize\", 3: \"Jute\", 4: \"Cotton\", 5: \"Coconut\", 6: \"Papaya\", 7: \"Orange\",\n",
" 8: \"Apple\", 9: \"Muskmelon\", 10: \"Watermelon\", 11: \"Grapes\", 12: \"Mango\", 13: \"Banana\",\n",
" 14: \"Pomegranate\", 15: \"Lentil\", 16: \"Blackgram\", 17: \"Mungbean\", 18: \"Mothbeans\",\n",
" 19: \"Pigeonpeas\", 20: \"Kidneybeans\", 21: \"Chickpea\", 22: \"Coffee\"}\n",
"\n",
"if predict in crop_dict:\n",
" crop = crop_dict[predict]\n",
" print(\"{} is a best crop to be cultivated \".format(crop))\n",
"else:\n",
" print(\"Sorry are not able to recommend a proper crop for this environment\")"
]
},
{
"cell_type": "code",
"execution_count": 66,
"id": "fa3d3b8c",
"metadata": {},
"outputs": [],
"source": [
"import pickle\n",
"pickle.dump(rfc,open('model.pkl','wb'))\n",
"pickle.dump(ms,open('minmaxscaler.pkl','wb'))"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a55a48a3",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "c97733fc",
"metadata": {},
"outputs": [],
"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.12"
}
},
"nbformat": 4,
"nbformat_minor": 5
}