资源简介

机器学习,基于朴素贝叶斯算法的疾病预测。整个资源文件包括项目代码、文档(PDF)、项目汇报PPT

资源截图

代码片段和文件信息

import numpy as np

#加载数据集
def loadDataSet():
#症状
postingList_symptom=[[‘打喷嚏‘][‘打喷嚏‘][‘头痛‘][‘头痛‘][‘打喷嚏‘][‘头痛‘]] #症状
#职业
postingList_occupation=[[‘护士‘][‘农夫‘][‘建筑工人‘][‘建筑工人‘][‘教师‘][‘教师‘]] #职业
#疾病:0代表感冒,1代表过敏,2代表脑震荡
classVec=[012002] #疾病:0代表感冒,1代表过敏,2代表脑震荡
postingList_sickness=[[‘感冒‘][‘过敏‘][‘脑震荡‘][‘感冒‘][‘感冒‘][‘脑震荡‘]]

print(“==================疾病实验样本=================“)
for each in postingList_sickness:
print(each)
return postingList_symptompostingList_occupationclassVec


#[‘头痛‘ ‘打喷嚏‘]
#[‘护士‘ ‘建筑工人‘ ‘农夫‘ ‘教师‘]

#产生症状、职业集合
def createList(dataSet_symdataSet_occup):
symSet=set([])
occupSet=set([])
for document in dataSet_sym:
symSet=symSet|set(document)

for document in dataSet_occup:
occupSet=occupSet|set(document)

print(“症状集合:“list(symSet))
print(“职业集合:“list(occupSet))
return list(symSet)list(occupSet) #集合列表化


#产生症状、职业列表01化(方便计算)
def setOfSymOccup2Vec(ListinputSet):
returnVec=[0]*len(List)
#print(“before returnVec = “returnVec)
for sym_occup in inputSet:
if sym_occup in List:            #如果该症状或职业出现的其对应的列表中,
returnVec[List.index(sym_occup)]=1  #则在列表的对应位置上置1
else:print(“the sympotom or occopation %s is not in my List“ % sym_occup) #如果该症状或职业不在其对应的列表中
#print(“after returnVec = “returnVec)
return returnVec



#计算各个样本概率
def trainNB(trainMatrix_symtrainMatrix_occuptrainCategory):
#计算训练样本的数目
num_train=len(trainCategory)
num_sym=len(trainMatrix_sym[0])
num_occup=len(trainMatrix_occup[0])

cold=0 #感冒的次数
allergy=0 #过敏的次数
cerebral_con=0 #脑震荡的次数

#统计各种疾病出现的次数和(用于计算样本中各种疾病的概率)
for elem in trainCategory:
if elem == 0:
cold = cold+1 #感冒次数加1
elif elem == 1:
allergy = allergy+1      #过敏次数加1
else:
cerebral_con = cerebral_con+1 #脑震荡次数加1

#在类别足够大的情况下,可以考虑使用数组保存各个数据
p_cold=cold/float(num_train)    #感冒的概率
p_allergy=allergy/float(num_train) #过敏的概率
p_cerebral_con=cerebral_con/float(num_train) #脑震荡的概率

#numpy.zeros(num)代表一维数组,其大小为num,元素都为0
p0_sym=np.zeros(num_sym)  #感冒下各症状的概率的分子
p1_sym=np.zeros(num_sym) #过敏下各症状的概率的分子
p2_sym=np.zeros(num_sym) #脑震荡下各症状的概率的分子

p0_occup=np.zeros(num_occup) #感冒下各职业的概率的分子
p1_occup=np.zeros(num_occup) #过敏下各职业的概率的分子
p2_occup=np.zeros(num_occup) #脑震荡下各职业的概率的分子

p0_sym_Denom=0.0 #感冒下各症状的概率的分母
p1_sym_Denom=0.0 #过敏下各症状的概率的分母
p2_sym_Denom=0.0 #脑震荡下各症状的概率的分母

p0_occup_Denom=0.0               #感冒下各职业的概率的分母
p1_occup_Denom=0.0    #过敏下各职业的概率的分母
p2_occup_Denom=0.0               #脑震荡下各职业的概率的分母

# p0_sym_Denom=2.0
# p1_sym_Denom=2.0
# p2_sym_Denom=2.0

# p0_occup_Denom=2.0              
# p1_occup_Denom=2.0
# p2_occup_Denom=2.0              

for elem in range(num_train): #在训练样本数目内循环
#在感冒下,各个症状、职业出现的次数和
if trainCategory[elem] == 0: #该样本为感冒(前提条件)
p0_sym += trainMatrix_sym[elem] #各种症状的次数(分子)
p0_occup += trai

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-06-25 19:36  机器学习_基于朴素贝叶斯算法_疾病预测\
     文件     1304679  2019-06-25 19:26  机器学习_基于朴素贝叶斯算法_疾病预测\机器学习_朴素贝叶斯_疾病预测.pdf
     文件     1717497  2019-06-25 19:35  机器学习_基于朴素贝叶斯算法_疾病预测\机器学习_朴素贝叶斯_疾病预测.pptx
     目录           0  2019-06-25 19:36  机器学习_基于朴素贝叶斯算法_疾病预测\项目代码\
     文件     2043650  2019-06-22 10:46  机器学习_基于朴素贝叶斯算法_疾病预测\项目代码\代码使用说明.docx
     文件       12934  2019-06-21 22:22  机器学习_基于朴素贝叶斯算法_疾病预测\项目代码\最终完整代码_疾病预测.py
     目录           0  2019-06-25 19:36  机器学习_基于朴素贝叶斯算法_疾病预测\项目代码\过程代码\
     文件       12934  2019-06-13 11:23  机器学习_基于朴素贝叶斯算法_疾病预测\项目代码\过程代码\ClassifyData.py
     文件        1662  2019-05-31 08:56  机器学习_基于朴素贝叶斯算法_疾病预测\项目代码\过程代码\DataList.py
     文件        8653  2019-05-17 09:33  机器学习_基于朴素贝叶斯算法_疾病预测\项目代码\过程代码\DataProbability.py
     文件        2901  2019-05-17 00:05  机器学习_基于朴素贝叶斯算法_疾病预测\项目代码\过程代码\DataVec.py
     文件        1010  2019-05-16 11:26  机器学习_基于朴素贝叶斯算法_疾病预测\项目代码\过程代码\LoadDataSet.py
     文件       10410  2019-06-06 10:31  机器学习_基于朴素贝叶斯算法_疾病预测\项目代码\过程代码\TestDataVec.py

评论

共有 条评论