cet / model.py
KunalThakare279's picture
Update model.py
48692e1 verified
import pandas as pd
import pickle
import warnings
warnings.filterwarnings("ignore")
with open("static/rf_pipeline.pkl", "rb") as f:
pipeline2 = pickle.load(f)
data = pd.read_csv("static/zone_course_and_colleges.csv")
df = pd.read_csv("static/final_data_zone.csv")
def get_prediction(college_name, course_name, category, gender, seat_level, round = 1):
template = pd.DataFrame([[college_name,
course_name,
category,
gender,
seat_level,
2024,
round]],
columns=['college_name', 'course_name', 'category', 'gender', 'seat_level_attribute', 'year', 'round'])
return pipeline2.predict(template)
def get_colleges(marks, zone, course, category, gender, seat_level, round):
try:
row = df[(df["zone"] == zone) & (df["course_name"] == course) & (df["category"] == category) & (df["gender"] == gender) & (df["seat_level_attribute"] == seat_level)]
if row.shape[0] == 0:
return ["No Seat Found"]
colleges = list(row["college_name"].unique())
except Exception as e:
print("Exception", e)
return ["Too less to get into"]
college_data = {}
for college in colleges:
prediciton = get_prediction(college, course, category, gender, seat_level, round)
if prediciton >= 100:
print(college, prediciton)
if prediciton <= marks:
college_code = college.split("-")[0].strip()
college_name = " ".join(college.split("-")[1:]).strip()
# college_data.append(college + f" predicted cut off = {prediciton}")
college_data[college_name] = {"college_code":college_code, "prediction": prediciton}
return college_data
def get_courses_for_zone(zone):
row = data[data["zone"] == zone.strip()]
courses = row["course_name"].unique()
return courses