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 6 : utiliser la variable ingredients_text ?#
Que suggérez vous embedding ?