Restricted Boltzmann Machines

Python implementation of Restricted Boltzmann Machine without using any high level library. Used numpy for efficient matrix computations. Used Contrastive Divergence for computing the gradient. Implemented gradient based optimization with momentum. Trained on MNIST data for demonstration of it’s use. Check out the repository for more details.

[ code ]

Badminton Stroke Classification

This was a part of the Data Analytics course at IISc. In this project our goal was to create model that can classifiy the type of badminton stroke (5 classes). The data was time series sensor data of accelerometer and gyroscope sensors collected by ourselves using a device attached to the player’s wrist. We tried several classical machine learning models. For this we generated 281 features like average, max, skewness, etc. We also tried LSTM with different architectures. The best results we found was using gradient boosting with 80% accuracy.

[ code ]

Node embeddings

Explored different methods for embedding graph nodes like deepwalk, node2vec, etc. Performed various experiments like link prediction and label classification on real world datasets.

Tags: Graphs ML

Topological Data Analysis on Dynamic graphs

Course project for Computational Geometry and Topology. Worked on TDA on time-varying graphs. Extracting persistence diagrams of each snapshot and comparing their paiwise Bottleneck/Wasserstein distances. Obtained a timeline plotting first dimension of classical MDS against time. This gave us the insight of the variations in the data over time. Also helps in finding one-time events. Used TDA libraries like: Gudhi, Dionysus 2, TDA package in R, etc.

1D Landscape Profile

This was the Graphics and Visualization course project, which I took in my first semester of MTech at IISc, Bangalore. The aim was to construct a landscape profile for a given input augmented join tree. The join tree could have been extracted from 3D scalar field volume, 2D scalar field grid, clustering data, or any data from any other domain. Python was used for converting the input as a JSON file. d3.js javascript library was used for generating the intended landscape profile, as SVG on the browser. Aimed at visualization and analysis of high-dimensional data.

Feature selection using Genetic Algorithm

[BTech Final year project] The objective of the project was to reduce the number of features in a machine learning data set using the genetic algorithm as the optimization technique. Selecting the suitable features while keeping the accuracy of the classifier as high as possible.

Space Rangers

Space Rangers is a 3D WebGL game that I developed during my internship at IIT Bombay. This game inspires user to answer maths questions as quickly as possible, in order to win the race. The questions are fetched from a JSON file which can be changed to have your own set of MCQ questions. The game was written in javascript without any game engine or framework used. The only javascript library used was three.js for handling WebGL. Play the game from link below (not for mobile).

[ demo ] [ code ]

Pacman Maths Game

This game was developed during the internship at IITB, with the purpose of testing the gamification framework. This game is inspired by the classic Pac-Man game. The player is given a maths problem and 5 seconds time to solve that question. After the time ends, the player has to control the Pac-Man to reach to the correct answer ball. And of course escaping from the ghosts. The ghosts(two of four) follows the Pac-Man. It serches for the shortest path to Pac-Man. Play the game from link below (not for mobile).

[ demo ] [ code ]
Tags: GameDev JS

Space Drift

Space Drift is an Android Game which I developed during my 5th semester of college. This game is a simple one tap infinite game, in which user have to tap the screen to change the direction of the spaceship. The spaceship always keeps rotating in either left or right. You have to protect it from colliding with the spherical asteroids moving around randomly. I built this game as a learning experience. No game engine or framework was used. Everything was done from scratch. I used Android Studio for the whole project. The game does not contain any images, everything is drawn from the basic primitives available as canvas methods. The challenging part was implementing collision detection, for which I used SAT(Separating Axis Theorem).

[ code ]