Our Project

Goal

We sought to build an interactive country indicator (GDP, population, etc) visualizer with predictive capabilities. By using a machine learning algorithm that can generate future metrics using training data from 1960 - 2017, we will predict future metrics for countries. Users will select weights for given indicators to create an all inclusive “coefficient” which will be used to gradate a world map.

The program will have two components: the machine learning aspect and the GUI/website aspect. The machine learning model will be responsible for using prior data to generate future data. The GUI will be responsible for displaying outputs as well as deal with the interactivity of the project. The interactive user interface changes the model, which will then change the displayed metrics.

Project Evolution

We based our project idea on our respective interests. Sampei wanted to experiment with big data and machine learning while Sara wanted to work on her web development skills. We came up with the idea of a data visualization project for world indicators.

Through our architectural reviews, we gain a lot of insights on different tools to use in our project such as Flask, Scikit Learn, and Pandas. Furthermore, we gained a lot of insight on the types of indicators people were interested in visualizing. We ran our architectural reviews as focus groups to see what our users wanted to see in our website.

Demo

See demo video of our web app below

Case Studies

Student Identifying Study-Abroad Country

Jill is looking for a country to stay abroad in but her school offers so many choices that she doesn’t know where to go!

Having grown up in the suburbs all her life, she wants to go to a country with a high population. This is very important to her. Furthermore, she wants high employment because she believes this correlates with lower levels of violence. Because she is only going to be there for one semester, she doesn’t care about the life expectancy of the country. Moreover, she doesn’t care about the GDP of the country as she is always willing to explore new experiences.

She consults the World Map Predictive Visualizer and enters the weights of each indicator based on much she values those qualities of a country. She sets her indicators to 0, 30, 0, 70. She finds that Japan, France, and Italy are all great locations for her study abroad!

Researcher Tracking Trends

One potential use case for this software could be a researcher trying to identify trends over a period of time. This researcher can weigh different values more or less comparatively to visually see which countries remain colored similarly as years change. For example, say this researcher is interested in tracking GDP over time. She could start out by weighing GDP highly compared to the other indicators, and could progressively change her year input to see how the countries vary.

For Developers

Interested in deploying your own version of this code?

Please see our source code on Github, along with our ReadMe for instructions.

Implementation:

For our overall architecture, we decided to go with the model-view-controller architectural pattern.

Model:

In this project, we had to deal with a lot of data (a lot of it). We took public data from the World Bank regarding the GDP, unemployment rate, life expectancy, and population for every country from 1960 - 2017. We quickly found that a lot of the data was missing for many countries.

For the countries that had some missing data points, we built a linear regression model with the existing data points and extrapolated it to the years of the missing data points. As a result, we were able to populate the missing data points to give users a fuller analysis to their data visualization needs.

Controller:

The controller in our project is a flask script that receives the inputs given by the users to perform some calculations on them. Given some weighting for indicators, the model is able to build a coefficient with the four indicators respectively weighted. This data is fed into the model which calculates the coefficients for all countries which is passed to the view to be displayed onto our beautiful world map. Furthermore, users are able to select a country to get a more in depth breakdown of the different statistics for a given year. All of the data for each country for the given year is then passed to our View model.

View:

Our View architecture is comprised of a flask web framework hosted on Heroku. As part of our Flask web app, we have an initial page with an overview of how to use the web app, an initial setup page that takes in base values needed for the population of our world map, and then a web app page that displays our interactive world map, the given inputs, and a search bar. By using the search bar, users can look at the details of each indicator value for the specified country for the given year.

The Team

Our team is comprised of two students from Babson College and Olin College of Engineering, brought together through the Software Design class at Olin College.

  • Sara Ballantyne
  • Sara Ballantyne is a senior mechanical engineering student at Olin College of Engineering, with a passion for big ideas, design, fabrication, and all things that fly. Some of her passion projects include mountain bike design, working towards her private pilot’s license, creating competition electric RC aircraft and electric racecars, mentoring female students in STEM, and working towards greater cross-campus collaboration in the Boston area. She aims to spend her life contributing to large-scale, cutting-edge projects beyond our atmosphere.
  • Sampei Omichi
  • Sampei Omichi is a sophomore economics and entrepreneurship student at Babson College with interests in technology, venture capital, and startups. Some of his prior projects include raising money for orphans living with HIV/AIDS, helping create a vibrant Bitcoin community in Tokyo and San Francisco, and creating a boarding school consulting program in Vietnam. In his free time, you can find him playing chess, working to cultivate untapped intelligence in developing countries through his startup, and eating tacos.

This link will lead to our actual web app hosted on Heroku

Elements

Text

This is bold and this is strong. This is italic and this is emphasized. This is superscript text and this is subscript text. This is underlined and this is code: for (;;) { ... }. Finally, this is a link.


Heading Level 2

Heading Level 3

Heading Level 4

Heading Level 5
Heading Level 6

Blockquote

Fringilla nisl. Donec accumsan interdum nisi, quis tincidunt felis sagittis eget tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan faucibus. Vestibulum ante ipsum primis in faucibus lorem ipsum dolor sit amet nullam adipiscing eu felis.

Preformatted

i = 0;

while (!deck.isInOrder()) {
    print 'Iteration ' + i;
    deck.shuffle();
    i++;
}

print 'It took ' + i + ' iterations to sort the deck.';

Lists

Unordered

  • Dolor pulvinar etiam.
  • Sagittis adipiscing.
  • Felis enim feugiat.

Alternate

  • Dolor pulvinar etiam.
  • Sagittis adipiscing.
  • Felis enim feugiat.

Ordered

  1. Dolor pulvinar etiam.
  2. Etiam vel felis viverra.
  3. Felis enim feugiat.
  4. Dolor pulvinar etiam.
  5. Etiam vel felis lorem.
  6. Felis enim et feugiat.

Icons

Actions