Inspiration
Taking our computer science skills into a more mathematical and rigorous field centered on data processing and analysis.
What it does
A clinical domain is selected to conduct the study. We essentially collect the variables related to this domain and perform our analysis on them. Patients are divided into 3 clusters representing 3 distinct phenotypes based on these selected variables. Using these phenotypes, we can predict the evolution of a new patient taking into account their baseline data.
How we built it
To start, we cleaned the selected data and imputed missing values. We created a complete table with valid values to build an accurate Gower distance matrix. This is then used in the PAM (k-medoids) algorithm to distinguish between the $k$ ($k = 3$) phenotypes.
Once a phenotype is associated with each patient, we can divide the dataset into two parts: one to train the model and the rest for subsequent testing (80% and 20%, respectively).
Challenges we ran into
The main challenge of this project was the domain, which was heavily focused on data science and processing—an area we were not very accustomed to. The biggest mistake we made was not doing enough research before starting the implementation. We started writing code without really having a clear strategy of what to do and how to do it. Because of this, we had several restarts and long pauses throughout the project.
Accomplishments that we're proud of
- Teamwork.
- Analyzing information from an environment that was completely unknown to us.
What we learned
During the development of this project, the team acquired invaluable knowledge. Some of our members learned to program in Python from scratch, familiarizing themselves with its ecosystem and specific libraries. At the same time, we collectively managed to research, understand, and apply new techniques oriented towards massive data processing, expanding our technical skills.
What's next for Phenotype Classifier
Looking ahead to the project's future, we have several key improvements in mind to optimize its performance. First, we plan to unify variables that are semantically identical but have different names, preventing the system from treating them as independent factors. We also want to perfect our strategy for imputing missing values, as the system currently just applies the mode or mean depending on whether the data is categorical or continuous. Finally, we aim to implement a graphical tool to visualize the most important variables (and those with the most records) for each phenotype, which will be crucial for detecting if the results are heavily skewed by any of these variables.
Built With
- jupiternotebook
- python
- scikit-learn
Log in or sign up for Devpost to join the conversation.