機器學習專案---預測心臟病(一)
使用機器學習預測心臟病
問題定義
給定有關患者的臨床引數,我們能否預測他們是否患有心臟病,
檢視您是否可以在心臟資料中找到其他趨勢來預測某些心血管事件或找到心臟健康的任何明確跡象
特徵
#匯入相關的庫
mport pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
%matplotlib inline
sns.set_style("whitegrid")
plt.style.use("fivethirtyeight")
載入資料
df = pd.read_csv("./data/heart.csv")
df.head()
1、age - age in years
2、sex -(1 =男性; 0 =女性)
3、cp - -胸痛型別(0: 典型的心絞痛:與胸痛有關,減少心臟的血液供應1: 非心絞痛:通常為食道痙攣(與心臟無關)2: 非心絞痛:通常為食道痙攣(與心臟無關)3: 無症狀:胸痛未顯示疾病跡象)
4、trestbps - 靜息血壓(入院時以毫米汞柱為單位)高於130-140的情況通常令人擔憂
5、chol - 血清膽汁,mg / dl
血清= LDL + HDL + 0.2 *甘油三酸酯
200以上值得關注
6、fbs-(空腹血糖> 120 mg / dl)(1 =正確; 0 =錯誤)
'> 126’mg / dL表示糖尿病
7、restecg --靜息心電圖結果
0:沒什麼可注意的
1:ST-T波異常
範圍從輕度症狀到嚴重問題
表示心跳不正常
2:可能或確定的左心室肥大
擴大心臟的主泵室
8、丘腦-達到最大心率
9、exang - 運動誘發的心絞痛(1 =是; 0 =否)
10、oldpeak - 運動引起的相對於休息的ST抑鬱會在運動不健康的心臟時觀察心臟的壓力,這會增加壓力
11、slope - 最高運動ST段的坡度
0: Upsloping: 鍛鍊可提高心率(罕見)
1: Flatsloping: 變化很小(典型的健康心臟)
2: Downslopins:心臟不健康的體徵
12、ca - 螢光顯色的主要血管數目(0-3)
彩色血管意味著醫生可以看到血液通過
血液運動越多越好(無凝塊)
13、thal - al-lium應力結果
1,3:正常
6: 修復缺陷:曾經是缺陷,但是現在可以了
7: 可逆缺陷:鍛鍊時沒有適當的血液運動
14、target - 是否患有疾病(1 =是,0 =否)(=預測屬性)
df.info()
pd.set_option("display.float","{:.2f}".format)
df.target.value_counts()
df.target.value_counts().plot(kind="bar", color=["salmon", "lightblue"])
探索性資料分析(EDA)
這裡的目標是查詢有關資料的更多資訊,併成為您正在使用的資料集上的主題匯出。
您要解決什麼問題?
我們擁有什麼樣的資料,以及如何處理不同型別的資料?
資料中缺少什麼以及如何處理?
異常值在哪裡,為什麼要關心它們?
您如何新增,更改或刪除功能以從資料中獲取更多資訊?
#Checking for messing values
df.isna().sum()
categorical_val = []
continous_val = []
for column in df.columns:
print('==============================')
print(f"{column} : {df[column].unique()}")
if len(df[column].unique()) <= 10:
categorical_val.append(column)
else:
continous_val.append(column)
plt.figure(figsize=(15, 15))
for i, column in enumerate(categorical_val, 1):
plt.subplot(3, 3, i)
df[df["target"] == 0][column].hist(bins=35, color='blue', label='Have Heart Disease = NO', alpha=0.6)
df[df["target"] == 1][column].hist(bins=35, color='red', label='Have Heart Disease = YES', alpha=0.6)
plt.legend()
plt.xlabel(column)
cp {胸痛}:cp等於1、2、3的人比cp等於0的人患心臟病的可能性更高。
restecg {靜息心電圖結果}:值為1的人(訊號非正常心跳,範圍從輕度症狀到嚴重問題)更可能患有心臟病。
exang {運動誘發的心絞痛}:值0(否==>運動誘發心絞痛)的人患心臟病的人數多於值1(是==>運動誘發心絞痛)的人。
坡度{最高運動ST段的坡度}:坡度值等於2的人(下坡:心臟不健康的徵兆)比坡度值等於0的人更容易患心臟病(坡度:鍛鍊時心率更高) )或1(平底鞋:變化很小(典型的健康心臟))。
ca {浮雕著色的主要血管數量(0-3)}:血液運動越多越好,因此ca等於0的人更容易患心臟病。
thal {tha應力結果}:thal值等於2(固定缺陷:曾經是缺陷,但現在可以)的人更容易患心臟病。
plt.figure(figsize=(15, 15))
for i, column in enumerate(continous_val, 1):
plt.subplot(3, 2, i)
df[df["target"] == 0][column].hist(bins=35, color='blue', label='Have Heart Disease = NO', alpha=0.6)
df[df["target"] == 1][column].hist(bins=35, color='red', label='Have Heart Disease = YES', alpha=0.6)
plt.legend()
plt.xlabel(column)
trestbps:靜息血壓(入院時以毫米汞柱為單位)高於130-140的任何數值通常令人擔憂
chol {血清膽甾醇,單位mg / dl}:超過200值得關注。
thalach {達到的最大心率}:達到最大心率超過140的人更容易患心臟病。
運動相對於休息引起的oldpeak ST抑鬱症在鍛鍊過程中著眼於心臟壓力,不健康的心臟會增加壓力
# Create another figure
plt.figure(figsize=(10, 8))
# Scatter with postivie examples
plt.scatter(df.age[df.target==1],
df.thalach[df.target==1],
c="salmon")
# Scatter with negative examples
plt.scatter(df.age[df.target==0],
df.thalach[df.target==0],
c="lightblue")
# Add some helpful info
plt.title("Heart Disease in function of Age and Max Heart Rate")
plt.xlabel("Age")
plt.ylabel("Max Heart Rate")
plt.legend(["Disease", "No Disease"]);
# Let's make our correlation matrix a little prettier
corr_matrix = df.corr()
fig, ax = plt.subplots(figsize=(15, 15))
ax = sns.heatmap(corr_matrix,
annot=True,
linewidths=0.5,
fmt=".2f",
cmap="YlGnBu");
bottom, top = ax.get_ylim()
ax.set_ylim(bottom + 0.5, top - 0.5)
df.drop('target', axis=1).corrwith(df.target).plot(kind='bar', grid=True, figsize=(12, 8),
title="Correlation with target")
fbs和chol與目標變數的相關性最低。
所有其他變數與目標變數具有顯著的相關性。
categorical_val.remove('target')
dataset = pd.get_dummies(df, columns = categorical_val)
dataset.head()
from sklearn.preprocessing import StandardScaler
s_sc = StandardScaler()
col_to_scale = ['age', 'trestbps', 'chol', 'thalach', 'oldpeak']
dataset[col_to_scale] = s_sc.fit_transform(dataset[col_to_scale])
dataset.head()
相關文章
- 機器學習專案---預測心臟病(二)機器學習
- 心臟病不再擔心,人工智慧3D列印心臟人工智慧3D
- 泰坦尼克生還預測:完整的機器學習專案(一)機器學習
- 機器學習實戰專案-預測數值型迴歸機器學習
- 塔夫茨大學:研究發現吃粗糧可以幫助預防心臟病
- Nature論文解讀 | 基於深度學習和心臟影像預測生存概率深度學習
- 終生不得心臟病的簡單方法
- 機器學習專案實戰----泰坦尼克號獲救預測(二)機器學習
- 準確率超90%!AI預測心臟病發作及死亡率遠勝人類AI
- 歐洲心臟病學會:研究稱每天只刷一次牙可能增加出現某些心臟問題的風險
- 機器學習專案實戰----信用卡欺詐檢測(一)機器學習
- 《心臟》:研究發現每週午休一到兩次心臟病發作/中風風險降低近50%
- 機器學習之分類:預測偏差機器學習
- 瑞士洛桑社會與預防醫學大學:研究表明窮人更易因睡眠不足致心臟病
- 歐洲心臟病學會:研究發現會休假的人壽命長
- 美國心臟病學院:研究發現每天玩手機五小時以上更易變胖
- 機器學習入門系列(2)--如何構建一個完整的機器學習專案(一)機器學習
- 開源一個機器學習文字分析專案機器學習
- 美國CDC:2020年十大死因 心臟病排名第一
- 【機器學習】線性迴歸預測機器學習
- USPTSF:不建議60歲以上的人服用阿司匹林來預防心臟病或中風
- 美國心臟病學院:最新研究顯示每天喝咖啡可能有益於心臟並幫助延長壽命
- 做機器學習專案的checklist機器學習
- [譯] 機器學習專案清單機器學習
- 實戰 | 如何上線一個機器學習專案?機器學習
- MGH:研究發現減少包裝食品中的糖分可以預防百萬起心臟病
- 美國心臟協會:2022年美國心臟病和卒中統計資料包告(487頁)
- 《BMC醫學》:研究發現少看電視可以減少心臟病的發生
- 【機器學習】超詳細!上線一個機器學習專案你需要哪些準備?機器學習
- 機器學習之迴歸分析--預測值機器學習
- 研究:抑鬱症發作少或降低心臟病風險
- 機器學習股票價格預測從爬蟲到預測-預測與調參機器學習爬蟲
- 逆向學習-我心臟又不長在正中央
- 機器學習一:資料預處理機器學習
- 機器學習專案實戰----信用卡欺詐檢測(二)機器學習
- 使用機器學習預測房價(附連結)機器學習
- 研究發現每天吃一個雞蛋 可降低心臟病和中風風險
- 機器學習專案經歷的若干感想機器學習