Spaces:
Running
Running
Rename recommender.py to database_recommender.py
Browse files
recommender.py β database_recommender.py
RENAMED
|
@@ -4,8 +4,6 @@ from sklearn.neighbors import KNeighborsClassifier
|
|
| 4 |
from sklearn.preprocessing import LabelEncoder, StandardScaler
|
| 5 |
import joblib
|
| 6 |
import json
|
| 7 |
-
import os
|
| 8 |
-
import requests
|
| 9 |
|
| 10 |
class CourseRecommender:
|
| 11 |
def __init__(self):
|
|
@@ -281,47 +279,6 @@ class CourseRecommender:
|
|
| 281 |
self.scaler = model_data['scaler']
|
| 282 |
self.label_encoders = model_data['label_encoders']
|
| 283 |
|
| 284 |
-
|
| 285 |
-
# ===== UI helper for Hugging Face integration =====
|
| 286 |
-
def get_course_recommendations_ui(recommender: "CourseRecommender", stanine, gwa, strand, hobbies) -> str:
|
| 287 |
-
if recommender is None:
|
| 288 |
-
return "Sorry, the recommendation system is not available at the moment. Please try again later."
|
| 289 |
-
try:
|
| 290 |
-
try:
|
| 291 |
-
stanine = int(stanine.strip()) if isinstance(stanine, str) else int(stanine)
|
| 292 |
-
except (ValueError, TypeError, AttributeError):
|
| 293 |
-
return "β Stanine score must be a valid number between 1 and 9"
|
| 294 |
-
try:
|
| 295 |
-
gwa = float(gwa.strip()) if isinstance(gwa, str) else float(gwa)
|
| 296 |
-
except (ValueError, TypeError, AttributeError):
|
| 297 |
-
return "β GWA must be a valid number between 75 and 100"
|
| 298 |
-
if not (1 <= stanine <= 9):
|
| 299 |
-
return "β Stanine score must be between 1 and 9"
|
| 300 |
-
if not (75 <= gwa <= 100):
|
| 301 |
-
return "β GWA must be between 75 and 100"
|
| 302 |
-
if not strand:
|
| 303 |
-
return "β Please select a strand"
|
| 304 |
-
if not hobbies or not str(hobbies).strip():
|
| 305 |
-
return "β Please enter your hobbies/interests"
|
| 306 |
-
|
| 307 |
-
recommendations = recommender.recommend_courses(
|
| 308 |
-
stanine=stanine,
|
| 309 |
-
gwa=gwa,
|
| 310 |
-
strand=strand,
|
| 311 |
-
hobbies=str(hobbies)
|
| 312 |
-
)
|
| 313 |
-
if not recommendations:
|
| 314 |
-
return "No recommendations available at the moment."
|
| 315 |
-
response = f"## π― Course Recommendations for You\n\n"
|
| 316 |
-
response += f"**Profile:** Stanine {stanine}, GWA {gwa}, {strand} Strand\n"
|
| 317 |
-
response += f"**Interests:** {hobbies}\n\n"
|
| 318 |
-
for i, rec in enumerate(recommendations, 1):
|
| 319 |
-
response += f"### {i}. {rec['code']} - {rec['name']}\n"
|
| 320 |
-
response += f"**Match Score:** {rec.get('rating', rec.get('probability', 0)):.1f}%\n\n"
|
| 321 |
-
return response
|
| 322 |
-
except Exception as e:
|
| 323 |
-
return f"β Error getting recommendations: {str(e)}"
|
| 324 |
-
|
| 325 |
# Example usage
|
| 326 |
if __name__ == "__main__":
|
| 327 |
recommender = CourseRecommender()
|
|
|
|
| 4 |
from sklearn.preprocessing import LabelEncoder, StandardScaler
|
| 5 |
import joblib
|
| 6 |
import json
|
|
|
|
|
|
|
| 7 |
|
| 8 |
class CourseRecommender:
|
| 9 |
def __init__(self):
|
|
|
|
| 279 |
self.scaler = model_data['scaler']
|
| 280 |
self.label_encoders = model_data['label_encoders']
|
| 281 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 282 |
# Example usage
|
| 283 |
if __name__ == "__main__":
|
| 284 |
recommender = CourseRecommender()
|