zoukankan      html  css  js  c++  java
  • 分类与监督学习,朴素贝叶斯分类算法

    1.理解分类与监督学习、聚类与无监督学习。

    (1)简述分类与聚类的联系与区别。

    分类就是向事物分配标签,聚类就是将相似的事物放在一起

    联系:分类和聚类都包含一个过程:对于想要分析的目标点,都会在数据集中寻找离它最近的点,即二者都用到了NN算法。

    区别:分类属于监督式学习,因为它是根据可比较的特性来分配已确定的标签。聚类属于无监督学习。

    (2)简述什么是监督学习与无监督学习。

    监督学习:通过训练,让机器可以自己找到特征和标签之间的联系,在面对只有特征没有标签的数据时,可以判断出标签。

    无监督学习:我们不知道数据集中数据、特征之间的关系,而是要根据聚类或一定的模型得到数据之间的关系。

     2.朴素贝叶斯分类算法 实例

    利用关于心脏病患者的临床历史数据集,建立朴素贝叶斯心脏病分类模型。

    有六个分类变量(分类因子):性别,年龄、KILLP评分、饮酒、吸烟、住院天数

    目标分类变量疾病:

    –心梗

    –不稳定性心绞痛

    新的实例:–(性别=‘男’,年龄<70, KILLP=‘I',饮酒=‘是’,吸烟≈‘是”,住院天数<7)

    最可能是哪个疾病?

    上传手工演算过程。

    性别

    年龄

    KILLP

    饮酒

    吸烟

    住院天数

    疾病

    1

    >80

    1

    7-14

    心梗

    2

    70-80

    2

    <7

    心梗

    3

    70-81

    1

    <7

    不稳定性心绞痛

    4

    <70

    1

    >14

    心梗

    5

    70-80

    2

    7-14

    心梗

    6

    >80

    2

    7-14

    心梗

    7

    70-80

    1

    7-14

    心梗

    8

    70-80

    2

    7-14

    心梗

    9

    70-80

    1

    <7

    心梗

    10

    <70

    1

    7-14

    心梗

    11

    >80

    3

    <7

    心梗

    12

    70-80

    1

    7-14

    心梗

    13

    >80

    3

    7-14

    不稳定性心绞痛

    14

    70-80

    3

    >14

    不稳定性心绞痛

    15

    <70

    3

    <7

    心梗

    16

    70-80

    1

    >14

    心梗

    17

    <70

    1

    7-14

    心梗

    18

    70-80

    1

    >14

    心梗

    19

    70-80

    2

    7-14

    心梗

    20

    <70

    3

    <7

    不稳定性心绞痛

     

    3.使用朴素贝叶斯模型对iris数据集进行花分类。

    尝试使用3种不同类型的朴素贝叶斯:

    • 高斯分布型
    • 多项式型
    • 伯努利型

    并使用sklearn.model_selection.cross_val_score(),对各模型进行交叉验证。

    from sklearn.datasets import load_iris 
    from sklearn.naive_bayes import GaussianNB, MultinomialNB, BernoulliNB 
    from sklearn.model_selection import cross_val_score 
    
    iris = load_iris()
    
    data = iris['data']
    target = iris['target']
    # 高斯分布型
    Gnb_model = GaussianNB()  # 构建高斯分布模型
    Gnb_model.fit(data, target)  # 训练模型
    Gnb_pre = Gnb_model.predict(data)  # 预测模型
    print("高斯分布模型准确率为:%.2F" % (sum(Gnb_pre == target) / len(data)))
    
    # 多项式型
    Mnb_model = MultinomialNB()  # 构建多项式模型
    Mnb_model.fit(data, target)
    Mnb_pre = Mnb_model.predict(data)  
    print("多项式模型准确率为:%.2F" % (sum(Mnb_pre == target) / len(data)))
    
    # 伯努利型
    Bnb_model = BernoulliNB()  # 构建伯努利模型
    Bnb_model.fit(data, target)  
    Bnb_pre = Bnb_model.predict(data)  
    print("伯努利模型准确率为:%.2F" % (sum(Bnb_pre == target) / len(data)))
    
    print("进行交叉验证:")
    # 进行交叉验证
    Gnb_score = cross_val_score(Gnb_model, data, target, cv=10)
    print('高斯分布模型的精确率:%.2F' % Gnb_score.mean())
    
    Mnb_score = cross_val_score(Mnb_model, data, target, cv=10)
    print('多项式模型模型的精确率:%.2F' % Mnb_score.mean())
    
    Bnb_score = cross_val_score(Bnb_model, data, target, cv=10)
    print('伯努利模型的准确率:%.2F' % Bnb_score.mean())
    

     

  • 相关阅读:
    linux软件安装方式
    docker 安装 jenkins touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission denied Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
    [ERR] Node goodsleep.vip:6379 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
    Linux 常用命令 服务器间scp 用户 export 创建文件、软连接
    redis 安装 集群 主从 哨兵 docker
    WPF密码框中禁止复制、粘贴
    Application 统计在线人数
    【转义字符】HTML 字符实体&lt; &gt: &amp;等
    SQL语句统计每天的数据
    正则表达式计算代码数
  • 原文地址:https://www.cnblogs.com/lywkkk/p/12878616.html
Copyright © 2011-2022 走看看