Assignment 2

  • Create two models for the relationship between height and weight based on gender
  • Modify the code in Assignment 1 to ask for a person's gender as well as their height to produce an estimate of a person's weight using the models you created
  • Find the weights and use those in your function (i.e. don't generate a model each time)

In [6]:
import pandas as pd
import matplotlib.pyplot as plt # package for doing plotting (necessary for adding the line)
import statsmodels.formula.api as smf # package we'll be using for linear regression
%matplotlib inline

In [7]:
# Load the data.
df = pd.read_csv('../data/heights_weights_genders.csv')
df.head(3)


Out[7]:
Gender Height Weight
0 Male 73.847017 241.893563
1 Male 68.781904 162.310473
2 Male 74.110105 212.740856

In [8]:
# Create dataframes for men and women
df_male = df[df['Gender'] == 'Male']
df_female = df[df['Gender'] == 'Female']

In [17]:
# Male or female?
def male_or_female(gender):
    if gender == '1':
        return df_male
    elif gender == '2':
        return df_female
    else:
        print("Please enter the next time \'male\ or \'female\'.")
        return NaN

In [30]:
# Calculate the weight.
def weight_predictor(user_height, gender):
    user_height = float(user_height)
    lm = smf.ols(formula="Weight~Height",data=male_or_female(gender)).fit()
    intercept, height = lm.params
    return int(height*user_height+intercept)

In [31]:
user_height = input("Please enter your height: ")
gender = input("Please enter [1] for \'male\' or [2] for \'female\': ")
print("Our estimation for your weight:", weight_predictor(user_height,gender), "pounds.")


Please enter your height: 70
Please enter [1] for 'male' or [2] for 'female': 2
Our estimation for your weight: 173 pounds.

In [ ]: