Python实现分类算法( 二 )

< len(conditions[i]):temp.append(gui.choicebox(msg=i, choices=conditions[i], title="请选择特征"))breakfor t in range(len(temp)):if temp[t] is None:raise NoneException("条件存在漏选,无法分析结果 。")else:return temp
执行流程
选取文件
【Python实现分类算法】由于文件的部分数据带有空格,重新为用户生成一份数据一致的临时文件,提示用户选择临时文件(后面已解决该问题,数据中的空格部分不会影响整体结果)
选择瓜的属性:
结果:
总结:
此实验就是自己实现朴素贝叶斯算法,那么就需要求出各个元素的个数,对应真假概率 。我最开始是手动一个一个地将元素对应符合条件的个数取出,再求出概率 。这样没有问题,但是在代码就会显得十分冗余,而且如果数据量十分大,需要取的元素也随之增大,当然这完全能应付这个实验的,但是自己有一点点的强迫症,所以后面使用了循环处理,这样不仅使得代码更加简洁,而且增加了其可读性,也不用再定义那么多参数 。
后面又觉得在读取文件时每次需要手动输入文件路径,十分麻烦,索性自己又封装了读取文件的方法,与之前的不同的是,自己封装的是通过窗口选择文件,取代了手动输入路径形式,并且还封装了“清理数据”的方法 。主要思想是如果出现异常,或者能肯定是读取的文件数据有问题,则重新生成一份文件读取 。
在用第一行的标题获取文本最后一列数据时,执行的代码直接报错误,后来以矩阵的形式输出全部数据,发现个别的数据有空格,所以在读取时,会报错 。那么怎么解决呢?我的想法是我们不能修改原文件,而是重新生成一个临时文件,内部数据完全一致,我们不动原文件,相当于只是一个复制粘贴过程,实质上就是进行了一次“数据清理” 。
源码(DMA文件下)
文件获取,提取码:9vw6