KeshavaKumar/Personalized_Medicine_Composition_Optimization
0
1import pandas as pd
2import numpy as np
3import pickle
4from sklearn.model_selection import train_test_split
5from sklearn.ensemble import RandomForestClassifier
6from sklearn.preprocessing import MultiLabelBinarizer
7from sklearn.metrics import accuracy_score
8
9# Load dataset
10df = pd.read_csv("dataset.csv")
11
12# Fill NaN values with empty strings
13df.fillna("", inplace=True)
14
15# Combine all symptoms into lists
16df["Symptoms"] = df.iloc[:, 1:].apply(lambda x: [s for s in x if s], axis=1)
17
18# Drop old symptom columns
19df = df[["Disease", "Symptoms"]]
20
21# One-hot encoding for symptoms
22mlb = MultiLabelBinarizer()
23X = mlb.fit_transform(df["Symptoms"])
24y = df["Disease"]
25
26# Split dataset
27X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
28
29# Train model
30clf = RandomForestClassifier(n_estimators=100, random_state=42)
31clf.fit(X_train, y_train)
32
33# Evaluate model
34predictions = clf.predict(X_test)
35accuracy = accuracy_score(y_test, predictions)
36print(f"Model Accuracy: {accuracy * 100:.2f}%")
37
38# Save model and encoder
39with open("disease_classifier.pkl", "wb") as f:
40 pickle.dump({"model": clf, "encoder": mlb}, f)
41
42print("Disease Prediction Model Trained and Saved!")
43
44
45 