Algorithms by Richard Dunks is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.Creative-Commons-License 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 [1]:
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
import statsmodels.formula.api as smf
In [2]:
df = pd.read_csv("/home/sean/git/algorithms/class5/data/heights_weights_genders.csv")
In [9]:
male_df=df[df['Gender']=='Male']
In [11]:
male_lm = smf.ols(formula="Weight~Height",data=male_df).fit()
In [12]:
male_lm.params
Out[12]:
In [13]:
male_intercept, male_slope = male_lm.params
In [14]:
female_df=df[df['Gender']=='Female']
In [15]:
female_lm = smf.ols(formula="Weight~Height",data=female_df).fit()
In [16]:
female_lm.params
Out[16]:
In [45]:
female_intercept, female_slope = female_lm.params
In [17]:
def male_wt_predict(str_ht):
ht=float(str_ht)
return '%s' % float('%.4g' % (male_slope*ht+male_intercept))
In [18]:
def female_wt_predict(str_ht):
ht=float(str_ht)
return '%s' % float('%.4g' % (female_slope*ht+female_intercept))
In [19]:
def determine_gender(input_str):
return input_str[0].lower()
In [49]:
gender_str=input('Enter your gender, (m)ale or (f)emale: ')
gender=determine_gender(gender_str)
while not (gender == 'm') and not (gender == 'f'):
gender_str=input('Please enter male or female. You can also just enter m or f: ')
gender=determine_gender(gender_str)
ht=input('Enter your height (inches):')
if gender=='m':
wt=male_wt_predict(ht)
else:
wt=female_wt_predict(ht)
print('Predicted weight of {} lbs from height of {} in.'.format(wt, ht))
In [ ]: