分类与监督学习,朴素贝叶斯分类算法(代码片段)

gzcc-11-28 gzcc-11-28     2023-01-20     530

关键词:

1.理解分类与监督学习、聚类与无监督学习。
(1)简述分类与聚类的联系与区别。
联系:
①聚类分析是研究如何在没有训练的条件下把样本划分为若干类。
②在分类中,对于目标数据库中存在哪些类是知道的,要做的就是将每一条记录分别属于哪一类标记出来。
③聚类需要解决的问题是将已给定的若干无标记的模式聚集起来使之成为有意义的聚类,聚类是在预先不知道目标数据库到底有多少类的情况下,希望将所有的记录组成不同的聚类,并且使得在这种分类情况下,以某种度量(例如:距离)为标准的相似性,在同一聚类之间最小化,而在不同聚类之间最大化。
④与分类不同,无监督学习不依赖预先定义的类或带类标记的训练实例,需要由聚类学习算法自动确定标记,而分类学习的实例或数据样本有类别标记
区别:分类是事先定义好类别 ,类别数不变 。分类器需要由人工标注的分类训练语料训练得到,属于有指导学习范畴。聚类则没有事先预定的类别,类别数不确定。 聚类不需要人工标注和预先训练分类器,类别在聚类过程中自动生成 。分类适合类别或分类体系已经确定的场合,比如按照国图分类法分类图书;聚类则适合不存在分类体系、类别数不确定的场合,一般作为某些应用的前端,比如多文档文摘、搜索引擎结果后聚类(元搜索)等。
(2)简述什么是监督学习与无监督学习。
① 监督学习:从给定的训练数据集中学习出一个函数(模型参数),当新的数据到来时,可以根据这个函数预测结果。监督学习的训练集要求包括输入输出,也可以说是特征和目标。训练集中的目标是由人标注的。监督学习就是最常见的分类(注意和聚类区分)问题,通过已有的训练样本(即已知数据及其对应的输出)去训练得到一个最优模型(这个模型属于某个函数的集合,最优表示某个评价准则下是最佳的),再利用这个模型将所有的输入映射为相应的输出,对输出进行简单的判断从而实现分类的目的。也就具有了对未知数据分类的能力。监督学习的目标往往是让计算机去学习我们已经创建好的分类系统(模型)。
监督学习是训练神经网络和决策树的常见技术。这两种技术高度依赖事先确定的分类系统给出的信息,对于神经网络,分类系统利用信息判断网络的错误,然后不断调整网络参数。对于决策树,分类系统用它来判断哪些属性提供了最多的信息。
常见的有监督学习算法:回归分析和统计分类。最典型的算法是KNN和SVM。
2.朴素贝叶斯分类算法 实例
利用关于心脏病情患者的临床数据集,建立朴素贝叶斯分类模型。
有六个分类变量(分类因子):性别,年龄、KILLP评分、饮酒、吸烟、住院天数
目标分类变量疾病:–心梗–不稳定性心绞痛
新的实例:–(性别=‘男’,年龄<70, KILLP=‘I’,饮酒=‘是’,吸烟≈‘是’,住院天数<7)
最可能是哪个疾病?
上传演算过程。
技术分享图片
3.编程实现朴素贝叶斯分类算法
利用训练数据集,建立分类模型。
输入待分类项,输出分类结果。
可以心脏病情患者的临床数据为例,但要对数据预处理。
import numpy as np
import pandas
data=pandas.read_excel(心脏病患者临床数据.xlsx)
data
#对性别进行处理(男为0,女为1)
xingbie=[]
for i in data[性别]:
    if i ==:
        xingbie.append(0)
    else:
        xingbie.append(1)
#对年龄段进行预处理(<70为1,70-80为2,>80为3)
ages=[]
for j in data[年龄]:
    if j ==<70:
        ages.append(1)
    elif j ==70-80:
        ages.append(2)
    else:
        ages.append(3)
#对住院天数进行处理(<70为1,7-14为2,>14为3)
days=[]
for k in data[住院天数]:
    if k==<7:
        days.append(1)
    elif k==7-14:
        days.append(2)
    else:
        days.append(3)
#处理后的数据
data1=data
data1[性别]=xingbie
data1[年龄]=ages
data1[住院天数]=days
#将数据转成数组
data_arr=np.array(data1)
data_arr
#利用贝叶斯算法对给定的组别进行分类
def NB(xingbie, ages, KILLP, drink, smoke, days):
    #初始化值
    x1_y1,x2_y1,x3_y1,x4_y1,x5_y1,x6_y1 = 0,0,0,0,0,0
    x1_y2,x2_y2,x3_y2,x4_y2,x5_y2,x6_y2 = 0,0,0,0,0,0
    y1 = 0
    y2 = 0
    #计算为心梗的概率
    for a in data_arr:
        if a[6]==心梗:
            y1+=1
            if a[0]==xingbie:
                x1_y1+=1
            if a[1]==ages:
                x2_y1+=1
            if a[2]==KILLP:
                x3_y1+=1
            if a[3]==drink:
                x4_y1+=1
            if a[4]==smoke:
                x5_y1+=1
            if a[5]==days:
                x6_y1+=1
        else:#计算患有不稳定性心绞痛的概率
            y2+=1
            if a[0]==xingbie:
                x1_y2+=1
            if a[1]==ages:
                x2_y2+=1
            if a[2]==KILLP:
                x3_y2+=1
            if a[3]==drink:
                x4_y2+=1
            if a[4]==smoke:
                x5_y2+=1
            if a[5]==days:
                x6_y2+=1
    #计算每种症状在心梗下的概率
    x1_y1, x2_y1, x3_y1, x4_y1, x5_y1, x6_y1 = x1_y1/y1, x2_y1/y1, x3_y1/y1, x4_y1/y1, x5_y1/y1, x6_y1/y1
    #计算每种症状在不稳定性心绞痛的概率
    x1_y2, x2_y2, x3_y2, x4_y2, x5_y2, x6_y2 = x1_y2/y2, x2_y2/y2, x3_y2/y2, x4_y2/y2, x5_y2/y2, x6_y2/y2
    #多个症状在心梗下的概率
    x_y1 = x1_y1 * x2_y1 * x3_y1 * x4_y1 * x5_y1 * x6_y1
    #多个症状在不稳定性心绞痛下的概率
    x_y2 = x1_y2 *  x2_y2 * x3_y2 * x4_y2 * x5_y2 * x6_y2
    ##初始化各个特征x的值
    x1,x2,x3,x4,x5,x6=0,0,0,0,0,0
    for a in data_arr:
        if a[0]==xingbie:
            x1+=1
        if a[1]==ages:
            x2+=1
        if a[2]==KILLP:
            x3+=1
        if a[3]==drink:
            x4+=1
        if a[4]==smoke:
            x5+=1
        if a[5]==days:
            x6+=1
    lens = len(data_arr)
    #所有x的可能性
    x = x1/lens * x2/lens * x3/lens * x4/lens * x5/lens* x6/lens
    # 分别计算心梗和不稳定性心绞痛的概率
    y1_x = (x_y1)*(y1/lens)/x
    print(y1_x)
    y2_x = (x_y2)*(y2/lens)/x
    print(y2_x)
    # 判断是哪中疾病的可能更大
    if y1_x > y2_x:
        print(病人患心梗的可能更大,可能性为:,y1_x)
    else:
        print(病人患不稳定性心绞痛的可能更大,可能性为:,y2_x)

# 判断:性别=‘男’,年龄<70, KILLP=1,饮酒=‘是’,吸烟=‘是”,住院天数<7
NB(0,1,1,,,1)

技术分享图片




分类与监督学习,朴素贝叶斯分类算法(代码片段)

#1.理解分类与监督学习、聚类与无监督学习。#简述分类与聚类的联系与区别。分类是事先定义好类别,类别数不变,分类也可以称作分类器,把数据库中的数据项映射到给定类别中的某一类中。聚类是指根据“物以类聚”的原... 查看详情

分类与监督学习,朴素贝叶斯分类算法(代码片段)

1.理解分类与监督学习、聚类与无监督学习。简述分类与聚类的联系与区别。聚类:是指事先没有“标签”而通过某种成团分析找出事物之间存在聚集性原因的过程。分类:是根据文本的特征或属性,划分到已有的类别中。也就... 查看详情

10.分类与监督学习,朴素贝叶斯分类算法(代码片段)

1.理解分类与监督学习、聚类与无监督学习。简述分类与聚类的联系与区别。简述什么是监督学习与无监督学习。  联系:分类与聚类都是在数据集中寻找离自己最近的点  区别:分类是一种有监督学习,目的是为了确定点... 查看详情

11.分类与监督学习,朴素贝叶斯分类算法(代码片段)

1.理解分类与监督学习、聚类与无监督学习。简述分类与聚类的联系与区别。简述什么是监督学习与无监督学习。 分类:根据一些给定的已知类别标号的样本,训练某种学习机器(即得到某种目标函数),使它能够对未知类... 查看详情

分类与监督学习,朴素贝叶斯分类算法(代码片段)

#1.理解分类与监督学习、聚类与无监督学习。#简述分类与聚类的联系与区别。#分类:给数据“贴标签”,提高认知效率,降低认知成本,对于分类来说,在对数据集分类时,我们是知道这个数据集是有多少种类的#聚类:聚类是将数... 查看详情

11.分类与监督学习,朴素贝叶斯分类算法(代码片段)

1.理解分类与监督学习、聚类与无监督学习。简述分类与聚类的联系与区别。答:①联系:分类和聚类都包含一个过程:对于想要分析的目标点,都会在数据集中寻找离它最近的点,即二者都用到了NN(NearsNeighbor)算法。  ②... 查看详情

分类与监督学习,朴素贝叶斯分类算法(代码片段)

1.理解分类与监督学习、聚类与无监督学习。简述分类与聚类的联系与区别。联系:按照某种标准给对象贴标签,再根据标签来区分归类。分类:相当于给数据贴标签,根据标签可以提高对数据认知的效率,降低认知成本。聚类... 查看详情

分类与监督学习,朴素贝叶斯分类算法(代码片段)

1.理解分类与监督学习、聚类与无监督学习。简述分类与聚类的联系与区别?分类与聚类:是把某个对象划分到某个具体的已经定义的类别当中,而聚类是把一些对象按照具体特征组织到若干个类别里。     &nbs... 查看详情

11.分类与监督学习,朴素贝叶斯分类算法(代码片段)

1.理解分类与监督学习、聚类与无监督学习。简述分类与聚类的联系与区别。简述什么是监督学习与无监督学习。 分类的目的是为了确定一个点的类别,具体有哪些类别是已知的,而聚类的目的是将一系列的点分成若干类,... 查看详情

11.分类与监督学习,朴素贝叶斯分类算法(代码片段)

1.理解分类与监督学习、聚类与无监督学习。简述分类与聚类的联系与区别。简述什么是监督学习与无监督学习。答:(1)分类和聚类:  联系:    分类和聚类都是把每一条记录归应到相应的类别里,都包含这一过程,... 查看详情

分类与监督学习,朴素贝叶斯分类算法(代码片段)

1.简述分类与聚类的联系与区别。分类技术是一种有指导的学习,即每个训练样本的数据对象已经有类标识,对数据进行判断。聚类是一种无指导学习。也就是说,聚类是在预先不知道欲划分类的情况下,根据信息相似度原则进... 查看详情

朴素贝叶斯(代码片段)

1.理解分类与监督学习、聚类与无监督学习。简述分类与聚类的联系与区别。简述什么是监督学习与无监督学习。 2.朴素贝叶斯分类算法实例利用关于心脏情患者的临床数据集,建立朴素贝叶斯分类模型。有六个分类变量(分... 查看详情

分类与监督学习,朴素贝叶斯分类算法(代码片段)

fromsklearn.datasetsimportload_irisiris=load_iris()print(iris)def_init_(self): self._x=self.y=None self._data=self.func=None self._n_possibilities=None self._lableled_x=self.lable_zip=None self._cat_c 查看详情

第十次11.分类与监督学习,朴素贝叶斯分类算法(代码片段)

1.理解分类与监督学习、聚类与无监督学习。简述分类与聚类的联系与区别。区别:分类的目的是为确定一个点的类别,具体有哪些类别是已知的,常用算法是KNN,是一种有监督学习。聚类的目的是将一系列点分为若干类,事先... 查看详情

分类与监督学习,朴素贝叶斯分类算法(代码片段)

1.理解分类与监督学习、聚类与无监督学习。(1)简述分类与聚类的联系与区别。联系:①聚类分析是研究如何在没有训练的条件下把样本划分为若干类。②在分类中,对于目标数据库中存在哪些类是知道的,要做的就是将每一... 查看详情

分类与监督学习,朴素贝叶斯分类算法

1.理解分类与监督学习、聚类与无监督学习。简述分类与聚类的联系与区别。简述什么是监督学习与无监督学习。 2.朴素贝叶斯分类算法实例利用关于心脏情患者的临床数据集,建立朴素贝叶斯分类模型。有六个分类变量(分... 查看详情

11.分类与监督学习,朴素贝叶斯分类算法

1.理解分类与监督学习、聚类与无监督学习。 简述分类与聚类的联系与区别。 简述什么是监督学习与无监督学习。   2.朴素贝叶斯分类算法实例 利用关于心脏病患者的临床历史数据集,建立朴素贝叶斯心... 查看详情

11.分类与监督学习,朴素贝叶斯分类算法

1.理解分类与监督学习、聚类与无监督学习。简述分类与聚类的联系与区别。简述什么是监督学习与无监督学习。 分类是为了确定点的类别,具体有哪些类别是已知的,是监督学习。聚类是把点成若干类,事先是没有类别的... 查看详情