機器學習專案---預測心臟病(一)
使用機器學習預測心臟病
問題定義
給定有關患者的臨床引數,我們能否預測他們是否患有心臟病,
檢視您是否可以在心臟資料中找到其他趨勢來預測某些心血管事件或找到心臟健康的任何明確跡象
特徵
#匯入相關的庫
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()
相關文章
- 機器學習專案---預測心臟病(二)機器學習
- 【機器學習PAI實踐一】搭建心臟病預測案例機器學習AI
- 心臟病不再擔心,人工智慧3D列印心臟人工智慧3D
- 人工智慧可以預測心臟病發作時間 挽救更多生命人工智慧
- 準確率超90%!AI預測心臟病發作及死亡率遠勝人類AI
- 美國心臟協會:2022年美國心臟病和卒中統計資料包告(487頁)
- 泰坦尼克生還預測:完整的機器學習專案(一)機器學習
- 視網膜眼底影象預測心臟病風險:Nature綜述深度學習在生物醫療中的新應用深度學習
- 視網膜眼底影像預測心臟病風險:Nature綜述深度學習在生物醫療中的新應用深度學習
- 【機器學習PAI實踐九】如何通過機器學習實現雲端實時心臟狀況監測機器學習AI
- 人工智慧訓練使用視網膜掃描發現心臟病風險人工智慧
- 機器學習實戰專案-預測數值型迴歸機器學習
- AI診斷心臟病比人類更準?但這只是識圖,不是診斷AI
- 美國心臟病協會:《Pokemon Go》促進玩家每日步數增加2000Go
- Nature論文解讀 | 基於深度學習和心臟影像預測生存概率深度學習
- 機器學習專案實戰----泰坦尼克號獲救預測(二)機器學習
- 機器學習專案實戰----信用卡欺詐檢測(一)機器學習
- DispatcherServlet ——Spring MVC 的大心臟ServletSpringMVC
- 美國心臟協會雜誌:研究揭示大麻與心臟健康之間令人擔憂的聯絡
- 關於OpenSSL“心臟出血”漏洞的分析
- 為你的專案把脈-提防十種專案病
- 機器學習之分類:預測偏差機器學習
- 使用機器學習預測房價(附連結)機器學習
- 薈萃分析:研究發現吸菸父親會增加未出生嬰兒患先天性心臟病機率
- 芬蘭職業保健研究所:研究顯示每天工作超8小時得心臟病機率增加80%
- 如何實現一流的專案可預測性?
- 一隻監測心臟健康的馬桶圈,會給AI創業者帶來哪些啟發?AI創業
- 『研究表明窮人更易因睡眠不足致心臟病』今日資料行業日報(2019.11.28)行業
- 機器學習股票價格預測從爬蟲到預測-預測與調參機器學習爬蟲
- 【機器學習】線性迴歸預測機器學習
- 開源一個機器學習文字分析專案機器學習
- 睡好是心臟良藥!《歐洲心臟雜誌》:保持良好睡眠模式可將患血管疾病的風險降低30%-60%模式
- 壓力更可能轉化為“病歷”!美國心臟病協會18年隨訪研究:工作壓力大的男性患冠心病風險升高103%,女性風險較小!
- 刺破 vue 的心臟之——詳解 render function codeVueFunction
- linux系統bash漏洞,甚過心臟出血Linux
- 貸款違約預測專案-資料分箱
- 機器學習入門系列(2)--如何構建一個完整的機器學習專案(一)機器學習
- iwebshop專案測試(一)Web