shanmukakomal commited on
Commit
846b098
·
1 Parent(s): b44e52d

thecolleges

Browse files
Files changed (2) hide show
  1. college predictor.py +85 -0
  2. requirements.txt +0 -0
college predictor.py ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+ import numpy as np
3
+ import gradio as gr
4
+ from sklearn.model_selection import train_test_split
5
+ from sklearn.preprocessing import LabelEncoder
6
+ from sklearn.ensemble import RandomForestClassifier
7
+ import joblib
8
+
9
+ # Load and preprocess data
10
+ def load_and_preprocess_data(filename):
11
+ df = pd.read_csv(filename)
12
+
13
+ label_encoders = {}
14
+ for col in ["College Name", "Category", "Gender", "Branch", "Region"]:
15
+ le = LabelEncoder()
16
+ df[col] = le.fit_transform(df[col])
17
+ label_encoders[col] = le
18
+
19
+ X = df[["Category", "Gender", "Opening Rank", "Closing Rank", "Region"]]
20
+ y_college_branch = df[["College Name", "Branch"]]
21
+
22
+ return X, y_college_branch, label_encoders, df
23
+
24
+ filename = "AP_EAMCET_Engineering_10000 (1).csv"
25
+ X, y_college_branch, label_encoders, df = load_and_preprocess_data(filename)
26
+
27
+ # Train model
28
+ def train_model(X, y):
29
+ X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
30
+ model = RandomForestClassifier(n_estimators=100, random_state=42)
31
+ model.fit(X_train, y_train)
32
+ return model
33
+
34
+ college_branch_model = train_model(X, y_college_branch)
35
+
36
+ joblib.dump(college_branch_model, "college_branch_model.pkl")
37
+ joblib.dump(label_encoders, "label_encoders.pkl")
38
+
39
+ # Prediction function
40
+ def predict_colleges(category, gender, rank, region):
41
+ # Load label encoders
42
+ label_encoders = joblib.load("label_encoders.pkl")
43
+
44
+ # Transform input values using label encoders
45
+ try:
46
+ category_enc = label_encoders["Category"].transform([category])[0]
47
+ gender_enc = label_encoders["Gender"].transform([gender])[0]
48
+ region_enc = label_encoders["Region"].transform([region])[0]
49
+ except ValueError:
50
+ return "Invalid input values. Please select valid options."
51
+
52
+ # Filter the dataset based on encoded values
53
+ filtered_df = df[
54
+ (df["Category"] == category_enc) &
55
+ (df["Gender"] == gender_enc) &
56
+ (df["Opening Rank"] <= rank) &
57
+ (df["Closing Rank"] >= rank) &
58
+ (df["Region"] == region_enc)
59
+ ]
60
+
61
+ if filtered_df.empty:
62
+ return "No matching colleges found."
63
+
64
+ # Decode college names and branches
65
+ filtered_df["College Name"] = label_encoders["College Name"].inverse_transform(filtered_df["College Name"].values)
66
+ filtered_df["Branch"] = label_encoders["Branch"].inverse_transform(filtered_df["Branch"].values)
67
+
68
+ result = filtered_df[["College Name", "Branch"]].drop_duplicates().to_string(index=False)
69
+ return result
70
+
71
+ # Gradio Interface
72
+ demo = gr.Interface(
73
+ fn=predict_colleges,
74
+ inputs=[
75
+ gr.Dropdown(choices=["OC", "BC", "SC", "ST"], label="Category"),
76
+ gr.Radio(choices=["Male", "Female"], label="Gender"),
77
+ gr.Number(label="Rank"),
78
+ gr.Dropdown(choices=["AU", "SV"], label="Region")
79
+ ],
80
+ outputs="text",
81
+ title="AP EAMCET College Predictor",
82
+ description="Enter your details to predict all possible colleges and branches based on your rank."
83
+ )
84
+
85
+ demo.launch()
requirements.txt CHANGED
Binary files a/requirements.txt and b/requirements.txt differ