Analice, visualice y compare "superalimentos"
Los superalimentos son alimentos que son muy ricos en uno o más nutrientes. Este ejemplo define un conjunto de superalimentos, luego los contrasta con alimentos más "tradicionales" usando datos de alimentos de Wolfram Knowledgebase. Finalmente, construye una insignia apropiada para los alimentos dignos del epíteto "súper".
Primero, defina una lista de superalimentos que contenga los nutrientes por los cuales se les conoce.
superfoodsRawData = {{"greek yogurt", {"TotalProtein"}}, {"quinoa", \
{"TotalProtein"}}, {"blueberries", {"TotalFiber",
"VitaminC"}}, {"kale", {"TotalFiber", "Calcium",
"Iron"}}, {"chia", {"Magnesium", "Iron", "Calcium",
"Potassium"}}, {"oatmeal", {"TotalFiber"}}, {"broccoli", \
{"TotalFiber", "VitaminC",
"TotalFolate"}}, {"strawberries", {"VitaminC"}}, {"salmon", \
{"TotalProtein"}}, {"watermelon", {"TotalSugar", "VitaminA",
"VitaminC", "TotalCalories"}}, {"lima beans", {"TotalFiber"}},
{"edamame", {"TotalFiber"}}, {"spinach", {"Calcium",
"VitaminK"}}, {"pistachios", {"TotalProtein", "TotalFiber",
"Potassium"}}, {"eggs", {"TotalProtein"}}, {"almonds", \
{"TotalFiber", "Potassium", "Calcium", "VitaminE", "Magnesium",
"Iron"}}, {"pumpkin", {"BetaCarotene"}}, {"apples", \
{"TotalFiber", "TotalCalories"}}, {"lentils", {"TotalProtein",
"Iron"}}};
Convierta esto en Dataset para su cálculo fácil.
superfoodsDatset =
Dataset[<|"Food" -> #1, "Nutrients" -> #2|> & @@@ superfoodsRawData]
Utilice Interpreter para obtener entidades de Wolfram Language para los superalimentos.
superfoodsDatset1 =
superfoodsDatset[All,
KeySort[Prepend[#, <|
"FoodEntity" -> Interpreter["Food"][#Food]|>]] &];
Cree una lista de los nutrientes.
Union @@ Normal[superfoodsDatset1[[All, "Nutrients"]]]
Cree reglas para convertir los nutrientes datos en sus propiedades apropiadas.
superfoodsDatset2 =
superfoodsDatset1 /.
AssociationMap[
EntityProperty["Food", "Relative" <> # <> "Content"] &,
Union @@ Normal[superfoodsDatset1[[All, "Nutrients"]]]]
Encuentre los nutrientes más comunes en el Dataset.
mostCommonProperties =
superfoodsDatset2[Counts[Flatten[#]] &, "Nutrients"][TakeLargest[5]]
Encuentre los superalimentos conocidos por ser altos en fibra y compárelos con otros 9000 alimentos. Visualice como un histograma alisado, donde la curva gris muestra la función de densidad de probabilidad del contenido de fibra para la mayoría de los alimentos.
fiberDataset =
superfoodsDatset2[
Select[ContainsAny[#Nutrients, {EntityProperty["Food",
"RelativeTotalFiberContent"]}] &], KeyDrop["Nutrients"]];
Realice el mismo proceso para superalimentos ricos en proteína.
proteinDataset =
superfoodsDatset2[
Select[ContainsAny[#Nutrients, {EntityProperty["Food",
"RelativeTotalProteinContent"]}] &], KeyDrop["Nutrients"]];
Cree una insignia para los superalimentos, comenzando con un conjunto de imágenes de superalimentos.
GraphicsGrid[
Partition[
ims = EntityValue[
Cases[superfoodsDatset2[All, "FoodEntity"] // Normal,
Entity["FoodType", _], Infinity], "Image"], UpTo[5]]]
Como fondo, utilice una forma semejante a la de Superman.
Entity["Lamina", "SupermanInsigniaLamina"]["Image"] // ImageCrop
Utilice un proceso de imágenes simple para convertirla en un fondo.
background =
ColorNegate[
Binarize[Entity["Lamina", "SupermanInsigniaLamina"]["Image"], .99]]
Cree una "nube de palabras" de superalimentos.
wc = WordCloud[(RandomReal[{0.6, 1.2}] -> #) & /@ ims, background]
Combine la nube de palabras con el fondo.
ImageMultiply[{ColorReplace[background, Black -> LightGray], wc}]