博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python (Naïve Bayes) (classify algorithm)
阅读量:5891 次
发布时间:2019-06-19

本文共 3030 字,大约阅读时间需要 10 分钟。

a b c d 类

p(a)>p(b)>p(c)>p(d)   m 属于 a 类

class Bayes:     def __init__(self):         self.length=-1         self.label=dic()         self.vector=dic()     def fit (self,dataSet,labels):         if(len(dataSet))!=len(labels):             raise ValueError ("Wrong imput!")         self.length=len(dataSet[0])#测试特征值长度         labelsnum=len(labels)#所有类别数量         norlabels=set(labels)#不重复类别         for item in norlabels:             thislabel=item             labelcount[thislabel]=labels.count(thislabel)/labelsnum#当前种类占总类别的比例         for vector,labels in zip(dataSet,labels):             if (label not in vectorcount):                 self.vectorcount[label]=[]             self.vectorcount[label].append(vector)         print ("train finished!")         return self     def bayes_test(self,testData,labelSet):         if (self.length==-1):             raise ValueError("you havn't taining yet!")         #计算 testdata 各个类别的概率         lbdic=dic()         for thislb in labelSet:             p=1             alllabel=self.labelcount[thislb]             allvector=self.vectorvount[thislb]             vnum=len(allvector)             allvector = numpy.array(allvector).T             for index in range(0,len(testData)):                 vector=list(allvector[indext])                 p*=vector.count(testData[indext])/vnum             lbdic[thislb]=p*alllabel         thislb=sorted(lbdic,key=lambda x:lbdic[x],reverse=True)[0]         return thislb *********************************************************************************************
import numpy as npy class Bayes:     def __init__(self):         self.length=-1         self.labelcount=dict()         self.vectorcount=dict()     def fit(self,dataSet:list,labels:list):         if(len(dataSet)!=len(labels)):             raise ValueError("您输入的测试数组跟类别数组长度不一致")         self.length=len(dataSet[0])#测试数据特征值的长度         labelsnum=len(labels)#类别所有的数量         norlabels=set(labels)#不重复类别的数量         for item in norlabels:             thislabel=item             labelcount[thislabel]=labels.count(thislabel)/labelsnum#求的当前类别占类别总数的比例         for vector,label in zip(dataSet,labels):             if(label not in vectorcount):                 self.vectorcount[label]=[]             self.vectorcount[label].append(vector)         print("训练结束")         return self     def btest(self,TestData,labelsSet):         if(self.length==-1):             raise ValueError("您还没有进行训练,请先训练")         #计算testdata分别为各个类别的概率         lbDict=dict()         for thislb in labelsSet:             p=1             alllabel=self.labelcount[thislb]             allvector=self.vectorcount[thislb]             vnum=len(allvector)             allvector=numpy.array(allvector).T             for index in range(0,len(TestData)):                 vector=list(allvector[index])                 p*=vector.count(TestData[index])/vnum             lbDict[thislb]=p*alllabel         thislabel=sorted(lbDict,key=lambda x:lbDict[x],reverse=True)[0]         return thislabel

 

转载于:https://www.cnblogs.com/rabbittail/p/8288563.html

你可能感兴趣的文章
添加16行代码,删除了6行代码就能支持一键1秒买卖Zcash了?
查看>>
iOS 动画之弹性 Spring
查看>>
[写作中...]Js面向对象(2): 创建对象
查看>>
我是如何在硅谷获得年薪30万美金Offer的?
查看>>
Java 锁机制(synchronized 与 Lock)
查看>>
webpack 3 零基础入门教程 #1 - 介绍
查看>>
Kotlin 写一个通用Adapter (二)
查看>>
一道关于this的JS面试题
查看>>
LeetCode 简要日记 455 & 104
查看>>
sketch最强切图工具Sketch Measure(含最详细的讲解)
查看>>
多栏布局
查看>>
puppeteer学习笔记(五)--API问题解决--使用功能强大的“ eval ”函数
查看>>
曹春晖:谈一谈 Go 和 Syscall
查看>>
聊聊MVX中的Model
查看>>
Window 的添加过程
查看>>
第12章 用户界面与其它重要属性
查看>>
nuxt笔记
查看>>
随手记-算法
查看>>
用于管理应用程序得shell脚本
查看>>
实现Button文字(titleLabel)和图片(imageView)上下排列
查看>>