基于线性回归对男性体脂率的预测

基于线性回归对男性体脂率的预测

本项目包含:
1.数据探索性分析
2.线性回归预测体脂率

数据集和代码链接放在文末

一、数据说明

在这里插入图片描述

二、前置知识

在这里插入图片描述

三、数据导入

import pandas as pd
df = pd.read_csv('/home/mw/input/bodyfat8096/bodyfat.csv')
df.head()

在这里插入图片描述

df.isnull().sum()

Density 0
BodyFat 0
Age 0
Weight 0
Height 0
Neck 0
Chest 0
Abdomen 0
Hip 0
Thigh 0
Knee 0
Ankle 0
Biceps 0
Forearm 0
Wrist 0
dtype: int64

四、EDA

4.1 单位转换

体重单位是磅,身高单位是英寸,根据说明,其他字段单位都是cm,所以我们先做一个单位的转换
1磅 = 0.45359237kg
1英寸 = 2.54cm

df['Weight'] = df['Weight']*0.45359237
df['Height'] = df['Height']*2.54
df.head()

4.2 年龄分布

我们可以看出,本数据的最大年龄为81岁,最小年龄为22岁;根据年龄分布图来看,大部分被调查者处于60岁以下,根据下图的对照表来说,这个范围内男性标准的体脂率应该为11~22%,下面我们看一下实际的体脂率

print('最大年龄为:{}岁;最小年龄为:{}岁。'.format(max(df['Age']),min(df['Age'])))

最大年龄为:81岁;最小年龄为:22岁。

from matplotlib import pyplot as plt  
%matplotlib inline
import seaborn as sns
fig,ax = plt.subplots(figsize=(6,3), dpi=120)

plt.hist(x = df.Age, # 指定绘图数据
         bins = 15, # 指定直方图中条块的个数
         color = 'skyblue', # 指定直方图的填充色
          edgecolor = 'black' # 指定直方图的边框色
          )
# 添加x轴和y轴标签
plt.xlabel('年龄')
plt.ylabel('频数')
# 添加标题
plt.title('年龄分布')

在这里插入图片描述

4.3 体脂率分布

可以看出,体脂率偏高的人多一些,但是数据存在异常,最小体脂率竟然为0?我们查出来是哪一行数据,后续将其剔除。

fig,ax = plt.subplots(figsize=(6,3), dpi=120)

plt.hist(x = df.BodyFat, # 指定绘图数据
         bins = 15, # 指定直方图中条块的个数
         color = 'skyblue', # 指定直方图的填充色
          edgecolor = 'black' # 指定直方图的边框色
          )
# 添加x轴和y轴标签
plt.xlabel('体脂率')
plt.ylabel('频数')
# 添加标题
plt.title('体脂率分布')

在这里插入图片描述

4.4 矩阵图分析体脂率和其他变量的关系

可以看出,除了密度和身高外,其他变量和体脂率的趋势关系都差不多

plt.figure(figsize=(10,8), dpi= 80)
for index in range(len(list(df))):
    sns.pairplot(df, x_vars=list(df)[index],height = 4,
                aspect=2,y_vars=['BodyFat'],kind="reg")

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.5各变量热力图

在这里插入图片描述

五、建模分析

5.1 相关性分析

#特征多了,不好挑,写个相关系数高于就选出来的函数
def corr_del(df,rate):
    feature_names = list
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱挠静香的下巴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值