0 前言
?? Hi,大家好,這里是丹成學(xué)長的畢設(shè)系列文章!
?? 對畢設(shè)有任何疑問都可以問學(xué)長哦!
這兩年開始,各個學(xué)校對畢設(shè)的要求越來越高,難度也越來越大… 畢業(yè)設(shè)計(jì)耗費(fèi)時間,耗費(fèi)精力,甚至有些題目即使是專業(yè)的老師或者碩士生也需要很長時間,所以一旦發(fā)現(xiàn)問題,一定要提前準(zhǔn)備,避免到后面措手不及,草草了事。
為了大家能夠順利以及最少的精力通過畢設(shè),學(xué)長分享優(yōu)質(zhì)畢業(yè)設(shè)計(jì)項(xiàng)目,今天要分享的新項(xiàng)目是
?? 基于大數(shù)據(jù)的心血管疾病分析
??學(xué)長這里給一個題目綜合評分(每項(xiàng)滿分5分)
- 難度系數(shù):4分
- 工作量:4分
- 創(chuàng)新點(diǎn):3分
?? 選題指導(dǎo), 項(xiàng)目分享:
https://gitee.com/yaa-dc/BJH/blob/master/gg/cc/README.md
1 課題背景
本項(xiàng)目的任務(wù)是利用患者的檢查結(jié)果預(yù)測心血管疾病(CVD)的存在與否。
2 數(shù)據(jù)處理
數(shù)據(jù)集包括年齡、性別、收縮壓、舒張壓等12個特征的患者數(shù)據(jù)記錄7萬份。
當(dāng)患者有心血管疾病時,目標(biāo)類“cardio”等于1,如果患者健康,則為0。
數(shù)據(jù)描述
有三種類型的輸入特征:
- Objective: 客觀事實(shí);
- Examination: 體檢檢查結(jié)果;
- Subjective: 病人提供的信息
數(shù)據(jù)信息概覽
import numpy as np
import pandas as pd
import seaborn as sns
from matplotlib import pyplot as plt
import os
df.head()
變量分析
df.info()
所有特征都是數(shù)字,12個整數(shù)和1個小數(shù)(權(quán)值)。第二列告訴我們數(shù)據(jù)集有多大,每個字段有多少非空值。
我們可以使用’ describe() ‘來顯示每個屬性的樣本統(tǒng)計(jì)信息,比如’ min ‘、’ max ‘、’ mean ‘、’ std ':
評論
df.describe()
年齡以天為單位,身高以厘米為單位。
讓我們看看數(shù)值變量以及它們是如何在目標(biāo)類中分布的。
例如,什么年齡患有心血管疾病的人數(shù)超過沒有心血管疾病的人數(shù)?
3 數(shù)據(jù)可視化
from matplotlib import rcParams
rcParams['figure.figsize'] = 11, 8
df['years'] = (df['age'] / 365).round().astype('int')
sns.countplot(x='years', hue='cardio', data = df, palette="Set2");
可以觀察到55歲以上的人更容易得心血管疾病的。
從上面的表格中,我們可以看到ap_hi, ap_lo, weight 和height中有異常值。我們以后再處理。
讓我們看看數(shù)據(jù)集中的分類變量及其分布:
df_categorical = df.loc[:,['cholesterol','gluc', 'smoke', 'alco', 'active']]
sns.countplot(x="variable", hue="value",data= pd.melt(df_categorical));
df_long = pd.melt(df, id_vars=['cardio'], value_vars=['cholesterol','gluc', 'smoke', 'alco', 'active'])
sns.catplot(x="variable", hue="value", col="cardio",
data=df_long, kind="count");
可以清楚地看到,CVD患者的膽固醇和血糖水平較高。而且一般來說不太活躍,運(yùn)動少。
為了計(jì)算“1”在性別欄中代表女性還是男性,讓我們計(jì)算每個性別的身高平均值。我們假設(shè)男人平均比女人高。
corr = df.corr()
cmap = sns.diverging_palette(220, 10, as_cmap=True)
mask = np.zeros_like(corr, dtype=np.bool)
mask[np.triu_indices_from(mask)] = True
# 設(shè)置matplotlib圖
f, ax = plt.subplots(figsize=(11, 9))
# 畫出熱圖,并校正長寬比
sns.heatmap(corr, mask=mask, cmap=cmap, vmax=.3, center=0,annot = True,
square=True, linewidths=.5, cbar_kws={"shrink": .5});
我們可以看到年齡和膽固醇有顯著的影響,但與目標(biāo)階層的相關(guān)性不是很高。
.
讓我們創(chuàng)建violinplot來顯示不同性別的身高分布。
查看每個性別特征值的身高和體重的平均值可能不足以決定1是男性還是女性。
import warnings
warnings.filterwarnings("ignore")
df_melt = pd.melt(frame=df, value_vars=['height'], id_vars=['gender'])
plt.figure(figsize=(12, 10))
ax = sns.violinplot(
x='variable',
y='value',
hue='gender',
split=True,
data=df_melt,
scale='count',
scale_hue=False,
palette="Set2");
讓我們創(chuàng)造一個新的特征-身體質(zhì)量指數(shù)(BMI):
比較健康人的平均BMI和病人的平均BMI。正常的BMI值在18.5到25之間。文章來源:http://www.zghlxwxcb.cn/news/detail-440436.html
df['BMI'] = df['weight']/((df['height']/100)**2)
sns.catplot(x="gender", y="BMI", hue="alco", col="cardio", data=df, color = "yellow",kind="box", height=10, aspect=.7);
根據(jù)女性的BMI,喝酒的女性比喝酒的男性有更高的心血管疾病風(fēng)險。文章來源地址http://www.zghlxwxcb.cn/news/detail-440436.html
4 最后
到了這里,關(guān)于【畢業(yè)設(shè)計(jì)】大數(shù)據(jù)心血管疾病數(shù)據(jù)分析(醫(yī)學(xué)大數(shù)據(jù)分析)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!