CoolFace
Apppublic

Shivashankar/Drug-Classification

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
train.py68 linesDownload Raw Back to root
1import pandas as pd2import skops.io as sio3from sklearn.compose import ColumnTransformer4from sklearn.ensemble import RandomForestClassifier5from sklearn.impute import SimpleImputer6from sklearn.metrics import accuracy_score, f1_score7from sklearn.pipeline import Pipeline8from sklearn.preprocessing import OrdinalEncoder, StandardScaler9 10# Loading the Data11drug_df = pd.read_csv("Data/drug.csv")12drug_df = drug_df.sample(frac=1)13 14#  Train Test Split15from sklearn.model_selection import train_test_split16 17X = drug_df.drop("Drug", axis=1).values18y = drug_df.Drug.values19 20X_train, X_test, y_train, y_test = train_test_split(21    X, y, test_size=0.3, random_state=12522)23 24# Pipeline25cat_col = [1, 2, 3]26num_col = [0, 4]27 28transform = ColumnTransformer(29    [30        ("encoder", OrdinalEncoder(), cat_col),31        ("num_imputer", SimpleImputer(strategy="median"), num_col),32        ("num_scaler", StandardScaler(), num_col),33    ]34)35pipe = Pipeline(36    steps=[37        ("preprocessing", transform),38        ("model", RandomForestClassifier(n_estimators=10, random_state=125)),39    ]40)41 42# Training43pipe.fit(X_train, y_train)44 45# Model Evaluation46predictions = pipe.predict(X_test)47accuracy = accuracy_score(y_test, predictions)48f1 = f1_score(y_test, predictions, average="macro")49 50print("Accuracy:", str(round(accuracy, 2) * 100) + "%", "F1:", round(f1, 2))51 52# Confusion Matrix Plot53import matplotlib.pyplot as plt54from sklearn.metrics import ConfusionMatrixDisplay, confusion_matrix55 56predictions = pipe.predict(X_test)57cm = confusion_matrix(y_test, predictions, labels=pipe.classes_)58disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=pipe.classes_)59disp.plot()60plt.savefig("./Results/model_results.png", dpi=120)61 62# Write metrics to file63with open("./Results/metrics.txt", "w") as outfile:64    outfile.write(f"\nAccuracy = {round(accuracy, 2)}, F1 Score = {round(f1, 2)}")65 66# Saving the model file67sio.dump(pipe, "./Model/drug_pipeline.skops")68