NYC Data Science Academy| Blog
Bootcamps
Lifetime Job Support Available Financing Available
Bootcamps
Data Science with Machine Learning Flagship 🏆 Data Analytics Bootcamp Artificial Intelligence Bootcamp New Release 🎉
Free Lesson
Intro to Data Science New Release 🎉
Find Inspiration
Find Alumni with Similar Background
Job Outlook
Occupational Outlook Graduate Outcomes Must See 🔥
Alumni
Success Stories Testimonials Alumni Directory Alumni Exclusive Study Program
Courses
View Bundled Courses
Financing Available
Bootcamp Prep Popular 🔥 Data Science Mastery Data Science Launchpad with Python View AI Courses Generative AI for Everyone New 🎉 Generative AI for Finance New 🎉 Generative AI for Marketing New 🎉
Bundle Up
Learn More and Save More
Combination of data science courses.
View Data Science Courses
Beginner
Introductory Python
Intermediate
Data Science Python: Data Analysis and Visualization Popular 🔥 Data Science R: Data Analysis and Visualization
Advanced
Data Science Python: Machine Learning Popular 🔥 Data Science R: Machine Learning Designing and Implementing Production MLOps New 🎉 Natural Language Processing for Production (NLP) New 🎉
Find Inspiration
Get Course Recommendation Must Try 💎 An Ultimate Guide to Become a Data Scientist
For Companies
For Companies
Corporate Offerings Hiring Partners Candidate Portfolio Hire Our Graduates
Students Work
Students Work
All Posts Capstone Data Visualization Machine Learning Python Projects R Projects
Tutorials
About
About
About Us Accreditation Contact Us Join Us FAQ Webinars Subscription An Ultimate Guide to
Become a Data Scientist
    Login
NYC Data Science Acedemy
Bootcamps
Courses
Students Work
About
Bootcamps
Bootcamps
Data Science with Machine Learning Flagship
Data Analytics Bootcamp
Artificial Intelligence Bootcamp New Release 🎉
Free Lessons
Intro to Data Science New Release 🎉
Find Inspiration
Find Alumni with Similar Background
Job Outlook
Occupational Outlook
Graduate Outcomes Must See 🔥
Alumni
Success Stories
Testimonials
Alumni Directory
Alumni Exclusive Study Program
Courses
Bundles
financing available
View All Bundles
Bootcamp Prep
Data Science Mastery
Data Science Launchpad with Python NEW!
View AI Courses
Generative AI for Everyone
Generative AI for Finance
Generative AI for Marketing
View Data Science Courses
View All Professional Development Courses
Beginner
Introductory Python
Intermediate
Python: Data Analysis and Visualization
R: Data Analysis and Visualization
Advanced
Python: Machine Learning
R: Machine Learning
Designing and Implementing Production MLOps
Natural Language Processing for Production (NLP)
For Companies
Corporate Offerings
Hiring Partners
Candidate Portfolio
Hire Our Graduates
Students Work
All Posts
Capstone
Data Visualization
Machine Learning
Python Projects
R Projects
About
Accreditation
About Us
Contact Us
Join Us
FAQ
Webinars
Subscription
An Ultimate Guide to Become a Data Scientist
Tutorials
Data Analytics
  • Learn Pandas
  • Learn NumPy
  • Learn SciPy
  • Learn Matplotlib
Machine Learning
  • Boosting
  • Random Forest
  • Linear Regression
  • Decision Tree
  • PCA
Interview by Companies
  • JPMC
  • Google
  • Facebook
Artificial Intelligence
  • Learn Generative AI
  • Learn ChatGPT-3.5
  • Learn ChatGPT-4
  • Learn Google Bard
Coding
  • Learn Python
  • Learn SQL
  • Learn MySQL
  • Learn NoSQL
  • Learn PySpark
  • Learn PyTorch
Interview Questions
  • Python Hard
  • R Easy
  • R Hard
  • SQL Easy
  • SQL Hard
  • Python Easy
Data Science Blog > Machine Learning > Using Data to Predict Housing Prices in Ames, Iowa

Using Data to Predict Housing Prices in Ames, Iowa

Christopher Castano, Kat Kennovin and Angie Lin
Posted on Jun 7, 2019

The skills the authors demonstrated here can be learned through taking Data Science with Machine Learning bootcamp with NYC Data Science Academy.

Data Science Introduction:

Based on data, buying a house in today’s economy is an expensive proposition. As millennials flee the housing market in search of more affordable living options, realtors and corporations are scrambling to find ways to make properties on the market attractive to what buyers are left. Being able to predict what the housing prices in a particular market might look like in 10 or 20 years would be a particularly valuable practice in this endeavor.

Cue Notorious B.I.Ggplot (Angie Lin, Chris Castano, and Kat Kennovin)! Our group used the dataset listed on the Ames, Iowa, housing data Kaggle competition that was compiled by Dean De Cock to see if we could successfully predict the prices of houses for which we had no sale price.

Provided here is a link to the Github repository for a further detailed review into the code used:

https://github.com/angielin59/projectML

Using Data to Analyze Missing Values and Data Preparation:

Our team decided early on in our process that we wanted to use a tree model to predict the sales prices. However, before we could get started training our model, we needed to deal with the missing values in our dataset. The most common form of “missingness” was the inclusion of the value “NA” in the dataset. This usually means that a value was not recorded. However, the notes for the dataset revealed that this value often denoted instances where there was no relevant information, rather than a value that had been left out of the dataset.

For example, if there was a value of “NA” for the variable which recorded the basement area, it meant the house did not have a basement rather than the basement area had not been properly recorded. However, when reading a CSV file into Python, it is set by default to interpret the string “NA” as a true Null value which will interfere with our analysis and prediction models. To rectify this, we filled in a value of 0 where appropriate for numerical variables and values such as “NoBasement” or “NoGarage” where appropriate for categorical variables.

Using Data to Analyze Dummifacation:

We dummified certain ordinal variables to see if we could extract further information from the values within. For example, “LandSlope” was originally indicated with categories “gentle”, “moderate”, and “steep.” This could be changed to rank the severity of the slope with nominal values, like 0, 1, 2, where 2 is the steepest rank.

For the quantitative variables denoting the year the garage was built and the lot frontage, we imputed the missing values as the mean and median of that variable rather than filling in a 0. For the year the garage was built, we did not want to use a 0 for missing values, even though there was no garage at this house, as this might skew the data in this variable. We filled missing values in this variable with the mean of the total data for year garage was built.

Using Data to Analyze Missing Values:

It also did not make sense to fill in a 0 for missing values in lot frontage, which is a variable that gives the distance of the street in linear feet which is connected to the front of the house property. For this variable, we were confident a missing value was a true missing value, rather than the house was not touching a street. For these missing values we created 10 equally sized bins to split the data into by lot area. We then used the median of lot frontage in each bin to fill in the missing values that fell within each bin.

We dropped two variables: “PoolQC” and “MiscFeature”, which meant Pool Quality and Miscellaneous Feature respectively. There were so many missing values (each more than 1400 missing values out of 1460 total observations) that we thought if we imputed our own, it would be us telling the dataset about itself, and the not the dataset telling us about itself.

Initially, we actually dummified too many variables. As it turns out, dummifying categorical variables doesn’t help a tree model all that much unless you have more than 50 categorical variables. As we only had 43, we un-dummified the majority of our own which improved our models.

Feature Engineering:

We added several variables to the dataset to see if we could increase the accuracy of our model. Some of them were quantitative variables that made looking at the data easier. Some were categorical variables that we thought off the top of our heads might make a difference. For example, we thought it would be more likely that buyers would purchase homes in the summer since families do not want to move during a school year.

We created a column called “seasonality” to take this trend into account, which gave each observation a named season based on which quarter of the year it fell into combined with the year sold (for example “Fall-1992”). On the quantitative side, we did things like adding together all the square footage-related columns in the dataset in order to get the total square footage of the home. Among the new variables we added were “Total Square Footage”, “Seasonality”, “Remodeled”, “New House”, and “Total Bathrooms”.

Later when implementing these variables into our model, if we used some variables to compute a new one, we would run our model with both the old variables and the created variable, and then again with just the newly-created variable to see if it made a difference in terms of accuracy. Sometimes it did, and sometimes it didn’t. Depending on its effect, we would keep or release variables.

Finally, we added a variable consisting of an entirely random vector of numbers. When we analyzed feature importance of our tree models, we could then conclude any variables which performed worse than the random variable were not making a significant contribution to our model. These variables and the random integer variable were then dropped from the dataset.

Random Forest:

After running an initial tree model to see where it is we were starting, our team immediately jumped into using random forests in order to get some information on feature importance. As previously mentioned, one of the variables added was “randInit”, which assigned each observation a random number. Any variables that had less importance than randInit were selected to be dropped from the dataset, as the variables are essentially “worse than random.”

Using Data to Predict Housing Prices in Ames, Iowa

To further determine which variables should be kept, the data was split into a training and test set (80% - 20% divide respectively). We tested which subset of variables gave the lowest test MSE and used that model as the final model to tune and use for a boosted tree model.

When plotting the Mean Standard Error vs. the number of variables considered at each split of our tree, we found that our “elbow”, or where the error began leveling off, was between 3 and 15 variables. In this range, 15 variables considered at each split provided the lowest MSE. However, running a random forest with 15 variables per split only provided a marginal improvement with a RMSE of 0.14373 compared to an earlier RMSE of 0.14378.  

Boosted Trees:

We then used a boosted tree model to reduce our error even further. Here, our goal was to find which number of trees used in our model would give us the best MSE.

Using Data to Predict Housing Prices in Ames, Iowa

Ultimately, our team determined that while variance decreased as the number of trees increased, the error in our model increased as well. With our final dataset after feature engineering, we found that the optimal number of trees to use in our boosted model was 200. This boosted model would produced our best RMSE of .12514.

Future Work:

There are several areas in which our model could improve.

Given that the boosted model gave our team the best outcome, we would like to spend more time further tuning the hyperparameters other than number of trees used to see if they could give us an even better result. We could potentially tune interaction depth, minimum observations allowed per terminal node, and more.

In the future, we would also like to explore the possibility of stacking our models. Simply taking the average of the predictions from our final random forest model and final boosted trees model produced an RMSE marginally worse than our boosted trees RMSE. However, we think that combining the best predictions of both models would potentially lead to a better result.

Finally, spending more time on feature engineering is always welcome. Given more time, we’d enjoy creating more variables and data subsets to improve our models even further.

About Authors

Christopher Castano

After graduating with a B.A. in History and Journalism from Georgetown University, Chris went to work in the digital media industry as a producer for a video-driven news website called Circa. After having been handed loads of data...
View all posts by Christopher Castano >

Kat Kennovin

Data scientist with a quantitative science and analytical background. Strong communication skills driven by multi-team collaboration work experience, a team-player mindset, and the ability to simplify complex problems.
View all posts by Kat Kennovin >

Angie Lin

View all posts by Angie Lin >

Leave a Comment

Cancel reply

You must be logged in to post a comment.

No comments found.

View Posts by Categories

All Posts 2399 posts
AI 7 posts
AI Agent 2 posts
AI-based hotel recommendation 1 posts
AIForGood 1 posts
Alumni 60 posts
Animated Maps 1 posts
APIs 41 posts
Artificial Intelligence 2 posts
Artificial Intelligence 2 posts
AWS 13 posts
Banking 1 posts
Big Data 50 posts
Branch Analysis 1 posts
Capstone 206 posts
Career Education 7 posts
CLIP 1 posts
Community 72 posts
Congestion Zone 1 posts
Content Recommendation 1 posts
Cosine SImilarity 1 posts
Data Analysis 5 posts
Data Engineering 1 posts
Data Engineering 3 posts
Data Science 7 posts
Data Science News and Sharing 73 posts
Data Visualization 324 posts
Events 5 posts
Featured 37 posts
Function calling 1 posts
FutureTech 1 posts
Generative AI 5 posts
Hadoop 13 posts
Image Classification 1 posts
Innovation 2 posts
Kmeans Cluster 1 posts
LLM 6 posts
Machine Learning 364 posts
Marketing 1 posts
Meetup 144 posts
MLOPs 1 posts
Model Deployment 1 posts
Nagamas69 1 posts
NLP 1 posts
OpenAI 5 posts
OpenNYC Data 1 posts
pySpark 1 posts
Python 16 posts
Python 458 posts
Python data analysis 4 posts
Python Shiny 2 posts
R 404 posts
R Data Analysis 1 posts
R Shiny 560 posts
R Visualization 445 posts
RAG 1 posts
RoBERTa 1 posts
semantic rearch 2 posts
Spark 17 posts
SQL 1 posts
Streamlit 2 posts
Student Works 1687 posts
Tableau 12 posts
TensorFlow 3 posts
Traffic 1 posts
User Preference Modeling 1 posts
Vector database 2 posts
Web Scraping 483 posts
wukong138 1 posts

Our Recent Popular Posts

AI 4 AI: ChatGPT Unifies My Blog Posts
by Vinod Chugani
Dec 18, 2022
Meet Your Machine Learning Mentors: Kyle Gallatin
by Vivian Zhang
Nov 4, 2020
NICU Admissions and CCHD: Predicting Based on Data Analysis
by Paul Lee, Aron Berke, Bee Kim, Bettina Meier and Ira Villar
Jan 7, 2020

View Posts by Tags

#python #trainwithnycdsa 2019 2020 Revenue 3-points agriculture air quality airbnb airline alcohol Alex Baransky algorithm alumni Alumni Interview Alumni Reviews Alumni Spotlight alumni story Alumnus ames dataset ames housing dataset apartment rent API Application artist aws bank loans beautiful soup Best Bootcamp Best Data Science 2019 Best Data Science Bootcamp Best Data Science Bootcamp 2020 Best Ranked Big Data Book Launch Book-Signing bootcamp Bootcamp Alumni Bootcamp Prep boston safety Bundles cake recipe California Cancer Research capstone car price Career Career Day ChatGPT citibike classic cars classpass clustering Coding Course Demo Course Report covid 19 credit credit card crime frequency crops D3.js data data analysis Data Analyst data analytics data for tripadvisor reviews data science Data Science Academy Data Science Bootcamp Data science jobs Data Science Reviews Data Scientist Data Scientist Jobs data visualization database Deep Learning Demo Day Discount disney dplyr drug data e-commerce economy employee employee burnout employer networking environment feature engineering Finance Financial Data Science fitness studio Flask flight delay football gbm Get Hired ggplot2 googleVis H20 Hadoop hallmark holiday movie happiness healthcare frauds higgs boson Hiring hiring partner events Hiring Partners hotels housing housing data housing predictions housing price hy-vee Income industry Industry Experts Injuries Instructor Blog Instructor Interview insurance italki Job Job Placement Jobs Jon Krohn JP Morgan Chase Kaggle Kickstarter las vegas airport lasso regression Lead Data Scienctist Lead Data Scientist leaflet league linear regression Logistic Regression machine learning Maps market matplotlib Medical Research Meet the team meetup methal health miami beach movie music Napoli NBA netflix Networking neural network Neural networks New Courses NHL nlp NYC NYC Data Science nyc data science academy NYC Open Data nyc property NYCDSA NYCDSA Alumni Online Online Bootcamp Online Training Open Data painter pandas Part-time performance phoenix pollutants Portfolio Development precision measurement prediction Prework Programming public safety PwC python Python Data Analysis python machine learning python scrapy python web scraping python webscraping Python Workshop R R Data Analysis R language R Programming R Shiny r studio R Visualization R Workshop R-bloggers random forest Ranking recommendation recommendation system regression Remote remote data science bootcamp Scrapy scrapy visualization seaborn seafood type Selenium sentiment analysis sentiment classification Shiny Shiny Dashboard Spark Special Special Summer Sports statistics streaming Student Interview Student Showcase SVM Switchup Tableau teachers team team performance TensorFlow Testimonial tf-idf Top Data Science Bootcamp Top manufacturing companies Transfers tweets twitter videos visualization wallstreet wallstreetbets web scraping Weekend Course What to expect whiskey whiskeyadvocate wildfire word cloud word2vec XGBoost yelp youtube trending ZORI

NYC Data Science Academy

NYC Data Science Academy teaches data science, trains companies and their employees to better profit from data, excels at big data project consulting, and connects trained Data Scientists to our industry.

NYC Data Science Academy is licensed by New York State Education Department.

Get detailed curriculum information about our
amazing bootcamp!

Please enter a valid email address
Sign up completed. Thank you!

Offerings

  • HOME
  • DATA SCIENCE BOOTCAMP
  • ONLINE DATA SCIENCE BOOTCAMP
  • Professional Development Courses
  • CORPORATE OFFERINGS
  • HIRING PARTNERS
  • About

  • About Us
  • Alumni
  • Blog
  • FAQ
  • Contact Us
  • Refund Policy
  • Join Us
  • SOCIAL MEDIA

    © 2025 NYC Data Science Academy
    All rights reserved. | Site Map
    Privacy Policy | Terms of Service
    Bootcamp Application