In [20]:
# tmp
!git commit -am 'notebook structure'
!git push


[master 6f52d7a] notebook structure
 2 files changed, 264 insertions(+), 6 deletions(-)
 create mode 100644 task.md
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 1.78 KiB | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
To git@github.com:Djabbz/epidemium_ramp01_startingkit.git
   49fc817..6f52d7a  master -> master

In [1]:
from IPython.display import Markdown

Epidemium RAMP01: Mortality Prediction

Djalel Benbouzid, Edouard Debonneuil

Introduction


In [2]:
Markdown(open('intro.md').read())


Out[2]:

Intro goes here.

Tools and setup

Data description


In [3]:
Markdown(open('desc.md').read())


Out[3]:

The prediction task


In [4]:
!touch task.md

In [5]:
Markdown(open('task.md').read())


Out[5]:

Exploratory data analysis

!pip install -U seaborn # if you don't have it, or pip3 for python3

In [6]:
%matplotlib inline

In [7]:
import numpy  as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()

In [8]:
pd.set_option('display.max_columns', None)

In [ ]:

Prediction model

Some words on scikit-learn API (?)

Preprocessing the data


In [15]:
class FeatureExtractor(object):
    def __init__(self):
        pass

    def fit(self, X_df, y_array):
        pass

    def transform(self, X):
        return X

A first regression model


In [17]:
from sklearn.base import BaseEstimator

In [2]:
from sklearn.cross_validation import train_test_split

In [3]:
from sklearn.linear_model import LinearRegression
from sklearn.cross_validation import cross_val_score, ShuffleSplit

In [18]:
class Regressor(BaseEstimator):
    def __init__(self):
        self.clf = RandomForestRegressor(n_estimators=10, max_depth=10, max_features=10)

    def fit(self, X, y):
        self.clf.fit(X, y)

    def predict(self, X):
        return self.clf.predict(X)

Calibration

How to submit?


In [ ]:

Sandbox


In [32]:
df = pd.read_excel('XYworld_mini.xlsx', skiprows=1)

In [33]:
df.head()


Out[33]:
Unnamed: 0 Unnamed: 1 Unnamed: 2 Unnamed: 3 All cancers (C00-97,B21) All cancers but lung (C00-97/C33-34) Bladder (C67) Brain, central nervous system (C70-72) Breast (C50) Cervix uteri (C53) Colon (C18) Colon, rectum and anus (C18-21) Corpus uteri (C54) Gallbladder (C23-24) Hodgkin lymphoma (C81) Intestine (C17-21) Kidney (C64) Larynx (C32) Leukaemia (C91-95) Lip, oral cavity and pharynx (C00-14) Lip, oral cavity, pharynx, larynx and oesophagus (C00-15,C32) Liver (C22) Lung (C33-34) Melanoma of skin (C43) Mesothelioma (C45) Multiple myeloma (C88+C90) Nasopharynx (C11) Non-Hodgkin lymphoma (C82-85,C96) Oesophagus (C15) Ovary (C56) Pancreas (C25) Prostate (C61) Rectum and anus (C19-21) Stomach (C16) Testis (C62) Thyroid (C73) country1 country2 age asbestos_emission asbestos_production arsenic_emission arsenic_concentration beryllium_emission cadmium_emission cadmium_intake cadmium_concentration_cortex cadmium_concentration_soil cadmium_export chromium_emission chromium_concentration crystalline_silica_concentration hexavalent_chromium_compounds nickel_emission nickel_concentration thorium_deposit thorium_concentration metal_water_concentration copper_emission mercury_emission lead_emission pm10_emission pm2.5_emission so2_emission nmvok_emission tsp_emission nox_emission benzo(a)pyren_emission benzo(b)fluoranthen_emission benzo(k)fluoranthen_emission Indeno(1|2|3-cd)pyren_emission pah_emission pcb_emission dioxin_emission hcb_emission aspartame_consumption no_sugar fluoride_consumption vitamine_D_summer vitamine_D_winter black_tea_consumption dietary_characteristics_fat dietary_characteristics_cholesterol dietary_characteristics_proteins dietary_characteristics_vitamine_A dietary_characteristics_vitamine_D dietary_characteristics_vitamine_E dietary_characteristics_vitamine_B1 dietary_characteristics_vitamine_B2 dietary_characteristics_vitamine_B6 dietary_characteristics_vitamine_B12 dietary_characteristics_vitamine_C dietary_characteristics_iodine dietary_characteristics_calcis dietary_characteristics_fruit_2_3 dietary_characteristics_fruit_3_4 dietary_characteristics_fruit_4_5 dietary_characteristics_fruit_5+ dietary_characteristics_fruit_0 dietary_characteristics_fruit_0_1 dietary_characteristics_fruit_1_2 dietary_characteristics_fruit_2_3.1 dietary_characteristics_fruit_3_4.1 dietary_characteristics_fruit_4_5.1 dietary_characteristics_fruit_5+.1 dietary_characteristics_fruit_0_4 dietary_characteristics_fruit dietary_characteristics_fats dietary_characteristics_cereals_bread dietary_characteristics_vegetables dietary_characteristics_potatoes dietary_characteristics_meat dietary_characteristics_fish dietary_characteristics_eggs dietary_characteristics_cheese_milk dietary_characteristics_alcohol dietary_characteristics_soup dietary_characteristics_confectionery dietary_characteristics_snacks dietary_characteristics_coffee_tea cholesterol_prevalence transplants_donation transplants_prevalence liver_transplant_prevalence HIV HPV_vacc_3 HPV_vacc_1+ HPV_vacc_2+ HPV_vacc_3+ HPV HCV HBV HAV leukemia hhv8 diphteria_vacc tetanus_vacc pertussis_vacc hib_vacc polio_vacc hepb_vacc measles_vacc_1 measles_vacc_2 mumps_vacc_1 mumps_vacc_2 rubella_vacc_1 rubella_vacc_2 varicella_vacc_1 varicella_vacc_2 menC_vacc pneumo_vacc radon_level radon_high uv_radiation x_rays gamma_rays smoker_prevlence past_smoker_prevalence no_smoker_prevalence smoking_20+cigarets smoking_10_19cigarets smoking_10-cigarets past_smoker_prevalence.1 occasion_smoker_prevalence ever_smoker_prevalence smoker_prevalence alcool_prevalence_beer alcool_prevalence_wine alcool_consumption alcool_consumption_beer alcool_consumption_wine alcool_consumption_spirit alcool_death drugs_opiates drugs_crack drugs_inject overweight bmi_score bmi_18.5- bmi_18.5_25 bmi_25_30 bmi_30+ aluminium_production aluminium_water_concentration benzene_emission benzene_air_concentration butadiene_emission butadiene_air_concentration ethylene_emission formaldehyde_emission formaldehyde_water_concentration sulfuric_acid_emission vinyl_chlorid_emission vinyl_chlorid_water_concentration iso_9001 iso_14001 iso/iec_27001 iso_50001 iso_13485 iso_22000 mobile_subscription pork_consumption chicken_consumption beef_consumption adolescent_birth income race_white race_mixed race_asian race_black race_other height first_birth never_birth coke_ovens_co2_emission sintering_co2_emission blast_furnaces_co2_emission oxygen_furnaces_co2_emission flared_gases_co2_emission combustion_plant_co2_emission fuels_sold_co2_emission poverty_prevalence poverty_prevalence_1person_household poverty_prevalence_4person_household pap_test mammogram sigmoidoscopy no_exercise pneumonia_vacc flu_vacc blood_pressure diabetes uninsured first_birth_age shale_oil fastfood_spending menarche_age first_menstruation_age coal_to_electricity gas_to_electricity nuclear_to_electricity renewable_to_electricity other_to_electricity
0 NaN Albania 2013 Male 0.00 0.00 0.00 0.0 0 0 0.0 0.0 0 0.0 0.0 0.00 0.00 0.00 0.0 0.00 0.00 0.00 0.0 0.00 0.0 0.0 0.00 0.0 0.0 0 0.00 0.00 0 0.0 0.00 0.0 Albania Albania2013 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 9961 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1 NaN Argentina 2013 Male 0.00 0.00 0.00 0.0 0 0 0.0 0.0 0 0.0 0.0 0.00 0.00 0.00 0.0 0.00 0.00 0.00 0.0 0.00 0.0 0.0 0.00 0.0 0.0 0 0.00 0.00 0 0.0 0.00 0.0 Argentina Argentina2013 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 17629 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2 NaN Armenia 2013 Male 0.00 0.00 0.00 0.0 0 0 0.0 0.0 0 0.0 0.0 0.00 0.00 0.00 0.0 0.00 0.00 0.00 0.0 0.00 0.0 0.0 0.00 0.0 0.0 0 0.00 0.00 0 0.0 0.00 0.0 Armenia Armenia2013 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 7527 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
3 NaN Australia 2013 Male 0.00 0.00 0.00 0.0 0 0 0.0 0.0 0 0.0 0.0 0.00 0.00 0.00 0.0 0.00 0.00 0.00 0.0 0.00 0.0 0.0 0.00 0.0 0.0 0 0.00 0.00 0 0.0 0.00 0.0 Australia Australia2013 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 42840 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
4 NaN Austria 2013 Male 12200.65 9281.95 314.25 421.3 0 0 749.2 1230.6 0 143.7 22.2 1262.75 241.45 162.85 466.9 447.65 976.45 719.55 2918.6 258.15 89.6 207.9 23.75 333.6 366.1 0 830.95 1032.95 481 548.4 27.15 34.5 Austria Austria2013 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 44059 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

In [34]:
df.shape


Out[34]:
(4420, 243)

In [48]:
n


Out[48]:
array([ nan,   0.])

In [56]:
((n == 0.))# or (np.isnan(n)))


Out[56]:
array([False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False], dtype=bool)

In [52]:
for i in range(df.shape[1]):
    n = df.iloc[:,i].unique()
    print(df.columns[i][:5], ' |', n.size, '\t', end='')
    if True or n.size < 10:
        if ((n == 0.) or (np.isnan(n))).all():
            continue
        for j in n[:7]:
            print(' |', j, end='')
    print('')


Unnam  | 1 	Unnam  | 85 	
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-52-6eb3adfae28b> in <module>()
      3     print(df.columns[i][:5], ' |', n.size, '\t', end='')
      4     if True or n.size < 10:
----> 5         if ((n == 0.) or (np.isnan(n))).all():
      6             continue
      7         for j in n[:7]:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

In [44]:
df.country2


Out[44]:
0              Albania2013
1            Argentina2013
2              Armenia2013
3            Australia2013
4              Austria2013
5           Azerbaijan2013
6             Barbados2013
7              Belarus2013
8              Belgium2013
9               Belize2013
10              Brazil2013
11            Bulgaria2013
12              Canada2013
13               Chile2013
14                   #2013
15                   #2013
16                   #2013
17                   #2013
18            Colombia2013
19          Costa Rica2013
20             Croatia2013
21                Cuba2013
22          Czech rep.2013
23             Denmark2013
24      Dominican rep.2013
25             Ecuador2013
26               Egypt2013
27         El Salvador2013
28             Estonia2013
29             Finland2013
               ...        
4390                   NaN
4391                   NaN
4392                   NaN
4393                   NaN
4394                   NaN
4395                   NaN
4396                   NaN
4397                   NaN
4398                   NaN
4399                   NaN
4400                   NaN
4401                   NaN
4402                   NaN
4403                   NaN
4404                   NaN
4405                   NaN
4406                   NaN
4407                   NaN
4408                   NaN
4409                   NaN
4410                   NaN
4411                   NaN
4412                   NaN
4413                   NaN
4414                   NaN
4415                   NaN
4416                   NaN
4417                   NaN
4418                   NaN
4419                   NaN
Name: country2, dtype: object

In [43]:
df.country2.str.extract('([A-Za-z_-]+)(\d+)')


Out[43]:
0 1
0 Albania 2013
1 Argentina 2013
2 Armenia 2013
3 Australia 2013
4 Austria 2013
5 Azerbaijan 2013
6 Barbados 2013
7 Belarus 2013
8 Belgium 2013
9 Belize 2013
10 Brazil 2013
11 Bulgaria 2013
12 Canada 2013
13 Chile 2013
14 NaN NaN
15 NaN NaN
16 NaN NaN
17 NaN NaN
18 Colombia 2013
19 Rica 2013
20 Croatia 2013
21 Cuba 2013
22 NaN NaN
23 Denmark 2013
24 NaN NaN
25 Ecuador 2013
26 Egypt 2013
27 Salvador 2013
28 Estonia 2013
29 Finland 2013
... ... ...
4390 NaN NaN
4391 NaN NaN
4392 NaN NaN
4393 NaN NaN
4394 NaN NaN
4395 NaN NaN
4396 NaN NaN
4397 NaN NaN
4398 NaN NaN
4399 NaN NaN
4400 NaN NaN
4401 NaN NaN
4402 NaN NaN
4403 NaN NaN
4404 NaN NaN
4405 NaN NaN
4406 NaN NaN
4407 NaN NaN
4408 NaN NaN
4409 NaN NaN
4410 NaN NaN
4411 NaN NaN
4412 NaN NaN
4413 NaN NaN
4414 NaN NaN
4415 NaN NaN
4416 NaN NaN
4417 NaN NaN
4418 NaN NaN
4419 NaN NaN

4420 rows × 2 columns


In [49]:
df.columns


Out[49]:
Index(['Unnamed: 0', 'Unnamed: 1', 'Unnamed: 2', 'Unnamed: 3',
       'All cancers (C00-97,B21)', 'All cancers but lung (C00-97/C33-34)',
       'Bladder (C67)', 'Brain, central nervous system (C70-72)',
       'Breast (C50)', 'Cervix uteri (C53)',
       ...
       'first_birth_age', 'shale_oil', 'fastfood_spending', 'menarche_age',
       'first_menstruation_age', 'coal_to_electricity', 'gas_to_electricity',
       'nuclear_to_electricity', 'renewable_to_electricity',
       'other_to_electricity'],
      dtype='object', length=243)

In [ ]: