机器学习朴素贝叶斯算法+tkinter库界面实现好瓜坏西瓜分类

一、界面实现

from tkinter import *
from tkinter import ttk
import NBdef main():win = Tk()win.title('甜的西瓜挑选系统')win.geometry('1000x600')lb2 = Label(win, text="色泽", font="tahoma 12 normal")lb2.grid(column=0, row=4, padx=8, pady=4)def show_data_2(*args):#print(cbx_2.get())passdata2 = ["青绿", "乌黑", "浅白"]cbx_2 = ttk.Combobox(win, width=12, height=8)cbx_2.grid(column=0, row=5)cbx_2.configure(state="readonly")cbx_2["values"] = data2cbx_2.current(0)cbx_2.bind("<<ComboboxSelected>>", show_data_2)lb21 = Label(win, text="根蒂", font="tahoma 12 normal")lb21.grid(column=14, row=4, padx=8, pady=4)def show_data_21(*args):#print(cbx_21.get())passdata21 = ['蜷缩', '硬挺', '稍蜷']cbx_21 = ttk.Combobox(win, width=12, height=8)cbx_21.grid(column=14, row=5)cbx_21.configure(state="readonly")cbx_21["values"] = data21cbx_21.current(0)cbx_21.bind("<<ComboboxSelected>>", show_data_21)lb22 = Label(win, text="敲声", font="tahoma 12 normal")lb22.grid(column=24, row=4, padx=8, pady=4)def show_data_22(*args):#print(cbx_22.get())passdata22 = ['浊响', '清脆', '沉闷']cbx_22 = ttk.Combobox(win, width=12, height=8)cbx_22.grid(column=24, row=5)cbx_22.configure(state="readonly")cbx_22["values"] = data22cbx_22.current(0)cbx_22.bind("<<ComboboxSelected>>", show_data_22)lb23 = Label(win, text="纹理", font="tahoma 12 normal")lb23.grid(column=34, row=4, padx=8, pady=4)def show_data_23(*args):#print(cbx_23.get())passdata23 = ['模糊', '稍糊', '清晰']cbx_23 = ttk.Combobox(win, width=12, height=8)cbx_23.grid(column=34, row=5)cbx_23.configure(state="readonly")cbx_23["values"] = data23cbx_23.current(0)cbx_23.bind("<<ComboboxSelected>>", show_data_23)lb24 = Label(win, text="脐部", font="tahoma 12 normal")lb24.grid(column=40, row=4, padx=8, pady=4)def show_data_24(*args):#print(cbx_24.get())passdata24 = ['凹陷', '平坦', '稍凹']cbx_24 = ttk.Combobox(win, width=12, height=8)cbx_24.grid(column=40, row=5)cbx_24.configure(state="readonly")cbx_24["values"] = data24cbx_24.current(0)cbx_24.bind("<<ComboboxSelected>>", show_data_24)lb25 = Label(win, text="触感", font="tahoma 12 normal")lb25.grid(column=42, row=4, padx=8, pady=4)def show_data_25(*args):#print(cbx_25.get())passdata25 = ['硬滑', '软粘']cbx_25 = ttk.Combobox(win, width=12, height=8)cbx_25.grid(column=42, row=5)cbx_25.configure(state="readonly")cbx_25["values"] = data25cbx_25.current(0)cbx_25.bind("<<ComboboxSelected>>", show_data_25)def predict():a,b,c,d,e,f=cbx_2.get(),cbx_21.get(),cbx_22.get(),cbx_23.get(),cbx_24.get(),cbx_25.get()print(type(a),b,c,d,e,f)testEntry1=[a,b,c,d,e,f]result=NB.testingNB(testEntry1)E1.insert(0, result)b = Button(win, text='预测', font=('KaiTi', 36, 'bold'),  height=1,bg='pink', fg='green', bd=4, width=5, command=predict)b.grid(column=24, row=15, pady=5)L1 = Label(win, text="预测西瓜类型结果")L1.grid(column=40, row=15, pady=10)E1 = Entry(win)E1.grid(column=42, row=15, pady=2)win.mainloop()if __name__ == '__main__':main()

二、朴素贝叶斯算法实现

from numpy import *def loadDataSet():postingList=[['青绿', '蜷缩', '浊响', '清晰', '凹陷', '硬滑'],['乌黑', '蜷缩', '沉闷', '清晰', '凹陷', '硬滑'],['乌黑', '蜷缩', '浊响', '清晰', '凹陷', '硬滑'],['青绿', '蜷缩', '沉闷', '清晰', '凹陷', '硬滑'],['浅白', '蜷缩', '浊响', '清晰', '凹陷', '硬滑'],['青绿', '稍蜷', '浊响', '清晰', '稍凹', '软粘'],['乌黑', '稍蜷', '浊响', '稍糊', '稍凹', '软粘'],['乌黑', '稍蜷', '浊响', '清晰', '稍凹', '硬滑'],['乌黑', '稍蜷', '沉闷', '稍糊', '稍凹', '硬滑'],['青绿', '硬挺', '清脆', '清晰', '平坦', '软粘'],['浅白', '硬挺', '清脆', '模糊', '平坦', '硬滑'],['浅白', '蜷缩', '浊响', '模糊', '平坦', '软粘'],['青绿', '稍蜷', '浊响', '稍糊', '凹陷', '硬滑'],['浅白', '稍蜷', '沉闷', '稍糊', '凹陷', '硬滑'],['乌黑', '稍蜷', '浊响', '清晰', '稍凹', '软粘'],['浅白', '蜷缩', '浊响', '稍糊', '凹陷', '硬滑'],['青绿', '蜷缩', '沉闷', '清晰', '稍凹', '硬滑']]classVec=[1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0]return postingList,classVecdef createVocabList(dataSet):vocabSet=set([])for document in dataSet:vocabSet|=set(document)return list(vocabSet)def setOfWords2Vec(vocabList,inputSet):returnVec=[0]*len(vocabList)for word in inputSet:if word in vocabList:returnVec[vocabList.index(word)]=1else:print('not in vocabulary')return returnVecdef bagOfWords2VecMN(vocabList,inputSet):returnVec=[0]*len(vocabList)for word in inputSet:if word in vocabList:returnVec[vocabList.index(word)]+=1return returnVecdef wordsAll(vocabList,listOPosts):trainMat=[]for postinDoc in listOPosts:trainMat.append(bagOfWords2VecMN(vocabList,postinDoc))return trainMatdef trainND0(trainMatrix,trainCategory):numTrainDocs=len(trainMatrix)numWords=len(trainMatrix[0])pAbusive=sum(trainCategory)/float(numTrainDocs)p0Num=ones(numWords)p1Num=ones(numWords)p0Denom=2.0p1Denom=2.0for i in range(numTrainDocs):if trainCategory[i]==1:p1Num+=trainMatrix[i]p1Denom+=sum(trainMatrix[i])else:p0Num+=trainMatrix[i]p0Denom+=sum(trainMatrix[i])p1Vec=log(p1Num/p1Denom)p0Vec=log(p0Num/p0Denom)return p0Vec,p1Vec,pAbusivedef classifyNB(vec2Classify,p0Vec,p1Vec,pClass1):p1=sum(vec2Classify*p1Vec)+log(pClass1)p0=sum(vec2Classify*p0Vec)+log(1.0-pClass1)if p1>p0:return 1else:return 0def testingNB(testEntry1):listOPosts,listClasses = loadDataSet()myVocabList=createVocabList(listOPosts)trainMat=wordsAll(myVocabList,listOPosts)p0V,p1V,pAb=trainND0(trainMat,listClasses)thisDoc=array(setOfWords2Vec(myVocabList,testEntry1))if classifyNB(thisDoc,p0V,p1V,pAb)=='0':return "坏瓜"else:return "好瓜"if __name__ == '__main__':testEntry1 = ['青绿', '蜷缩', '浊响', '清晰', '凹陷', '硬滑']print(testingNB(testEntry1))

三、运行结果
预测前


预测后:


注:本文中存在的不足,请在留言区批评指正,谢谢!

机器学习朴素贝叶斯算法+tkinter库界面实现好瓜坏西瓜分类相关推荐

  1. 机器学习朴素贝叶斯算法_机器学习中的朴素贝叶斯算法

    机器学习朴素贝叶斯算法 朴素贝叶斯算法 (Naive Bayes Algorithm) Naive Bayes is basically used for text learning. Using t ...

  2. ML之NB:基于NB朴素贝叶斯算法训练20类新闻文本数据集进行多分类预测

    ML之NB:基于NB朴素贝叶斯算法训练20类新闻文本数据集进行多分类预测 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 vec = CountVectorizer() X_trai ...

  3. 【机器学习入门】(2) 朴素贝叶斯算法:原理、实例应用(文档分类预测)附python完整代码及数据集

    各位同学好,今天我向大家介绍python机器学习中的朴素贝叶斯算法.内容有:算法的基本原理:案例实战--新闻文档的分类预测. 案例简介:新闻数据有20个主题,有10万多篇文章,每篇文章对应不同的主题, ...

  4. 机器学习-朴素贝叶斯算法

    简介 NaïveBayes算法,又叫朴素贝叶斯算法,朴素:特征条件独立:贝叶斯:基于贝叶斯定理.属于监督学习的生成模型,实现简单,没有迭代,并有坚实的数学理论(即贝叶斯定理)作为支撑.在大量样本下会有 ...

  5. 5 机器学习 朴素贝叶斯算法 高斯模型 多项式模型 伯努利模型 拉普拉普平滑系数 TfidfVectorizer

    机器学习 1 朴素贝叶斯算法 1.1 朴素贝叶斯算法介绍 朴素贝叶斯算法是一种衡量标签和特征之间概率关系的监督学习算法,是一种专注于分类的算法."朴素"二字表示这个算法基于一个朴素 ...

  6. 机器学习:朴素贝叶斯算法+中文情感分类+python

    朴素贝叶斯中文情感分类 1.写在前面 朴素贝叶斯算法理论在很多博客上已经解释的很详细了,本文就不再叙述,本文注重于算法的应用以及编程实现,在读取前人的博客以及他们的项目应用,本人结合书本<机器学 ...

  7. 机器学习——朴素贝叶斯算法

    朴素贝叶斯算法 1.引言 2.朴素贝叶斯分类方法 3.概率基础 4.朴素贝叶斯特征提取 5.朴素贝叶斯分类的sklearn实现 6.垃圾短息分类 补充 1.引言 贝叶斯方法是一个历史悠久,有着坚实的理 ...

  8. 机器学习——朴素贝叶斯算法(垃圾邮件分类)

    朴素贝叶斯算法介绍以及垃圾邮件分类实现 1.一些数学知识 2.贝叶斯公式 3.朴素贝叶斯算法 (1)介绍 (2)核心思想 (3)朴素贝叶斯算法 (4)拉普拉斯修正 (5)防溢出策略 (6)一般过程 ( ...

  9. 朴素贝叶斯算法原理、代码实现原理、以及鸢尾花分类代码实现(详细代码原理讲解)

    朴素贝叶斯算法原理及鸢尾花分类代码实现 一.概率模型 1.全概率公式(由因推果) 设事件B1,B2,-,Bn构成一个完备事件组,即两两不相容,和为全集且P(Bi)>0,则对任意事件A,有 由因推 ...

最新文章

  1. 数据科学家需要知道的5种图算法
  2. C++中#include<fstream>头文件
  3. QuartZ Cron表达式详解
  4. linux环境下vim创建java文件,并编译运行
  5. 蓝桥杯基础模块8_2:串口进阶
  6. Scikit-Learn机器学习入门
  7. 2.1Dynamics 365 安装问题——无法访MSCRM_CONFIG数据库
  8. python下载大文件mp4_Python3 使用requests模块显示下载大文件显示进度
  9. 网易云易盾牵手百视通 助力广电领域新媒体内容安全
  10. 智慧校园: 00 开发流程
  11. 如何在testbed里面给系统函数打桩(单元测试)
  12. Excel用公式计算年龄
  13. pdf文档统计字数的问题
  14. 第三方SDK开发入门
  15. MAC快速查看本地 SSH KEY
  16. 使用redis实现缓存_用下一个js实现一个简单的redis缓存
  17. 业界前沿技术:从零开始学视觉Transformer-Data-Efficient Image Transformers
  18. form提交前进行确认提示
  19. 尚硅谷2022 javaweb网上书城
  20. bzoj2150 部落战争

热门文章

  1. cad快捷命令大全_最全CAD快捷键命令大全(图文版、文字版、键盘版)
  2. 安卓手机运行python程序的软件-安卓手机定时运行python脚本
  3. 勾股定理的形象拆分法,原来数学可以这么好玩!
  4. 这几张图告诉你化学到底有多神奇!看完瞬间觉得智商都提高了!
  5. Lanchester战争模型:用可分离变量的微分方程占卜战事
  6. 图像还可以这样玩!如何用波的算法处理图像
  7. 【干货】通俗理解神经网络中激活函数作用
  8. 月薪多少才算80后中的人生赢家?他们的经济、婚姻、生活方式是怎样的
  9. python sqllite远程_Python实现Sqlite将字段当做索引进行查询的方法
  10. java监听网络连接_Android RxJava 之网络链接监听示范