Download as pdf or txt
Download as pdf or txt
You are on page 1of 6

3/20/24, 4:22 PM Naive_Bayes_Rainfall

Applying Naive Bayes algorithm to predict rainfall


level in Mymensingh
In [2]: import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score,classification_report,confusion_matrix

In [3]: D = pd.read_csv('C:/Users/Admin/Desktop/STAT 405/Mymensingh.csv')

In [4]: D

Out[4]: ID Station Year Month TEM DPT WIS HUM SLP T_RAN A_RAIN RAN

0 1 Mymensingh 1960 1 16.9 11.3 2.0 73.39 1016.0 15 0.48 NRT

1 2 Mymensingh 1960 2 21.4 12.6 1.7 66.34 1013.0 0 0.00 NRT

2 3 Mymensingh 1960 3 24.1 14.9 2.3 64.13 1011.4 69 2.23 LTR

3 4 Mymensingh 1960 4 29.9 17.6 2.2 59.03 1007.1 27 0.90 NRT

4 5 Mymensingh 1960 5 29.6 23.2 2.4 73.45 1003.4 187 6.03 LTR

... ... ... ... ... ... ... ... ... ... ... ... ...

667 668 Mymensingh 2015 8 28.7 26.2 2.5 87.10 1003.3 349 11.26 MHR

668 669 Mymensingh 2015 9 28.8 25.2 2.0 85.63 1006.0 263 8.77 LTR

669 670 Mymensingh 2015 10 27.0 23.5 2.0 82.48 1011.3 180 5.81 LTR

670 671 Mymensingh 2015 11 23.1 18.7 1.7 81.73 1013.7 13 0.43 NRT

671 672 Mymensingh 2015 12 18.3 14.9 1.8 82.68 1015.9 5 0.16 NRT

672 rows × 12 columns

In [5]: D.dropna(how='any',axis=0,inplace=True)

In [6]: D

localhost:8889/nbconvert/html/Desktop/STAT 405/Naive_Bayes_Rainfall.ipynb?download=false 1/6


3/20/24, 4:22 PM Naive_Bayes_Rainfall

Out[6]: ID Station Year Month TEM DPT WIS HUM SLP T_RAN A_RAIN RAN

0 1 Mymensingh 1960 1 16.9 11.3 2.0 73.39 1016.0 15 0.48 NRT

1 2 Mymensingh 1960 2 21.4 12.6 1.7 66.34 1013.0 0 0.00 NRT

2 3 Mymensingh 1960 3 24.1 14.9 2.3 64.13 1011.4 69 2.23 LTR

3 4 Mymensingh 1960 4 29.9 17.6 2.2 59.03 1007.1 27 0.90 NRT

4 5 Mymensingh 1960 5 29.6 23.2 2.4 73.45 1003.4 187 6.03 LTR

... ... ... ... ... ... ... ... ... ... ... ... ...

667 668 Mymensingh 2015 8 28.7 26.2 2.5 87.10 1003.3 349 11.26 MHR

668 669 Mymensingh 2015 9 28.8 25.2 2.0 85.63 1006.0 263 8.77 LTR

669 670 Mymensingh 2015 10 27.0 23.5 2.0 82.48 1011.3 180 5.81 LTR

670 671 Mymensingh 2015 11 23.1 18.7 1.7 81.73 1013.7 13 0.43 NRT

671 672 Mymensingh 2015 12 18.3 14.9 1.8 82.68 1015.9 5 0.16 NRT

654 rows × 12 columns

In [7]: DD=D.drop(['ID','Station','Year','Month','T_RAN','A_RAIN'],axis=1)

In [8]: DD

Out[8]: TEM DPT WIS HUM SLP RAN

0 16.9 11.3 2.0 73.39 1016.0 NRT

1 21.4 12.6 1.7 66.34 1013.0 NRT

2 24.1 14.9 2.3 64.13 1011.4 LTR

3 29.9 17.6 2.2 59.03 1007.1 NRT

4 29.6 23.2 2.4 73.45 1003.4 LTR

... ... ... ... ... ... ...

667 28.7 26.2 2.5 87.10 1003.3 MHR

668 28.8 25.2 2.0 85.63 1006.0 LTR

669 27.0 23.5 2.0 82.48 1011.3 LTR

670 23.1 18.7 1.7 81.73 1013.7 NRT

671 18.3 14.9 1.8 82.68 1015.9 NRT

654 rows × 6 columns

In [13]: X=DD.drop(['RAN'],axis=1)
Y=DD['RAN']

In [14]: X

localhost:8889/nbconvert/html/Desktop/STAT 405/Naive_Bayes_Rainfall.ipynb?download=false 2/6


3/20/24, 4:22 PM Naive_Bayes_Rainfall

Out[14]: TEM DPT WIS HUM SLP

0 16.9 11.3 2.0 73.39 1016.0

1 21.4 12.6 1.7 66.34 1013.0

2 24.1 14.9 2.3 64.13 1011.4

3 29.9 17.6 2.2 59.03 1007.1

4 29.6 23.2 2.4 73.45 1003.4

... ... ... ... ... ...

667 28.7 26.2 2.5 87.10 1003.3

668 28.8 25.2 2.0 85.63 1006.0

669 27.0 23.5 2.0 82.48 1011.3

670 23.1 18.7 1.7 81.73 1013.7

671 18.3 14.9 1.8 82.68 1015.9

654 rows × 5 columns

In [16]: Y

0 NRT
Out[16]:
1 NRT
2 LTR
3 NRT
4 LTR
...
667 MHR
668 LTR
669 LTR
670 NRT
671 NRT
Name: RAN, Length: 654, dtype: object

In [17]: X_train,X_test,Y_train,Y_test=train_test_split(X,Y,test_size=.25,random_state=124)

In [18]: X_train

localhost:8889/nbconvert/html/Desktop/STAT 405/Naive_Bayes_Rainfall.ipynb?download=false 3/6


3/20/24, 4:22 PM Naive_Bayes_Rainfall

Out[18]: TEM DPT WIS HUM SLP

434 25.8 19.4 3.3 72.55 1008.0

260 29.2 24.3 3.7 80.63 1006.5

299 20.1 14.0 2.7 72.74 1013.4

159 29.5 21.0 2.0 70.10 997.5

544 26.5 23.2 4.1 82.29 1005.2

... ... ... ... ... ...

550 22.7 18.9 1.8 83.83 1012.7

118 23.9 17.2 1.0 73.03 1014.1

144 19.8 12.7 1.2 67.87 1015.6

17 27.6 24.2 2.0 87.27 1001.7

480 17.4 13.3 2.3 80.35 1014.1

490 rows × 5 columns

In [19]: X_test

Out[19]: TEM DPT WIS HUM SLP

446 24.9 17.9 3.8 70.45 1010.8

401 27.5 23.9 5.2 85.67 1001.7

244 27.8 23.1 6.5 76.77 1005.3

502 23.7 20.0 1.7 83.90 1013.5

524 28.3 25.3 2.5 87.77 1005.5

... ... ... ... ... ...

438 28.5 25.9 3.7 86.68 1000.8

129 26.9 23.4 0.8 83.19 1009.0

193 20.5 15.4 0.1 80.82 995.2

68 28.3 24.6 1.4 85.40 1006.4

219 26.3 19.5 4.1 72.77 1008.2

164 rows × 5 columns

In [21]: Y_train

localhost:8889/nbconvert/html/Desktop/STAT 405/Naive_Bayes_Rainfall.ipynb?download=false 4/6


3/20/24, 4:22 PM Naive_Bayes_Rainfall
434 NRT
Out[21]:
260 LTR
299 NRT
159 LTR
544 MHR
...
550 NRT
118 NRT
144 NRT
17 MHR
480 NRT
Name: RAN, Length: 490, dtype: object

In [22]: Y_test

446 LTR
Out[22]:
401 MHR
244 MHR
502 NRT
524 LTR
...
438 LTR
129 LTR
193 NRT
68 LTR
219 LTR
Name: RAN, Length: 164, dtype: object

In [23]: NB=GaussianNB()

In [24]: NB.fit(X_train,Y_train)

Out[24]: ▾ GaussianNB

GaussianNB()

In [31]: NPR=NB.predict(X_test)

In [32]: NPR

localhost:8889/nbconvert/html/Desktop/STAT 405/Naive_Bayes_Rainfall.ipynb?download=false 5/6


3/20/24, 4:22 PM Naive_Bayes_Rainfall
array(['NRT', 'MHR', 'LTR', 'NRT', 'MHR', 'MHR', 'MHR', 'MHR', 'NRT',
Out[32]:
'NRT', 'LTR', 'MHR', 'NRT', 'MHR', 'NRT', 'NRT', 'MHR', 'NRT',
'MHR', 'LTR', 'NRT', 'MHR', 'NRT', 'MHR', 'NRT', 'MHR', 'LTR',
'NRT', 'MHR', 'NRT', 'LTR', 'MHR', 'LTR', 'NRT', 'MHR', 'NRT',
'MHR', 'NRT', 'NRT', 'NRT', 'MHR', 'NRT', 'LTR', 'MHR', 'NRT',
'MHR', 'LTR', 'MHR', 'NRT', 'LTR', 'MHR', 'MHR', 'MHR', 'NRT',
'LTR', 'NRT', 'MHR', 'NRT', 'NRT', 'MHR', 'MHR', 'LTR', 'NRT',
'MHR', 'NRT', 'MHR', 'NRT', 'MHR', 'LTR', 'LTR', 'NRT', 'MHR',
'LTR', 'MHR', 'NRT', 'MHR', 'MHR', 'NRT', 'LTR', 'LTR', 'NRT',
'MHR', 'MHR', 'MHR', 'MHR', 'NRT', 'LTR', 'NRT', 'MHR', 'MHR',
'LTR', 'LTR', 'MHR', 'NRT', 'MHR', 'NRT', 'NRT', 'NRT', 'LTR',
'NRT', 'MHR', 'NRT', 'NRT', 'MHR', 'LTR', 'NRT', 'LTR', 'NRT',
'NRT', 'LTR', 'LTR', 'MHR', 'NRT', 'MHR', 'NRT', 'MHR', 'NRT',
'MHR', 'MHR', 'NRT', 'MHR', 'MHR', 'MHR', 'MHR', 'NRT', 'LTR',
'MHR', 'NRT', 'MHR', 'NRT', 'NRT', 'LTR', 'NRT', 'NRT', 'NRT',
'LTR', 'NRT', 'MHR', 'NRT', 'MHR', 'LTR', 'NRT', 'MHR', 'LTR',
'NRT', 'NRT', 'MHR', 'MHR', 'LTR', 'NRT', 'LTR', 'LTR', 'NRT',
'MHR', 'NRT', 'NRT', 'LTR', 'LTR', 'LTR', 'MHR', 'LTR', 'LTR',
'MHR', 'LTR'], dtype='<U3')

In [33]: accuracy_score(Y_test,NPR)

0.7134146341463414
Out[33]:

In [34]: print(classification_report(Y_test,NPR))

precision recall f1-score support

LTR 0.82 0.45 0.58 69


MHR 0.56 0.90 0.69 39
NRT 0.80 0.91 0.85 56

accuracy 0.71 164


macro avg 0.73 0.75 0.71 164
weighted avg 0.75 0.71 0.70 164

In [35]: print(confusion_matrix(Y_test,NPR))

[[31 25 13]
[ 4 35 0]
[ 3 2 51]]

localhost:8889/nbconvert/html/Desktop/STAT 405/Naive_Bayes_Rainfall.ipynb?download=false 6/6

You might also like