Python 西瓜书 拉普拉斯修正的朴素贝叶斯分类器(可以直接运行)
2020-04-21 23:21
711 查看
根据西瓜书的西瓜数据集3.0,实现拉普拉斯修正的朴素贝叶斯分类器。
# -*- coding: utf-8 -*- import pandas as pd import math ##朴素贝叶斯分类器 def fun(sigma,mu,xi):#概率密度函数 return 1/(math.sqrt(2*math.pi)*sigma)*math.exp(-(xi-mu)**2/(2*sigma**2)) def Naive_Bayers_Classifier(data,pred_data,c): ##data:数据集 ##pred_data:予测分类 ##c:分类名称 ##采用拉普拉斯修正 features_list = pred_data.keys() ##计算先验概率,Smoothing c_num = data[c].value_counts().values.tolist() c_name = data[c].value_counts().index.tolist() p_c_list = [] for i in range(len(c_num)): p_c_list.append((c_num[i]+1)/(data.shape[0]+len(c_num))) ##每个属性估计条件概率 die_data = data.groupby(c) p_y_list = [] for i in range(len(p_c_list)): data1 = die_data.get_group(c_name[i]) p_f_list = [] #条件概率P(x_i|c) for feature in features_list: if data1[feature].dtype==object: f_num = data1[data1[feature]==pred_data[feature]].shape[0] p_f_list.append((f_num+1)/(data1.shape[0]+len(data1[feature].value_counts().index.tolist()))) else: sigma = data1[feature].std() mu = data1[feature].mean() p_f_list.append(fun(sigma,mu,pred_data[feature])) mul = 1 for p_f in p_f_list: mul *= p_f #P(x|c) mul *= p_c_list[i] print(str(c)+' '+c_name[i]+'的概率:',mul) p_y_list.append(mul) idmax = p_y_list.index(max(p_y_list)) print('结论:'+str(c)+' '+c_name[idmax]) data = pd.read_table('watermelon30.txt',delimiter=',') ##予测: pred_data = {'色泽':'青绿','根蒂':'蜷缩','敲声':'清脆','纹理':'清晰','脐部':'凹陷','触感':'硬滑', '密度':0.697,'含糖率':0.460} c = '好瓜' Naive_Bayers_Classifier(data,pred_data,c)
- 点赞 1
- 收藏
- 分享
- 文章举报
相关文章推荐
- Python 西瓜书编程实现标准BP算法和累积BP算法+loss可视化(可以直接运行)
- 一段代码可以让Python直接在Linux/Mac/Unix上运行
- Python 利用列表就可以实现新2048游戏(代码可以直接运行)
- mkdir是windows的一个命令,也就是在命令行可以直接运行的命令。如果你在命令行中可以直接执行"python" 那么就可以替换执行
- Python Unet网络结构pytorch简单实现+torchsummary可视化(可以直接运行)
- Maven生成可以直接运行的jar包的多种方式
- Maven生成可以直接运行的jar包的多种方式
- 一条命令使win7可以直接运行.net3.5程序
- maven生成可以直接运行的jar(包括依赖和mainclass)
- android studio环境下代码混淆(混淆完了直接打包就可以运行)
- autocad.net将代码保存到图纸中,打开图纸后可以直接运行?
- netcfg可以在cmd中运行,但在python 的os.system函数中执行却找不到该应用程序
- 将python代码.py格式转成.exe格式的, 可以在windows上运行
- 转换器5:参考Python源码,实现Php代码转Ast并直接运行
- Maven生成可以直接运行的jar包的多种方式
- 微软bing搜索搜索源码,可以直接运行
- python unittest执行程序在pycharm可以成功运行但使用cmd会报错:E列表 test_register (unittest.loader._FailedTest)
- 没有任何编程基础可以直接学习python语言吗?学会后能够做什么?
- ORACLE DBA工具收集(Oracle DUL/AUL/ODU 恢复工具,可以脱离Oracle运行环境,直接从数据文件中读取记录)
- Ubuntu17.10 下配置caffe 仅CPU i386可以直接apt install caffe-cpu,但是怎么运行mnist代码我懵逼了