数据的截图
# 字段 说明 # Gender 性别 # Age 年龄 # Height 身高 # Weight 体重 # family_history_with_overweight 家族肥胖史 # FAVC 是否频繁食用高热量食物 # FCVC 食用蔬菜的频次 # NCP 食用主餐的次数 # CAEC 两餐之间的食品消费:always(总是);frequently(经常);sometimes(有时候) # SMOKE 是否吸烟 # CH2O 每日耗水量 # SCC 高热量饮料消耗量 # FAF 运动频率 # TUE 使用电子设备的时间 # CALC 酒精消耗量:0(无); frequently(经常);sometimes(有时候) # MTRANS 日常交通方式:Automobile(汽车);Bike(自行车);Motorbike(摩托车);Public Transportation(公共交通);Walking(步行) # 0be1dad 肥胖水平 # 肥胖水平中各字段意思 # Ormal_Weight 正常 # Insufficient Weight 体重不足 # Obesity_Type_I 肥胖类型 I # Obesity_Type_ll 肥胖类型 II # Obesity_Type_lll 肥胖类型 III # Overweight_Level_I 一级超重 # Overweight_Level_Il 二级超重
# 了解了各个字段的含义后,我们来看问题 # 问题描述 # 相关性分析 # 群体特征分析 # 构建肥胖风险预测模型 # 数据可视化
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import pylab as pl
import seaborn as sns
from sklearn.preprocessing import OneHotEncoder,LabelEncoder,StandardScaler
from scipy.stats import spearmanr
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
data = pd.read_csv("obesity_level.csv")
pd.set_option("display.max_columns",1000)
print(data.head(5))
导入需要用到的第三方库,导入数据
# 知道了问题后我们先对数据进行预处理
print(data.info())
print(data.isnull().sum())
data = data.drop('id',axis=1)
data['Age'] = data['Age'].astype('int64')
# 没有缺失值,因此我们来看数据
# 首先ID这一列对我们的分析没有任何帮助,我们将其删除
# 由于年龄应该是整数,但是数据集中年龄存在小数,我们将其转换为整数
处理之后,我们来看第一个问题,相关性分析,想到什么——热力图(斯皮尔曼相关系数)
columns = ['Gender', 'Age', 'Height', 'Weight', 'family_history_with_overweight',
&