2024電工杯B題保姆級分析完整思路+代碼+數據教學
B題題目:大學生平衡膳食食譜的優化設計及評價?
接下來我們將按照題目總體分析-背景分析-各小問分析的形式來
總體分析:
題目要求對兩份一日膳食食譜進行營養分析和調整,然后設計優化的平衡膳食食譜,并進行評價。具體步驟如下:
問題?1:膳食食譜的營養分析評價及調整
1.1 膳食營養評價
首先我們需要對附件1和附件2中的男、女大學生的膳食進行全面的營養評價。根據附件4的標準,評價內容包括能量、主要營養素含量(蛋白質、脂肪、碳水化合物等)、非產能營養素(鈣、鐵、鋅、維生素等)及氨基酸評分等。
1.2 調整改進
基于附件3提供的食堂主要食物信息,對男、女大學生的膳食進行適當調整,使其更符合營養需求,然后再進行營養評價。
問題?2:基于附件3的日平衡膳食食譜的優化設計
2.1 目標一:蛋白質氨基酸評分最大化
建立優化模型,設計男、女大學生的日食譜,并進行膳食營養評價。
2.2 目標二:用餐費用最經濟
建立優化模型,設計男、女大學生的日食譜,并進行膳食營養評價。
2.3 目標三:兼顧蛋白質氨基酸評分及經濟性
建立綜合優化模型,設計男、女大學生的日食譜,并進行膳食營養評價。
2.4 比較分析
對上述三種優化方案進行比較分析,找出最優方案。
問題?3:基于附件3的周平衡膳食食譜的優化設計
在問題2的基礎上,分別以蛋白質氨基酸評分最大、用餐費用最經濟、兼顧蛋白質氨基酸評分及經濟性為目標,設計男、女大學生的周食譜,并進行評價及比較分析。
問題?4:健康飲食、平衡膳食的倡議書
基于以上分析和設計,針對大學生飲食結構及習慣,寫一份健康飲食、平衡膳食的倡議書。
背景分析:
大學時代是學知識、長身體的重要階段,這一時期的年輕人需要充足的能量和營養素來支持身體發育、腦力勞動和體育鍛煉。然而,目前大學生飲食結構不合理、不良飲食習慣突出,如不吃早餐、經常食用外賣快餐等,導致營養不良或過度肥胖。解決這些問題對于大學生的生長發育和健康至關重要。
可以看到研究的對象是一名男大學生和一名女大學生,他們分別記錄了一日三餐的食物攝入情況。并且還有某高校學生食堂提供的一日三餐主要食物信息。
數據文件包括3個數據集,在拆解后,我們的目標主要有以下幾個:
-
營養分析和評價:
-
對男、女大學生的膳食進行全面的營養分析和評價。
-
基于高校食堂的食物信息,對膳食進行調整改進,并重新進行評價。
-
優化設計:
-
建立優化模型,設計男、女大學生的日食譜,目標分別為蛋白質氨基酸評分最大、用餐費用最經濟、兼顧評分和經濟性。
-
在日食譜基礎上,設計周食譜,并進行評價和比較分析。
-
健康倡議書:
-
針對大學生的飲食結構及習慣,撰寫一份健康飲食、平衡膳食的倡議書。
現在就先對數據集進行預處理分析,我們以附件1為例,做數據預處理和探索性數據分析(EDA)
數據讀取和展示:
import pandas as pd
# 讀取數據
male_diet = pd.read_excel('/mnt/data/附件1:1名男大學生的一日食譜.xlsx')
# 展示前10行數據
male_diet_head = male_diet.head(10)
male_diet_head
數據預處理
預處理步驟包括:
-
檢查數據的完整性,處理缺失值。
-
轉換數據類型,確保所有數據類型正確。
-
計算每種食物的總量及其對應的營養素含量。
代碼:
# 檢查數據的基本信息
male_diet.info()
# 檢查數據的描述性統計
male_diet.describe()
# 檢查是否有缺失值
missing_values = male_diet.isnull().sum()
missing_values
數據處理和計算
根據每種食物的量和其營養成分表,計算總的營養素含量。
假設數據表中包括以下列:食物名稱、數量(g)、蛋白質含量(g/100g)、脂肪含量(g/100g)、碳水化合物含量(g/100g)等。
# 假設有以下列
# 食物名稱、數量(g)、蛋白質含量(g/100g)、脂肪含量(g/100g)、碳水化合物含量(g/100g)
# 添加總蛋白質、總脂肪、總碳水化合物列
male_diet['總蛋白質 (g)'] = male_diet['數量 (g)'] * male_diet['蛋白質含量 (g/100g)'] / 100
male_diet['總脂肪 (g)'] = male_diet['數量 (g)'] * male_diet['脂肪含量 (g/100g)'] / 100
male_diet['總碳水化合物 (g)'] = male_diet['數量 (g)'] * male_diet['碳水化合物含量 (g/100g)'] / 100
# 計算總的營養素含量
total_protein = male_diet['總蛋白質 (g)'].sum()
total_fat = male_diet['總脂肪 (g)'].sum()
total_carbs = male_diet['總碳水化合物 (g)'].sum()
# 展示總營養素含量
total_nutrients = {
'總蛋白質 (g)': total_protein,
'總脂肪 (g)': total_fat,
'總碳水化合物 (g)': total_carbs
}
total_nutrients
探索性數據分析(EDA)
-
食物種類和數量分布:
-
統計不同類別食物的數量分布情況。
-
營養素分布:
-
分析蛋白質、脂肪、碳水化合物在整個食譜中的分布。
import matplotlib.pyplot as plt
# 食物種類和數量分布
food_types = male_diet['食物名稱'].value_counts()
food_types.plot(kind='bar', title='食物種類分布')
plt.xlabel('食物名稱')
plt.ylabel('數量')
plt.show()
# 營養素分布
nutrients = male_diet[['總蛋白質 (g)', '總脂肪 (g)', '總碳水化合物 (g)']]
nutrients.sum().plot(kind='bar', title='營養素分布')
plt.xlabel('營養素')
plt.ylabel('總量 (g)')
plt.show()
通過以上步驟,我們可以獲得男大學生一日食譜的基本情況及其營養素分布,為后續的營養評價和優化設計打下基礎。附件2類似方法可以做。下面來看問題1的分析過程
問題一分析:
針對問題一,它分為兩個小問,包括對兩份食譜做出全面的膳食營養評價,以及加上附件3后的調整。首先,先來解決第一小問。
膳食營養評價
我們需要對男大學生的一日膳食進行全面的營養分析評價,評價內容包括:
l 食物結構分析:檢查食物種類是否齊全,是否多樣化。
l 能量和主要營養素計算:計算總能量及蛋白質、脂肪、碳水化合物的攝入量。
l 非產能營養素計算:計算鈣、鐵、鋅、維生素A、維生素B1、維生素B2、維生素C的攝入量。
l 營養素供能比分析:評價蛋白質、脂肪、碳水化合物的供能占比。
l 氨基酸評分分析:計算食譜中蛋白質的氨基酸評分。
數據預處理
首先讀取數據,并檢查數據的完整性和類型:
Python代碼:
import pandas as pd
# 讀取數據
male_diet = pd.read_excel('/mnt/data/附件1:1名男大學生的一日食譜.xlsx')
# 展示前10行數據
male_diet_head = male_diet.head(10)
print(male_diet_head)
# 檢查數據的基本信息
male_diet.info()
# 檢查數據的描述性統計
male_diet.describe()
# 檢查是否有缺失值
missing_values = male_diet.isnull().sum()
print(missing_values)
食物結構分析
根據《中國居民膳食指南》的要求,檢查食物種類是否多樣化:
python
# 統計食物種類
food_types = male_diet['食物名稱'].nunique()
print(f"食物種類數量: {food_types}")
# 分析食物類別是否齊全
food_categories = ['谷類', '蔬菜', '水果', '肉類', '奶類', '豆類', '油脂']
food_categories_count = male_diet['類別'].value_counts()
print(food_categories_count)
下面給大家如何用灰色綜合評價法來做的示例,推薦大家使用此算法:
灰色綜合評價法步驟
-
確定評價指標體系:
-
選擇評價膳食營養的關鍵指標,如總能量、蛋白質、脂肪、碳水化合物、鈣、鐵、鋅、維生素A、維生素B1、維生素B2、維生素C等。
-
數據標準化:
-
對各指標數據進行無量綱化處理(標準化),以消除不同指標間量綱的影響。
-
計算灰關聯度:
-
計算每個評價對象(食譜)與理想參考值之間的灰色關聯度。
-
計算綜合關聯度:
-
根據各指標的權重,計算各評價對象的綜合關聯度。
-
綜合評價:
-
根據綜合關聯度對各評價對象進行排序,得出綜合評價結果。
實現步驟?1.?確定評價指標體系?選擇男大學生膳食的關鍵評價指標如下:
-
總能量 (kcal)
-
總蛋白質 (g)
-
總脂肪 (g)
-
總碳水化合物 (g)
-
鈣 (mg)
-
鐵 (mg)
-
鋅 (mg)
-
維生素A (μg)
-
維生素B1 (mg)
-
維生素B2 (mg)
-
維生素C (mg)
2.?數據標準化?標準化處理可以采用極差標準化方法:
添加圖片注釋,不超過 140 字(可選)
假設數據已經在前面的步驟中計算完成,以下代碼將實現數據標準化:
python
復制代碼
import numpy as np
# 假設 total_nutrients 和 total_non_energy_nutrients 是已計算的營養素總量
data = {
'總能量 (kcal)': total_energy,
'總蛋白質 (g)': total_protein,
'總脂肪 (g)': total_fat,
'總碳水化合物 (g)': total_carbs,
'鈣 (mg)': total_calcium,
'鐵 (mg)': total_iron,
'鋅 (mg)': total_zinc,
'維生素A (μg)': total_vitamin_a,
'維生素B1 (mg)': total_vitamin_b1,
'維生素B2 (mg)': total_vitamin_b2,
'維生素C (mg)': total_vitamin_c
}
# 轉換為DataFrame
df = pd.DataFrame([data])
# 定義理想參考值,可以參考膳食指南的推薦攝入量
ideal_values = {
'總能量 (kcal)': 2400,
'總蛋白質 (g)': 90,
'總脂肪 (g)': 80,
'總碳水化合物 (g)': 300,
'鈣 (mg)': 800,
'鐵 (mg)': 12,
'鋅 (mg)': 12.5,
'維生素A (μg)': 800,
'維生素B1 (mg)': 1.4,
'維生素B2 (mg)': 1.4,
'維生素C (mg)': 100
}
# 標準化處理
df_normalized = (df - df.min()) / (df.max() - df.min())
ideal_normalized = (pd.DataFrame([ideal_values]) - df.min()) / (df.max() - df.min())
print(df_normalized)
print(ideal_normalized)
然后需要計算灰色關聯度:
添加圖片注釋,不超過 140 字(可選)
代碼:
# 定義分辨系數
rho = 0.5
# 計算差異
diff = np.abs(df_normalized - ideal_normalized)
delta_min = diff.min().min()
delta_max = diff.max().max()
# 計算灰關聯度
gray_relation = (delta_min + rho * delta_max) / (diff + rho * delta_max)
gray_relation_scores = gray_relation.mean(axis=1)
print(gray_relation_scores)
4. 計算綜合關聯度
綜合關聯度可以根據各指標的權重進行計算,這里假設所有指標權重相等:
# 假設所有指標權重相等
weights = np.ones(len(data.keys())) / len(data.keys())
# 計算綜合關聯度
comprehensive_relation_score = (gray_relation * weights).sum(axis=1)
print(comprehensive_relation_score)
5. 綜合評價
根據綜合關聯度對膳食進行排序,得出綜合評價結果:‘
# 綜合評價
evaluation_result = comprehensive_relation_score.sort_values(ascending=False)
print(evaluation_result)
下面就是第一問的第二小問分析過程:
根據第一小問的營養評價結果,確定哪些營養素不足或過剩,具體包括:
-
總能量:是否滿足推薦的每日能量攝入標準。
-
宏量營養素:蛋白質、脂肪、碳水化合物的供能占比是否合理。
-
非產能營養素:鈣、鐵、鋅、維生素A、維生素B1、維生素B2、維生素C的攝入量是否達標。
-
氨基酸評分:蛋白質的氨基酸組成是否合理。
然后調整方案,可以通過以下方式進行調整:
-
增加或減少食物種類:
-
增加:對于不足的營養素,通過增加相應食物種類來補充。例如,鈣不足可以增加奶制品,維生素C不足可以增加水果。
-
減少:對于過剩的營養素,通過減少相應食物種類來控制。例如,脂肪過多可以減少油脂和高脂食物的攝入。
-
優化食物搭配:
-
多樣化:確保每天攝入的食物種類大于12種,每周攝入的食物種類大于25種,覆蓋五大類食物(谷類、蔬菜、水果、肉類、奶類、豆類、油脂)。
-
合理搭配:合理搭配不同種類的食物,以提高膳食的整體營養價值。例如,谷類和豆類搭配可以提高蛋白質的氨基酸評分。
-
調整餐次比:
-
能量分配:合理分配早餐、中餐和晚餐的能量攝入,推薦早餐占30%,中餐和晚餐各占35%。
具體可以用以下方式進行調整:
-
總能量調整:
-
如果總能量不足:增加能量密集型食物,如全谷類、堅果、油脂等。
-
如果總能量過多:減少高能量食物的攝入,增加低能量密度的蔬菜和水果。
-
宏量營養素調整:
-
蛋白質不足:增加富含蛋白質的食物,如魚類、禽肉、豆制品。
-
脂肪過多:減少油炸食品、肥肉,增加魚類、堅果等優質脂肪來源。
-
碳水化合物不足:增加全谷類食品,如燕麥、糙米。
-
非產能營養素調整:
-
鈣不足:增加奶制品、豆制品、綠葉蔬菜。
-
鐵不足:增加紅肉、肝臟、深色綠葉蔬菜,搭配維生素C豐富的食物以促進鐵吸收。
-
鋅不足:增加海產品、肉類、堅果。
-
維生素不足:增加水果、蔬菜,特別是富含維生素A、B、C的食物。
最后,通過調整食譜,重新進行膳食營養評價,確認各項營養素是否達到推薦攝入量,能量供給是否合理,氨基酸評分是否提高。
2-4問后續更新
添加圖片注釋,不超過 140 字(可選)
?
其中更詳細的思路、各題目思路、代碼、講解視頻、成品論文及其他相關內容,可以看我的這篇文章哦: