
Forest Ho-Chen, SEAS ’26, Yardley, PA
This past summer, I worked as a student researcher at the University of Massachusetts at Lowell. The task was to use machine learning and Support Vector Regression models to fill in the holes for electron content data in the Earth’s ionosphere given atmospheric data.

As the first part of the project, which started during the school year, I started to learn a completely new language, Python. As someone who had most experience in Scratch, OCaml, and Java, learning Python was a very interesting experience. Many of my friends in middle school had messed around with Python to create music programs and drawing simulations, but I wasn’t really that experienced with languages like this. Luckily, I found that Python’s syntax was actually kind of similar to OCaml, the programming language I learned in CIS 1200. Since I was also working on my own OCaml project at the time, I made some of the basic functions from the OCaml project in Python, including CIS 1200’s signature functions “transform” and “fold” along with their functional programming uses. Some things like OCaml’s tail recursion did not translate exactly to Python, so I learned Python’s version of iteration, which was also very similar to OCaml’s version. Although there are some disadvantages with Python’s recursion, I learned how to translate it to a while loop, which is about as good.

After learning Python, the next step was learning some machine learning. Previously, any attempts to do machine learning did not work out well for me, often being unable to do simple classification. However, this time, since we were using Python, we were able to use the built in libraries to do the machine learning for us. So I made a program to do file input and output, then had it call the libraries to run the machine learning. I tested this on the AI project from high school, and it worked out very well. I also used some prescribed data sets and got a Support Vector Machine working with over 97% accuracy.

At University of Massachusetts, Lowell, I met Professor Cindy Chen in person, where we got the official data sources from Dr. Ercha Aa from MIT. We then experimented with using the machine learning models with the new data, but found that there were issues reading the data, both due to formatting and due to the size. As a result, I tried cutting the data to use a smaller sample size. Initially, this seemed to be ok, but the sample only contained data from one region of the globe.

As a result, I was working on a better cutter to get a more representative data set. Meanwhile, I started testing different kernels and inputs to the Support Vector Regression. When I finally got the cut data working, which took about 30% of the data, I ran the tests using the new cut data and noted down the error margins and cross validation scores. I then used some Python loops to make a full prediction for the total electron content at different points around the globe, as shown below.
I also took a trip to MIT’s Haystack Observatory to learn about how the ionosphere conditions and total electron content is measured. I learned about how a combination of ground and space satellites work together to report the total electron content, though it can lead to some missing data in some regions of the globe.

Although the research process isn’t complete, the internship is. Reflecting back on the internship, I learned my fifth coding language, learned some things about machine learning, and learned some important applications of machine learning and computer science. Not only did I improve my programming skills, but I also saw places where computer science can be used in the real world. Thank you to Career Services for giving me the opportunity to spend my summer in Massachusetts learning about support vector regression.
This is part of a series of posts by recipients of the 2023 Career Services Summer Funding Grant. We’ve asked funding recipients to reflect on their summer experiences and talk about the industries in which they spent their summer. You can read the entire series here