机器学习入门数据集--5.皮马人糖尿病预测数据集

作者: ac619467fef3 | 来源:发表于2019-02-12 10:08 被阅读37次

    医疗大数据是最近一段时间受关注比较多的领域,通过病历电子化,采用自然语言处理和机器学习模型,实现疾病预诊断、病情识别等。医疗数据模型,采用人体指标、体检化验结果结合自然情况对发病概率进行预测。
    本项目是糖尿病预测案例,前期训练结果准确率都不理想。因此在代码中引入了多种数据模型:逻辑回归、高斯朴素贝叶斯、K近邻分类、决策树分类、支持向量机分类、xgboost。在训练集上,最高准确率为77%。

    数据解析

    列名 解释
    Pregnancies 怀孕了⼏次
    Glucose ⾎糖
    BloodPressure ⾎压
    SkinThickness ⽪脂厚度
    Insulin 胰岛素
    BMI 体质指数
    DiabetesPedigreeFunction 糖尿病⾎统
    Age 年龄
    Outcome label:是否患病

    数据分析

    没有缺失值,而且全部是数字类型

    Pregnancies                 768 non-null int64
    Glucose                     768 non-null int64
    BloodPressure               768 non-null int64
    SkinThickness               768 non-null int64
    Insulin                     768 non-null int64
    BMI                         768 non-null float64
    DiabetesPedigreeFunction    768 non-null float64
    Age                         768 non-null int64
    Outcome                     768 non-null int64
    

    训练

    在本项目的前期训练中,数据最后的结果都不理想。因此在代码中引入了多种数据模型:逻辑回归、高斯朴素贝叶斯、K近邻分类、决策树分类、支持向量机分类、xgboost。在训练集上,最高准确率为77%。

    from sklearn.linear_model import LogisticRegression
    import pandas as  pd
    import numpy as np
    
    df = pd.read_csv("/Users/wangsen/ai/13/homework/diabetes.csv")
    df.info()
    target = df.pop("Outcome")
    data = df.values
    print(data[:5])
    
    lr = LogisticRegression()
    lr.fit(data,target)
    score = lr.score(data,target)
    print("训练集上的预测准确率",score)
    
    from sklearn.feature_selection import SelectKBest 
    from sklearn.feature_selection import chi2
    
    select_top_4 = SelectKBest(score_func=chi2, k =4)
    select_top_4.fit(data,target)
    data_4 = select_top_4.transform(data)
    

    结果:'Glucose','Insulin','BMI','Age'

    from sklearn.preprocessing import StandardScaler
    X = StandardScaler().fit_transform(data_4)
    X = data
    y = target
    from sklearn.model_selection import KFold
    from sklearn.model_selection import cross_val_score
    from sklearn.linear_model import LogisticRegression
    from sklearn.naive_bayes import GaussianNB
    from sklearn.neighbors import KNeighborsClassifier
    from sklearn.tree import DecisionTreeClassifier
    from sklearn.svm import SVC
    from xgboost import XGBClassifier
    import sklearn
    
    models = []
    models.append(("LR", LogisticRegression())) #逻辑回归
    models.append(("NB", GaussianNB())) # 高斯朴素贝叶斯
    models.append(("KNN", KNeighborsClassifier(10))) #K近邻分类
    models.append(("DT", DecisionTreeClassifier())) #决策树分类
    models.append(("SVM", SVC())) # 支持向量机分类
    models.append(("xgboost", XGBClassifier())) # xgboost
    '''
    estimator:数据对象 
    X:数据 
    y:预测数据 
    soring:调用的方法
    cv:交叉验证生成器或可迭代的次数 
    n_jobs:同时工作的cpu个数(-1代表全部)
    verbose:详细程度
    fit_params:传递给估计器的拟合方法的参数
    pre_dispatch:控制并行执行期间调度的作业数量。
    '''
    results = []
    names = []
    for name, model in models:
        kflod = KFold(n_splits=10, random_state=22)
        cv_result = cross_val_score(model, X,y, cv = kflod,scoring="accuracy")
        names.append(name)
        results.append(cv_result)
     
    for i in range(len(names)):
        print(names[i], results[i].mean())
    

    结果:

    LR 0.7695146958304853
    NB 0.7551777170198223
    KNN 0.74865003417635
    DT 0.6952494873547506
    SVM 0.6510252904989747
    xgboost 0.7668660287081339
    

    参考资料:

    1. keras https://www.kesci.com/home/project/5a5b691046c4ba639c6fbfa2
    2. 多种 机器学习https://blog.csdn.net/weixin_41988628/article/details/83051712

    相关文章

      网友评论

        本文标题:机器学习入门数据集--5.皮马人糖尿病预测数据集

        本文链接:https://www.haomeiwen.com/subject/xbzceqtx.html