“Use the data from heights_weights_genders.csv to create a simple predictor”… link


In [9]:
import pandas as pd
%matplotlib inline
import matplotlib.pyplot as plt
import statsmodels.formula.api as smf # for linear regression
from numpy import random

In [3]:
df = pd.read_csv("../data/heights_weights_genders.csv")

In [6]:
lm_male = smf.ols(formula="Weight~Height",data=df[df['Gender']=='Male']).fit()
male_intercept, male_slope = lm_male.params

lm_female = smf.ols(formula="Weight~Height",data=df[df['Gender']=='Female']).fit()
female_intercept, female_slope = lm_female.params

In [ ]:


In [8]:
def guess_weight(height, gender):
    if gender == 'female':
        return female_slope*height + female_intercept
    elif gender == 'male':
        return male_slope*height + male_intercept
    else:
        return 'This data is very bad for intersexed people, sorry.'

In [18]:
your_height = input("Please type your height: ")
gender_input = input("Are you a male [m] or a female [f] ? ")
if gender_input[0] == 'f':
    your_gender = 'female'
elif gender_input[0] == 'm':
    your_gender = 'male'
else:
    your_gender = random.choice(['male', 'female'])
    print('Could not understand your genre. Randomly set it to {}.'.format(your_gender))
print("As a {}, your weight should be around {}.".format(your_gender, guess_weight(int(your_height), your_gender)))


Please type your height: 100
Are you a male [m] or a female [f] ? f
As a female, your weight should be around 353.3913957387751.