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 [1]:
import pandas as pd
%matplotlib inline
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
In [40]:
df = pd.read_csv("data/heights_weights_genders.csv")
df.tail()
df.head()
Out[40]:
In [29]:
def female_lm(your_file):
df = pd.read_csv(your_file)
female = df[df['Gender'] == 'Female']
female_lm = smf.ols(formula="Weight~Height",data=female).fit()
return female_lm.params
In [30]:
female_lm("data/heights_weights_genders.csv").Intercept
Out[30]:
In [26]:
def male_lm(your_file):
df = pd.read_csv(your_file)
male = df[df['Gender'] == 'Male']
male_lm = smf.ols(formula="Weight~Height",data=male).fit()
return male_lm.params
In [27]:
male_lm("data/heights_weights_genders.csv").Intercept
Out[27]:
In [6]:
male_lm = smf.ols(formula="Weight~Height",data=male).fit()
male_lm.params
Out[6]:
In [28]:
female_lm = smf.ols(formula="Weight~Height",data=female).fit()
female_lm.params
Out[28]:
In [36]:
def weight_predictor(gender,your_height):
if gender == "Male":
m_weight = your_height * male_lm("data/heights_weights_genders.csv").Height + male_lm("data/heights_weights_genders.csv").Intercept
return m_weight
else:
f_weight = your_height * female_lm("data/heights_weights_genders.csv").Height + female_lm("data/heights_weights_genders.csv").Intercept
return f_weight
In [41]:
weight_predictor("Male",73.847017)
Out[41]:
In [42]:
weight_predictor("Female",73.847017)
Out[42]:
In [ ]: