bano1's picture
Update utils/ml_model.py
24d99bd verified
Raw
History Blame Contribute Delete
836 Bytes
import pandas as pd
import numpy as np
from sklearn.ensemble import RandomForestClassifier
def train_model(counts: pd.DataFrame, labels: list):
"""
Train Random Forest model on RNA-seq data
counts:
rows = samples
columns = genes
labels:
sample classes
"""
X = counts
y = np.array(labels)
model = RandomForestClassifier(
n_estimators=100,
random_state=42
)
model.fit(X, y)
feature_importances = pd.DataFrame({
"Gene": counts.columns,
"Importance": model.feature_importances_
}).sort_values(
by="Importance",
ascending=False
)
return model, feature_importances
def get_top_biomarkers(
feature_importances: pd.DataFrame,
top_n=10
):
return feature_importances.head(top_n)