mirror of
https://github.com/wilsonfreitas/awesome-quant.git
synced 2026-07-27 11:57:45 +00:00
327 lines
9.6 KiB
Plaintext
327 lines
9.6 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Recommendation System for Apna_Vaidya\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"#### 1. Rule-Based System"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"user_profile = None\n",
|
|
"user_scenario = None"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def rule_based_recommendation(user_profile, user_scenario):\n",
|
|
" if user_scenario == 'Patient with Symptoms':\n",
|
|
" return [\"Talk to a Doctor\", \"Verify with a Doctor\", \"Symptom Checker (AI-based)\"]\n",
|
|
" elif user_scenario == 'Chronic Condition Management':\n",
|
|
" return [\"Get a Prescription\", \"Order Medication\", \"Talk to a Doctor\", \"Talk to a Pharmacist\", \"Health Coach Consultation\"]\n",
|
|
" elif user_scenario == 'New Medication Inquiry':\n",
|
|
" return [\"Talk to a Doctor\", \"Talk to a Pharmacist\", \"Medication Information (AI-based)\"]\n",
|
|
" elif user_scenario == 'Diagnostic Needs':\n",
|
|
" return [\"Connect with a Diagnostic Center\", \"Verify with a Doctor\", \"Home Sample Collection\"]\n",
|
|
" elif user_scenario == 'Prescription Refill':\n",
|
|
" return [\"Order Medication\", \"Get a Prescription\", \"Talk to a Pharmacist\", \"Auto-Refill Subscription\"]\n",
|
|
" elif user_scenario == 'Preventive Care':\n",
|
|
" return [\"Schedule a Check-up\", \"Health Coach Consultation\", \"Vaccination Booking\"]\n",
|
|
" elif user_scenario == 'Post-Treatment Follow-up':\n",
|
|
" return [\"Talk to a Doctor\", \"Schedule a Follow-up\", \"Physical Therapy Consultation\"]\n",
|
|
" else:\n",
|
|
" return [\"Talk to a Doctor\"]\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"['Talk to a Doctor', 'Verify with a Doctor', 'Symptom Checker (AI-based)']\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Example usage\n",
|
|
"user_profile = 'Chronic Condition Management'\n",
|
|
"user_scenario = 'Patient with Symptoms'\n",
|
|
"recommendation = rule_based_recommendation(user_profile, user_scenario)\n",
|
|
"print(recommendation)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"#### 2. Collaborative Filtering"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import numpy as np\n",
|
|
"from sklearn.metrics.pairwise import cosine_similarity"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Example user-item interaction matrix (rows: users, columns: options)\n",
|
|
"interaction_matrix = np.array([\n",
|
|
" [1, 1, 0, 0, 0, 0, 0, 0, 0], # User 1\n",
|
|
" [0, 1, 1, 0, 0, 0, 0, 0, 0], # User 2\n",
|
|
" [0, 0, 1, 1, 0, 0, 0, 0, 0], # User 3\n",
|
|
" [0, 0, 0, 1, 1, 1, 0, 0, 0], # User 4\n",
|
|
" [0, 0, 0, 0, 1, 1, 1, 0, 0], # User 5\n",
|
|
" [0, 0, 0, 0, 0, 1, 1, 1, 0], # User 6\n",
|
|
"])\n",
|
|
"\n",
|
|
"# Calculate similarity between users\n",
|
|
"user_similarity = cosine_similarity(interaction_matrix)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Recommend based on the most similar user's interactions\n",
|
|
"def collaborative_filtering_recommendation(user_index, interaction_matrix, user_similarity):\n",
|
|
" similar_user_index = np.argmax(user_similarity[user_index])\n",
|
|
" recommendations = np.where(interaction_matrix[similar_user_index] == 1)[0]\n",
|
|
" return recommendations"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Example usage\n",
|
|
"user_index = 0 # User 1\n",
|
|
"recommendations = collaborative_filtering_recommendation(user_index, interaction_matrix, user_similarity)\n",
|
|
"print(recommendations) # Output the indices of the recommended options"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"#### 3. Content-Based Filtering"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from sklearn.feature_extraction.text import TfidfVectorizer\n",
|
|
"\n",
|
|
"# Example option descriptions\n",
|
|
"options = [\n",
|
|
" \"Talk to a Doctor for immediate consultation\",\n",
|
|
" \"Verify with a Doctor for second opinion\",\n",
|
|
" \"Use Symptom Checker to self-diagnose\",\n",
|
|
" \"Get a Prescription for chronic condition\",\n",
|
|
" \"Order Medication online\",\n",
|
|
" \"Talk to a Pharmacist for medication advice\",\n",
|
|
" \"Health Coach Consultation for chronic condition management\",\n",
|
|
" \"Medication Information for new prescriptions\",\n",
|
|
" \"Medication Interaction Checker\",\n",
|
|
" \"Connect with a Diagnostic Center for tests\",\n",
|
|
" \"Home Sample Collection for diagnostics\",\n",
|
|
" \"Book Lab Tests Online\",\n",
|
|
" \"Schedule a Check-up for preventive care\",\n",
|
|
" \"Health Screening Packages for preventive care\",\n",
|
|
" \"Vaccination Booking for preventive care\",\n",
|
|
" \"Schedule a Follow-up for post-treatment\",\n",
|
|
" \"Physical Therapy Consultation for recovery\",\n",
|
|
" \"Remote Monitoring Services for follow-up\",\n",
|
|
" \"Talk to a Therapist for mental health support\",\n",
|
|
" \"Join a Support Group for mental health\",\n",
|
|
" \"Mental Health Self-assessment (AI-based)\",\n",
|
|
" \"Meditation and Mindfulness Resources\"\n",
|
|
"]\n",
|
|
"\n",
|
|
"# User profile description\n",
|
|
"user_profile_description = \"Patient with chronic condition needing regular medication and follow-ups\"\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Vectorize the descriptions\n",
|
|
"vectorizer = TfidfVectorizer()\n",
|
|
"option_vectors = vectorizer.fit_transform(options)\n",
|
|
"user_vector = vectorizer.transform([user_profile_description])\n",
|
|
"\n",
|
|
"similarity = cosine_similarity(user_vector, option_vectors)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Recommend based on the highest similarity scores\n",
|
|
"def content_based_recommendation(similarity, options):\n",
|
|
" recommendations = np.argsort(similarity[0])[::-1]\n",
|
|
" return [options[i] for i in recommendations[:5]]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Example usage\n",
|
|
"recommendations = content_based_recommendation(similarity, options)\n",
|
|
"print(recommendations)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"#### 4. Machine Learning Model"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# using a decision tree classifier\n",
|
|
"from sklearn.tree import DecisionTreeClassifier\n",
|
|
"from sklearn.model_selection import train_test_split"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Example dataset (features: user profile data, labels: recommended options)\n",
|
|
"# This is a simplified example; in practice, you would have a more complex dataset\n",
|
|
"X = np.array([\n",
|
|
" [25, 1, 0, 1], # User 1: age, chronic condition, acute symptoms, preventive care\n",
|
|
" [45, 1, 1, 0], # User 2\n",
|
|
" [60, 0, 0, 1], # User 3\n",
|
|
" [35, 1, 0, 1], # User 4\n",
|
|
" [50, 0, 1, 0], # User 5\n",
|
|
"])\n",
|
|
"y = np.array([\n",
|
|
" [0, 1, 1, 0], # Recommended options for User 1\n",
|
|
" [1, 1, 0, 1], # Recommended options for User 2\n",
|
|
" [0, 0, 1, 1], # Recommended options for User 3\n",
|
|
" [1, 1, 0, 0], # Recommended options for User 4\n",
|
|
" [0, 0, 1, 1], # Recommended options for User 5\n",
|
|
"])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Split the data into training and testing sets\n",
|
|
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Train the decision tree classifier\n",
|
|
"clf = DecisionTreeClassifier()\n",
|
|
"clf.fit(X_train, y_train)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Predict recommendations for a new user\n",
|
|
"new_user = np.array([[40, 1, 1, 0]]) # New user profile\n",
|
|
"predictions = clf.predict(new_user)\n",
|
|
"print(predictions)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.11.9"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|