Muedgar commited on
Commit
fcf60f2
·
1 Parent(s): ddccc5f

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +79 -0
app.py ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import numpy as np
2
+ import pandas as pd
3
+ from sklearn.impute import SimpleImputer
4
+ from sklearn.preprocessing import LabelEncoder
5
+ from sklearn.preprocessing import StandardScaler
6
+ from sklearn.model_selection import train_test_split
7
+ from sklearn.ensemble import RandomForestClassifier
8
+ from sklearn.metrics import accuracy_score
9
+ import gradio as gr
10
+ def rainPrediction(fileCSVName):
11
+ #Importing necessary libraries
12
+ #Storing the values from the dataset in a variable
13
+ if fileCSVName == "weatherAUS.csv":
14
+ dataset = pd.read_csv("/weatherAUS.csv")
15
+ #D
16
+ X = dataset.iloc[:,[1,2,3,4,7,8,9,10,11,12,13,14,15,16,18,19,20,21]].values
17
+ Y = dataset.iloc[:,-1].values
18
+
19
+ #Reshaping Y from a 1-dimensional(a[n]) array into a 2-dimensional(a[n][m]) array
20
+ Y = Y.reshape(-1,1)
21
+
22
+ #Removing NA from the dataset and replacing it with the most frequent value in that column
23
+
24
+ imputer = SimpleImputer(missing_values=np.nan,strategy='most_frequent')
25
+ X = imputer.fit_transform(X)
26
+ Y = imputer.fit_transform(Y)
27
+
28
+ #Encoding non-numerical(i.e: W,WNW) values into numerical values(i.e: 1,2,3,4)
29
+
30
+ le1 = LabelEncoder()
31
+ X[:,0] = le1.fit_transform(X[:,0])
32
+ le2 = LabelEncoder()
33
+ X[:,4] = le2.fit_transform(X[:,4])
34
+ le3 = LabelEncoder()
35
+ X[:,6] = le3.fit_transform(X[:,6])
36
+ le4 = LabelEncoder()
37
+ X[:,7] = le4.fit_transform(X[:,7])
38
+ le5 = LabelEncoder()
39
+ X[:,-1] = le5.fit_transform(X[:,-1])
40
+ le6 = LabelEncoder()
41
+ Y = le6.fit_transform(Y)
42
+
43
+ #Feature scaling to minimize data scattering
44
+
45
+ sc = StandardScaler()
46
+ X = sc.fit_transform(X)
47
+
48
+ #Dividing the dataset into 2 parts namely training data and testing data
49
+
50
+ X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size=0.2,random_state=0)
51
+
52
+ #Training our model
53
+
54
+ classifier = RandomForestClassifier(n_estimators=100,random_state=0)
55
+ classifier.fit(X_train,Y_train)
56
+ classifier.score(X_train,Y_train)
57
+ Y_test = Y_test.reshape(-1,1)
58
+ Y_pred = classifier.predict(X_test)
59
+ Y_pred = le6.inverse_transform(Y_pred)
60
+ Y_test = le6.inverse_transform(Y_test)
61
+ Y_test = Y_test.reshape(-1,1)
62
+ Y_pred = Y_pred.reshape(-1,1)
63
+
64
+ #Concatenating our test and prediction result into a dataset
65
+ df = np.concatenate((Y_test,Y_pred),axis=1)
66
+ dataframe = pd.DataFrame(df,columns=['Rain Tomorrow','Rain Prediction'])
67
+
68
+ #Checking the accuracy
69
+
70
+ print(accuracy_score(Y_test,Y_pred))
71
+
72
+ #Print .csv file
73
+ #answer = dataframe.to_csv("predictions.csv")
74
+
75
+ # return pd.read_csv("predictions.csv")
76
+ return dataframe
77
+
78
+ app = gr.Interface(rainPrediction, "text", gr.outputs.Dataframe(headers=["Rain Tomorrow", "Rain Prediction"],label="All data"))
79
+ app.launch(debug=True)