心血管疾病资料集的资料清理

这一篇我们来说明处理心血管疾病资料集的notebook内容, 这份notebook可以从下方连结下载:
https://github.com/masonwu1762/ithome-ironman

  • notebook: cardiovascular_disease_prediction_notebook.ipynb
  • dataset: cardio_train.csv

请将notebook与csv档上传到jupyterhub, 并打开notebook.
以下说明notebook的内容

修改後的notebook内容是为了接续後续整合MLFlow与Seldon

安装所需的package

请开启terminal执行下方指令安装所需的package

pip install pandas numpy seaborn matplotlib

notebook内容说明

  • 首先汇入所需要的package

    import pandas as pd
    import numpy as np
    import seaborn as sns
    import matplotlib.pyplot as plt
    
  • 读取dataset资料

    # read the csv file 
    cardio_df = pd.read_csv("cardio_train.csv", sep=";")
    
  • 看一下前5笔资料长什麽样子

    cardio_df.head()
    
  • 把id栏位拿掉, 因为在训练时这个栏位是没有用的

    # Drop id
    
    cardio_df = cardio_df.drop(columns = 'id')
    
  • 转换年龄单位为

    # since the age is given in days, we convert it into years
    
    cardio_df['age'] = cardio_df['age']/365
    
  • 再来看一次前5笔的资料长怎麽样

    cardio_df.head()
    
  • 确认有没有空值.

    # checking the null values
    cardio_df.isnull().sum()
    
  • 看一下资料集的基本统计数值

    # Checking the dataframe information
    
    cardio_df.info()
    
  • 显示每个栏位的统计值

    # Statistical summary of the dataframe
    cardio_df.describe()
    
  • 画出pairplot
    用来画出两两特徵之间的关系

    sns.pairplot(cardio_df)
    
  • 设定资料集之中的答案栏位特徵栏位
    答案栏位是指我们要推论的结果, 在这里是指罹患心血管疾病的机率
    特徵栏位是指我们用来推估罹患心血管疾病机率的相关资料

    # split the dataframe into target and features
    
    df_target = cardio_df['cardio']
    df_features = cardio_df.drop(columns =['cardio'])
    
  • 确认一下Dataset有哪些栏位

    cardio_df.columns
    
  • 确认一下特徵栏位有几笔资料与栏位数

    df_features.shape
    
  • 确认特徵栏位的栏位数量

    df_features.columns
    
  • 确认答案栏位的笔数

    df_target.shape
    
  • 将资料区分为训练资料与测试资料,以8:2进行区分

    #spliting the data in to test and train sets
    from sklearn.model_selection import train_test_split
    
    X_train, X_test, y_train, y_test = train_test_split(df_features, df_target, test_size = 0.2)
    
  • 看一下训练资料的笔数与栏位数量

    X_train.shape
    
  • 看一下训练资料的栏位名称

    X_train.columns
    
  • 看一下训练资料的笔数

    y_train.shape
    
  • 看一下测试资料的笔数

    X_test.shape
    
  • 安装xgboost
    接下来会使用xgboost执行训练, 因此需要安装xgboost

    # install xgboost
    
    !pip install xgboost
    
  • 呼叫xgboost分类演算法并执行训练

    from xgboost import XGBClassifier
    
    # model = XGBClassifier(learning_rate=0.01, n_estimators=100, objective='binary:logistic')
    model = XGBClassifier()
    
    model.fit(X_train, y_train)
    
  • 以测试资料进行预测

    # make predictions on test data
    
    predict = model.predict(X_test)
    
  • 印出预测结果

    predict
    
  • 印出测试资料的metrics

    print("Precision = {}".format(precision_score(y_test, predict)))
    print("Recall = {}".format(recall_score(y_test, predict)))
    print("Accuracy = {}".format(accuracy_score(y_test, predict)))
    
  • 将训练好的model另存为档案
    要储存xgboost的model档可以呼叫 save_mode 这个function. 如果附档名是.json则会将model档储存为json格式, 你可以用编辑器打开内容.
    如果附档名不是.json, 例如下方范例是.pkl档, 则会将model档储存为二进位档(pickle). 之後我们部署model时会使用 .pkl 档, 这部份等到seldon时再说明.
    这时你就先把 bst_save_model.pkl下载到本机了, 留着备用.

    model.save_model('bst_save_model.json')
    model.save_model('bst_save_model.pkl')
    

到这里, 我们已经训练完成心血管疾病资料集, 并且取得model档. 下一篇我们来说明把MLFlow功能加进来的内容.


<<:  DAY 13 Big Data 5Vs – Variety(速度) Glue(1) Crawler

>>:  Day10-Kubernetes 那些事 - Ingress 篇(二)

【I Love Vue 】 Day 29 爱荷华博弈任务(十) - Demo

话不多说,赶紧把我们的作品Demo 给我们 铁人学院的业主吧!! Demo 进入主画面 我们可以透过...

参与实验室的研究

时间来到 2020/05,那时系上的毕业专题展刚结束,所以我跟 EC、CC Lai 都闲闲没事做,有...

Android学习笔记29

平常在登入帐号密码的时候,下面常常会有验证码,接着就试着做做看吧 首先先把所有可能出现的字元打进来 ...

Vuex实作

昨天介绍了Vuex是什麽,也知道了它的流程,今天当然也要来实作一下Vuex啦~这个实作会沿用第26天...