2A.ml - Classification binaire avec features textuelles#

Links: notebook, html, python, slides, GitHub

Ce notebook propose de voir comment incorporer des features pour voir l’amélioration des performances sur une classification binaire.

from jyquickhelper import add_notebook_menu
add_notebook_menu()

Récupérer les données#

Les données sont téléchargeables Compétition 2017 - additifs alimentaires ou encore avec le code :

from pyensae.datasource import download_data
data_train = download_data("off_train_all.zip",
                           url="https://raw.githubusercontent.com/sdpython/data/master/OpenFoodFacts/")
data_test = download_data("off_test_all.zip",
                           url="https://raw.githubusercontent.com/sdpython/data/master/OpenFoodFacts/")
import pandas
df = pandas.read_csv("off_test_all.txt", sep="\t", encoding="utf8", low_memory=False)
df.head()
code url creator created_t created_datetime last_modified_t last_modified_datetime product_name generic_name quantity ... collagen-meat-protein-ratio_100g cocoa_100g chlorophyl_100g carbon-footprint_100g nutrition-score-fr_100g nutrition-score-uk_100g glycemic-index_100g water-hardness_100g hasE s100
0 1.008255e+10 http://world-fr.openfoodfacts.org/produit/0010... usda-ndb-import 1489064583 2017-03-09T13:03:03Z 1489064583 2017-03-09T13:03:03Z Golden Island, Pork Jerky, Grilled Barbecue NaN NaN ... NaN NaN NaN NaN 23.0 23.0 NaN NaN False 17.0
1 1.182204e+10 http://world-fr.openfoodfacts.org/produit/0011... usda-ndb-import 1489070197 2017-03-09T14:36:37Z 1489070197 2017-03-09T14:36:37Z Big Fizz, Soda, Orange NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN True 7.0
2 2.548401e+10 http://world-fr.openfoodfacts.org/produit/0025... usda-ndb-import 1489052024 2017-03-09T09:33:44Z 1489052024 2017-03-09T09:33:44Z Tofubaked Marinated Baked Tofu, Sesame Ginger NaN NaN ... NaN NaN NaN NaN -2.0 -2.0 NaN NaN True 17.0
3 1.229250e+10 http://world-fr.openfoodfacts.org/produit/0012... usda-ndb-import 1489133493 2017-03-10T08:11:33Z 1489133493 2017-03-10T08:11:33Z Milk Chocolate Eggs NaN NaN ... NaN NaN NaN NaN 23.0 23.0 NaN NaN True 17.0
4 1.115054e+10 http://world-fr.openfoodfacts.org/produit/0011... usda-ndb-import 1489052892 2017-03-09T09:48:12Z 1489052892 2017-03-09T09:48:12Z Fresh Polish Sausage NaN NaN ... NaN NaN NaN NaN 22.0 22.0 NaN NaN True 17.0

5 rows × 165 columns

df.head(n=2).T[:50]
0 1
code 1.00826e+10 1.1822e+10
url http://world-fr.openfoodfacts.org/produit/0010... http://world-fr.openfoodfacts.org/produit/0011...
creator usda-ndb-import usda-ndb-import
created_t 1489064583 1489070197
created_datetime 2017-03-09T13:03:03Z 2017-03-09T14:36:37Z
last_modified_t 1489064583 1489070197
last_modified_datetime 2017-03-09T13:03:03Z 2017-03-09T14:36:37Z
product_name Golden Island, Pork Jerky, Grilled Barbecue Big Fizz, Soda, Orange
generic_name NaN NaN
quantity NaN NaN
packaging NaN NaN
packaging_tags NaN NaN
brands Golden Island Jerky Inc. Rite Aid Corporation
brands_tags golden-island-jerky-inc rite-aid-corporation
categories NaN NaN
categories_tags NaN NaN
categories_fr NaN NaN
origins NaN NaN
origins_tags NaN NaN
manufacturing_places NaN NaN
manufacturing_places_tags NaN NaN
labels NaN NaN
labels_tags NaN NaN
labels_fr NaN NaN
emb_codes NaN NaN
emb_codes_tags NaN NaN
first_packaging_code_geo NaN NaN
cities NaN NaN
cities_tags NaN NaN
purchase_places NaN NaN
stores NaN NaN
countries US US
countries_tags en:united-states en:united-states
countries_fr États-Unis États-Unis
ingredients_text Pork, sugar, water, brown sugar, gluten free s... Carbonated water, high fructose corn syrup, ci...
allergens NaN NaN
allergens_fr NaN NaN
traces NaN NaN
traces_tags NaN NaN
traces_fr NaN NaN
serving_size 28 g (1 oz) 240 ml (8 fl oz)
no_nutriments NaN NaN
additives_n 0 6
additives en:2-or-less;en:brown-sugar;en:contain-rice;en... en:and-brominated-vegetable-oil;en:carbonated-...
additives_tags NaN en:e110,en:e211,en:e330,en:e414,en:e443,en:e445
additives_fr NaN E110 - Jaune orangé S,E211 - Benzoate de sodiu...
ingredients_from_palm_oil_n 0 0
ingredients_from_palm_oil NaN NaN
ingredients_from_palm_oil_tags NaN NaN
ingredients_that_may_be_from_palm_oil_n 0 0
df.head(n=2).T[50:100]
0 1
ingredients_that_may_be_from_palm_oil NaN NaN
ingredients_that_may_be_from_palm_oil_tags NaN NaN
nutrition_grade_uk NaN NaN
nutrition_grade_fr e NaN
pnns_groups_1 NaN NaN
pnns_groups_2 NaN NaN
states en:to-be-completed, en:nutrition-facts-complet... en:to-be-completed, en:nutrition-facts-complet...
states_tags en:to-be-completed,en:nutrition-facts-complete... en:to-be-completed,en:nutrition-facts-complete...
states_fr A compléter,Informations nutritionnelles compl... A compléter,Informations nutritionnelles compl...
main_category NaN NaN
main_category_fr NaN NaN
image_url NaN NaN
image_small_url NaN NaN
energy_100g 1494 226
energy-from-fat_100g NaN NaN
fat_100g 7.14 0
saturated-fat_100g 1.79 NaN
butyric-acid_100g NaN NaN
caproic-acid_100g NaN NaN
caprylic-acid_100g NaN NaN
capric-acid_100g NaN NaN
lauric-acid_100g NaN NaN
myristic-acid_100g NaN NaN
palmitic-acid_100g NaN NaN
stearic-acid_100g NaN NaN
arachidic-acid_100g NaN NaN
behenic-acid_100g NaN NaN
lignoceric-acid_100g NaN NaN
cerotic-acid_100g NaN NaN
montanic-acid_100g NaN NaN
melissic-acid_100g NaN NaN
monounsaturated-fat_100g NaN NaN
polyunsaturated-fat_100g NaN NaN
omega-3-fat_100g NaN NaN
alpha-linolenic-acid_100g NaN NaN
eicosapentaenoic-acid_100g NaN NaN
docosahexaenoic-acid_100g NaN NaN
omega-6-fat_100g NaN NaN
linoleic-acid_100g NaN NaN
arachidonic-acid_100g NaN NaN
gamma-linolenic-acid_100g NaN NaN
dihomo-gamma-linolenic-acid_100g NaN NaN
omega-9-fat_100g NaN NaN
oleic-acid_100g NaN NaN
elaidic-acid_100g NaN NaN
gondoic-acid_100g NaN NaN
mead-acid_100g NaN NaN
erucic-acid_100g NaN NaN
nervonic-acid_100g NaN NaN
trans-fat_100g 0 NaN
df.head(n=2).T[100:150]
0 1
cholesterol_100g 0.089 NaN
carbohydrates_100g 39.29 13.75
sugars_100g 39.29 13.75
sucrose_100g NaN NaN
glucose_100g NaN NaN
fructose_100g NaN NaN
lactose_100g NaN NaN
maltose_100g NaN NaN
maltodextrins_100g NaN NaN
starch_100g NaN NaN
polyols_100g NaN NaN
fiber_100g 0 NaN
proteins_100g 28.57 0
casein_100g NaN NaN
serum-proteins_100g NaN NaN
nucleotides_100g NaN NaN
salt_100g 2.81178 0.04826
sodium_100g 1.107 0.019
alcohol_100g NaN NaN
vitamin-a_100g 0 NaN
beta-carotene_100g NaN NaN
vitamin-d_100g NaN NaN
vitamin-e_100g NaN NaN
vitamin-k_100g NaN NaN
vitamin-c_100g 0 NaN
vitamin-b1_100g NaN NaN
vitamin-b2_100g NaN NaN
vitamin-pp_100g NaN NaN
vitamin-b6_100g NaN NaN
vitamin-b9_100g NaN NaN
folates_100g NaN NaN
vitamin-b12_100g NaN NaN
biotin_100g NaN NaN
pantothenic-acid_100g NaN NaN
silica_100g NaN NaN
bicarbonate_100g NaN NaN
potassium_100g NaN NaN
chloride_100g NaN NaN
calcium_100g 0 NaN
phosphorus_100g NaN NaN
iron_100g 0.00257 NaN
magnesium_100g NaN NaN
zinc_100g NaN NaN
copper_100g NaN NaN
manganese_100g NaN NaN
fluoride_100g NaN NaN
selenium_100g NaN NaN
chromium_100g NaN NaN
molybdenum_100g NaN NaN
iodine_100g NaN NaN
df.head(n=2).T[150:]
0 1
caffeine_100g NaN NaN
taurine_100g NaN NaN
ph_100g NaN NaN
fruits-vegetables-nuts_100g NaN NaN
fruits-vegetables-nuts-estimate_100g NaN NaN
collagen-meat-protein-ratio_100g NaN NaN
cocoa_100g NaN NaN
chlorophyl_100g NaN NaN
carbon-footprint_100g NaN NaN
nutrition-score-fr_100g 23 NaN
nutrition-score-uk_100g 23 NaN
glycemic-index_100g NaN NaN
water-hardness_100g NaN NaN
hasE False True
s100 17 7

Exercice 1 : extraire un échantillon aléatoire#

Les données sont volumineuses. Prenons un échantillon pour aller plus vite.

Exercice 2 : caler un premier modèle de classification binaire#

Avec les variables numériques uniquement. La cible est la variable hasE.

Exercice 3 : tracer une courbe ROC#

Exercice 4 : utiliser la variable qui contient le pays#

Est-ce que le modèle est plus performant ?

Exercice 5 : utiliser la variable additives_tags ?#

Les résultats ne vous paraissent-ils pas étranges ?

Exercice 6 : utiliser la variable ingredients_text ?#

Que suggérez vous embedding ?

Exercice 7 : utiliser la variable product_name ?#

Exercice 8 : utiliser GridSearch pour optimiser un hyper-paramètre du modèle ?#

Exercice 9 : faites tourner une cross validation ?#