About Me

My name is Edwin Onuonga. I was born in Nairobi, Kenya and shortly moved to Dubai, United Arab Emirates where I grew up. After my A-Levels, I decided to go and study in Edinburgh, United Kingdom at The School of Informatics, University of Edinburgh, where I chose to do a BSc degree in Computer Science! I then continued on to do an MSc programme in Statistics with Data Science at The School of Mathematics at the same university.

It's hard to say exactly when and how I became interested in computer science, but it was likely during my A-Levels where I developed a strong interest in mathematics. I found many of the areas of mathematics simply amazing, but began to wonder how they can be used to interact with, manipulate and uncover meaning from data. This ultimately led me to pursue the path of computer science, and even more specifically, data science and machine learning.

Contact Details

Edwin Onuonga
United Kingdom
[email protected]


School of Mathematics, University of Edinburgh

MSc Statistics with Data Science 2020 - Current


  • Stochastic Modelling
  • Fundamentals of Operational Research
  • Credit Scoring
  • Biomedical Data Science
  • Generalized Regression Models
  • Bayesian Theory
  • Bayesian Data Analysis
  • Statistical Methodology
  • Applied Statistics
  • Incomplete Data Analysis

School of Informatics, University of Edinburgh

BSc (Hons) Computer Science - 1st class 2016 - 2020

Research project:

Automatic detection and classification of human head gestures
(Supervised by Dr. Hiroshi Shimodaira)

Click here to view the abstract.

Head gestures are a simple, yet expressive form of human-to-human interaction, used as a medium for conveying ideas and emotions. Despite their simplicity as a form of communication, the accurate modelling and recognition of human head gestures has posed many challenges and provided many opportunities for machine learning research. The frequent use of motion-tracking devices, video, virtual-reality headsets and motion capture systems in the modern age of technology further motivates the need for effective head gesture recognition systems.

In this dissertation, we focused primarily on the task of isolated head gesture recognition on rotation signals obtained from motion capture data. For this task, we performed in-depth research, application and evaluation of various widely-used sequence classification algorithms, including k-Nearest Neighbors with Dynamic Time Warping, Hidden Markov Models, Feed-Forward Neural Networks, and Recurrent Neural Networks with Long Short-Term Memory (LSTM). Comparisons between classifiers were done on the basis of recognition performance, which was measured with F1 score, and efficiency, which was measured in terms of peak memory consumption and fitting/prediction times.

The most effective method of modelling gestures was a bidirectional multi-layer LSTM, which yielded an accuracy of 53.75±1% and an F1 score of 52.30±1%. This result is a vast improvement of +15.1% F1 score over previous works on the same dataset.


  • Algorithms, Data Structures and Learning
  • Introductory Applied Machine Learning
  • Machine Learning Practical
  • Machine Learning and Pattern Recognition
  • Extreme Computing
  • Foundations of Natural Language Processing
  • Processing Formal and Natural Languages
  • Automatic Speech Recognition
  • Natural Language Understanding, Generation and Machine Translation
  • Database Systems

The English College, Dubai

GCE/A-Levels (Mathematics - A*, Physics - A, Computing - B) 2007 - 2016


  • Heriot-Watt University Programming Challenge
  • IT Department Assistance


In addition to being able to effectively manipulate and gather insight from data, I have a solid understanding of a number of machine learning algorithms and concepts, including but not limited to:

  • Linear Regression
  • Logistic/Softmax Regression
  • k-Nearest Neighbor Classifiers
  • Neural Networks (FFNNs, RNNs, CNNs)
  • Hidden Markov Models
  • Bayes Classifiers
  • Decision Trees
  • Gaussian Mixture Models
  • k-Means Clustering

I have also had practice using these methods in specific application areas, such as: using Bayes Classifiers for text classification, using HMMs to perform part-of-speech tagging or automatic speech recognition, and combining Dynamic Time Warping with k-Nearest Neighbors to classify sequences of different length. I have also come across other algorithms such as Random Forests, Bayesian Methods (such as Gaussian Processes) and Support Vector Machines, but have less practice with them.

I am also able to confidently conduct statistical analyses involving hypothesis tests, maximum likelihood estimation, confidence intervals, imputation methods for missing data, and much more – all with the help of the R programming language. I am currently learning more about Bayesian statistics, and in particular, computational methods such as Markov Chain Monte Carlo.

Programming Languages and Libraries:

Python Ruby R PostgreSQL HTML JavaScript CSS   SASS
VS Code RStudio Git   GitHub macOS Bash Conda LaTeX
  • Ruby: sinatra, rails (limited), activerecord, thor, nokogiri, rake, rspec
  • Python: numpy, tensorflow, torch, pandas, scikit-learn, scipy, nltk, matplotlib, seaborn, librosa
  • R: ggplo2, tibble, tidyr, dplyr, plotly, rvest, mice, rjags, rmarkdown

I mostly use Ruby for my general scripting needs, but also use it to design web-related things such as APIs, frameworks and websites.

For tasks involving data science and machine learning, I am very comfortable working with Python and R. I can effectively use Jupyter Notebooks (coupled with visualization libraries such as matplotlib and seaborn) or R Markdown (with ggplot2 and plotly) as a means of clearly representing my work.

I have also written and published a number of libraries in both Python and Ruby on the public repositories PyPI and RubyGems.


eonu's GitHub chart

During my time at university, I have developed many coursework-related and personal projects ranging from machine learning packages to websites, web frameworks and APIs. Most of these projects were written in Ruby and Python, but I have also done a few in some other languages such as R.
You can find all of my projects on my GitHub profile.

Here is a brief list of some of the larger projects that I have worked on, or are currently working on:



A machine learning interface for isolated sequence classification algorithms in Python.

Created as part of my Honours project research involving the use of sequential classifiers for automatic detection and recognition of head gestures in motion capture data.



Micro-framework, application generator and CLI wrapped around the Sinatra DSL.

Designed to simplify the process of getting new Sinatra applications up and running by providing commands for quick scaffolding and MVC file generation.

Deeper Blue

Deeper Blue

An assistive chess-playing robot aimed at making chess played on a physical board more accessible towards the disabled.

Developed for the System Design Project — a 3rd year group project at the School of Informatics, University of Edinburgh.